lunes, diciembre 10, 2007

Montar particiones al arrancar con FSTAB

Este articulo es para enseñar y yo recordar en un futuro, como y que hay que hacer para montar una partición que ubuntu no monta solo al instalar el sistema o simplemente no monta al arrancar el sistema.

Introducción

Primero empezaremos diciendo que en linux las particiones son los archivos hd?? o sd?? que están en el directorio /dev. Si lo que tenemos es un disco duro de conexión IDE o PATA, como quieras llamarlo, pues tus particiones empezarán por hd, luego según donde tengas conectado el disco duro, si en el primer conector o en el segundo, el archivo será hda? o hdb?, también esta los hdc y hdd, dependiendo si el disco duro esta conectado al otro cable IDE. Por otro lado, si tu disco duro es de conexión SATA, entonces tu archivo será sd? y luego la a,b,c, etc... dependiendo de en que cable lo hayas conectado en la controladora. De todas maneras no se si se le asigna los nombres secuencialmente y siempre habrá un sda si hay un sdb, y se puede decir lo mismo de los hda, hdb, etc...

Una vez explicado como se va a llamar tu archivo que representa el disco duro en linux, pasamos a describir como representa las particiones dentro de tu disco duro linux. Imaginemos que tenemos 4 particiones en nuestro disco duro, donde en la 1 tenemos instalada el windows XP, en la 2 , en la una partición que no se exactamente que es (¿la raíz para la partición logica?), en la 3 tenemos instalado el SWAP (partición de intercambio), en la 4 tenemos instalada nuestra distribución Ubuntu y en la 5 tenemos una partición de almacenamiento llamada Datos. Pues planteado este entorno de particiones y que en mi caso mi disco duro es un SATA y solo tengo uno, podemos decir que linux llamará sda1 a la partición donde esta XP, sda2 a esa "partición", sda3 a la partición swap, sda4 a la partición donde esta instalado el linux y sda5 a la partición de datos. Para ver nuestras particiones tenemos el comando:

$ sudo fdisk -l

que nos mostrá lo siguiente:


(hacer clic para agrandar y que se vea bien)

De esta imagen podemos observar que la columna:

1º es el nombre de la partición.

2º marca con un * la partición de arranque donde esta el MBR.

7º nos cuenta en que tipo de formato esta formateada la partición.

Llegados a este punto ya sabemos como tenemos organizado nuestro disco duro y he contado todo esto, por que cuando leo algo sobre linux me gusta que antes me pongan en situación, por que muchas veces hacen las cosas, casi no las explican y peor aun, no explican de donde sacar los datos que son necesarios para realizar la tarea.

Desarrollo

Una vez sabemos ya todo lo necesario, solo decir que el archivo que le dice al linux que particiones tiene que montar al arrancar o que particiones hay en nuestro equipo es el archivo /etc/fstab .

De este archivo lo que nos interesa son explicar para que sirven las columnas útiles ya que hay algunas que no se para que son y por lo tanto no me son útiles para montar simples particiones de datos. A continuación muestro el contenido de mi archivo fstab, con la línea ya introducida.




(hacer clic para agrandar y que se vea bien)

De esta imagen podemos observar que la columna:

1º es el identificador de la partición el UUID.

2º es el lugar donde vamos a montar la partición, la carpeta debe existir previamente.

3º es el tipo de formateo que tiene la partición.

4º son las distintas opciones para montar la partición

la 5º y la 6º no se para que son, yo copie los valores de la partición sda1 que esa si me la monto solo el ubuntu.

En mi caso, la partición que quise meter en el fstab es la sda5, la última linea, para saber que hay que poner en la 1º columna, el UUID, podemos sacar su valor con el siguiente comando, el cual nos devuelve el UUID de la partición que le pasamos.

$ sudo vol_id -uuid /dev/sda5

El valor que nos devuelva, lo pondremos a continuación de UUID="ristra_devuelta". En la 2º columna pondremos la ruta donde queremos montar nuestra partición, acordaos de crear antes la carpeta y de poner los permisos para que podáis acceder sin ser root. En la 3º columna ponemos ntfs, ya que la partición es de ese tipo. En la cuarta columna ponemos las opciones con que queramos montar nuestra partición, estas opciones están explicadas en el man mount. Las mas relevantes son:

umask : Con ello se indica con que permisos se montará la partición.

gid : Con ello se indica que grupo de usuarios podrán acceder a la partición (o eso creo).

Con esto acabo la explicación de como hacer para que se monte una partición automáticamente, solo recordaos que también podemos montar la partición a mano, por si esto no funciona, con $ sudo mount -a /dev/sda5 /media/datos

Bueno chao y asta otra, intentaré completar el articulo añadiendo el significado de más opciones.

