domingo, 14 de octubre de 2007

Un buen ejemplo de código PyGTK: Decibel

Decibel Audio Player es un programa liviano, sencillo, no orientado a tener miles de funciones (Amarok, les suena? :-D ), sino sólo a reproducir música de una lista. La verdad que las capturas de pantalla ("everybody loves screenshots!") pintaban prometedoras, y cuando leí que estaba hecho en Python + GTK, bajé el fuente a ver qué onda[1]...

Y la verdad que me está gustando lo que estoy leyendo. La parte de módulos me parece bárbara, da gusto leerla: para hacer un módulo propio (aka 'plugin'), uno hereda de una clase "Modulo" (también hay un ThreadedModule) y se registra a los eventos que quiere recibir, puede emitir eventos a los demás, etc. Las pantallas están hechas con Glade, el código está bien comentado (y bien identado, es Python! :-D ), el tamaño del proyecto y del fuente es manejable (al usar Glade, casi no se ve código de manejo de ventanas), usa semáforos, locks, está bien modularizado y orientado a objetos, etc.

Vista de un .glade abierto (con el vim de fondo):



Es resumen, si estás aprendiendo python (o programación, por qué no), leer el código fuente de este programa puede ser muy entretenido, para aprender cómo hacen las cosas los demás (y cómo se hacen las cosas bien hechas, je). Demás está decir que esto se puede hacer gracias a que es Software Libre, que si no... (es más, me gustaría meter algunas features que no me gustan y mandarlas al desarrollador...).

Espero que le pique el "bichito pythónico" a más de uno.

Saludos
Marcelo
[1]: Mentiira! :-D Como todavía uso Feisty (Decibel ya está en los repos de Gutsy), bajé el .deb de la página y cuando GDebi me dijo que era para la arquitectura i386 (tengo un x86-64), putié y dije "por qué, si es python, viejo! tiene que ser multiplataforma!". Ahí bajé el código.
PD: Guarda: Miren los __init__.py de los subdirectorios, hay está siempre lo que uno busca. :-)

Actualización: Envié un pequeño parche, que implementa el "cerrar ventana y no salir" y el "iniciar minimizado", aunque necesita que el módulo cargue siempre el StatusIcon (no estaba así por defecto). Espero que el desarrollador principal lo acepte. :-)

jueves, 4 de octubre de 2007

Una Revista de Python: Python Magazine

Me hago eco de un sitio sobre python, comentando que salió la primera edición de la PyMag - Python Magazine, (la primera revista exclusivamente sobre Python?) :-)

En su página de "Acerca de Nosotros", comenta que "es una revista mensual exclusivamente dedicada a Python, que tendrá artículos de gran profundidad, evaluaciones de productos, tips, mucho código e ideas con un único objetivo en mente: ayudarlo a mejorar su manejo de Python y aplicarlos en su trabajo diario. PyMag es una revista técnica hecha por programadores para programadores."

La revista en sí se descarga gratuitamente (en formato pdf) de su sitio *actualización: sólo por esta primera edición*, (por si no se dieron cuenta al leer mi traducción, la revista está en idioma inglés, je) y su modelo de ingresos se basará en la publicidad, junto con la suscripción de U$S 7 que costará la versión digital (a partir de la siguiente edición)... esperemos que les dé resultado y crezcan, la revista parece bastante copada.

El índice de este primer número contiene:

  • Extending Python: Cómo utilizar C desde Python
  • Working with IMap and iCalendar
  • Processing Web forms using anonymous functions & WSGI
  • Creating custom PyGTK widgets with Cairo (me muero por leer ya este artículo!)
  • Y más. (juaz! y eso que no tengo nada que ver con la revista ni los editores!)

Bueh, veremos qué tal resulta. Podés dejar tu comentario a ver qué te pareció.

Saludos
Marcelo