Monthly Archive for Noviembre, 2006

Charla: Desarrollo web en Python usando el framework Django

El profesor Jacinto Dávila, en el marco de actividades del Jueves Libre, me ha invitado a dar una charla sobre Desarrollo web en Python usando el framework Django para el día de mañana, 20 30 de noviembre de 2006, el sitio de la charla será en el salón OS-02 del edificio B de la facultad de ingeniería, sector La Hechicera, a partir de las 11:00 a.m.

Básicamente estaré conversando sobre nuevas metodologías de desarrollo Web, el uso de frameworks, ¿en realidad promueven mejores prácticas de desarrollo?, acerca del modelo MVC y el principio DRY.

A manera de introducción les dejo lo siguiente.

Django es un framework de alto nivel escrito en el lenguaje de programación Python con el objetivo de garantizar desarrollos web rápidos y limpios, con un diseño pragmático.

Un framework orientado al desarrollo Web es un software que facilita la implantación de aquellas tareas tediosas que se encuentran al momento de la construcción de un sitio de contenido dinámico. Se abstraen problemas inherentes al desarrollo Web y se proveen atajos en la programación de tareas comunes.

Con Django, usted construirá sitios web en cuestion de horas, no días; semanas, no años. Cada una de las partes del framework Django ha sido diseñada con el concepto de productividad en mente.

Django sigue la arquitectura MVC (Modelo-Vista-Controlador), en términos simples, es una manera de desarrollo de software en donde el código para definir y acceder a los datos (el modelo) se encuentra separado de la lógica de negocios (el controlador), a su vez está separado de la interfaz de usuario (la vista).

El framework Django ha sido escrito en Python, un lenguaje de programación interpretado de alto nivel que es poderoso, dinámicamente tipado, conciso y expresivo. Para desarrollar un sitio usando Django, debemos escribir código en Python, haciendo uso de las librerías de Django.

Finalmente, Django mantiene de manera estricta a lo largo de su propio código un diseño limpio, y le hace seguir las mejores prácticas cuando se refiere al desarrollo de su aplicación Web.

En resumen, Django facilita el hacer las cosas de manera correcta.

Para finalizar, espero poder hacer una demostración en vivo, ya que el tiempo que dispongo no es mucho.

Creando un chroot en Etch AMD64

Bien la cosa es que tratando de instalar el Google Earth en mi Debian me he encontrado que no existe un paquete nativo para AMD64 (¿qué raro no?), por lo que me las he tenido que ingeniar para instalarlo. Nunca tuve la necesidad de hacer un chroot en el sistema ya que lo único que lo ameritaba era el Flash, pero no pensaba hacerme un chroot expresamente para el Flash y malgastar el espacio en mi disco, pero a la final siempre he tenido que hacerme uno!

Para aquellos que dominan el inglés se pueden leer el Debian GNU/Linux AMD64 HOW-TO ya que los pasos para crear el chroot los he seguido de ahí. Claro que para aquellos que no tengan mucho tiempo o no sientan la necesidad de hacer un chroot siempre existe una manera rápida de hacer funcionar las cosas en un apuro.

Para aquellos que todavía no saben qué es un chroot les recomiendo que le echen un ojo a la Guía de referencia Debian, de todas formas acá les cito textualmente de dicha guía lo que ellos definen como un chroot:

…el programa chroot, nos permite ejecutar diferentes instancias de un entorno GNU/Linux en un único sistema, simultáneamente y sin reiniciar…

El chroot en mi caso, está pensado para poder ejecutar aplicaciones a 32bits en un entorno 64 bits. El chroot es necesario ya que no se puede mezclar aplicaciones 32 bits con librerías 64 bits, por lo que se necesitan las librerías a 32 bits para correr dichas aplicaciones.

Lo que se hace en el chroot es instalar un sistema base para la arquitectura x86. Ésto lo puedes lograr haciendo en una terminal:

# debootstrap --arch i386 sid /var/chroot/sid-ia32 http://ftp.debian.org/debian/

…para lo cual, posiblemente, vas a necesitar el paquete debootstrap. Ahora bien, ¿qué hace el debootstrap?; debootstrap es usado para crear un sistema base debian from scratch (es algo como, desde la nada) sin tener que recurrir a la disponibilidad de dpkg ó aptitude. Todo ésto lo logra descargando los .deb de un servidor espejo y desempaquetándolos a un directorio, el cual, eventualmente sera utilizado con el comando chroot. Por lo tanto la línea de comandos que introduciste anteriormente hace todo eso, sólo que lo vas a hacer para la rama unstable ó sid, en el directorio /var/chroot/sid-ia32 y desde el servidor espejo específicado.