PD: Si he tenido algún error de concepto por favor diganlo.


NOTA: Si queréis saber más y/o mejor, leed el primer comentario de OLE, que amplía conocimiento y comenta las cosas que se podían mejorar.

viernes, noviembre 23, 2007

Tuneles SSH

SSH Es un protocolo de red para el intercambio datos entre dos ordenadores de manera segura mediante el establecimiento de un canal encriptado de comunicación.

El uso mas común de ssh consiste en establecer un canal seguro para ejecutar comandos remotamente en terminales de la familia Unix. Pero también es posible establecer lo que se denomina túnel ssh desde otros sistemas operativos y con otros fines. Como por ejemplo entre sistemas MSWindows mediante la herramienta putty.

Un túnel ssh permite traernos el puerto de una maquina remota hasta otro puerto de nuestra maquina local. También podemos hacer lo contrario y llevarnos un puerto local a una maquina remota. Además esto puede aplicarse sucesivamente pudiendo llegar a acceder a maquinas no visibles desde nuestra red mediante una cadena de túneles ssh.

Una maquina intermedia nos trae el puerto remoto X de otra al puerto local Y de nuestra maquina local
ssh -l usuarioMaquinaIntermedia -L puertoRemotoX : maquinaDestino : puertoY maquinaIntermedia

Una maquina intermedia nos lleva el puerto local Y de nuestra maquina al puerto remoto X de otra
ssh -l usuarioLocal -R Y : localhost : X maquinaLocal

Con el comando ssh se pueden hacer muchas otras cosas como por ejemplo lanzar remotamente aplicaciones grafías y verlas localmente con el parametro -X, hablilitar compresion en la conexcion con -C , y mucho mas haciendo "man ssh"!

miércoles, noviembre 14, 2007

Bajando colecciones de fotos de internet...

Bueno, el otro día llegué a mi casa y me dije "joe, sería cojonudo tener todas las tiras de Bilo y Nano". Así que me puse a ello, lo ví claro, script que te trajo al mundo. Aquí lo tienen por si quieren tener toda la colección:

1 #!/bin/bash
2
3 number=1
4 limit=$1
5
6 # We need at least one parameter, a number.
7 if [[ $1 == "" ]]
8 then
9 echo "Usage: $0 "
10 exit
11 fi
12
13 # Take those images.
14 while [[ $number -le $limit ]]
15 do
16 wget "http://www.tiraecol.net/modules/comic/cache/images/tiraecol-$number.png"
17 number=$(($number+1))
18 echo "$number $limit"
19 done

Sencillito de usar. Por cierto, si quieren bajar más cosas, como galerias porno o yo que se qué sólo teneis que cambiarle la dirección web por la vuestra y por supuesto en la parte que alla un numero ponerle $number.

En un futuro subire la version mejorada donde le pasas una dirección cualquiera. Hasta entonces esto es lo que hay, pa una noche no está mal.

lunes, noviembre 12, 2007

Como configurar el MLDonkey

Introducción

El MLDonkey es un cliente unificado de varios protocolos p2p, los mas importantes son los de emule y el bittorrent. El MLDonkey es un cliente linux que se controla por consola, cosa que también nos proporciona una interfaz web para su uso mas ameno. A continuación voy a explicar como se configura este cliente para poder usarlo remotamente.

Empezaremos instalando el programa con la siguiente orden en la consola:

sudo apt-get install mldonkey-server


En las explicaciones venideras vamos a tener en cuenta la siguiente configuración:

-Instalación en un ordenador que hace de servidor de emule, con IP 192.168.1.4
-Control remoto de todo el cliente.
-Configuración de Puertos (Abrir Puertos) : puse en el router para la ip 192.168.1.4 el rango ip de tcp y udp 6881 a 6889 para el cliente bittorrent y demás.

Configuración del mldonkey y preparación del sistema.

A continuación lo primero que debemos hacer es entrar en el programa para habilitar la interfaz vía web, para poder hacer una configuración gráfica del cliente más cómoda y amigable.

Para poder acceder remotamente tanto vía web como por telnet hay que poner
que IPs están permitidas. Para ello primero tenemos que entrar en el programa, introduciendo en la consola la orden: "telnet localhost 4000".

Una vez dentro introducimos la siguiente orden, que indica al cliente que acepte todas las conexiones para acceder al cliente que provengan de localhost y de la red que tengo en mi casa:
set allowed_ips "127.0.0.1 192.168.1.255"

Preparación de los directorios donde se alojaran los temporales y los ficheros descargados.

En mi caso lo pongo en un disco duro a parte. Así que tenemos dos manera de cambiar los directorios donde se guardan las cosas

