lunes, 28 de enero de 2013

Hackers & Developers Magazine Nº 3 disponible

Ya esta disponible el numero 3,osea 4 de Hackers & Developers una exelente revista para hackers,programadores,desarrolladores,entusiastas o cualquier interesado en la infortatica :D




Lo que cabe recalcar en esta edición es la introducción a Perl,algo que vendrá muy bien,para usar mas este legendario lenguaje :D

Descarga
 
Leer más...

Como instalar gentoo desde otra distribución x86


Como saben soy unixero o si no saben soy unixero,me gustan mucho los sistemas unix,desde el iOS que es Darwin hasta Linux que es algún derivado libre de Unix,en este caso uso desde Ubuntu,Arch hasta Gentoo,Slackware y en mis tiempos libres instalando LFS con la excelente guia y ayuda de hexborg ,bueno en este caso yo ya tenia instalo gentoo en una laptop de 2ghz de procesador y iba bien, para instalar paquetes se compilan con emerge automáticamente y es un poco mas tardado que el apt-get de Debian y tambien depende la Pc donde lo vamos a instalar,en este caso me arriesgue a meterlo en una netbook con 2gb ram y 1.6ghz haber que tal me va,pero bueno el hecho es que gentoo es una distribucion muy buena y de alto nivel,las llamadas hardcore distro como Crux,Slackware,LFS,FreeBSD(este no es linux), en mi caso de ser unixero no me puede venir mejor gentoo ya que es puro comando de Unix,en este caso el equivalente de GNU que seria Coreutils - GNU core utilities,y otros paquetes,pero es una distribución de Linux de todo Unixero :D

Así que comenzamos

Pero primero por que este tutorial si hay mas en la web?

Pues no e gusta la competencia ni las comparaciones y he visto pocos tutoriales sobre esto,los cuales son buenos pero no me  funcionaban en mis circunstancias,ya que necesitaba Internet (en la netbook) por cable(se descompuso) y se necesitaba por wifi(la iso de gentoo no reconoce mi modulo de wifi), así que aun con todas esas cosas en contra se puede instalar, y eso es lo que se propone:

Instalar gentoo en una netbook/laptop que no se puede conectar a Internet desde el iso oficial de instalación de gentoo.

Esto se puede hacer desde un live{usb,cd,dvd} pero yo lo hago desde otra partición (desde el HDD),la cual había dejado vacía en una partición extendida,de no ser el caso se puede crear una partición desde un live,osea que vamos a instalar Gentoo junto a otra distro(No partición Boot,No Home,solo una).

Esto lo hice basado en las circunstancias en las que estaba,pero lo pueden modificar a darse ideas para las circunstancias en las que estén,que se instale en todo el HDD de la Pc,etc.

En mi caso haré esto desde ubuntu 12.10 instalado en mi pc y instalare gentoo en /dev/sda7.

1.Primero necesitamos crear una partición,se recomiendan dos pero bueno,montare el home en el mismo /

2.Primero que nada vamos a formatear nuestra partición

Entramos a root

su

creamos una carpeta en el /mnt llamada gentoo

cd /mnt/
mkdir gentoo



Verificamos nuestra partición con fdisk -l

Y formateamos en ext4

mkfs.ext4 /dev/particion





Nota: Como ven yo ya tengo swap, así que ni haré swapon ni nada porque la esta usando ubuntu,si es el mismo caso no hagan nada,si no tienen swap creen una partición de 2gb por ejmplo con cfdisk,gparted,etc,y denle formato swap

mkswap /dev/particion

Montamos la partición raíz en la carpeta que creamos y entramos en ella

mount /dev/particion /mnt/gentoo && cd gentoo




Verificamos con :

df -h


Ahora descargamos el starge3

Con liks,o firefox,o chrome

Entramos a http://www.gentoo.org/main/en/mirrors.xml

Y entramos a una mirror y buscamos el mas reciente starge3*tar.gz2






Por ejemplo:

ftp://gentoo.arcticnetwork.ca/pub/gentoo/releases/x86/current-stage3

Y lo descargamos,en liks presionar d y aceptar



Lo descomprimimos en /mnt/gentoo

Atención : Si descargaste con liks directamente solo descomprime

ls 

time tar xjpf nombre_starge3.tar.bz2

O pueden ver el proceso con

time tar xvpf nombre_starge3.tar.bz2

Si lo descargaste con chrome,firefox,etc y esta por ejemplo den Descargas:

Abre otra terminal y :

su
cd ~tu_usuario/Descargas
ls *tar.bz2
mv nombre_starge.tar.bz2 /mnt/gentoo

Y volviendo a la otra consola(en /mnt/gentoo)

time tar xjpf nombre_starge3.tar.bz2

Hecho una de las dos opciones ahora tiene que verse así al hacer ls :


Ahora copiamos nuestros nameservers(para poder usar la conexión de Internet de ubuntu en gentoo)

cd /
cp -L /etc/resolv.conf /mnt/gentoo/etc/

Ahora montamos los sistemas de ficheros necesarios para poder iniciar un entorno enjaulado

Los cuales son proc:

mount -t proc none /mnt/gentoo/proc 

sys:

mount --rbind /sys /mnt/gentoo/sys

dev:

