Esta entrada pretende profundizar los temas aprendidos en el anterior artículo (Tu primer módulo cargable para el Linux kernel), con el fin de clarificar dudas, atar algunos cabos que dejamos sueltos y prepararnos para los siguientes artículos.
Sí, por supuesto. Como ya sabes, no es posible compilar un módulo cargable sin al menos parte del código fuente del kernel – esto es, la parte que contiene la infraestructura de construcción general y los archivos de cabecera esenciales. Solo por recordar, un archivo header (con extensión .h), contiene, normalmente, una declaración directa de clases, subrutinas, variables, u otros identificadores; sin la definición de estas, no es posible compilar código que las use.
En cualquier caso, es siempre útil tener una copia completa del código del kernel, y la manera más fácil de obtenerla es usando git:
Además que puedes actualizarlo fácilmente:
Nótese que, al contrario de instalar el paquete oficial de desarrollo del kernel como hicimos en el anterior artículo, usando git no es necesario tener privilegios administrativos para poner todo el código en algún lugar de tu directorio home. Además, si por alguna razón no puedes usarlo, puedes descargarte un archivo tar y funcionará igual; claro, usar git es mucho más cool
Recordemos que en el ejemplo del artículo anterior, nuestro código contiene referencias a archivos de cabecera del kernel:
#include <linux/module.h> // para todos los módulos #include <linux/init.h> // para entrada y salida de macros #include <linux/kernel.h> // para los macros de prioridad de printk #include <asm/current.h> // procesar información, solo por diversión #include <linux/sched.h> // para usa la estructura task_struct
Tales referencias son siempre relativas al nivel superior del directorio include/ en el código fuente del kernel, así que un include de, por ejemplo, <linux/module.h>, se refiere al archivo de cabecera include/linux/module.h, y así sucecivamente.
Sin embargo, si miras un poco más de cerca, notarás que no hay un directorio include/asm/, lo cual es bastante fácil solucionar. Incluso si no planeas construir algo contra el código fuente que descargaste, deberías prepararlo de tal manera que refleje de una manera más precisa lo que piensas hacer con él:
Los comandos anteriores hacen bastantes cosas, aunque lo único que nos interesa en este momento es que crea algunos enlaces simbólicos en el directorio include/, que reflejan la arquitectura de nuestro sistema.
Antes de ejecutar los comandos:
Después de ejecutarlos:
Una vez que esto es hecho, los includes de preprocesador tendrán sentido, y podemos usar los nombres genéricos para referirnos al archivo de cabecera apropiado de ahora en adelante. Por supuesto, esto que hicimos no es necesario hacerlo con los paquetes oficiales de desarrollo del kernel, puesto que ya vienen preparados.
No, no lo es. Bueno, no realmente. Como un autor de módulos novato, es necesario que entiendas que tu módulo será ejecutado en el kernel space, no en el user space, así que debes dejar de pensar en impresiones de mensajes en la consola. Olvídate de ello. La manera canónica de generar mensajes de depuración desde tu módulo es con llamadas printk:
printk(KERN_INFO "Hola, el modulo esta siendo cargado.\n"); printk(KERN_INFO "El user space del proceso es '%s'\n", current->comm); printk(KERN_INFO "El PID es %i\n", current->pid);
Corriendo el riesgo de sobre-simplificar el asunto, la salida que genera printk acabará en el archivo /var/log/messages así que, si estás insertando y removiendo tu módulo, es útil tener una terminal aparte mostrando en tiempo real todo lo que sea escrito en dicho archivo (para lo cual necesitas privilegios administrativos):
Para los más ambiciosos, es útil fijarse en la definición de los niveles de log en el archivo de cabecera <linux/kernel.h>:
#define KERN_EMERG "<0>" /* system is unusable */ #define KERN_ALERT "<1>" /* action must be taken immediately */ #define KERN_CRIT "<2>" /* critical conditions */ #define KERN_ERR "<3>" /* error conditions */ #define KERN_WARNING "<4>" /* warning conditions */ #define KERN_NOTICE "<5>" /* normal but significant condition */ #define KERN_INFO "<6>" /* informational */ #define KERN_DEBUG "<7>" /* debug-level messages */
Si algunos de ellos lucen vagamente familiares, no es de sorprenderse – son los niveles de depuración (debugging) soportados por syslog, así que eres libre de personalizar el syslog si quieres redireccionar la salida de tu módulo a donde quieras basado en los niveles de log, lo cual está más allá del objetivo de este artículo.
printk es simplemente una cadena de texto como “<0>” y así sucesivamente, lo cual explica el porqué no usar comas al momento de usarlo – todo lo que el preprocesador está haciendo es concatenando dos cadenas de caracteres, así que hubiera sido totalmente equivalente escribir cualquiera de estos:
printk(KERN_INFO "Hola, el modulo esta siendo cargado.\n");
printk("<6>" "Hola, el modulo esta siendo cargado.\n");
printk("<6>Hola, el modulo esta siendo cargado.\n");
Aun así, es mejor hacerlo como se muestra en la primera línea. Incluso programando cosas del kernel, la estética importa.
Como te diste cuenta la última vez, puedes cargar tu módulo con información bastante útil como:
MODULE_AUTHOR("Robert P. J. Day");
MODULE_AUTHOR("Cristian Castiblanco [solo lo puse en castellano]");
MODULE_LICENSE("Dual BSD/GPL");
MODULE_DESCRIPTION("Aqui puedes poner una descripcion de tu modulo");
que puede examinarse con el comando modinfo:
Algunas cosas útiles acerca de esta característica:
<linux/module.h>, en donde verás macros relacionados con firmware, tablas de dispositivos y más.Finalmente, podrías querer construir tu módulo, no contra el código instalado por el paquete de desarrollo, sino contra el código que descargaste tú mismo. Si ese es tu plan, es bastante simple.
Primero, como decíamos arriba, necesitas preparar tu código fuente para construir el módulo:
Todo lo que falta es configurar el Makefile de tal manera que compile el módulo contra nuestro código fuente. Recordemos parte del archivo Makefile del artículo anterior:
ifeq ($(KERNELRELEASE),) KERNELDIR ?= /lib/modules/$(shell uname -r)/build PWD := $(shell pwd)
Lo que hace la segunda línea es asignar la ubicación del código fuente del kernel a ser usado. Para cambiar esta variable, podemos asignarle el valor deseado con este comando:
y aquí es donde comienzas a notar algunas diferencias. Asumiendo que la versión del código que descargué es 2.6.31-rc1, esto es lo que sucede en mi sistema:
WARNING: Symbol version dump /usr/src/git-kernel/Module.symvers
is missing; modules will have no dependencies and modversions.
Building with KERNELRELEASE = 2.6.31-rc1
CC [M] /tmp/modulo/hola.o
Building modules, stage 2.
Building with KERNELRELEASE = 2.6.31-rc1
MODPOST 1 modules
CC /tmp/modulo/hola.mod.o
LD [M] /tmp/modulo/hola.ko
make[1]: se sale del directorio `/usr/src/git-kernel’
Puesto que estoy compilando contra un código fuente que no concuerda con el que estoy corriendo actualmente, pierdo la tabla de símbolos actual, pero la compilación funciona.
El comando modinfo también muestra el árbol contra el cual el módulo fue compilado:
Ahora algunas preguntas capciosas – ¿es posible cargarlo? ¿no dará problemas por la versión? Eso depende de si el kernel que se está ejecutando fue configurado para permitir diferencias de versiones, y hay una manera rápida de comprobarlo. En mi Gentoo por ejemplo:
Mala suerte. Tal parece que el kernel no fue compilado con las opciones necesarias. Si miramos en el archivo /var/log/messages:
Por lo pronto entonces, de ahora en adelante, jugaremos un poco dentro de la seguridad que nos ofrece compilar contra el kernel que concuerda con la versión que corremos. No hay motivo para hacerlo más difícil de lo que debe ser. En el próximo artículo veremos algo acerca de las rutinas entry y exit.
Como habia iniciado en mi anterior blog con una serie de presentaciones sobre Python pues ahora en Intercambio Libre he retomado con este proyecto, y aprovecho en esta ocasión para publicar la primera parte de la introducción general a Python siguiendo el mismo esquema de las presentaciones anteriores sobre Programacion Orientada a Objetos en Python y Diseño de GUIs con PyQT y Python, las cuales pronto colocare aca como material adicional y complementario.
Mañana la Parte II – Modo Interactivo de Python

Este how-to está basado en el artículo The Kernel Newbie Corner: Your First Loadable Kernel Module escrito por Rob Day en Linux.com. En él se enseñan las bases de la programación de módulos para el kernel de Linux. Este primer artículo pretende ilustrar de manera clara los conceptos básicos y espero que, a medida que Rob vaya escribiendo más artículos, pueda ir traduciéndolos para ofrecer este excelente contenido en español. Además, funciona para cualquier distro, aunque en este caso lo hice todo sobre Gentoo. Sin más, ¡vamos al grano!
Mientras desarrollamos el módulo, no. Pero al momento de cargar el módulo necesitaremos privilegios administrativos. Por supuesto, es recomendable que el desarrollo lo hagamos con un usuario normal, y solo al final usemos un usuario root para cargar o remover los módulos.
Antes de comenzar es necesario saber/tener algunas cosas:
uname -r:
gcc, binutils, etc.insmod, rmmod, etc.), el cual se encuentra en el paquete module-init-tools.Esto es realmente importante, así que echaremos un vistazo un poco más profundo. Cuando compilamos un módulo para Linux es necesario tener el código fuente de algunas partes del kernel, puesto que muchas instrucciones de preprocesador usadas no se encuentran en los headers estándar de desarrollo. En vez de ello, se encuentran en los headers de kernel.
Podrías simplemente descargar el código del kernel directamente de la página oficial, aunque lo más sencillo es instalar el paquete que corresponda a la versión del kernel que estemos ejecutando. Por lo general, este tipo de paquetes instala el código en /usr/src o /usr/src/kernels. Por ejemplo, en Fedora el paquete que debes instalar se llama kernel-dev, mientras que en Gentoo es gentoo-sources.
Una vez tengas el código instalado, es necesario saber exactamente en donde se encuentra, de tal manera que podamos referenciarlo al momento de compilar el módulo. Podrías revisar eso manualmente o, mejor aún, buscar el enlace simbólico hacia el kernel, que por lo general se encuentra en /lib/modules:
El enlace simbólico que buscamos es build, y como puedes ver en el ejemplo, apunta a la raíz del código del kernel. Esto significa que, cada vez que quieras hacer referencia al kernel en el momento de compilar el módulo, basta con usar dicho enlace.
Bien, es hora de crear nuestro primer módulo. Sin más rodeos, el código sería el siguiente:
/* El nombre del archivo es 'hola.c'. */
#include <linux/module.h> // para todos los modulos
#include <linux/init.h> // para las macros entry/exit
#include <linux/kernel.h> // para usar la macro printk
#include <asm/current.h> // informacion del proceso (solo por diversion)
#include <linux/sched.h> // para usar la estructura "task_struct"
static int hola(void)
{
printk(KERN_INFO "Hola, el modulo esta siendo cargado.\n");
printk(KERN_INFO "El user space del proceso es '%s'\n", current->comm);
printk(KERN_INFO "El PID es %i\n", current->pid);
return 0; // para indicar que todo ha salido bien
}
static void adios(void)
{
printk(KERN_INFO "Chao, el modulo esta siendo removido.\n");
}
module_init(hola); // lo que se debe llamar al cargar un modulo
module_exit(adios); // lo que se debe llamar al remover un modulo
MODULE_AUTHOR("Robert P. J. Day");
MODULE_AUTHOR("Cristian Castiblanco [solo lo puse en castellano]");
MODULE_LICENSE("Dual BSD/GPL");
MODULE_DESCRIPTION("Aqui puedes poner una descripcion de tu modulo");
Algunas observaciones acerca del código de arriba:
printk). Pero puesto que es nuestro primer módulo, y aún no hace nada especial, es más divertido si lo dejamos así.KERN_INFO). Es un error común hacerlo.Eso es todo… ¡vamos a compilarlo!
Este es el archivo Makefile que necesitaremos:
ifeq ($(KERNELRELEASE),)
KERNELDIR ?= /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
.PHONY: build clean
build:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
clean:
rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c
else
$(info Building with KERNELRELEASE = ${KERNELRELEASE})
obj-m := hola.o
endif
Como has de saber, los archivos Makefile indican las reglas necesarias para compilar código. En este caso, explicándolo a groso modo, lo que hace el Makefile es detectar que aún nos encontramos en el directorio de desarrollo de nuestro módulo, y por lo tanto se dirige al directorio del kernel, compila el módulo desde ahí y se devuelve. Para probarlo basta con ejecutar el comando make:
Una vez compiles el módulo obtendrás un archivo con extensión .ko. Si quieres echarle un ojo a dicho archivo, puedes usar el comando modinfo así:
En Gentoo es necesario ejecutarlo con privilegios; en otras distros puedes ejecutarlo normalmente.
Llego la hora de cargar nuestro módulo. Para ello, como comenté anteriormente, es necesario poseer privilegios administrativos. Al grano:
¿Y donde está lo que imprimimos con printk? Bien, no es común imprimir en consola cosas mientras un módulo es cargado o removido; en este caso, la salida va a dar al archivo de logs principal de Linux (/var/log/messages); puedes ver la salida con el comando dmesg o directamente en dicho archivo:
Estas son apenas las bases que deberíamos tener para comenzar con la construcción de un módulo para el kernel de Linux. Es de valiosa ayuda jugar un poco con este ejemplo, de tal manera que podamos estar seguros que todo irá bien cuando hagamos algo un poco más complejo.
Descargar código fuente del ejemplo
El laboratorio de Computación Interactiva de la ENAC de Francia ha creado el código para ofrecer soporte Multitouch nativo en Linux:
Los requerimientos necesarios son:
De acuerdo al video esta nueva característica parece portarse muy bien:
Click here to view the embedded video.
Enlace:
http://www.lii-enac.fr/en/projects/shareit/linux.html
La siguiente es una recopilación de tutoriales hechos por Jorge Rubira, en donde explica el desarrollo de diferentes juegos en diferentes lenguajes de programación (Java, JSP, laszlo, etc.)
Hola a todos, mi nombre es Juan Esteban (Cortex), y al igual que mi amigo Cristian uso la meta-distribución Gentoo Linux. Para los que no lo sabían la organización Mozilla anda trabajando actualmente en la versión 3.5 del navegador Firefox y hace un par de días se encuentra disponible la versión Release Candidate 2, la cual incluye ya múltiples mejoras y agregados.
Entre sus nuevas funciones podemos destacar:
Ahora bien, veamos como podemos instalarlo en Gentoo.
Lo primero es actualizar el árbol de Portage para poder hacer uso del ebuild de Firefox 3.5 RC2.
Para verificar si ya se encuentra disponible el ebuild en nuestro directorio de Portage, podríamos hacerlo de la siguiente manera:
Al ser una versión aún inestable el paquete viene por defecto enmascarado así que debemos primero desenmascararlo para poder hacer uso de él.
De momento sólo se encuentra disponible el paquete precompilado. Para instalarlo con el idioma español podríamos editar nuestro archivo /etc/make.conf y agregarle la línea:
En caso de que sólo quieras hacerlo temporalmente y sólo para este paquete ó agregar también el soporte para otros idiomas, puedes anteponer la línea escrita anteriormente al emerger el paquete.
Ahora sí, instalemos:
En Gnome se encuentra en el menú Aplicaciones -> Internet -> Mozilla Firefox (bin). Sí, el que tiene el ícono más colorido
Con esto terminamos. Espero les sirva, y además espero escribir más seguido
Saludos!
Given this, the students have expressed in various ways against his re-election. Protests which the only way out that saw the direction of the university was the cancellation of the semester, extent to which students lost all the money and time invested. With the cancellation of the semester, 19 students took the main cathedral of the city and began a hunger strike and a large part establishes safeguards against the university for denying the right to education.
Yesterday the Board of Governors of the university decided to reverse the agreement that canceled the semester, but still maintains the Principal in his post, which is no solution to the crisis at the university.
I think I deviate slightly from the topic, I just wanted you to know a little the problems of the university, which is a reflection in small scale of the country, where the dictator of the moment simply to disqualify the opposition branded they as terrorist and sent to silence by force and not arguing as should be.
Since the previous report I had a more fluid communication with Daniel, in large part by the access to the repository. Most of these two weeks I have spent the time polishing the code that I made the first two weeks. Now I get the most information from the changes in dpkg and aptitude states, but recently I have been a problem presented in the order in which these data should be collected when I remove a global variable that was clearly a sign of bad programming, I am focused on circumventing this problem before proceeding. Another important change was the creation of a class to manage the database and the text logs.
For the next weeks I hope to start working on the undo and redo systems.

Sabes si la empresa donde trabajas está interesada en adquirir un CRM?
Sabes lo qué es un CRM y como este puede potencializar a tu empresa?
La administración basada en la relación con los clientes, CRM, es un modelo de gestión de toda la organización, basada en la orientación al cliente u orientación al mercado.
Con el CRM (Customer Relationship Management), su empresa podrá potencializar las ventas, por medio de una excelente relación con sus clientes, soportando los procesos de la compañía para hacer un muy buen seguimiento al comportamiento de los mismos. Su objetivo principal es el de mejorar los servicios ofrecidos a los clientes y hacer uso apropiado de la información de éstos.
En este momento hay una convocatoria liderada por el BID, donde se busca beneficiar a un número determinado de Pymes (de Manizales y Caldas) con apropiación de tecnología; Este proyecto está apoyado por la Alcaldía de Manizales, la Gobernación de Caldas y la Cámara de Comercio de Manizales.
Nosotros como Danka, estamos ofreciendo el servicio de CRM, y queremos saber si tú o tu empresa estás interesados o si conoces a alguien o una empresa que pueda estarlo, para que se pongan en contacto con nosotros y adquirir este servicio a través de este proyecto.
La parte financiera de la convocatoria se divide en 2 partes:
1. Aporte del BID 60%
2. Aporte de la Pyme 40%
3. Otras fuentes (aliados)
Esta es una muy buena oportunidad para dar el primer paso, y apropiarte de un Sistema de Información que tantos beneficios le puede traer a tu empresa. ¡¡¡NO LA DEJES PASAR!!!
Si estás interesado en participar en esta convocatoria o conoces a alguien que lo esté, no dudes en contactarnos!!
Teléfonos: 300 814 93 08 – 300 317 29 62
Correo Electrónico: contacto@dankacolombia.com
Para mayor información sobre este proyecto y la convocatoria mira siguente presentación.

Sabado 20 de Junio de 2pm a 5pm, Bogotá Carrera 13 con calle 50 ENSISTEMAS Mapa
Que es Gnu Linux y Ubuntu. Este Lab esta dirigido a usuarios que estén empezando en el mundo del software libre y deseen conocer mas sobre Ubuntu Gnu y Linux. No se requiere tener experiencia en el tema solo ganas de aprender.
Salón con capacidad para 20 personas, Computadores, Conexión a internet, Live Cd'S, Baños, Tablero, Marcadores, Borrador.
Cupo para 20 personas se pueden inscribir en este formularioOSUM (Open Source University Meetup), es una comunidad global de estudiantes apasionados del Software libre y abierto creado desde Sun Microsystems, creado para conectar miles de desarrolladores y obtener entrenamiento en tecnologías libres, en especial las de Sun microsystems.
Allí encontrará las instrucciones para la inscripción al SAI (Sun Academic Initiative).

Links:
OSUM: http://osum.sun.com
SAI: http://sailearningconnection.skillport.com/


Este es un pequeño how-to en donde explico cómo activar el soporte para el sistema de archivos ext4 en Gentoo. El tutorial está enfocado hacia distribuciones que, como Gentoo, no tengan activado dicho soporte y en donde es necesario recompilar el kernel para hacerlo funcionar.
Espero que sirva de paso para mostrar un poco el proceso de recompilación del kernel, que a primera vista puede sonar difícil, pero que en realidad es algo muy sencillo y saludable
Es necesario tener el paquete e2fsprogs y las fuentes del kernel de linux. Para ello, basta con ejecutar este comando:
Lo que haremos a continuación será configurar el kernel para activar el soporte al sistema de archivos ext4. Para ello, abrimos una consola y entramos en el directorio donde se encuentren las fuentes, por ejemplo /usr/src/linux-2.6.30-gentoo-r5. Estando allí, iniciamos el configurador gráfico del kernel con este comando:
Una vez hayamos hecho esto, debemos navegar y dar enter en la opción File systems, y seleccionar (con la tecla espacio) The Extended 4 (ext4) filesystem. Debería quedar así:
File systems --->
<*> The Extended 4 (ext4) filesystem
[ ] Enable ext4dev compatibility
[ ] Ext4 extended attributes
[ ] Ext4 POSIX Access Control Lists
[ ] Ext4 Security Labels
Además, por defecto las particiones que se crean con ext4 tienen activada la opción huge_file, lo cual permite que se manejen ficheros de un gran tamaño. Por ello, es necesario activar la opción Support for Large single files del kernel. Dicha opción se encuentra en Enable the block layer y debería lucir así:
Enable the block layer --->
--- Enable the block layer
[*] Support for Large single files
Una vez hayamos configurado el kernel, salimos de la configuración presionando el botón exit, compilamos e instalamos:
Para ello basta con usar el comando mkfs.ext4, por ejemplo:
Para montar la partición:
Ten en cuenta que puedes montar una partición ext3 con la opción -t ext4 y todo funcionará bien, aunque no tendrás disponibles las características de ext4. Si deseas, puedes convertir una partición que se encuentra en ext3 a ext4. Para ello puedes ejecutar el siguiente comando:
Es recomendable hacer un chequeo de la partición para verificar que todo haya salido bien:
http://fr.gentoo-wiki.com/wiki/Ext4


Con la release de Open Solaris 2009, decidí instalarlo en la máquina real.
Despúes de la instalación no esperaba mucho, pero veo con agrado que la tarjeta de video, el sonido y la tarjeta de red inhalambrica fue instalada, pero la tarjeta de red ethernet fue reconocida pero no instalada, asi que descargué el driver desde http://homepage2.nifty.com/mrym3/taiyodo/bfe-2.6.1.tar.gz seguí las instrucciones en el archivo README.txt y todo resultó sin problemas.
Algó que me deja confundido es la personalización de las particiones, según leo eso no es posible en opensolaris, sin embargo debo consultar un poco mas y lo postearé.
También veo que el consumo de memoria de entrada es de 1.5 Gb de 2 Gigas que tengo … mmm, realmente preocupante.

Les dejo un par de videos de un concierto memorable de la Orquesta Sinfónica de Caldas, espectacular fue un concierto donde la musica nos hizo vibrar, cada nota la vivimos y la disfrutamos con pasión.
Pero este es tambien un llamado a luchar por esta hermosa orquesta, luchemos por que no se acabe, apoyemosla por que es un patrimonio local (Manizaleño), departamental(Caldense) y nacional (Colombiano)
Parte 1
Parte 2
Share and Enjoy:
El equipo de desarrollo nos entrega otra version del ubuntu 9.10 karmic koala como se anuncia en sus listas de correo Kamic koala 9.10 promete mucha funcionalidad respecto a jaunty 9.04 como un arranque mas rapido y un megor gestor de arranque, cabe resaltar algunos cambios en el nuevo ubuntu:Primero agregamos nuestros repositorios favoritos para debian lenny, en mi caso
deb http://ftp.debian.org/debia/lenny main contrib non-free
Esto lo conseguimos agregando esta línea al archivo /etc/apt/sources.list con nuestro editor de texto favorito (vi, nano, gedit) y recordando que debemos estar como súper usuario.
Luego de esto debemos actualizar la lista de paquetes con el comando:
# apt-get update
Después de tener cargada la lista de repositorios simplemente procedemos a instalar Java JRE y JDK con el comando apt:
# apt-get install sun-java6-jre sun-java6-jdk
Después de instalarlo elegimos el maquina de java a usar por defecto y establecemos la variable de entorno adecuada para que esta se cargue en cada inicio de sesión.
Share and Enjoy:# update-java-alternatives -s java-6-sun
# echo ‘JAVA_HOME=”/usr/lib/jvm/java-6-sun”‘ | tee -a /etc/environment
¡Hola de nuevo! En esta ocasión me gustaría compartir con ustedes este video tutorial acerca de MonoDevelop. No es nada avanzado, solo muestra algunas características de este IDE. El video en cuestión lo grabé hace más o menos siete meses, pero casualmente había olvidado que lo había grabado
Y, aunque ya vamos en la versión 2 de MonoDevelop, no quiero perder el trabajo que alguna vez hice.
Como siempre, pueden encontrar el vídeo en Youtube o en Vimeo. Aunque creo que hay un pedazo que se ve feo y el sonido no es el mejor, espero que les guste y disculpen lo feo
Pidgin es un cliente de mensajería instantánea de código abierto y gratuito que permite chatear con personas que utilicen diferentes servicios de mensajería tales como Windows Live Messenger, ICQ, Yahoo! IM, clientes Jabber, Google Talk, entre otros.
En cuanto a sus funciones, Pidgin permite el envío de archivos, tiene un aviso de “tu amigo está escribiendo…”, emoticonos, notificaciones, diferentes estados y es capaz de ejecutar un programa o cambiar de estado dependiendo de si uno de tus contactos se conecta.
Pidgin es Software Libre y esta licenciado bajo la GNU/GPL.
Pidgin es una herramienta multiplataforma por lo cual la encontraras disponible para:
El sitio oficial de Pidgin es www.pidgin.im
Características principales:
Protocolos soportados:
Metas del día
Instalación de Pidgin
Bueno lo unico en lo que difiere el uso de Pidgin en un sistema GNU/Linux de un sistema Windows es en su instalación su administración es identica y muy sencilla.
Bueno empecemos por Debian o Ubuntu que es una instalación mas rapida y sencilla que instalarlo en windows.
Primero presionamos alt+F2 y abrimos una terminal como gnome-terminal, xterm o konsole para los que usan kde, luego de esto como sudo instalamos Pidgin:
# sudo apt-get install pidgin
Listo esto es todo para instalar pidgin en una distribución tipo debian/ubuntu, asegurate de tener conectividad a internet y de tener la lista de repositorios actualizadas, si no estas seguro actualizalas con el comando:
# sudo apt-get update
Bueno y como lo instalamos en windows, igual que siempre siguente siguente siguente, muy sencillo pero igual les mostrare como.
Primero obtenemos Pidgin para Windows desde aca. Luego de esto presionamos doble click y empezamos con el proceso de instalación:

Selección de Idioma

Seleccionando el español como idioma de la instalación

Se inicia el asistente de instalación

Aceptamos la licencia (GPL por que es Software Libre)

Seleccionamos los componentes que deseemos que tenga Pidgin

Seleccionamos la ruta de instalación de GTK 2.0

Seleccionamos la ruta de instalación de Pidgin

Se inicia la instalación

Se finaliza la instalación y le damos click en siguiente

Habilitamos la opción para que Pidgin se corra al finalizar el proceso de instalación
Configuración de Cuentas de usuario de Gmail, MSN y IRC

Asistente de configuración de cuentas de usuario

Interfaz para añadir cuentas de usuario

Multiples protocolos soportados por Pidgin
Configuración de una cuenta de Gmail

Configuración de una cueta de Gmail

Cuenta de Gmail configurada y trabajando. Pidgin listo para recibir otra cuenta
Configuración de una cuenta de MSN

Configuración de una cuenta de MSN

Cuenta de MSN y Gmail, trabajando al tiempo sobre la misma interfaz
Configuración de una cuenta de IRC

Configuración de una cuenta de IRC

Cuenta IRC configurada, conexión al servidor de freenode

Uniendose a un canal, usando el comando Join

IRC en el Canal del #Gluc

Salvar los canales IRC a los que normalmente nos unimos

Guardando el canal con las preferencias deseadas

Canal Guardado y listado como un contacto
Configuración del chat de Facebook en Pidgin
Para instalarlo basta con
- Cerramos Pidgin si lo estamos ejecutando.
- Presionar Alt+F2 y abrir una terminal (Como gnome-terminal, xterm o konsole, depentiendo del sistema de escritorio que usemos).
- luego simplemente digitamos el comando sudo dpkg -i pidgin-facebookchat-1.50.deb
Para instalarlo basta con
- Cerramos Pidgin si lo estamos ejecutando.
- Damos doble click al instalador pidgin-facebookchat-1.50.exe
Iniciamos la instalación del plugin para el chat de facebook
- Este plugin es libre y usa la licencia GNU/GPL, la aceptamos para continuar la instalación
Aceptamos la licencia que es GNU/GPL
- Se inicia el proceso de instalación
Proceso de Instalación
- Finalizamos la instalación y volvemos a abrir Pidgin
Instalación Completa
- Cuendo estemos en Pidgin vamos al menu Cuentas, y entramos a la opción Gestionar Cuentas
Entramos al Gestor de cuentas
- Igual que con los servicios anteriores lo primero que seleccionamos es el protocolo en este caso Facebook, luego de esto ingresamos los datos de nuestra cuenta de Facebook.
Agregamos la cuenta de Facebook
- Aceptamos el certificado de seguridad de Facebook para poder conectarnos y autenticarnos.
Certificado de Seguridad
- Y ya tenemos todo listo, en nuestra sesión de Chat tenemos un lista de los contactos que estan conectados al chat de Facebook
Listo para chatear con los contactos de Facebook
Configuración de Twitter en Pidgin
Al igual que el Chat de Facebook, Pidgin no tiene soporte para Twitter pero instalandole un nuevo plugin podemos acceder a este servicio.
El plugin para twitter se llama microblog-purple y su versión para Windows la podemos conseguir de aca y la para Debian/Ubuntu GNU/Linux de aca, este es libre y usa la GNU/GPL.
A este no le voy a dar tracendencia en la parte de instalación por que es un proceso identico tanto para Debian/Ubuntu como para Windows igual que lo mencionado para el plugin de facebook, pasemos directo a la configuración de este.

Twitter en Pidgin

Certificado de Seguridad

Posteando en Twitter desde Pidgin

Prueba de que el plugin de Twitter funciona
Configuración adicional: Proxy de la red

Configuracion del Proxy

Configuración de la IP y Puerto del Proxy
Vista Final a nuestro Pidgin
Final Final no va más, ya tenemos nuestro Pidgin configurado con los servicios que comunmente más usamos, todo desde la misma aplicación y chateamos con todo el mundo desde la misma ventana y sin la necesidad de tener multiples aplicaciones.

El mundo cree que los mas listos del planeta son los Estadounidenses, donde esta el mayor desarrollo tecnologico y economico del mundo, bien juzgen ustedes mismos, donde piensan que tienen el derecho de invasión.
Click here to view the embedded video.
Actualmente uso debian lenny en español con la configuración del teclado latinoamericana pero al instalar la tarjeta de video o reconfigurar el xorg este me cambia el idioma del teclado a ingles para colocarlo en latinoamericano de nuevo simplemente abrimos con nuestro editor favorito, ya sea nano, vi, gedit, emacs el archivo /etc/X11/xorg.conf y en la seccion InputDevice agregamos la siguente opcion Option “XkbLayout” “latam” para teclado latinoamericano o Option “XkbLayout” “es” para teclado en espa;ol.
Section “InputDevice”
Identifier “Generic Keyboard”
Driver “kbd”
Option “XkbLayout” “latam”
EndSection
Realizé la instalación de Open Solaris 2009.06 en Debian, virtualizando con KVM.
Fué realizado con línea de comando y pelo en pecho.
Antes creé el disco duro utilizado para esta instalación, con 15 gigas:
$ kvm-img create OpenSolaris.img 15G
Despúes inicialize la máquina virtual para con cdrom, 1024 MB de RAM y con la red en la misma LAN que el equipo anfitrión:
$ kvm -hda OpenSolaris.img -cdrom /dev/cdrom -m 1024M -net nic -net user
Click here to view the embedded video.
La instalación tarda un poco, así que paciencía al hacerlo.
El pasado 25 de Abril estuve (cordialmente invitado, y muy bien atendido) participando en la quinta versión del FLISoL, en Montería (Colombia).
Lo que primero me impresiono fue la organizacion y la difusion: al momento de llegar el numero de inscritos iba por 700 y creciendo. Definitivamente hay que replicar esa experiencia en el resto de ciudades, en este caso las redes sociales jugaron un papel muy importante.
Básicamente estuve hablando del proyecto Debian, una charla general tomando muchas cosas de la que dio Alejandro Rios en la Campus Party del año pasado, y la excelente charla de Luciano Bello: "A darle átomos a Debian". También se hizo el lanzamiento des-oficial de MIGNU.org, el proyecto de Sisfo Ltda que apoya las comunidades de desarrolladores de Software Libre.
El balance general fue bueno, teniendo en cuenta que en este año mi trabajo con Software Libre ha sido más bien poco: 2 días de viaje, nuevos amigos y un par de posibles colaboradores para Debian.
Los slides están disponibles para consulta y libre uso.
This year I will be participating in Google Summer of Code! My work proposal “Aptitude Package Management History Tracking” has been selected. So I will be working for Debian and my mentor will be Daniel Burrows. To give you an idea of what I will doing this summer I leave you with my proposal (without some details that are beside the point
).
Project title: Aptitude Package Management History Tracking
Synopsis: Aptitude currently does not track actions that the user has performed beyond a single session of the program. One of the most frequent requests from users is to find out when they made a change to a package, or why a package was changed; we want to store this information and expose it in the UI in convenient locations. As a side effect, this might also provide some ability to revert past changes.
Benefits to Debian: The change history of the packages on a system has become a recurrent need for many systems administrators, who see an opportunity in this possibility to manage more efficiently the resources on their machines. The impact would be positive in many users who use Aptitude interface for APT, not only on the command line application, but also on Aptitude-GTK.
Deliverables: The module which is intended to be designed for Summer of Code 2009, will be composed of two major parts: Add the functionality for Undo – Redo changes in Aptitude (undo really exists, but is replaced with a version that uses the history) and explore the history of a particular package, in each case made the appropriate changes to the UI, to give greater facilities to users.
Project details: The main idea is to make Aptitude store and record the history of actions that an user has done on each package. By having this information and can access it in an orderly manner can be completed easily reach other goals, such as:
* Provide an easy way to find out how and why a package was installed or uninstalled on the system, changes can be made by hand, by dependency, suggested packages, conflicts between packages, etc.
* Give the possibility to undo a lot of changes in a single action, taking into account the limits of the APT system.
* Provide a mechanism for system administrators to audit the history of a package and add notes to it.
* This history should also preserve the information generated in su-to-root operations
* Also thanks to this should be easy to implement ‘redo’, something aptitude has always lacked.
The difficulty in conducting this project is not the collection of data, but it’s to define the proper way in which to store the information in the way that it can be efficient and not to overload Aptitude. It seems the best approach that can be given to this problem is that proposed by Daniel Burrows (See his ideas in [1]), in which it would have a set of text logs and a database binary simultaneously, that for readability by the user in text files and increase the efficiency of Aptitude reaching the database directly. If the database were to fail, Aptitude could scan the log to recreate the database, which also makes it necessary to write code to do the text log – database processing
Since the project can range from different points of view is necessary to discuss and define several issues with the Aptitude developers and some experienced users of Debian, for example:
* What to do with past actions of an “Undo”, delete them or preserve them.
* Whether to include also details on the history of resolver interactions.
* Define whether the record should be updated immediately changes are made or be expected to finish the session to record the actions taken.
* Establishing rules and / or tools to remove old entries in the log. For example, with the rules I am talking about erasing the old posts in the database beyond a certain age. The tools can be commands whose purpose is to delete manually the history, aptitude “remove history” to say something.
I hope this items can be defined on the first month of the GSoC to work on a fixed path to follow and not suffer setbacks, yet it would be open space for made minor changes on the fly.
As already mentioned above, the first priority is to define the structure of the database, this with the help of the SQLite library, at the end of this (the more creative phase) I begin to define a series of classes and routines necessary in principle to update the records of this database, this section should define a common set of calls that would serve both for the command line application and the cwidget-ncurses and GTK interfaces, since these classes would be accessed by aptitude when it receives the outputs the processes of APT (Maybe based on pkgstates).
As second and third period, classes should be created for the operations “undo/redo”, and for the queries for the database which will be used to display information in an orderly manner in the UI. As the ncurses and GTK interfaces are very similar in concepts (signals and slot object-oriented C++), which happens once we have the code for ncurses is that is relatively easy and quick also have support for GTK (or vice versa). The code for the command line application would be a little different but easy to implement once we have defined the needed queries. Here we must bear in mind that would work with separate packages, Aptitude and Aptitude-gtk, which required a good time for the test period.
The final set of code. Will be for fix fails in the database, generating the transformation between the text log and the binary data base. In addition to providing tools for maintenance work, which would be the least complicated part of the project, things made by the style of “delete from history where date < $somedate”.
Project schedule:
The preliminary timeline for the project, according to the schedule of GSoC:
April 20, Accepted student proposals announced
Week 1, 2 and 3:
Project initialization
Analysis of existing data model for the history entries, getting to know the coding style and documentation writing concepts. Improving communication skills and understanding the Community, discuss any outstanding issues that are mentioned in the Project details.
Install and configure the necessary software to implement the project on my computer.
Week 4: Improving the sketch of the data model, considering the corrections arising in the analysis of the past three weeks.
May 23, Students begin coding for their GSoC projects
Week 5: Implement the data model.
Week 6: Write code to convert the history entries to and from text and write unit tests for this code.
Week 7: Write code to compute the history list for the current session and store it in a member of aptitude’s cache wrapper.
Week 8~9: Write code to implement undo/redo on top of the history list and replace the current undo code for packages with the new undo/redo code.
Week ~9-10: Testing and correction of bugs discovered so far.
July 13, Mid-term evaluations deadline
Week 11: Write code to add the live history list to a sqlite cache database, and code to retrieve history from the database.
Week 12-13: Write a GUI viewer for the history list, and code to show the history of a particular package.
Week 14: Write code to generate log files in /var/log with history information.
Week 15: Write code that, if the cache database is missing, reads those log files to rebuild it.
August 10, ‘Pencils down’ date
Week 16: Extensive test case analysis whit Bug Fix.
Week 17: Final documentation improvements and some improvements in the code.
August 24: Final evaluation deadline
Project completed.
Note: The documentation is generated simultaneously with the code throughout the summer, making the necessary improvements to the final dates.
[1] http://lists.alioth.debian.org/pipermail/aptitude-devel/2008-December/001071.html

The first important task when one wants to carry out a historical study of the behavior of a system is to determine what information you want to store and how this is going to be saved, thinking of providing an easy way to access information when needed.
In our case, we need to store the information of the packages status and the actions that have been made to them. For now I have confronted the aptitude state and the dpkg state.
We use the state of dpkg to see the changes that other applications (Apt, Synaptic, Adept, etc..) can perform on the packets.
So the first task was to create routines to save in each member of the history the information that can be collected from pkgstates and the cache, which really is not much. This process is accompanied by the function to write in the text log and the binary database. I believe that work it’s around 70-75%, missing optimization and definitions of some values.
I have been working this week on the aptitude state , creating a vector of entries which is storing the information collected from the state’s changes through the functions cleanup_after_change, apply_solution and build_selection_list from aptitudeDepCache, calling on the last function to the routine that writes the whole vector of changes made so far in the text log and the database, I think this work is located at 50%.
Plan for next weeks
For the dpkg state, optimize the functions and add to the info of each package the date when it changed. Maybe based on /var/log/dpkg.log
For the Aptitude state, finishing collecting the information about changes. For example the dep that trigger a change, groups of packets that share the same reason of change. Look at other relevant information that could be included for the trace of each package. Change the structure of the database to include information that is missing.
Saludos.
Open Solaris es el proyecto Auspiciado por Sun Microsystems para impulsar el uso y desarrollo de su sistema Operativo Solaris
El primero de Junio de 2009 se lanzó la mas reciente versión de Open Solaris, según el portal algunas de las nuevas características son estas:

Para descargar la actual release de opensolaris: http://www.opensolaris.org/os/downloads/
Hace algunos años cuando estaba en el colegio, me gustaba mucho la poesía tanto leer como escribir, pero con la ingeniería y el estudio constante lo fui dejando a un lado, hace poco desee retomar esta pasión, aun me toca practicar, escribir, escribir y escribir mucho para producir algo bueno, pero por el momento les comparto un pequeño parrafito, que entre varias no quedo tan malito.
Por muchas noches he divagado por esta selva de concreto y unas pocas praderas, tan solo una fría brisa y la luz de unas cuantas estrellas me siguen y me observan con desdén mientras trato encontrar entre tantos caminos ese que me lleve a ti, para que tan solo con un abrazo y una caricia tuya nos fundamos en un solo ser, llenos de tu brillo perfecto mi luz de luna.
Falta practicar pero estoy motivado


To blog or not to blog, That is the Question!!!
Por un poco de dos años tenia mi blog en blogger http://malak9.blogspot.com, un espacio donde sentí que podía publicar lo que quisiera, mis gustos, mis intereses mi forma de pensar o sentir cierto día.
Lastimosamente nunca fui constante siempre sentí que me faltaba algo para tomar el blog como algo mas importante para mi, reflexionándolo mucho llegue a la conclusión de que blogger no me permitía hacer muchas cosas y que deseaba tener algo mas personal, por eso hoy nace www.intercambiolibre.org un blog construido con wordpress un CMS opensource para construcción de blogs en el cual espero compartir mis intereses, mis hobbies, documentación interesante, documentación que construya, enlaces, artículos, código, aplicaciones, software libre, cultura libre como música, imágenes y poesía, entre otros temas de mi interés que quizás les guste también a ustedes.
Tareas para hacer ahora con este nuevo blog.

Se recomienda leer este contenido con antelación (uyyyyyy ya dejando tareas y sin haber iniciado ja,ja,ja,ja,ja,....)
Igualmente recomiendo leer este apartado e instalar el VMware en sus equipos de prácticas para repasar los ejercicios o adelantar los temas a ver posteriormente. Igualmente llegara (muy pronto) el momento en el que los labs los realizaremos directamente sobre máquinas virtuales.
NOTAS:
En caso de tener inconvenientes en la instalación de VmWare pueden escribirme a mi correo y con mucho gusto les ayudare en la medida de mis cortos conocimientos. Recuerden que el buen performance de las máquinas dependerá del hardware que tengan en su máquina anfitrión (máquina anfitrión es el equipo de ustedes. Lo que pasa es que suena más bonito y tramador) dado que los recursos de hardware se comparten con las máquinas virtuales.
Ruego que aquellos participantes que tienen un nivel superior de conocimiento sepan comprender que se hace necesario que aquellos que no tenemos un buen nivel necesitamos ir nivelándonosPor eso ruego tener algo de paciencia y así mismo que asistan para apoyarnos, compartir y fortalecer los lazos de amistad en nuestra ciudad capital entre los integrantes de nuestra comunidad.
Realizar todas las prácticas recomendable llevar Bactrack 3 para realizar las prácticas con este LiveCD y/o nuestros mismos sistemas operativos instalados por “default”.
Si nos alcanza el tiempo del primer lab, veremos la parte I con sus correspondientes prácticas.Siguientes labs

I want out – Helloween
Click here to view the embedded video.
From all lives beginning on
We are pushed in little forms
No one asks us how we like to be
In school they teach us what to think
But everyone says different things
But theyre all convinced that
Theyre the ones to see
So they keep talking and they never stop
And at certains point you give it up
So the only thing thats left to think is this
I want out… to live my life alone
I want out… leave me be
I want out… to do things on my own
I want out… to live my life and to be free
People tell me a and b
They tell me how I have to see
Things that I have seen already clear
So they push me then from side to side
Theyre pushing me from black to white
Theyre pushingtil theres nothing more to hear
But dont push me to the maximum
Shut your mouth and take it home
cause I decide the way things gonna be
I want out… to live my life alone
I want out… leave me be
I want out… to do things on my own
I want out… to live my life and to be free
Theres a million ways to see the things in life
A million ways to be the fool
In the end of it, none of us is right
Sometimes we need to be alone
I want out… to live my life alone
I want out… leave me be
I want out… to do things on my own
I want out… to live my life and to be free
El proximo Viernes 22 de Mayo de 2009 se llevará a cabo el decimo-séptimo Festival GNU/Linux, en el salón anexo al Auditorio León de Greiff en la Ciudad Universitaria de Bogotá.
Este evento desea fomentar el desarrollo académico y cultural de los estudiantes de la Universidad Nacional y del público en general, de igual forma se promoverá el desarrollo y la utilización del sofware libre.
Contará con la participación de Universidades y Empresas de la ciudad, siendo una buen oportunidad para mostrar la principal virtud de la Universidad Nacional: la academia enmarcada en un ambiente de tolerancia y respeto.
Este año se ha decidido realizar una convocatoria, a Universidades, Empresas y Particulares, que tengan proyectos, trabajos o ponencias en cualquiera de los siguientes tópicos: GNU/LINUX, Apache, PHP, MSQL, etc. Dichos trabajos se recibirán hasta el viernes 15 de Mayo y deberá ser enviados a la siguiente dirección electrónica: eidos_fibog@unal.edu.co
El formato para recepción de estos trabajos deberá incluir: Datos personales del expositor ( FOTO preferiblemente), donde se indique la empresa o Universidad a la cual pertenece, un resúmen de su trabajo o Proyecto y la presentación en OpenOffice (preferiblemente).
HORARIO: 8:00 am - 5:00 pm
LUGAR: Salón Anexo al Auditorio León de Greiff
FECHA : Viernes 22 de mayo, 2009
Programa de la tarde:
Espero que asistan :)”Si no es ético denunciar la peligrosa concentración de poderes en una persona, o la campaña política y de descalificación intencionada de la Corte, o el apoyo a la parte más corrupta del Congreso para preservar unos votos, si afirmar esto no es ético, ¿qué es lo ético? ¿Afirmar contra toda evidencia que no pasa nada, que los 81 congresistas investigados o procesados penalmente por parapolítica son solo escándalo de la oposición que también podría ser procesada por farcpolítica? ¿Lo ético sería silenciar los falsos positivos, la corrupción en el DAS, la corrupción electoral, los negocios en la familia presidencial? Esa información, admito, sería antiética si fueran simples rumores, afirmaciones sin sustento, maledicencia política. Pero son hechos que uno no podría negar aunque quisiera. Negarlos implicaría complicidad y sobre todo irresponsabilidad profesional del periodista….."Creo que podemos sacar un rato y escribir una carta a la directora del Colombiano, protestando, o vamos a dejar que se cumpla la profecía de Bertolt Brecht:
Primero se llevaron a los comunistas
pero a mí no me importó
porque yo no era.
En seguida se llevaron a unos obreros
pero a mí no me importó
porque yo tampoco era.
Después detuvieron a los sindicalistas
pero a mí no me importó
porque yo no soy sindicalista.
Luego apresaron a unos curas
pero como yo no soy religioso
tampoco me importó.
Ahora me llevan a mí
pero ya es tarde.
El desarrollo de ubuntu no se detiene, canonical le apuesta fuerte a su sistema operativo que hace unos cuantos momentos saco su primera alpha:
Saludos.
Hace algunos meses la Linux foundation decidió formatear el sitio linuxfoundation.org, enfocandolo mas a los intereses de la comunidad, o al menos así lo he sentido; el día de hoy recibí una noticia que también habia realizado el formateo de linux.com con algunas actividades para atraer mas visitantes y un aspecto simple, agradable y con contenidos interesantes, me parece que son medidas buenas, esto permite mayor comunicación entre los desarrolladores , los administradores y los usuarios.
Hola amigos… he grabado un pequeño vídeo en donde enseño cómo ejecutar varios sistemas operativos REALES, es decir, que no son virtuales, al mismo tiempo usando VirtualBox. Por ejemplo, si tienes instalado Windows XP, Ubuntu y Fedora, y en cada uno tienes aplicaciones que usas a diario, podrías ejecutar Windows XP desde Ubuntu sin necesidad de tener que reiniciar el equipo.
Esto tiene una gran ventaja frente al típico entorno en el cual tienes máquinas virtuales instaladas ya que, cuando realmente quieras usar el otro sistema operativo, lo ejecutas directamente en tu máquina sin las limitaciones de RAM o aceleración gráfica. Es más o menos lo que explicaba en esta entrada, en donde lo hacia con Windows XP. Pero puesto que algunos han tenido problemas con eso, y otros más me han pedido algo de información más detallada, mejor dejar todo registrado en este vídeo.
Como siempre lo he subido en Blip.tv, Youtube y Vimeo. El vídeo es completamente libre, puedes darle el uso que desees; si deseas el vídeo original para cualquier propósito me contactan por correo.


Se recomienda leer este contenido con antelación (uyyyyyy ya dejando tareas y sin haber iniciado ja,ja,ja,ja,ja,....)
Igualmente recomiendo leer este apartado e instalar el VMware en sus equipos de prácticas para repasar los ejercicios o adelantar los temas a ver posteriormente. Igualmente llegara (muy pronto) el momento en el que los labs los realizaremos directamente sobre máquinas virtuales.
NOTAS:
En caso de tener inconvenientes en la instalación de VmWare pueden escribirme a mi correo y con mucho gusto les ayudare en la medida de mis cortos conocimientos. Recuerden que el buen performance de las máquinas dependerá del hardware que tengan en su máquina anfitrión (máquina anfitrión es el equipo de ustedes. Lo que pasa es que suena más bonito y tramador) dado que los recursos de hardware se comparten con las máquinas virtuales.
Ruego que aquellos participantes que tienen un nivel superior de conocimiento sepan comprender que se hace necesario que aquellos que no tenemos un buen nivel necesitamos ir nivelándonosPor eso ruego tener algo de paciencia y así mismo que asistan para apoyarnos, compartir y fortalecer los lazos de amistad en nuestra ciudad capital entre los integrantes de nuestra comunidad.
Realizar todas las prácticas recomendable llevar Bactrack 3 para realizar las prácticas con este LiveCD y/o nuestros mismos sistemas operativos instalados por “default”.
Si nos alcanza el tiempo del primer lab, veremos la parte I con sus correspondientes prácticas.Siguientes labs
Encontré estos videos de la Linux Foundation en youtube, realmente es dificil encontrar videos que no hagan ataque al windows, la verdad es que me molesta promocionar linux atacando windows, Linux es mucho mas que un sistema operativo inmune a los virus de windows y a la pantalla azul, es como si Linux estuvierá en la sombra de windows.
Linux no es una alternativa, es una opción
Click here to view the embedded video.
Click here to view the embedded video.
[youyube=http://www.youtube.com/watch?v=H_0oWqOLpo4&feature=related]
Click here to view the embedded video.
Por supuesto una opinión contra Linux:
Click here to view the embedded video.
Ustedes juzgen.
He visto con gran agrado esta noticia, el anunció del release del juego Assassin Creed II, en esta ocasión el personaje principal será un descendiente de Altair llamado Ezio, este personaje ya podrá nadar y planeará como un murcielago, en la primer parte, hubó momentos en que me aburria por la repetición de acciones del juego, pero la segunda parte promete traer algo mas.
Uff… ya llevo bastante sin pasarme por este, mi querido blog. Puesto que ya no cuento con el mismo tiempo de antes es muy poco lo que puedo publicar; así que, aprovecho a colocar trabajos de la universidad que, de una u otra forma, podrían serviles a alguien. El video tutorial que verán a continuación con tiene una pequeña (muy pequeña) introducción a lo que son los shellcodes en Linux:
También lo subí a Youtube, por si no te gusta blip.tv. No es definitivamente el mejor video que hemos hecho, pero de seguro le será útil a alguien. Si deseas necesitas el video original, me puedes escribir solicitándolo, aunque creo que es suficiente con que esté en internet; no pongo el link descarga por cuestiones de recursos
Te recomiendo además esta animación en donde se explica qué es y cómo funcionan las vulnerabilidades de buffer overflow.

| Nro Registro | Fecha Registro | Titulo Obra | Autores/Intervinientes | Titular derecho patrimonial | Tipo de Obra |
| 5-182-295 | 4/20/2009 11:45:43 AM | BODEGÓN | ALEJANDRO RÍOS PEÑA | Sin transferencia de derechos. | REGISTRO DE OBRA ARTISTICA |
| 5-182-296 | 4/20/2009 11:45:54 AM | MUSA Y PROGRAMADOR | ALEJANDRO RÍOS PEÑA | Sin transferencia de derechos. | REGISTRO DE OBRA ARTISTICA |
| 5-182-297 | 4/20/2009 11:46:06 AM | ENT | ALEJANDRO RÍOS PEÑA | Sin transferencia de derechos. | REGISTRO DE OBRA ARTISTICA |
| 5-182-298 | 4/20/2009 11:46:15 AM | ECCE TAURUS | ALEJANDRO RÍOS PEÑA | Sin transferencia de derechos. | REGISTRO DE OBRA ARTISTICA |

Ya un tiempo después de haber pasado por el trajín de ser anfitriones de las JSL quiero dedicarle unas cuantas lineas (desde mi punto de vista) a esta labor, la que en los últimos meses se convirtió en mi preferida y fue a que le dedique mas tiempo que a cualquier otra cosa.
JSL2008!
A vista de la mayoría la labor preparativa de las JSL en Bucaramanga empezó en Medellín el año pasado en medio de unas cuantas polas, en las que Juliancho dejo salir su parentesco con el Tuerto Gil y comenzó un despliegue político/propagandístico para traernos las JSL a nuestra casa (Realmente llevábamos un buen tiempo planeando que íbamos a hacer para convencer a la gente), fue así como por varias horas discutimos con los pastusos que también se las querían llevar exponiendo argumentos y contra argumentos los unos a los otros, y como obviamente, como si se tratara de una discusión entre un ateo y un creyente, ninguna parte fue capaz de convencer a la otra dejamos la decisión para el otro día en las mesas de trabajo. Para ese domingo teníamos la carreta preparada con meses de anticipación, los designados para echarla fueron Ivan y Julian por que el resto nos aculillamos. Entonces están los dos y tratan de comenzar a hablar, llevan tan solo cinco segundos diciendo quienes son cuando de se oye un “¿De donde son?” – “de Bucaramanga” – AHHH!!! Si Si Bravo, bravo bravo… ehh!!! se decidió mientras lo pobres seguían hablando, al final nadie los escucho pero nos la trajimos para Bucaramanga, los pastusos no alcanzaron ni siquiera a hablar por que las mesas de trabajo acabaron por pupitrazo después de la histeria colectiva
Ya de vuelta en Bucaramanga empezamos a camellarle, lo primero era definir fechas para trabajar sobre el tiempo, aun así se demoro un buen tiempo tener una fecha fija, se realizo un intento de votación por colibrí quedando para agosto, pero cometimos el error de no ver el calendario de la universidad antes de proponer las fechas de votación, coincidiendo entonces las JSL con las vacaciones de la UIS, por lo que nos quedaba imposible gestionar espacios dentro de la universidad. Para lo cual anteponiendo como excusa la falta de afluencia en la votación decidimos re-abrirla y realizamos la conocida técnica del traslado de votos, todos los cusolitas que estábamos en agosto nos pasamos para octubre y así se nos acomodaron mejor las cosas.
Entonces por esa época ya teníamos material publicitario asegurado, algunos recuerdos para los asistentes, contactos con un invitado especial, call for papers en curso, preinscripciones realizándose en la pagina web, algún dinero y con esperanzas de poder recaudar algo mas con los certificados… En fin, íbamos por buen camino. Solo nos faltaba asegurar el espacio físico en donde llevar a cabo las Jornadas para lo cual comenzamos a hacer lobby, primero en el auditorio Luis A. Calvo donde nos respondieron “Esta ocupado por el congreso de Ingeniería Industrial”. No importa, nos dijimos, entonces vamos al Ágora donde nos dijeron de nuevo “Esta ocupado por el congreso de Ingeniería Industrial”, ah! bueno vamos al auditorio de Mecánica y allá también nos encontramos con un “Esta ocupado por el congreso de Ingeniería Industrial”, y así pasamos por otros tres auditorios echándole la madre al dichoso congreso de Industrial…
En fin nos vimos otra vez obligados a un cambio de fecha, decidimos correr el evento 15 días. Lo primero fue asegurar un auditorio, seguido a esto comenzamos a cuadrar cronograma, confirmar ponentes, definir las temáticas para el foro, plantear discusiones para las mesas de trabajo, detalles de logística, etc.
Bueno hasta acá he hablado del proceso pero poco de la gente. En un principio eramos pocos ya que algunos de los que estábamos se graduaron, eramos básicamente 8 pero gracias al FLISoL y los talleres que realizamos periódicamente varias personas afines pero que no se habían involucrado mucho con la organización se nos fueron pegando y conformamos un buen equipo de trabajo. Puede ser una virtud o un defecto, pero en todo el proceso de organización del evento no tuvimos altercados entre nosotros, solo alguna que otra perla como por ejemplo la del personaje que había quedado encargado de enviar por fax las invitaciones que nos solicitaron y faltando 8 días para el evento en un charla en el IRC dice “marica, yo mañana envío las cartas de invitación, fijo!”, cartas que menos mal habíamos enviado dos meses antes ya que sabíamos que el encargado podía salir con esas. A pesar de los varios llamados por listas de correo a otros grupos o personas que quisiera colaborar fue poca la afluencia de colaboradores externos a los ya nombrados, contados con los dedos de la mano. Pero ya en el transcurso de las JSL nos enteramos de por lo menos la existencia de otro grupo en la ciudad y espero podamos coordinar con ellos para acciones futuras.
También quiero resaltar acá las personas de otras partes del país que nos colaboraron, como Kal que nos ayudo bastante en la parte web, Nonroot y Duma con el wargame, Neoecos con el asesino (que lamentablemente no se pudo realizar) y algunos premios para los juegos.
Llego el día del evento, Viernes 31 de Octubre, llegamos todos al rededor de las 7 de la mañana para cuadrar últimos detalles. Los asistentes comenzaron a llegar puntuales, y como en todos los eventos se hacen filas enormes, menos mal fueron bastantes las personas que se encargaron de la acreditación y salimos bien librados de esto. Este día todo nos salio bien, creo que el único problema fue en el taller de virtualización ya que los equipos no tenían instalado el software requerido por los talleristas, pero para mi la instalada debería estar incluida en el taller. Paralelamente a las actividades del día tres de nosotros nos dedicamos a hablar con el sindicato de trabajadores de la universidad, ya que había rumores de ellos iban a cerrar la universidad al día siguiente. Luego de un tiempo nos confirmaron lo del cierre pero había posibilidad de que dejaran entrar a los participantes de las Jornadas. Aun así no nos confiamos y logramos conseguir otro auditorio a las 8 de la noche, el de la facultad de salud de la UIS.
Amaneció cerrada la universidad como nos lo habían dicho, y también la facultad de salud, por lo cual nos quedamos sin lugar. Hable en varias ocasiones con las directivas del sindicato obteniendo repetidamente respuestas negativas, no nos iban a dejar entrar. Decidimos esperar a que se levantara el cierre, que se tenia planeado vendría siendo a las 10 de la mañana. Pero no sucedió, en vez de esto tuvimos un roce con el sindicato y varios terminamos tildados de fachos y uribistas. Entonces nos llevamos a la gente al parque de los niños, tratando de quemar tiempo mientras conseguíamos algún lugar donde poder hacer las actividades del día. La primera opción fue alquilar un salón de festejos, que pagamos sin pensar, pero afortunadamente antes de dar esa información un amigo nos confirmo un espacio en la UNAB, discutimos entre todos en que íbamos a emplear la tarde, se decidió que en ponencias dejando la presentación de grupos y el foro para el día siguiente, citamos entonces a las 2 de la tarde. Ya en la UNAB todo se llevo a cabo a la perfección y quedamos de vernos en la noche para la tradicional Debeta.
Gracias a las influencias de algunas de nuestras compañeras los que primero llegamos terminamos escuchando vallenato y salsa, por lo cual varios de nosotros nos salimos a tomarnos unas polas en otro lado, estando en esas llegaron los paisas que rebautizaron las JSL como las Jornadas de Salsa Libre y con ellos convencimos a los otros para irnos a otro chuzo, para lo cual como es tradicional en Bucaramanga nos citamos en otro parque, y estando ya listos para entrar en un bar la mitad del parche decide abrirse y coger para una discoteca!!! bueno al final no importa porque después de emborracharnos en el bar nos fuimos para la discoteca a azotar baldosa con los que ya estaban allá
El domingo la madrugada fue dura, mas para los que nos quedamos hasta las 5 tomando, pero a las 9 ya estábamos saliendo hacia la finca/colegio para rematar la jornada. En la mañana se presentaron los grupos con mucha gente nueva y buenas ideas terminando casi a la una por lo cual todos salieron directo a comer lechona y llenar el estomago. Después de su correspondiente locha e integración al rededor de un balón, una piscina o un frisbee convocamos a las mesas de trabajo. Para saber lo que se hablo en las mesas lo mejo es ver la relatoría y las conclusiones. Ya terminada la discusión siguio el final y algunas despedidas.
Trabajar con personas comprometidas es lo mejor que se puede hacer en estos casos, nosotros lo hicimos de una forma excelente, creo que ninguna responsabilidad adquirida se evadió (aunque alguno que otro evadió tener responsabilidades
) a la vez que trabajamos siempre teniendo en cuenta el tiempo, por lo cual fueron pocas las que quedaron para lo ultimo pero al ya tener una persona encargada de esa dichas labores todo funciono, lo único fue algo que se nos salio de las manos como el cierre por parte del sindicato, para el cual fue como el plan Z el que nos termino funcionando.
Hablando de dinero, los certificados nos sirvieron mucho, financiaron los gastos debidos alcanzando hasta para subsidiar algo del costo del traslado y la comida del Domingo, definitivamente algo a tener en cuenta para las próximas JSL aunque les de pinta de un evento mas formal, no termina siendolo.
El wargame y los demás juegos tiene que estar definidos y montados con varios días de anticipación, por dejarlos para ser montados el día del evento solo pudimos jugar dos tardes al wargame y el asesino no se pudo realizar (Preinscripcion web para los juegos?)
Ya solo me quedaría agradecer todos los que hicieron posible este espacio, no solo a los organizadores y colaboradores, cada cual sabe el rol que desempeño, sino también a los asistentes ya que las JSL las hacen los que vienen, por que como organizador se esta prácticamente ocupado todo el tiempo y no podemos participar de la forma que quisiéramos, aun así me las goce.

Nano es sin duda mi editor de texto favorito: es simple, es rápido y anticuado (?). Me encanta usarlo aun cuando estoy en un entorno gráfico y tengo la posibilidad de usar Gedit o Kate. Este tip es bastante sencillo y hace que nano resalte el código fuente de los programos que estemos editando.
Basta con crear un archivo llamado .nanorc en el directorio home (nano ~/.nanorc) de nuestro usuario, y poner algo como esto (para PHP):
syntax "php" "\.php[2345s~]?$"
color brightblue "(.*)\("
color blue "\$[a-zA-Z_0-9$]*|[=!<>]"
color green "(var|class|function|echo|case|break|default|exit|switch|if|else|elseif|@|while)\s"
color green "[.,{}();]"
color red "('[^']*')|(\"[^"]*\")"
color brightyellow "(#.*|//.*)$"
color brightyellow start="/\*" end="\*/"
color brightblue "(<\?(php)?|\?>)"
color white start="\?>" end="<\?(php)?"
Este es un listado completo de la configuración para el resaltado de sintaxis en otros lenguajes de programación. Personalmente tengo sólo los que uso (Java, C/C++, SQL, Python, HTML y PHP), pero hay muchos más. Además, como puedes ver son fáciles de crear o modificar. El resultado es algo como esto:

¡Nada mejor que nano!
"That's a thing that I keep In the back of my head".
Links:
09:00 am
Apertura del evento
10:00 am
Hackeando Facebook, una mirada alternativa a las redes sociales
11:00 am
Herramientas de Software Libre en la Web 2.0 para la enseñanza docente
12:00 m
De la U. a la Empresa con el Software Libre
01:00 pm
ARDUINO y la Electrónica Open Source (Porque el Hardware también es Libre)
02:00 pm
Arte y Linux, excelente combinación
03:00 pm
Sugar, una plataforma de educación libre
04:00 pm
Estrategias para la adopción del software libre en casa y en la empresa
05:00 pm
El Software libre en el modelo de computacion en nube
06:00 pm
Cierre del evento
Mayor info en: http://www.installfest.net/ColombiaBogota/2009/Conferencias
Stands (expociones) Donde se contara con la participacion de su servidor xD
Talleres (cupo limitado)
Mayor info en: http://www.installfest.net/ColombiaBogota/2009/TalleresInformaticosEste es un tip bastante útil que nos permitirá poner las ventanas de nuestras aplicaciones en Fullscreen (pantalla completa), y de paso aprenderemos a crear ventanas sin bordes (lo cual es útil si queremos hacer algún splash de inicio para nuestra aplicación).
En el siguiente ejemplo usaremos básicamente los siguientes métodos y clases:
setUndecorated de la clase JFrame, el cual recibe un parámetro boolean. Si le enviamos true, quitará los bordes de la ventana.GraphicsDevice nos permite manejar objetos que representan dispositivos gráficos, como la pantalla del computador. En este caso creamos el objeto con la instrucción GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice(); que nos devuelve un objeto que representa la pantalla en donde se está mostrando nuestro programa.setFullScreenWindow, de la clase GraphicsDevice, nos permite poner nuestro programa en pantalla completa. Además, aunque no lo usemos en el ejemplo, contamos con el método isFullScreenSupported que nos permite saber si es posible poner la ventana en modo fullscreen o no.
import javax.swing.*;
import java.awt.GraphicsEnvironment;
import java.awt.GraphicsDevice;
import java.awt.event.*;
public class EjemploFullscreen extends JFrame implements ActionListener{
private JButton boton;
private boolean estaFull = false;
static GraphicsDevice grafica=
GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
public EjemploFullscreen() {
super("Ejemplo pantalla completa en Java");
boton = new JButton("Presioname");
boton.addActionListener(this);
getContentPane().add(boton);
setSize(640, 400);
setUndecorated(true);
setVisible(true);
}
public static void main(String[] args) {
new EjemploFullscreen();
}
public void actionPerformed(ActionEvent e) {
if(!estaFull)
grafica.setFullScreenWindow(this);
else
grafica.setFullScreenWindow(null);
estaFull = !estaFull;
}
}
BigInteger y BigDecimal son clases envoltura de los tipos primitivos int y double, sin embargo tienen ventajas sobre los tipos primitivos. Cuando necesites usar números grandes en Java la mejor opción es usar estas clases, ya que su limite de almacenamiento es el límite de memoria que tenga la máquina virtual de Java.
Además, estas clases proporcionan algunos métodos bastante interesantes, como las operaciones básicas o saber si el número es primo o no. Como siempre vamos con algunos ejemplos de apoyo:
En el siguiente ejemplo se hace uso de los métodos add, substract, multiply y divide para realizar las operaciones básicas de suma, resta, multiplicación y división:
import java.math.BigInteger;
public class PruebaOperacionesBasicas {
public static void main(String args[]){
BigInteger entero1 = BigInteger.valueOf(45);
BigInteger entero2 = BigInteger.valueOf(15);
//sumar con metodo add()
String texto = "La suma entre "+entero1+
" y "+entero2+" es "+entero1.add(entero2);
//restar con metodo substract()
texto += "\nLa resta entre "+entero1+
" y "+entero2+" es "+entero1.subtract(entero2);
//multiplicar con metodo multiply()
texto += "\nEl producto de "+entero1+
" y "+entero2+" es "+entero1.multiply(entero2);
//dividir con metodo divide()
texto += "\nLa división de "+entero1+
" y "+entero2+" entre "+entero1.divide(entero2);
System.out.println(texto);
}
}
Este es un típico ejercicio que nos plantean en la universidad; se trata de hacer un listado de los primeros X números primos. En este caso BigInteger nos proporciona dos métodos muy interesantes: isProbablePrime y nextProbablePrime. El primero de ellos devuelve true si el número es probablemente primo (recordemos que es complejo saber si un número es o no primo cuando es demasiado grande); el segundo devuelve el próximo posible número primo a partir del valor que contenga el objeto.
La siguiente aplicación usa el método nextProbablePrime para listar los primeros 2000 números primos:
import java.math.BigInteger;
public class PruebaNumerosPrimos {
public static void main(String args[]){
//iniciar el entero en cero
BigInteger entero = BigInteger.ZERO;
StringBuffer texto = new StringBuffer();
for(int i = 0; i<2000; i++){
entero = entero.nextProbablePrime();
texto.append(entero+"\n");
entero.add(BigInteger.ONE);
}
System.out.println(texto);
}
}
Otros métodos interesantes
La clase BigInteger proporciona además otros métodos que nos ahorrarán bastante tiempo y líneas de código:
Como mencioné al principio, también es posible usar la clase BigDecimal que funciona de manera similar pero con números de coma flotante.
Descargar código fuente de ejemplos
El weblog de Diego tiene nuevo contenido.
http://zeitgeist-maktub.blogspot.com/
Supongo que seguirá actualizándose mientras prepara su viaje en bicicleta por Brasil.

