Novedades: actualmente estoy impulsando el proyecto Argentina en Python, desde aquí (ver mapa)

chmtopdf: conversor de archivos chm

Nota

Este post no es el original, sino una migración de Wordpress a Nikola. Si no se visualiza correctamente, podés ir al original (en Wordpress) haciendo click aquí

¿Qué es esto? Lo mismo digo. Hace como mucho una semana empezamos un proyecto con el Guille, para hacer un programa que convierta los archivos CHM (formato de ayuda HTML comprimido de Microsoft) a cualquier otro formato que sea imprimible. Ya que algunas editoriales ofrecen en internet libros en este formato, o incluso directamente en HTML, de forma gratuita.

La idea salió cuando estaba en mi casa con ganas de leer algo nuevo de Python y seguir estudiando inglés. Busqué algunos libros en internet y encontré. Pero otra vez lo mismo que cuando quise leer uno de TurboGears, es muy pesado leer desde el monitor, al menos para mí. Entonces dije: ¿Y porque no hacer un programa que descomprima el CHM y lo pase a formato PDF con lo que aprendí de LaTeX? Si esto se cumpliera me quedaría un libro de primera calidad, igual a cualquiera de una editorial o muy similar al menos.

En ese momento, levanté el teléfono y llamé al Guille. Le comenté la idea y me dijo que en cuanto pueda se venía para casa a empezar a pensar el sistema. Así fue como comenzó el desarrollo de esta aplicación, revolviendo viejos conceptos que alguna vez había manejado con el módulo BeautifulSoup para parsear los HTML (de hecho, excelente módulo) empezamos a ver qué podíamos hacer y cómo encarábamos el problema. También hubo que hacer memoria de HTML, CSS, y demás conceptos que estaban bastante olvidados.

Así y todo, programando dos días seguidos, con varias ilusiones y desilusiones en el medio, llegamos a algo muy crudo esos dos días que estuvimos. Pero ya se acercaba a lo que estábamos buscando. El problema era que sólo funcionaba para un archivo chm y no se podía configurar desde ningún punto de vista.

Los principales problemas fueron la inserción de los caracteres correctos en LaTeX, las tablas HTML, las viñetas, y otas cosas raras de HTML y CSS que muchas no son tan estándares como parece al principio. O mejor dicho quizás son estándares pero bastante bien mezclados y rompe coco :P .

Nos juntamos una vez más (sólo medio día) y terminamos sacando la primer versión configurable del programa. Bastante cruda y difícil de llevar a cabo la configuración, pero configurable al fin. Incluso hasta ahora no sabemos bien cómo hacer para que cualquier usuario con desconocimiento de todos los conceptos mencionados pueda convertir su chm a pdf.

Actualmente el proyecto está disponible en internet, se puede descargar el código fuente y realizar cualquier tipo de pruebas con él. Proponer ideas, correción de bugs, y demás. Estamos abierto a cualquier sugerencia que sea.

En la Página Oficial del proyecto está una explicación de cómo se usa, hay un ejemplo de los resultados que se obtienen y demás.` <http://code.google.com/p/chmtopdf/>`__


Instalar Ubuntu por red

Nota

Este post no es el original, sino una migración de Wordpress a Nikola. Si no se visualiza correctamente, podés ir al original (en Wordpress) haciendo click aquí

Como comenté en un post anterior. Estuve un tiempo considerable intentando instalar Ubuntu por la red sin que este se descargue completo desde internet. Sino que utilice una imágen del cd de Ubuntu.

Para esto se necesitan varias cosas. Primeramente tener dos computadoras conectadas vía red ;) . Además haber descargado el disco (imagen .iso) de Ubuntu en su versión desktop para una fácil instalación ya que lo que hacemos es, primeramente, bootear la pc cliente mediante netboot por pxe/bootp, adquirir una dirección de ip y pasar el kernel para bootear por tftp. Este kernel muestra una pantalla de selección de opciones en la que debemos elegir la que vamos a crear (Live CD/install) que le pasará el control al segundo kernel que se tomará del Live CD.