mount --rbind /dev /mnt/gentoo/dev

Y iniciamos el entorno enjaulado chroot,para poder usar el sistema:

Cambiamos de raíz a /mnt/gentoo y le pasamos bash

chroot /mnt/gentoo /bin/bash



Cargamos el profile

source /etc/profile

Y listo ya estamos en gentoo pero desde Ubuntu o la distribución que este usando :D

Creamos la carpeta de portage

mkdir /usr/portage

Que es portage?

Portage es probablemente la más importante innovación de Gentoo en la gestión de software. Debido a su potente flexibilidad y una gran cantidad de funcionalidades, es frecuentemente apreciado como la mejor herramienta de gestión de software disponible para Linux.

Portage esta completamente escrito en Python y Bash y, por tanto, totalmente a la vista de los usuarios al ser ambos lenguajes interpretados.

La mayoría de usuarios trabajarán con Portage a través de la herramienta emerge. Este capítulo no pretende duplicar la información disponible en la página de man sobre emerge. Para una completa información sobre las opciones de emerge, por favor, consulte la página del manual:

http://www.gentoo.org/doc/es/handbook/handbook-x86.xml?part=2&chap=1

man emerge

Descargamos la ultima instantánea usando emerge

emerge-webrsync



Establecemos hora y zona

Buscamos nuestro pais

ls /usr/share/zoneinfo/America

Y lo copiamos a /etc/localtime(por ejemplo):

cp /usr/share/zoneinfo/America/Mexico_City /etc/localtime

También :

echo "America/Mexico_City" > /etc/timezone

Seleccionamos un perlfil

En terminal :P

Los listamos:

eselect profile list

Y seleccionamos uno(Por ejemplo Desktop)

eselect profile set 10


Establecemos el nombre de nuestra maquina y servidor

cd /etc

echo "127.0.0.1 miordenador.en.misitio miordenador localhost" > hosts

sed -i -e 's/hostname.*/hostname="miordenador"/' conf.d/hostname


Establecemos  hostname

hostname miordenador

Y verificamos

hostname -f




Configuración del núcleo

Esta es la parte mas tardada,ya que se lleva mucho tiempo y yo estoy un poco obsesionado con eso,por eso el sitio se llama tiempo de tux.

En gentoo tenemos que configurar el kernel y luego compilarlo

Tenemos dos opciones,lentasss

(No hagan nada son opciones)

La automática que hace todo por nosotros,pero que se tarda en compilar lo que es el programa y en crear el kernel mas

Yo hice esto en una laptop hace tiempo(2ghz,1gb ram) y se tardo 4 horas mas o menos,una en instalar genkernel y tres en compilar(así que pueden hacer estadísticas de su pc):

Descargamos el source

emerge gentoo-sources

Hacemos emerge a genkernel :

emerge genkernel
Si les da errores,nos avisara(en ingles) y solo es cuestión de hacer lo que nos diga,aveces añadir lo que nos menciona a la variable use de /etc/portage/make.conf, o cambiar una variable del sistema

Y después

genkernel all

Y aquí podemos esperar un rato,para lo cual no soy bueno:



La otra opción es si queremos hacerlo manual, podemos

Descargar gentoo-sources

time emerge gentoo-sources

Nos pasamos al directorio de linux

cd /usr/src/linux

Y configuramos,luego compilamos




pero no puedo dar informacion sobre esto porque todas las pc son diferentes,asi que visiten la información oficial

http://www.gentoo.org/doc/es/handbook/handbook-x86.xml?full=1#book_part1_chap7

Y

http://www.gentoo.org/doc/es/articles/linux-kernel-compiling.xml

En mi caso lo haré manual,por las circunstancias en las que estoy,ya que usar genkernel en mi netbook se tardaría machismo.

Bien después de 2 horas he terminando de compilar el kernel, después de eso debemos configurar el fstab

nano -w /etc/fstab

Y añadir nuestra partición root

Por ejemplo yo

/dev/sda7

Y en mi caso también no use /boot en otra partición,ni home así que comentamos las demás

Y use ext4, también añadimos la partición de swap que comente arriba :





Pueden ver con fdisk -l de nuevo



Ahora vamos a configurar la red

cd cd /etc/init.d

ln -s net.lo net.eth0

cd ../conf.d

Podemos añadir una ruta por defecto para eth0(en mi caso no,porque no sirve el eth),por ejemplo:

echo 'config_eth0="192.168.1.10 netmask 255.255.255.0 brd 192.168.1.255"' >> net

echo 'routes_eth0="default via 192.168.1.1"' >> net

También debemos mandar el hostname que escribimos anteriormente al hostname de esta carpeta

echo 'hostname="nombredemimaquina"' > hostname

Añadimos eth0 como default(en mi caso despues agregare wlan0,cuando instale el modulo para mi targeta de red) :

rc-update add net.eth0 default

Definimos nuestra contraseña de root

passwd

Verifica que este tu configuración de tiempo en /etc/timezone

cat /etc/timezone

Y tu teclado

nano -w /etc/conf.d/keymaps

En la variable keymap es donde debe ir tu keymap de tu teclado(us,es,etc)

En mi caso:

la-latin1