1º es configurar los directorios share en la interfaz web o por consola del mldonkey.

En vez de usar la consola (telnet) o la interfaz web usaremos el fichero downloads.ini que esta dentro de /home/nauzet/.mldonkey/

Este archivo contiene toda la configuracion del mldonkey y para la parte de preparar las rutas de la carpeta incoming lo haremos por aquí que es mas sensillo. Solo tenemos que buscar en la seccion Path, el share direcctori y sustituir en dirname la ruta de la carpeta incoming por la ruta que deseemos.

Ejemplo: En este ejemplo esta claro que se pueden borrar directorios como ej shared y el directories, donde solo tendríamos un solo lugar donde se pasan los archivos descargados. Ademas creo que lo improtante es la estrategia de los directorios, incoming_file, que supongo es como decirle al servidor descarga aqui.
shared_directories = [
{ dirname = shared
strategy = all_files
priority = 0
};
{ dirname = "/media/datoslinux/descargas/files"
strategy = incoming_files
priority = 0
};
{ dirname = "/media/datoslinux/descargas/directories"
strategy = incoming_directories
priority = 0
};]

2º es borrar los directorios donde se guardan y sustituirlos por enlaces simbólicos a donde queremos que se guarden las cosas

ln -s /directorioDestino enlaceSimbolico
*ejemplo (file y directories esta dentro de: /home/nauzet/.mldonkey/

ln -s /media/datoslinux/descargas/ incoming

NOTA: Hay que poner bien los permisos de la carpeta incoming por que sino no arranca el servidor.

Hay que hacer los enlaces de la carpeta share y temp (la carpeta temp esta en la interfaz web y se configura desde alli el destino)

Una vez echo esto el resto de la configuración lo hacemos por la interfaz web, para ello abrimos el navegador web e introducimos la IP del ordenador donde instalamos el cliente (192.168.1.4) y indicamos el puerto al que nos conectamos. Lo que tenemos que poner es:

192.168.1.4:4080

Una vez dentro vamos a la sección de opciones.


configurar el cliente ED2k(emule)
-Aumentar el numero de servidores a conectarse. Para ello buscamos la opción siguiente y le ponemos el nº de servidores.

ED2K-max_connected_servers 10

-puertos para el ED2K

ED2K-port 6885


configurar el cliente bittorrent

Para poder usar el cliente bittitorrent hay que activarlo hay q ir a NET y poner enable_bittorrent a true.


BT-client_port 6882 (cambiar puertos para mas seguridad)

BT-tracker_port 6881


Recursos y utilidades

Extensión para el firefox del mldonkey, para que se añadan al mldonkey los ficheros que vayas a descargar.

http://www.informatik.uni-oldenburg.de/~dyna/mldonkey/

Para configurar lo solo hay que ir a opciones dentro de lo de extensiones y ponerle la ip donde esta el mldonkey


Web mini tutorial español del mldonkey

http://www.guia-ubuntu.org/index.php?title=MLDonkey

martes, octubre 23, 2007

Ruby, ese "pequeño" lenguaje de programación

Bueno, ya dije en el post anterior me que encuentro aprendiendo a programar con Ruby...

Después de una semanita de estudio estoy empezando a llorar de alegría, ¡Ya me estoy despegando de C!, en esta última semana cuando estaba en clase de compiladores, mientra el profesor decía cosas yo estaba ya pensando en el código que supondría... EN RUBY!!! ESTABA PENSANDO EN UN COMPILADOR EN RUBY! no en Ada, ni C, ni Java... ni siquiera en ensamblador xDD, sólo en Ruby, señal de lo rápido que le puede llegar a gustar a uno este lenguaje y es que el desarrollo es muuuucho más rápido.

Para prácticar un poco decidí hacer las prácticas de otra asignatura que tuve en su momento (MP2) y así coger soltura con más o menos todos los detalles del lenguaje. Pues haciendo un paquete de listas, lo típico, se me ha quedado en esto.

class List
def initialize
@iter = nil
@list = []
end

def insert(elem, *rest)
@list << elem
rest.each do |i|
@list << i
end
return @list
end

def extract
@list.shift
end

def length
@list.length
end
end

¿No les parece simple a la par que fácil de leer y hermoso? ^^. De lo que más orgulloso me siento es del insertar :P

viernes, octubre 19, 2007

El man de ruby

Hola amiguetes! me echabais de menos?... NO?!, jo... Bueno da igual, ahí vamos con el apunte de hoy.

Pues resulta que estoy aprendiendo ruby, ya había mirado cosas hace algún tiempo pero ahora estoy en plan serio, ya escribo algunas cosillas y espero que en breve pueda empezar ya a usar todo el potencial de ruby tanto para hacerme bibliotecas, como programas grandes o para escribir pequeños scripts para hacer rápidamente una tarea.

Bueno, para todo el que quiera empezar y para recordarlo yo mismo, una de las primeras cosas que he aprendido en ésta mi n-ésima vez aprendiendo ruby (y que no sabía las veces anteriores) es que ruby tiene un sistema de documentación, el paquete RDoc (Ruby Documentation). Cuando lo hayamos instalado podremos hacer consultas usando el programa ri (Ruby Information) sobre cualquier método y se nos presentará en pantalla una pequeña ayuda diciendo qué es lo que hace y qué hay que pasarle, etc... MUY MUY ÚTIL PARA NOVATOS.

Otra cosa que me resulta pesada cuando se va a aprender uno un nuevo lenguaje es la cantidad de funciones que desconoce y empiezas a implementartelas tú sin saber que ya existen... Ahora para evitarme esa situación y conocer las funciones, cuando necesito hacer algo que lo primero que se me pasa por la cabeza es "joder, esto es algo típico", entonces es altamente probable que ruby ya tenga una función que hace eso y mil cosas más. Para saber que funciones tiene un objeto o clase existe un método llamado methods que devuelve un array con todos los métodos disponibles para ese objeto. Tener en cuenta que son TODOS, esto es, todos los heredados desde la clase Object hasta la clase que es. Si queremos ver que métodos tiene sólo de la última clase podemos utilizar el método instance_methods. Esto es especialmente útil para buscar nombres que nos suenen a que pueden hacer lo que queremos y luego usar ri o ri [.|#] (lo siento, tuve que poner una regexp :P) para ver qué es lo que realmente hace.

Pues eso, espero que si deciden aprender ruby, esto les ayude.

domingo, septiembre 16, 2007

Aprendizaje de Java y eclipse

La red esta repleta de recursos acerca del lenguaje de programación Java, como por ejemplo el de Aprenda java como si estuviera en primero o javapassion. Son tantos los sitios que seguramente no sepamos por donde empezar y probablemente nunca lo hagamos a menos que alguien nos introduzca en el mundillo.

Gracias a los siguientes vídeo tutoriales podemos contar con una persona que nos enseñará en casa y a nuestro ritmo.

Eclipse Vídeo Tutorial.
Excelente contenido audiovisual dónde se muestra todo un ciclo completo de desarrollo usando el IDE eclipse. (Aprenderas a crear un proyecto, depurar, realizar una batería de pruebas, generar documentación, elaborar diagramas UML y programar interfaces gráficas de usuario.)

Eclipse and Java for total Beginners.
Serie de 16 vídeos de menos de 15 minutos cada uno con los que aprenderás lo básico de java y eclipse.

Netbeans Docs & Support
También ofrece videotueoriales cortos de cómo empezar a usar otras tecnología de java mediante el IDE mantenido por SUN

Una vez introducidos. "Lo mejor es seguir las fuentes oficiales!". En este caso el Sun's Java Tutorial y Eclipse documentation.

Además eclipse es uno de esos editores extensibles por la comunidad de usuarios y entre la montaña de plugins, éstos son algunos de mis favoritos:
  • jadClipse Navegar por el código fuente de archivos .class
  • FindBug Encontrar fallos potenciales en nuestro código.

Para obtener mas cosas interesantes consulta mis enlaces útiles de java en el delicious

viernes, agosto 31, 2007

Instalar software limpiamente mediante GNU/Toast

Toast permite instalar y gestionar fácilmente software desde sus paquetes de código fuente en sistemas unix sin necesidad de permisos de administrador ni muchos quebraderos de cabeza.

Para ello solo basta seguir los siguientes pasos:

1.Vamos a la Pagina oficial del Toast y leemos un poquito acerca del proyecto
2.Descargamos mediante el comando
wget http://www.toastball.net/toast/toast-1.444.tar.gz
3.Descomprimimos el binario
tar xzf toast-1.444.tar.gz
4.Instalamos la ultima versión de toast con toast
./toast-1.444/toast arm toast
5.Comprovamos que la instalación fue correcta y así de paso vemos la ayuda rapida
toast
6.Darse el gusto instalando lo que necesitemos
toast arm install emacs

El funcionamiento de toast consiste en buscar los paquetes fuentes de una aplicación a partir una base de datos de software libre para posteriormente descargarlo, compilarlo, y ajustar correctamente las variables de entorno que nos permitirán ejecutarla.
Los binarios y fuentes descargados se guardan en el directorio ~/.toast

domingo, julio 22, 2007

Emacs. El editor universal

Como es posible que emacs, un editor de macros creado en 1975 por Richard Stallman , todavía continué utilizándose? Tal vez analizando la siguiente cita extraida de su manual de referencia oficial lleguemos a entenderlo.

"Emacs is the extensible, customizable, self-documenting real-time display editor."

Extensible gracias a integra un interprete emacs lisp con la que el propio usuario puede extender las funcionalidades del editor. Elisp incorpora sentencias que permiten usar el editor como interfaz entre el usuario y los comandos del sistema. De ahí el que se atribuyan usos tales como editor universal, entorno de desarrollo integrado, escritorio remoto o cómicamente el de sistema operativo.

Es personalizable por usuario ya que es posible adaptar cualquier aspecto de uso a nuestras propias necesidades. Visualización, apariencia, teclas rápidas, comandos y un interminable etc.

Auto documentado ya que además de poder consultar los man o info del sistema, toda la documentasen referente al editor o elisp viene de serie.

Aquí una de mis capturas de panatalla



La mejor manera ser productivos con una aplicaron interactiva es aprender los atajos de teclado de las funciones mas usadas. Emacs esta pensado para esto dedicando dos teclas a modo de comodín para una interacción eficiente con el sistema. Estas teclas son Control(Tecla ctrl) simbolizado por la letra C- y Meta(Tecla alt) por M- de tal forma que por ejemplo para salir del editor hemos de pulsar C-x C-c (dejamos presionado "ctrl" y a continuación pulsamos "x" y luego "c¨)

Hay que resaltar que emacs tiene una de las mayores comunidades de usuarios y desarrolladores que contribuyen a que el editor innove e importe maneras útiles para manipular todo tipo de información. Gracias a esto, la aplicacion se mantiene actualizada y adaptada a las nuevas necesidades. Se acabó el tener que aprender y configurar un nuevo editor con cada tipo de documento o lenguaje de programación!

En este enlace pueden hojear algunas de las mejores funcionalidades del editor mediante mas capturas de pantalla.

Si te animas te recomiendo que visites la sección hispana del wiki de la comunidad internacional de emacs

sábado, julio 14, 2007

Compilación de módulos bajo Linux

Desde que entré en el mundo de Linux me ha llamado la atención el núcleo y todo lo que represente meter mano por ahí. Lo malo de eso es que resulta engorroso, confuso y complicado empezar (al menos a mi me pasa), después de ganar cierta experiencia moviendome en sistemas UNIX (o sea Linux para que nos vamos a engañar...) me he dado cuenta de que la parte más fructífera para el informatico de a pié son los módulos.

¿Qué es un módulo? Mucha gente cree que un módulo en Linux es un driver, un programa para manejar un cacharro. En principio yo también lo pensé, es más, surgieron precisamente para ese motivo, pero un módulo es más que eso. Un módulo se puede ver a grosso modo como un cacho más del núcleo, un pedazo de código que hace algo, puede ser manejar un dispositivo o puede ser ordenar un vector, que se yo, cualquier cosa. La característica más resaltable de los módulos como todos saben es la posibilidad de la carga y descarga de ese cacho de código mientras el núcleo está funcionando. Para desarrolladores hay otra característica igual de importante que es el hecho de que no hay que recompilar el núcleo para crear el módulo (gracias a dios!).

Lo que voy a poner a continuación después de esta comida de bola es algunas notitas para mi mismo y para quién las necesite sobre como compilar un módulo.
  1. Necesitamos los fuentes de un núcleo. OJO! si queremos que el módulo funcione para el núcleo que corre actualmente hacen falta los fuentes de ese núcleo obviamente, pero podemos generar módulos para otras versiones de núcleo diferentes a la que está corriendo... lógicamente no podremos cargarlos por la incompatibilidad de versiones (aunque creo que se puede desactivar cuando se compila el núcleo) así que lo normal es trabajar con un núcleo X.Y.Z corriendo y tener los fuentes del núcleo X.Y.Z para generar módulos para un núcleo X.Y.Z.
  2. Necesitaremos compilar el núcleo, esto es debido a que hace falta generar el árbol de dependencias para luego poder compilar módulos. Al compilarlo una vez ya se crea este árbol, no hace falta recompilar el núcleo cada vez que queremos compilar un módulo.
  3. Crear un makefile con una sintaxis especial, luego veremos ejemplos.
  4. Compilar el módulo, debe ser compilado dentro del contexto del árbol de dependencias del núcleo, así que no vale ejecutar make y ya está, luego veremos como se hace.
  5. Cargar el módulo con insmod o modprobe. El segundo es más inteligente que el primero, deberiamos acostumbrarnos a usarlo.
  6. Abrir una cervecita, beber y decir "joder! que de puta madre!" si todo funciona else decir "esto es una mierda, el puto ole no sabe explicarse!", abrir una cervecita, beber y descubrir que está pasando.
  7. Si todo funcionó empezar a usar el módulo para darte cuenta de que no funciona el programa en si y que tienes que buscar fallos. Documentación de debugging de módulos hay en el tema 4 del libro "Linux Device Drivers" de Jonathan Corbet, Alexandro Rubini y en la tercera edición también Greg Kroah-Hartman. MUY ENCARECIDAMENTE SE LOS RECOMIENDO EN INGLÉS Y NO EN ESPAÑOL! He mirado la segunda edición en inglés y la tercera en español... no hay color, la traducción es muy mala. Desde aquí se lo dedico Pedro J. Gómez Corriente.
Ejemplitos de código estúpido y compilación sarna (el típico, hola mundo):

---------------------------------------------------------------------------------------
#define EL_MUNDO_APESTA 0

int algo()
{
printk(KERN_ALERT "HOLA MUNDO!!!\n"); //OJO al \n que muchas recompilaciones se hacen por ellos
return EL_MUNDO_APESTA;
}

int blablabla()
{
printk(KERN_WARNING "descargando modulo\n");
return 0;
}

module_init(blablabla);
module_exit(algo);
---------------------------------------------------------------------------------------

El ejemplo lo he picado con la misma sin mirar nada así que es altamente probable que no funcione. Seguramente faltarán bibliotecas, creo que para el tema de módulos hay que añadir siempre una tal linux/modules.h pero no sé. Cuando el make pete miran lo que dice resuelven y tan amiiiiiigos noooooo?!

Makefile para un módulo que es generado por UN ÚNICO fichero objeto.
-----------------------------------------------------------------------------------------
obj-m := nombre_que_queremos_para_el_modulo.o
-----------------------------------------------------------------------------------------

Makefile para un módulo que es generado por VARIOS ficheros objeto.
-----------------------------------------------------------------------------------------
obj-m := nombre_que_queremos_para_el_modulo.o
module-objs := fichero1.o fichero2.o .....
-----------------------------------------------------------------------------------------

Orden make para compilar:

make -C directorio_de_los_fuentes_del_núcleo M=direccion_donde_quiero_estar_despues_de_compilar modules

martes, julio 10, 2007

Red multicast con qemu

En ciertas ocasiones, programación en red por ejemplo, nos interesa poder simular una red de computadoras con sóla maquina de manera segura y sin tener que modificar nuestro sistema operativo. Aquí les comento como hacerlo usando un emulador libre llamado qemu que interconectara tres terminales linux mediante una red multicast.

Como se pueden imaginar, en una red multicast si una estación envía un paquete este es recibido por todos por todas las demás al igual que ocurre en una topología de bus.

Primero vamos a descargar qemu para windows
A continuación replicaremos la imagen de linux.img que viene de serie en el directorio y las renombramos como linux1.img linux2.img y linux3.img
Seguidamente crearemos tres archivos .bat en el mismo directorio de la siguiente manera:

archivo uno.bat
qemu.exe -L . -m 128 -hda linux1.img -localtime -M isapc -net nic,macaddr=52:54:00:12:34:56 -net socket,mcast=224.0.0.1:1234

archivo dos.bat
qemu.exe -L . -m 128 -hda linux1.img -localtime -M isapc -net nic,macaddr=52:54:00:12:34:57 -net socket,mcast=224.0.0.1:1234

archivo tres.bat
qemu.exe -L . -m 128 -hda linux1.img -localtime -M isapc -net nic,macaddr=52:54:00:12:34:58 -net socket,mcast=224.0.0.1:1234

Resaltar que hemos cambiado el numero de direccion fisica de cada una de las tres interfaces que usaran los sistemas.

Tras arrancar los tres sistemas mediante la ejecución los .bat. Asignaremos una dirección ip a cada sistema de la siguiente forma:

sistema 1
ifconfig 192.168.0.1 netmask 255.255.255.0

sistema 2
ifconfig 192.168.0.2 netmask 255.255.255.0

sistema 3
ifconfig 192.168.0.3 netmask 255.255.255.0

Finalmente para comprobar que todo funciona probaremos a hacer ping entre cualquiera de los sistemas. Por ejemplo, desde el primero hacia el tercero mediante la orden:
ping -c 2 192.168.0.3

El procedimiento similar con otros sistemas operativos tanto el del host como de las maquinas virtuales a interconectar.

jueves, julio 05, 2007

Automatizar tareas repetitivas con Firefox

Sabes que es una macro? A mi juicio no es mas que una secuencia de tareas asociadas en una única acción. Por ejemplo: Imagina que quieres personalizar un titulo de pagina con un determinado tipo de fuente, tamaño, alineación y color. En lugar de realizar esa secuencia de operaciones cada vez que necesites insertar un titulo, podrías crear una macro llamada "Mititulo" que se encargue de ello. Me sigues?

El caso es que por casualidad encontré una extensión para el Firefox llamada iMacros que te permite automatizar tareas de negación web.
La extensión simula a una persona que interactúa con el navegador pudiendo rellenar estomáticamente formularios, hacer cliks, cerrar ventanas publicitarias, descargar archivos, etc..
Vamos! Que ahora todas las tareas repetitivas solo las tendrás que realizar tu una sola vez para grabar la macro. Y a partir de ahí, puedes repetirlas cómodamente con un simple golpe de ratón.

martes, junio 26, 2007

Augmented Rality

La realidad aumentada extiende y aumenta la realidad con elementos virtuales.

Miren aquí un ejemplo:


El otro día estuve con mis compañeros en el laboratorio de informática jugando con una librería opensource llamada ARToolKit. Con ella es posible crear aplicaciones de realidad aumentada utilizando una webcam y unas tarjetas marcadas.

Tuvimos que compilar la librería y para ello solucionar un par de dependencias con apt-get. Pero al final conseguimos instalarla y hacerla funcionar con uno de los ejemplos del directorio bin. Tras ejecutar el programa y enfocar la cámara hacia la tarjeta marcada, apareció en la pantalla del ordenador un cubo virtual dibujado sobre la tarjeta. Con el que se puede interactuar mediante la tarjeta haciéndola rotar, variando su distancia con respecto a la cámara, etc...

La documentacion oficial, aunque en lengua inglesa, esta bastante bien. Lo único es advertir que si queremos dibujar algo mas complicado necesitaremos conocimientos de la libreria GLUT de OpenGL.

Mas información sobre la realidad aumentada en:

Entrada en la Wikipedia
Búsqueda en Delicious
Búsqueda en Google

Un Articulo en español de la librería Artoolkit

unp : Descromprime archivos en LINUX

Navegando un rato, un día de aburrimiento... me encontré esto y me pareció bastante interesante. Muchos hemos pasado por el estrés que supone el tener un archivo comprimido y no saber como diablos descomprimirlo. Hoy en día eso ya no es problema porque los entornos de escritorio ya vienen con herramientas para descomprimir todo tipo de archivos, pero y en consola, como lo haces en consola? Cada archivo tiene una forma de descomprimirlo, hay que aprenderse bastantes opciones de los comandos y es un poco lioso a veces. Pues bien, existe unp, un script escrito en PERL que nos facilitará esta tarea.

Ejemplo de uso:  unp nombre_del_archivo
(soporta tar.gz, tar.bz, rmp, deb, zip, rar... )

PD: si sois usuarios de UBUNTU, este script está en los repositorios.

http://www.debianhelp.co.uk/unp.htm

domingo, junio 24, 2007

Quitar los iconos del escritorio del Mac OS X

Cansado de dichoso icono del disco duro y algunos que otros más que te aparecen en el escritorio? quieres tener un escritorio limpio en Mac? bien... esta es una posible solución.

En un terminal ponemos lo siguiente:
defaults write com.apple.finder CreateDesktop -boolean false

y seguidamente reiniciamos el Finder:
killall Finder

Y ya tenemos nuestro escritorio inmaculado, sin iconos, solo el wallpaper. Y si os arrepentis, volved a poner el comando en la consola con true y se volverá a estar todo como antes ;)

Pasar .DMG a .ISO

Alguna vez os habéis visto en la necesidad de pasar una imagen .DMG a .ISO? no se vosotros pero yo si, y mas de una vez. Tengo un iBook G4 y no tengo gravadora de DVD, y muchas de las imágenes .DMG que tengo son de DVD y solo las puedo tostar en el PC. Así que esta es la solución, tras mucho buscar, para que usar aplicaciones de terceros si con abrir una consola en el Mac Os X tenemos jejejeje.

Este es el comando para pasar el .DMG a .ISO:
hdiutil convert /path/filename.dmg -format UDTO -o /path/filename.iso

Así de sencillo tendremos la imagen convertida a .ISO para tostarla facilmente en cualquier SO. ;)

Los programas se ejecutan ahora en internet?

A la par de la salida de las nuevas versiones de los populares sistemas operativos de escritorio, nos vamos encontramos autenticas aplicaciones que pueden ejecutarse con un navegador www. Esta claro el concepto de s.o. de escritorio esta cambiando y que tal vez algun dia, nuestros dispositivos electronicos solo dispongan de una especie de sistema cuya principal funcion sea la ejecucion remota de programas.

Estas son mis aplicaciones web de uso diario:

Marcador:
Delicious
Radio:
Last.fm
Musicovery
TV:
Youtube
stage6
Mensajeria:
Gmail
Meebo
Album de fotos:
Picasa
Ofimatica:
Google Docs
Agenta:
Google Calendar
Lector de noticias:
Google Reader
Escritorio:
IGoogle
Netvibes
Tests:
Quizlet

Alguna otra de uso diario que sustituya perfectamente a las convencionales de escritorio?

Aprende y/o mejora tu ingles sin salir de casa

Hoy en dia no tenemos escusa para aprender ingles desde casa y de paso hacer alguna gran amistad con alguien del otro lado del planeta. Tecnologias como voip, podcats, portales de educacion, etc. Lo han hecho posible.

Como saben para aprender una nueva lengua hay que seguir un entrenamiento diario y sentirse agusto en todo el proceso. La motivacion es la clave de todo aprendizaje!

Tenemos que dedicar tiempo en la practica de las cuatro disciplinas de todo lenguaje(la escucha, lectura, escritura y el habla). Dandole la misma importancia a cada una de ellas ya que la peor que se nos de limitara al resto.

Bajo mi punto de vista, la mejor manera de estudiar otra lengua es dejar la gramatica para mas adelante e imaginar que somos niños pequeños que estamos aprendiendo a hablar. En aquel entonces nos dedicabamos a escuchar e imitar a diario. Cuando aprendimos a escuchar y decir las fraces basicas nos llevaron al colegio donde aprendimos a leer y escribir. Y al final, sin dejar de estudiar todo lo anterior, nos enseñaron la dichosa gramatica. Intentar aprender de otra manera es una perdida de tiempo.

Sin ir mas lejos yo mismo llevo estudiando ingles desde el colegio y todavia no soy incapaz de mantener una conversacion basica de manera natural. El motivo es que en realidad lo que hago es traducir del mi lengua nativa al ingles haciendo uso de las reglas gramaticales que he memorizado. Esto es realmente frustrante y agotador!. Para solucionarlo, he decidido planificar un metodo personal de estudio del que tal vez puedas sacar provecho.

Para hacer el oido al ingles empeze descargando series americanas subtituladas con un cliente de bittorrent. Realmente se puede deducir por el contexto que es lo que estan diciendo.

Mas adelante combine lo anterior con la escucha de podcasts y lectura de sus transcripciones. Empezando por este y continuando con estos dos mas avanzados 1, 2.

Lo siguiente fue conocer a una persona como yo interesada en mejorar su ingles. Y a partir de entonces me escribo con ella un correo contando lo que hemos hecho cada dia. Entre semana de vez encuando tenemos algun esporadico chat y los fines de semana nos hacemos una llamada mediante skype para hablar un rato.

En el caso de no sentirte todavia preparado para hablar en ingles, puedes empezar practicando con las actividades de esta pagina.

La verdad que con los podcast he notado una gran mejoria en mi listening y las conversaciones con mi amiga china ademas de el eriquezimiento cultural que suponen me resulta una manera divertida de practicar.

Por ultimo aparte de desearte suerte te dare mi mejor consejo: No intentes comertelo todo en un dia! Busca algo que te guste hacer e intenta meterle de por medio el ingles y cuando lo consigas hazlo un habito diario.

sábado, junio 02, 2007

Necesidad de un sistema de documentacion y comparticion de informacion

Hola, mundo! Bueno, mundo hispanohablante.

Desde siempre he sido una persona con muchas inquietudes y muy mala memoria. Por lo que hace tiempo que llevo planeando tener un wiki/blog para anotar y compartir mis experiencias.

Desgraciadamente todavia no he encontrado un sistema que se adapte a mis necesidades.

Estas son las principales:

1- Disponer de Herramientas de edicion estructurada para amplios tipos de conenidos. Desde resaltado de sintaxis para lenguages de programacion pasando por el soporte de latex, hasta la posibilidad de edicion WYSIWYG y creacion de diagramas UML.

2- Poder añadir y modificar contenidos sin necesidad de estar conectado a la red y que estos se sincronizen automaticamente cuando disponga de ella. Aqui se hace necesaria una alta compatibilidad con dispositivos moviles.

3- Permitir la edicion colaborativa y control de revisiones. Es decir, mantener escencia del wiki a diferencia de un simple blog con comentarios.

4- Que sea extensible y portable para adaptarlo a las nuevas necesidades personales y poder reutilizar los contendios en otros sistemas.

5- Capacidad de realizar busquedas de una manera mas cercana a los humanos.

Sinceramente, no creo que un sistema asi exista todavia. Es mas, seguro que pasaran años para ver algo decente. Pero por siacaso me equivoco, Que me recomendarian ustedes?