Por otra parte también debemos tener instalados el servidor dhcp, uno de tftp y otro de nfs. Los paquetes que instalé en la máquina servidor (Kubuntu 7.04 tenía en ese momento) fueron: dhcp3-server, nfs-kernel-server, tftpd.

Lo primero que hice fue configurar el servidor DHCP,  agregando al archivo /etc/dhcp3/dhcpd.conféstas líneas (mi archivo de configuración me quedó así):

host pxeinstall {
  hardware ethernet 00:11:2f:1e:3c:d3;
  fixed-address 10.0.0.4; # dirección de la máquina cliente
  next-server 10.0.0.5;     # dirección de la máquina servidor de TFTP
  filename "pxelinux.0";
}

Después de configurar esto, descargué la imagen .iso de Ubuntu desktop y la monté en la carpeta ~/tftp configuré el servidor nfs para que la dirección de ip asignada a la máquina cliente tenga acceso a esta carpeta (archivo /etc/exports) y reinicié el servicio.

Luego configuré el servidor tftp. Para esto bajé el archivo netboot.tar.gz y lo descomprimí en la carpeta dónde está configurado el servidor tftp. Copié los archivos vmlinuzy initrd.gz desde la carpeta /casper de la imagen del CD al directorio del servidor tftp. Los copié con el siguiente comando para así también renombrarlos y no confundir luego:

cp -a ~/ftp/casper/vmlinuz /var/lib/tftpboot/vmlinuz.fromUbuntu704DesktopCd cp -a ~/ftp/casper/initrd.gz /var/lib/tftpboot/initrd.gz.fromUbuntu704DesktopCd

Para finalizar edité el archivo /var/lib/tftpboot/pxelinux.cfg/default agregando las líneas (mi archivo quedó así):

DEFAULT manuel

LABEL manuel
        kernel vmlinuz.fromUbuntu704DesktopCd
        append initrd=initrd.gz.fromUbuntu704DesktopCd boot=casper netboot=nfs nfsroot=10.0.0.5:/home/manuel/ftp --

Por útlimo en la máquina cliente tipeamos el nombre del LABEL que le hallamos puesto cuando aparece el menú (yo le puse manuel) y listo! Arranca el LiveCD de forma transparent. Click en Instalar y a esperar los 5 minútos que demora (se instala rapidísimo)


Nueva versión de (K/G)paper

Nota

Este post no es el original, sino una migración de Wordpress a Nikola. Si no se visualiza correctamente, podés ir al original (en Wordpress) haciendo click aquí

image0

Y si! Llegó una nueva versión de Kpaper, pero ahora principalmente más estable. Con varias correcciones de bug que tenía por todos lados, debido a que de la página que descargaba los wallpapers no siempre estaba bien formada y éste no hacía ninguna verificación. Ahora sí la hace :P .

También logré hacer la interfaz gráfica para GNOME que tanto era acudida por los usuarios :D . Y bueno, me tuve que vender, no me quedaba otra, considerando que hay muchos usuarios de GNOME me decidí por aprender lo mínimo e indispensable para poder hacer el SystemTray con GTK.

Otra cosa que agregué es que, para el Gpaper descarga los wallpaper de Gnome-Look que antes los obtenía de Kde-Look al igual que el Kpaper.` <http://www.gnome-look.org>`__

Aunque en realidad me gustaría saber un poco más de esta librería gráfica, ya que es muy útil y parece ser bastante fácil en el sentido de cómo están organizadas las clases.

Me gustaría que la mayor cantidad de gente posible pruebe el programa, por lo menos instalarlo, para ir puliéndolo poco a poco. Yo estuve haciendo algunas largas pruebas en dos computadoras distintas (una con Ubuntu y otra con Kubuntu) y hasta el momento el programa corre a las mil maravillas. También colaboraron como beta tester algunos del canal #ubuntu-ar; gracias a todos ellos.