También edita la configuración del reloj según tus necesidades(solo comenta o descomenta #)

nano -w /etc/conf.d/hwclock

Configurar el idioma

nano -w /etc/locale.gen

Descomenta tu idioma (de preferencia UTF-8)

En mi caso


es_MX.UTF-8 UTF-8



Si no esta tu pais,mas información aqui:

http://www.gentoo.org/doc/es/utf-8.xml

Y generamos

locale-gen

Y también creamos este archivo

nano /etc/env.d/02locale

Y escribimos:

En mi caso:

LANG="es_MX.UTF-8"
LC_COLLATE="C"

También emergemos syslog-ng y vixie-cron

time emerge syslog-ng vixie-cron

La opción time es opcional,yo la uso porque le viene bien al nombre del sitio :P

Aquí los resultados de emerger eso

real 7m59.923s
user 5m56.226s
sys 1m19.449s

Ahora debemos añadirlos al inicio

rc-update add syslog-ng default

rc-update add vixie-cron default

Como es una netbook,voy a emerger wireless-tools

emerge wireless-tools

Eso es todo,el grub lo deje en ubuntu(mas fácil :D)

En otra terminal:

update-grub2





Para instalar hacer update en su distribución depende de cual sea,en Ach :

wiki.archlinux.org/
O para instalarlo en gentoo :

http://www.gentoo.org/doc/es/handbook/handbook-x86.xml?part=1&chap=10

Terminado de instalar el grub y configurar lo

En la terminal de gentoo


Ahora solo falta elegir los mirror



emerge mirrorselect


mirrorselect -i -o >> /etc/portage/make.conf


mirrorselect -i -r -o >> /etc/portage/make.conf 

Y crear un usuario

useradd -g users -G lp,wheel,audio,cdrom,portage,cron -m nombre_usuario 
Definimos su password:

 passwd nombre_usuario

Y apagamos

rm nombre_starge3.tar.bz2

exit


umount -l /mnt/gentoo/dev{/shm,/pts,}


umount -l /mnt/gentoo{/proc,/sys,}


reboot



Recuerden que si no podemos acceder a Internet,o no podemos configurar desde mismo Gentoo por haber configurado mal algo,siempre podemos recurrir a chroot desde otra partición o un live{cd,usb,dvd}y pasarle Internet :



Partición

mount /dev/particion-gentoo /mnt/gentoo


Internet:



mount --bind /etc/resolv.conf /mnt/gentoo/etc/resolv.conf



o


cp -L /etc/resolv.conf /mnt/gentoo/etc/


proc 


mount -t proc none /mnt/gentoo/proc 

sys:

mount --rbind /sys /mnt/gentoo/sys

dev:

mount --rbind /dev /mnt/gentoo/dev




para poder instalar y configurar todo lo necesario

Jaula:


chroot /mnt/gentoo /bin/bash

Eso es todo :D


Lean sobre portage:

Enlace

Referencia : www.gentoo.org/
Leer más...

domingo, 27 de enero de 2013

chroot unix que es

Hablando un poco sobre la temática oficial de este sitio(tutoriales para os tipo unix,derivados de unix),vamos a darle un repaso a chroot,un comando que nos puede servir en mas de una ocasión:

Wikipedia :


chroot en los sistemas operativos derivados de Unix, es una operación que invoca un proceso, cambiando para este y sus hijos el directorio raíz del sistema. "chroot" puede referirse a la llamada de sistema chroot(2) o al programa ejecutable chroot(8). Comúnmente, el entorno virtual creado por chroot a partir de la nueva raíz del sistema se conoce como "jaula chroot".

El sistema chroot fue introducido por Bill Joy el 18 de marzo de 1982 (17 meses antes de que BSD 4.2 fuera publicado) para probar su sistema de instalación y construcción.

Bill Joy:

Considerado uno de los mejores desarrolladores de la historia de la computación, según afirma Eric Schmidt, el actual director general de Google, llegó a reescribir el núcleo BSD en un fin de semana. Bill Joy en abril del año 2000 mostró su preocupación por los efectos de las tecnologías emergentes en su artículo de Why the future doesn't need us,1 publicado en la revista Wired. Esto tras quedar impactado por la lectura de un fragmento escrito por el primitivista Theodore Kaczynski. Posteriormente formaría un fondo de capital riesgo destinado a invertir en dichas tecnologías desde un enfoque de prevención securitaria.

Al usar "chroot" para invocar un proceso, se impedirá al mismo y a sus procesos hijos acceder por su nombre a ningún fichero que esté por encima del nuevo directorio raíz. Esto es entendido a menudo como un dispositivo de seguridad, ya que en teoría crea una zona segura para ejecutar un programa que provoca desconfianza, no está probado, o de alguna forma puede presentar un comportamiento peligroso para la integridad del sistema. Sin embargo, cabe señalar que las jaulas chroot no son tan seguras como otro tipo de jaulas o la virtualización.

Debido a que los programas esperan encontrar en lugares determinados su espacio de almacenamiento, los archivos de configuración o sus bibliotecas de enlace dinámico, entre otros, preparar una jaula chroot implica también incluir dichos recursos dentro de ella.

Los programas tienen permitido llevarse descriptores de archivos abiertos (sean archivos físicos, tuberías, o conexiones de red) dentro de la jaula, lo cual puede simplificar el diseño haciendo innecesario dejar archivos funcionales dentro del directorio chroot. Esto también funciona como un sistema de capacidades simple, en el cual, al programa se le otorga acceso explícito a los recursos externos del chroot basado en los descriptores que puede llevar a su interior.

Fuente : es.wikipedia.org

En el uso mas común que le damos a chroot es para acceder a una nueva raiz (/),por ejemplo desde un livecd o desde otra partición acceder a una raíz de otro sistema derivado de Unix.

Por ejemplo en distintas particiones o discos duros tenemos una jerarquía de carpetas:


Imagen via : Linux gnu blog

Y podemos hacer chroot a estas desde el usuario root:

Primero montamos nuestra partición en una carpeta de la raíz actual

Por ejemplo:

mount /dev/sda4 /mnt

Después montamos nuestro

mount --bind  /dev /mnt/dev

El parámetro --bind concede únicamente (parte de) un único sistema de archivos)