El proceso anterior puede demorar según sea la velocidad de tu conexión. No pude saber cuánto demoro el proceso en mi caso porque cuando empecé a hacerlo eran altas horas de la madrugada y me quedé dormido :(. Lo que tienes que saber es que cuando éste proceso finalice, ya tendrás un sistema base x86 o 32 bits en un disco duro en el directorio /var/chroot/sid-ia32. Una vez finalizado deberías instalar algunas librerías adicionales, pero para hacerlo deberás moverte al chroot y hacerlo con aptitude:

# chroot /var/chroot/sid-ia32

…y luego instalas las librerías adicionales:

# aptitude install libx11-6

Para poder ejecutar aplicaciones dentro del chroot deberás tener también algunas partes del árbol de tu sistema 64 bits, lo cual puedes hacerlo mediante un montaje enlazado. El ejemplo a continuación, enlaza el directorio /tmp a el chroot para que éste pueda utilizar los “sockets” del X11, los cuales están en el /tmp de nuestro sistema 64 bits; y también enlaza el /home para que podamos accesarlo desde el chroot. También es aconsajable enlazar los directorios /dev, /proc y /sys. Para lograr ésto deberás editar tu fstab que se encuentra en /etc y añadir lo siguiente:

# sid32 chroot
/home /var/chroot/sid-ia32/home none bind 0 0
/tmp /var/chroot/sid-ia32/tmp none bind 0 0
/dev /var/chroot/sid-ia32/dev none bind 0 0
/proc /var/chroot/sid-ia32/proc none bind 0 0

…y luego montarlas:

# mount -a

Bien ya vamos llegando a final, unos cuántos pasos más y listo. Lo que necesitamos hacer a continuacióne es establecer los usuarios importantes en el chroot. La forma más rápida (sobretodo si tienes muchos usuarios) es copiar tus directorios /etc/passwd, /etc/shadow y /etc/group al chroot, a menos claro que quieras tomarte la molestia de añadirlos manualmente.

ADVERTENCIA! Cuando enlazas tu directorio /home al chroot, y borras éste último, todos tus datos personales se borrarán con éste, por consiguiente serán totalmente perdidos, por lo tanto debes recordar desmontar los enlaces antes de borrar el chroot.

Corriendo aplicaciones en el chroot

Después de hacer todos los pasos anteriores, ya deberías poder ejecutar aplicaciones desde el chroot. Para poder ejecutar aplicaciones desde el chroot debes hacer en una terminal (en modo root):

# chroot /var/chroot/sid-ia32

Luego deberás cambiarte al usuario con el que quieres ejecutar la aplicación:

# su - usario

Establecer $DISPLAY:

# export DISPLAY=:0

Y finalmente ejecutar la aplicación que quieras, como por ejemplo, el firefox con el plugin de flash! Por supuesto deberás instalar la aplicación antes de ejecutarla, recuerda que lo que has instalado es un sistema base y algunas librerías adicionales.

Charla: Subversion

El día de mañana, 23 de septiembre, desde las 11:00 a.m. hasta el mediodía, en el salón OS-02 (nivel sótano, cerca del cafetín de la facultad de ingeniería), sector La Hechicera, Nicolás Ruiz estará conversando acerca de subversion, el cual es un sistema de control de versiones de software.

Subversión es un sistema de control de versiones diseñado para la nueva generación de repositorios para desarrollo de software. Ha sido propuesto para reemplazar al tradicional CVS para el desarrollo de software libre, pero puede ser empleado para el registro sistemático de archivos de documentos y los llamados binarios, no solamente las fuentes de software. En esta charla conoceremos características importantes y poco visibles de la implantación y uso de subversion.

Por cierto, la entrada es libre y gratuita.

Estaré a partir de las 10:00 a.m. en el sitio de reunión, espero poder colaborar en algo. Ya para culminar, debo dar las gracias al profesor Jacinto Dávila por la invitación.

Compilar aMSN en Debian Etch AMD64

Bien, sin mucho preámbulo, lo primero que debemos hacer es descargar el tarball de la página de amsn. Luego deberás descomprimirlo en la carpeta de tu preferencia, en mi caso está en ~/Sources/amsn-0.96RC1/. Una vez que lo descomprimes abre una terminal y obtén derechos de administrador (modo root); cuando tengas privilegios de root ubícate en el directorio donde descomprimiste el tarball y escribe lo siguiente:

$ ./configure

$ make

$ make install

Debes asegurarte de cumplir todos los requisitos cuando haces el ./configure, ya que te pide varias “dependencias” por así decirlo, como por ejemplo, tls y tk. Una vez que hayas hecho el make install quedará automágicamente instalado el amsn en tu sistema. Deberás poder verlo en Aplicaciones –> Internet –> aMSN. Bien eso es todo en lo que respecta al proceso de compilado, ¿nunca antes fué tan fácil verdad?.

Un problema que me dió una vez que lo compilé y lo ejecuté fué que no me permitía iniciar sesión porque me decía que no tenía instalado el módulo TLS. Entonces abrí una terminal e hice lo siguiente:

$ aptitude install tcltls

…pero ésto no me solucionó el problema, entonces me puse a indagar por la web y me encontré con la siguiente solución: editar el archivo /usr/lib/tls1.50/pkgIndex.tcl y ubicar la línea que dice algo como: package ifneeded tls 1.5 para entonces modificarla por package ifneeded tls 1.50 y listo :D