Está en mis planes aprender alguna librería gráfica que tenga un buen Look & Feel en Windows, ya que tengo amigos que quieren usar el programa en su mayor resplandor, porque por ahora en windows sólo funciona de consola :) . Asique estoy viendo la posibilidad de ponerme a estudiar algo de wxPython que me recomendaron en la lista de PyAr, o ver si lo hago con Qt nomás.

Dejo los links al programa para que el que quiera lo descargue, instale, pruebe y reporte cualquier tipo de sugerencia, bug, insulto, etc...

Y siempre se puede obtener la última versión en la que estoy trabajando,que de a poco le voy corrigiendo algunos bug y sumando sugerencias.

svn checkout http://kpaper.googlecode.com/svn/trunk/ kpaper

Enjoy it!


Python Debugger

Nota

Este post no es el original, sino una migración de Wordpress a Nikola. Si no se visualiza correctamente, podés ir al original (en Wordpress) haciendo click aquí

Hoy estuve haciendo un poco de todo. Configurando el canal de IRC que mencioné en el post anterior, buscado plugins para el Kate, viendo algunos programas, incorporándome en la comunidad Ubuntu, traduciendo algunos paquetes, etc...

En un momento de la tarde me puse a revivir el Kpaper y a ver porqué no andaba bien la parte de la interfaz gráfica hecha con PyGtk. Por lo que me puse a investigar cuál era el problema, miré algunos logs que tenía archivado en los bookmarks y pregunté en el canal de Ubuntu (#ubuntu-ar) si alguien se sometía a ser mi beta tester.

Uno se copó (FreeDownload), se bajó el código y le hice hacer algunas pruebas en su máquina, ya que yo tengo Kubuntu y quería estar seguro que en Ubuntu andaba. Bue, cómo era de esperar no le funcionó y le pedí que me pase por favor lo impreso en consola. Me puse a estudiar cuál era el problema. No lo pude descifrar y no dude en mandarlo a la lista de PyAr.

No estando seguro de cuál era el problema, mandé el mail. Esto es jodido porque si no sé qué es lo que pasa es complicado transmitir por email la pregunta. Lo que yo quería explicar no era nada concreto y no sabía como, ni por dónde empezar. Pero esto no viene al caso...

Redacté el mail, y envié. Al rato me contestaron con una explicación (no muy distinta a lo que yo pensaba) pero me sugirieron hecharle un vistazo al módulo pdb que es Python Debugger. Asique fuí directo a la documentación oficial. Y me encontré con que es para ir parando el programa dónde uno desea. Ni más ni menos que... "Un debugger!" :) . Buenísimo.

Hice un par de pruebas, simples, sobre el archivo hello.py, para ver como funciona y si realmente es útil. Después de jugar un rato, encontré cosas interesantes, cómo por ejemplo, ver en qué parte del código de mi programa estoy y poder ejecutar código Python ahí mismo.

Con la función "pdb.set_trace()" le indico al intérprete que debe frenar en esa línea, y dejarme hacer lo que yo quiera en la consola del debugger. Yo en el ejemplo que hice puse cuatro puntos en los que quería que parara, e hice algunas consultas. Utilicé los comandos:

  • list: me muestra la porción del código indicando dónde estoy posicionado actualmente en el código.
  • !: me deja introducir código Python, por lo que yo usé la función print para mostrar el contenido de las variables que me interesaban.
  • continue:ejecuta el código hasta el próximo pdb.set_trace() (break point).
  • next: continúa la ejecución hasta la próxima línea de la función actual.
  • help: nos muestra la ayuda de los comandos que podemos utilizar.
  • where: indica en qué parte del código estamos parados y muestra a línea correspondiente.
  • whatis: muestra el tipo de dato de la variable pasado como argumento.
  • args: indica cuales son los parámetros de la función en la que actualmente estamos ejecutando el código.
  • return: ejecuta el código hasta que la función actual retorne.

Se puede ir haciendo un seguimiento del código que escribí y de las pruebas que realicé. Por ahora son muy sencillas, es la primer vez que veo este módulo y seguro que más adelante le sacaré más provecho.