También podemos usar otros parámetros como --rbind , mas información;

man mount

Y por ultimo hacemos el chroot:

chroot /mnt 

También podemos  definir una shell de trabajo

chroot /mnt /bin/bash

Ahora estando en el entorno enjaulado podemos usar ese sistema,por ejemplo si estas en Debian y tienes una partición de ubuntu donde tenias links,ahora puedes usar links desde el entorno enjaulado,mas que nada el uso que le damos es para acceder a una raiz en modo enjaulado,sea una partición un disco duro o hasta por ssh :D

Les dejo unos links para mas información :

Ejecución de servicios en un entorno chroot
Jaula chroot ssh
 Y por supuesto en terminal :

man chroot
Leer más...

sábado, 26 de enero de 2013

Auxo miniatura de la app en multitarea y mas en iOS 5

Hace tiempo que no pongo nada de iOS y esta vez comparto una alternativa a la multitarea común que encontré se llama auxo,es un tweak de cydia para iOS 5 y iOS 6 jailbroken,nos presenta cosas muy buenas ademas de la conocida previsualizacion (por si habían visto algo por ahí):



Ademas incluye el slide de brillo y de volumen, también unos toggles como los de sbsettings y el álbum de la canción que estamos escuchando.

Para instalar solo recargamos y lo buscamos como Aux en cydia

Nota: Es una app de pago.

Vídeo de myjailbreakmovies



Vídeo mio



Bien como vemos hay muchas alternativas a la conocida multitasking de iOS,aqui tambien dash otra multitarea muy buena

Enlace
Leer más...

jueves, 24 de enero de 2013

Tutorial modulos python 3 desde Unix

Esta es la parte 3 de los tutoriales de python 3.x sobre Unix

Se recomienda leer las partes anteriores:

Enlace

Los módulos son los archivos con extensión .py,.pyo,.pyc.

A diferencia de los módulos principales que son los .py que venimos viendo en estos tutoriales,estos archivos son lineas de ordenes que usan otras lineas de ordenes,osea módulos para scripts,aunque los dos tengan la misma extensión .py.

A lo que en Tiempo de Tux llamamos script otras web's les pueden decir módulos  pero en concreto son lineas de ordenes,algo que hace entender a las computadoras lo que queremos hacer.

Así que bueno, en esta ocasión vamos a aprender a usar y crear módulos para usarlos en nuestros script's.

Primero que nada debemos saber que son las funciones y como usarlas,en esta ocasión veremos las funciones muy por encima y en otra ocasión las fortaleceremos con mas conocimiento:

Funciones

Las funciones en python se definen con la llave especial def(Defining) seguida del nombre de la función y los argumentos,estos últimos encerrados en ():

def nombre_f (argumeto1, argumeto2):

Los argumentos son datos que le pasaremos a lo que este adentro de la función,desde el llamado de la función:

Adentro de la función pueden ir muchas cosas,desde print hasta algoritmos muy muy complicados que incluso usan/llaman otras funciones,por ejemplo print

def nombre_funcion (argumeto1, argumeto2):
print (argumeto1)
print (argumeto2)

Llamada de funciones:

Las funciones las llamamos cuando las necesitemos y como dije le pasamos el argumento,los argumentos son parametros que trabajaremos desde la misma función,estos parámetro o argumentos los creamos desde ahi mismo o desviamos una variable ya creada:

nombre_funcion(“Argumento 1”, “Argumeto 2”)  # Para llamar las funciones solo basta escribir su nombre

Y también enviar los argumentos (si usamos o necesitamos tales)

Script de ejemplo:

#!/usr/bin/env python3

def nombre_f (argumeto1, argumeto2):
print (argumeto1)
nombre_f(“Argumento 1”, “Argumeto 2”)

Como dije le podemos pasar argumentos, si lo necesitamos,por ejemplo tenemos definidos un nombre y un apellido y queremos imprimirlos desde la función,solo haríamos esto:

#!/usr/bin/env python3


nombre = "Damian"
apellido = "Rivera"


def unir(nombre,apelido):
       print ("Me llamo :", nombre, apellido)


unir(nombre,apellido)

También cabe destacar que en la llave def después del nombre de la función podemos asignarle un descriptor(nuevo nombre) a nuestro argumento que deseamos trabajar:

Por ejemplo la variable global se llama "nombre" pero podemos asignarle un descriptor nuevo para poder trabajar con el en la llave def:


#!/usr/bin/env python3


nombre = "Damian" # Variables-
apellido = "Rivera" # Globales


def unir(n,a): # Transformamos las variables a n y a

       print ("Me llamo :", n, a) #Aquí ya podemos usar el descriptor


unir(nombre,apellido) # Aquí le pasamos las variables globales


Del mismo modo podemos hacer operaciones aritméticas

Enlace 


También podemos llamar funciones desde otras funciones y usar los mismos nombres para las variables locales:

Enlace



Módulos

Los módulos son otros scripts o lineas de ordenes que importamos para poderlos usar en nuestro script principal,primero que nada se tiene que hacer la importación con la llave import seguido del nombre del modulo, por ejemplo:

import os

Los módulos contienen funciones las cuales llamamos con un punto (.),

os.uname() # Aquí estamos llamando la función de os que devuelve nuestro logname

Ya que debajo de os,puede haber uname,getlogin,getcwd,etc como vimos en el script, y para llamarlos solo debemos colocar un (.), también hay que tener en cuenta que aveces la salida del comando no es una simple variable,puede ser una lista o algo mas complejo y se debe manejar como es:

Si es una lista, por ejemplo uname de os:

#!/usr/bin/env python3

import os 

sistema = os.uname() 

print ("Argumentos en la lista :", sistema[:]) 

print ("Primer argumento:", sistema[0])




En ese caso estamos importando el modulo os y estamos pidiendo la función uname,la cual devuelve una lista.

Existen muchos módulos para python,no se si se compare con CPAN de Perl pero hay muchos,bien comenzemos:

Los módulos que usen como por ejemplo Gtk o Qt tienen su propia API asi que no les puedo explicar como usarlos ya que es mucha documentación y solamente se usan como uname de os,solo que aun grado mas alto.

Pero vamos a crear nuestros propios modulos,primero que nada vamos a crear una carpeta y dos archivos de texto para el ejemplo:

Como somos Unixeros,o por lo menos yo,abran una consola y metan este pipe:

mkdir mmdulos; cd mmdulos; touch mi_modulo.py && touch mi_script.py; clear; echo "Tenemos `ls  | wc -l` archivos: "; ls


(mmdulos es mis módulos :P)




Ahora vamos a crear unas funciones para mi_modulo.py con lo que aprendimos en esta entrada y el enlace de abajo:

Enlace
Mete esto en mi_modulo.py

Desde la termina puedes usar

gedit mi_modulo.py

Y mete esto:


#!/usr/bin/env python3

def mayus(p1): # Función que convierte a mayúsculas
     print (str.upper(p1))

def minus(p1):
     print (str.lower(p1)) # Función que convierte en minúsculas


Lo explico,estamos creando dos funciones una que convierte en mayúsculas y otra que convierte en minúsculas las cadenas de texto(es raro porque estas ya pertenecen a una función del sistema,pero es un ejemplo)

Ahora en  mi_script.py mete esto:

#!/usr/bin/env python3

import mi_modulo # Llamaos el modulo que creamos

hola = "hola" # Definimos una variable para probar

print ("La funcion mayus convierte:", hola, "en :")

mi_modulo.mayus(hola) # La convertimos :D


Y ejecutamos  mi_script.py

Como se dan cuenta si son programadores,ya experimentados no uso return,algo fundamental de una función esto lo hago porque las salidas de las funciones las manejo desde las mismas,no las trabajo desde otro lugar,por ejemplo:


def mayus(p1): # Función que convierte a mayúsculas
     print (str.upper(p1))


imprime la cadena por lo cual no es necesario hacer en el script:

print (mi_modulo.mayus(hola))

Porque es un ejemplo,ya que así es como manejo return:

Borramos lo que hemos escrito en los dos archivos:

En la consola


cat /dev/null > mi_modulo.py > mi_script.py

Y metemos en mi_modulo.py :



#!/usr/bin/env python3

def mayus(p1): # Función que convierte a mayusculas
     return (str.upper(p1)) # Regresa la cadena convertida

def minus(p1):
     return (str.lower(p1)) # Funcion que convierte en minusculas



Y en mi_script.py:



#!/usr/bin/env python3

import mi_modulo

hola = "hola"

print ("La funcion mayus convierte:", hola, "en : ")

mi_modulo.mayus(hola)) # No imprime nada


print (mi_modulo.mayus(hola) # Adivinen, si imprime


# De hecho podemos usar su información para trabajarla de otra forma:

cadena = mi_modulo.mayus(hola)

print (cadena.replace("O","I")



Con la llave return, podemos manejar la salida como un dato y podemos trabajarla,pero no es necesario en todas las funciones si estas tienen su propia salida.

Eso es todo,les dejo un poco mas de documentación(muy buena) de pycartagena:


Enlace
Leer más...

miércoles, 23 de enero de 2013

Eliminar ppa para poder actualizar los repos Ubuntu 12.10

Esto sirve para todos los ubuntus solo que el mas nuevo es 12.10 y por eso hice mencion de el,ademas de que es el que estoy usando,pero todos guardan esta configuración ahí,si no es así usen :


sudo find / -type d -name sources.list.d

Y el resultado que les arroje es lo que usaremos:

Bueno no se si les ha pasado que cuando quieren instalar algo desde un PPA falla y este hace que sea imposible actualizar todos los repos,hace no poder hacer apt-get update, esto nunca me habia pasado y me paso,pero en fin recordé la solución a esto en el iPhone el cual es borrar los repos o archivos del /etc/apt/sources.list.d/ y listo :D

Así que la solución es:

1.Apuntar el ppa que da error en gedit o algo

2.Hacer un ls al /etc/apt/sources.list.d

ls /etc/apt/sources.list.d/
Y ver el nombre que apuntamos que coincida con el archivo que esta en /etc/apt/sources.list.d y borrarlo :

sudo rm /etc/apt/sources.list.d/nombre_del_ppa
Y listo ya podemos hacer el update

Si hay otros como el .save también


Eso es todo
Leer más...

lunes, 21 de enero de 2013

Como recuperar grub en Ubuntu 12.10

El grub es el arranque de la pc,un poco después del cargador inicial y aveces lo podemos arruinar por x razón y a mas de uno le ha aparecido grub rescue > , esto pasa tras instalar un sistema junto a ubuntu,mas que nada windows,pero ami me paso con Archlinux,y tuve que arreglarlo y les comparto la solución.

Nota: Tutorial basado en que ya tenias antes grub y era de ubuntu

Primero que nada,iniciamos nuestro cd live(pendrive o dvd también) de Linux,sea Arch,ubuntu,gentoo,etc desde el cargador de inicio.

Yo use Ubuntu 12.10 porque mismo tenia el liveusb de este:

Ahora abrimos una terminal(si usamos un sistema con entorno gráfico)

Ahora vemos nuestra partición de ubuntu como root o sudo, con :

sudo fdisk -l 

En mi caso era una partición extendida en /dev/sda5

La montamos en la carpeta /mnt

sudo mount /dev/sda5 /mnt

Después montamos todo lo demás con :

sudo mount --bind  /dev /mnt/dev
Ya con nuestro sistema montado en /mnt iniciamos un entorno aislado chroot para usar el sistema desde el OSlive

sudo chroot /mnt
Ya en el sistema de ubuntu,reinstalamos el grub

sudo grub-install --recheck /dev/sda

Y listo :D

También convendría hacer un update para que busque los sistemas,aunque en ocasiones no es necesario:

sudo update-grub2

Aquí un ejemplo(ya no es el OSlive)

Eso es todo :D
Leer más...

Integrar wikipedia a Ubuntu 12.10 Unity

Wikipedia es una fuete de informacion muy grande,no se si la mas grande de internet actualmente,ya que google es otra cosa,pero bueno el hecho es que muchas veces mismo google nos enlaza a wikipedia y es de ahi donde encontramos la informacion,y en esta ocacion un pequeño tutorial para integrarlo a Unity.

Unity es una shell grafica creada por Canonical,la cual he visto que aparte de ubuntu se puede usar en zorin y opensuse,en mi experiencia personal la he usado en Arch y Gentoo pero no la mas reciente que es la que porta ubuntu 12.04 LTS y 12.10,esta shell se le pueden añadir lenses,que son como extensiones para darle mas uso y aunque algunas han sido muy criticadas como la de amazon,hay muchas que nos seran de mucha ayuda como esta que menciono,ya que es tener todo wikipedia en Unity,cono solo presionar la tecla windows(super o mod 4) recalco tendremos todo wikipedia a nuestro alcance :D

Para instalar

Solo abre una terminal y teclea estos comandos en este orden


sudo add-apt-repository ppa:scopes-packagers/ppa
Enter
sudo apt-get update
sudo apt-get install unity-lens-wikipedia

Ahora cerramos sesión y listo,tendremos un nuevo icono en el dash

Y podremos buscar lo que queramos



Este nos abrirá wikipedia en nuestro navegador predeterminado

Eso es todo :D
Leer más...

domingo, 20 de enero de 2013

Configurar password su (root) en ubuntu 12.10

En ubuntu 12.10 tenemos activado por defecto el password de sudo de nuestro usuario normal,pero el de root es otro,cual? quien sabe :P

El usaurio raiz/root o super usuario es el usaurio mas poderoso de los sistemas Unix,sea sigle unix o unix-like o tipo unix,es el el usuario mas poderoso,llamado administrador o super user,este nos permite modificar lo que queramos y si asi lo queremos podemos hacer

rm -rf /
Que destruye todo el sistema.

Asi que asi de peligroso es root,existen infinidad de comandos de Unix o similares basados en GNU,algunos simples y otros peligrosos si no los sabemos usar,asi que este usuario solo es para la administración del sistema sobre algo que no pueda hacer nuestro usuario comun,o que requiera muchos comandos en modo root,como la auditoria de redes.

Así que esto se hace para poder usar root en ubuntu 12.10

Primero entramos a root desde  de sudo

En terminal
sudo su

Ahora configuramos nuestro password

passwd
Ponemos la contraseña de unix(que sera la de root)

Y listo ahora podemos acceder a root con

su

Eso es todo :D
Leer más...

Como instalar Google Chrome en Ubuntu 12.10

Google chrome es mi navegador favorito,y aunque no sea software libre en mi opinión es el mejor navegador que hay,si quieren una alternativa libre esta chromium y es mas fácil de instalar:

En terminal:
sudo apt-get install chromium-browser
 Y bien chrome es un poco mas dificil ya que tenemos que bajar el paquete .deb, así que solo sigan este tutorial para instalar chrome :D

Tutorial
1.Descarga google chrome

Enlace

Elige el paquete .deb para tu arquitectura(32,64 bit)

2.Ya descargado abrimos una terminal (ctrl +alt + t)

Nos cambiamos de directorio a donde se descargo chorme,en mi caso en la carpeta Descargas

En terminal
cd Descargas



Listamos los .deb con

ls *deb

Y instalamos con

sudo dpkg -i nombre_de_chrome

Y listo :D

Solo esperamos

Si les da un error(como ami[no siempre lo da])

Escribimos en terminal:

sudo apt-get -f install


Y cuando termine solo buscamos chrome en el dash

Eso es todo :D

Si quieren un navegador minimalista

Les dejo mi navegador escrito en Perl

Enlace 
Solo lo descomprimen y entran a la carpeta


Luego le dan dos clic al ejecutable y listo





Eso es todo
Leer más...

miércoles, 16 de enero de 2013

Tutorial scripting python 3.3 desde Unix parte 2

Este es el segundo tutorial de python 3.3.x ,aclarando un poco,ya le hice un espacio en el sitio en el enlace de abajo:

Enlace
El cual va a contener estos tutoriales,donde hablare de bucles,estructuras selectivas,variables,etc y también ejemplos,funciones, módulos,etc.

Y en esta ocasión vamos a ver listas y bucles,ya que quiero repasar lo que se había visto en python 2.7,y bueno nada,vamos a comenzar.

Vamos ir subiendo la dificultad de los tutoriales mientras vayamos avanzando,ya que python sirve para muchas,cosas y en este caso solo estamos viendo scripting desde Unix,asi que empezaremos por el principio :D.

Listas

Las listas son parecidos a los arrays (si conoces otros lenguajes),si no,dejeme explicar  que las listas son variables/lugares donde guardamos 0 o mas de un valor,por ejemplo una variable puede contener un valor:

variable = "un valor"

Y una lista puede guardar desde 0 hasta muchos,estos se tienen que guardar en [ ] separados por comas y si son cadenas encerradas en "" o '':

Lista sin valor:

lista = []

Lista con dos valores:

lista =["Valor uno","Valor dos"]
Recuerden que existen tipos de datos y debemos saber manejarlos,asi que hacemos un pause a las listas para,comprender los tipos de datos y usar mejor las listas.

Tipos de datos 

Porque son tan importantes los tipos de datos?

Digamos que python tiene una canasta para cada dato,si no defines que dato es,python no sabe en que canasta guardarlo :(

Así que estos son los mas comunes:

Descriptor (Ingles) Español Descripción Ejemplo:

int (integer) = entero = numero = 12,3,etc

str (string) = cadena = palabras/letras = "Hola Mundo" 

float (float) = de punto flotante o también conocido como real = números con punto = 13.4,11.0,etc.etc

long (long) = largo = números con letras = 13abs etc

complex (complex) = complejo :

Es una fucion de un long y un float almacenados en un double de C = 10.5 * 10.5.s

Esos descriptores los usamos al transformar un valor en otro, y porder trabajar con ellos,por ejemplo:

Si queremos recibir números(enteros) desde el teclado ,y transformamos a integer, para poder usarlos en operaciones aritméticas,debemos hacer:


int(input("Escribe un numero: "))
De igual forma en con los float,etc


float(input("Escribe un numero de punto flotante: "))

Claro que esto va en una variable,por ejemplo este script:


#!/usr/bin/env python

print ("Si no ingresas los tipos de datos que pide,dara error :(")
numero1 = int(input("Escribe el numero entero: "))
numero2 = float(input("Escribe el numero de punto flotante: "))

print ("Suma = ", numero1 + numero2)


Y en modo cadena igual

Ahora las variables las podemos definir así:

cadena = "Cadena"

numero = 10

flotante = 10.5

Los podemos imprimir,y podemos trabajar con ellos si estos los definimos nosotros en variables,en el caso de que vengan de otro lugar,por ejemplo de la entrada estándar (input) debemos convertir su valor (como arriba):


#!/usr/bin/env python

cadena = "Cadena de texto"

numero = 10

flotante = 10.5

print ("Imprimir\n")
print ("Cadena = ", cadena, "\nNumero = ", numero , "\nFlotante = ", flotante)
print ("Usando operacion aritmetica :")
print ("Numero + Flotante =", numero + flotante)
print ("Numero * 3 = ", numero * 3)
print ("Cadena * 2 = ", cadena * 2)


Los valores bloeanos los vamos a necesitar mucho y debemos saber manejaros,estos valores son:


True (True) =  Verdadero

False (False) = Falso

Estos valores son retornos que podemos usar en bucles o estructuras selectivas,podemos decir que:

0 es False

y

1 es True

 Ya que son los valores que retornan,

También existe un valor nulo el cual es:

None(None) = Nulo/Sin valor


Bien.

Continuando con las listas,ahora si podemos hablar bien:

Digamos que queremos asignar un valor a cada una de estas,la primera es cadena,segunda entero y tercera flotante:

lista = ["Mi cadena", 10 , 10.7]
Ya las asignamos,pero ahora como las llamamos?

Debemos tener en cuenta que las listas son valores,y estos se tomas de izuierda a derecha comenzando por cero,nosotros lo vemos asi:


lista = ["Mi cadena", 10 , 10.7]
Y python lo ve así:

lista = [ 0, 1 , 2]
Así que para llamarlo,debemos llamar a la lista y el numero del valor que queremos,por ejemplo el numero 10 que es el primer valor:

lista[1]

También los podemos llamar todos,pero se regresan con todo y [] y ""

lista
Otra cosa que podemos hacer es llamarlo por rebanadas(como se traduce la documentación de python)

Las rebanadas son cortes de la lista y estas son muy utiles para cambiar o agregar una, aquí solo cabe indicar que en este si se comienza por el 1,ya que el cero es None y es para poder agregar un nuevo valor:


nosotros lo vemos así:


lista = ["Mi cadena", 10 , 10.7]
Y python lo ve así:

lista = [ 1 , 2 , 3] # 0 es nuevo valor
La sintaxis es:

lista [ : ] # todo

Script:


#!/usr/bin/env python

lista = ["Mi cadena", 10 , 10.7]

print ("Lista = ", lista , "\n" )
print ("Primer valor (0) = ", lista[0], "\n")
print ("Segundo valor (1) = ", lista[1], "\n")
print ("Tercer valor (2) =", lista[ 2 : ] , "\n")
print ("Rebanada [ -2 ] = ", lista[ -2] , "\n")
print ("Rebanada [ : 0  ] = ", lista[ : 0 ], "\n")

print ("Rebanada [ 0 : ] = ", lista[  0 : ], "\n")

print ("Mostrar solo 1 y 2 rebanada [ 1 : ] = ", lista[1 :] )
print ("Mostrar solo 0 y 1 rebanada [ : 2 ] = ", lista[ : 2])


Ejecuten y vean el ejemplo,analicen y entiendan.

Para añadir un valor usamos esta sintaxis:

Lista[rebanada] = [valor/es]

Por ejemplo:



#!/usr/bin/env python

lista = ["Mi cadena", 10 , 10.7]

print ("Lista = ", lista , "\n" )
print ("Primer valor (0) = ", lista[0], "\n")
print ("Segundo valor (1) = ", lista[1], "\n")
print ("Tercer valor (2) =", lista[ 2 : ] , "\n")
print ("Rebanada [ -2 ] = ", lista[ -2] , "\n")
print ("Rebanada [ : 0  ] = ", lista[ : 0 ], "\n")

print ("Rebanada [ 0 : ] = ", lista[  0 : ], "\n")

print ("Mostrar solo 1 y 2 rebanada [ 1 : ] = ", lista[1 :] )
print ("Mostrar solo 0 y 1 rebanada [ : 2 ] = ", lista[ : 2])


print ("\nAnadiendo un valor al principio de la lista : \n")

lista[ : 0 ] = ["Inicio"]

print (lista, "\n")




También podemos ver la longitud de la lista con el operador len:

len(lista)

Hasta aquí con las listas,podemos ver este ejemplo,solo ejecuten y analicen:

 Enlace

Bucles

while


Los bucles son ejecuciones constantes  de una orden basados en una condición y estos terminan hasta que se rompan o termine la condición,por ejemplo,tenemos un lugar a donde entrar y este necesita una contraseña y hasta que introduzcamos la contraseña correcta no hará mas cosas o pasara al siguiente paso del script,esto lo podemos hacer con un bucle

Enlace
Podemos empezar un bucle infinito con el uso de True(Verdadero) y despues usar break(romper) en la parte del bucle que necesitemos romperlo,o ya no lo necesitamos,al haber cumplido la condición.

Por ejemplo tenemos de condición que la variable a, tiene de valor valor:

a = "valor"

Ahora usamos esto de condición para un bucle:

while a == "valor":

Después cambiamos su valor desde la entrada del teclado:

a = input("Valor de a : ")
Y así de simple

Enlace
Esas son las dos formas de romper el bucle,solo recuerden que debe ir identado,para que reconozca la sintaxis:

while condicion :
        comandos
     
Vídeo:




for in

El bucle for recorre un valor hasta que termine de hacerlo,y en ese punto es cuando se rompe,por ejemplo las listas las podemos recorrer con un bucle for:

Creamos una lista

lista = ["uno","dos","tres"]
Usamos la sintaxis de for:

for debe crear un identificador que trabaje el valor asignado,con la sitaxis:

for identificador in valor_asignado:

Script:

#!/usr/bin/env python

lista = ["uno","dos","tres"]
for v in lista:
     print (v)


También podemos hacerlo directamente sin declarar una lista:


#!/usr/bin/env python

for v in ["uno","dos","tres"]:
     print (v)

O también podemos trabajar cadenas de texto:


 Mas info


Eso es todo en este momento sobre python 3.3.

Si tienen aportes o comentarios,adelante.
Leer más...