Webada

Bien, tengo mucho que decir, poco tiempo para hacerlo ahora, así que lo haré después :-). Simplemente quiero publicar este simple script hecho en Perl que hice para pasar a animaciones GIF las secuencias de fotos que saca mi cámara.

Lo que hace es descomponer la foto en sus 16 cuadros y crear un GIF animado. Por ejemplo, esta foto pasa a ser esta animación (es pesadita, 1.5Mb) y por acá otro ejemplo. Tengo que agregarle algunas opciones para que sea más divertido usarlo, pero ya vendrán más adelante 🙂 Muchas gracias a mis amigos Luca y Mazzi de Mazziblog por servir de modelos para el experimento 😛

Necesitarán : Perl 5.8.x y libgd-gd2-perl (una versión >= 2.1 para tener soporte de GIF). Las veriones viejas de GD no traían soporte de GIF por el problemas de la patente del algorítmo de compresión, ya vencida.

Modo de uso : #>./animation.pl imagen_original salida.gif

Se ha ido Pappo …

Hace solo un rato, se anunció por TV y radio que el guitarrista Norberto Pappo Napolitano, el guitarrista de blues más importante del rock argentino, ha fallecido en un accidente con su moto. Afortunadamente su hijo salió ileso, pero sin duda se pierde una guitarra que hizo grandes cosas.

En la foto, se lo puede ver junto a BB King, quién lo llevo en una gira para tocar con él.

Pappo con BB King

GtkBarCode

Hace unos días estuve jugando con barcode, una aplicación de consola para crear códigos de barra, ya que debíamos hacer las tarjetas para marcar la entrada de los empleados en el trabajo. El programa soporta una gran cantidad de formatos, y los saca en Postscript.

Luego de eso recordé a un amigo que hizo un programa para generar códigos de barra para la imprenta del padre, por un requerimiento de la AFIP (si mal no recuerdo). La cosa es que este amigo vendió varias copias de su programa, pero esa no es la historia de este post 🙂 … El programa lo hizo en Delphi con un componente que bajo de internet. Busqué un poco en Google (muy poco realmente) y no pude encontrar algo parecido para Gtk+ (solo he encontrado el programa gLabels que lo utiliza en forma gráfica, también haciendo un hack medio extraño), así que decidí hacer uno 😉

Primer pantallazo !!!El resultado es GtkBarCode, un widget Gtk+ 2.x que dibuja el código de barra y lo puede exportar a PDF, PS, PNG y dibujarlo en pantalla, todo esto gracias a que adapté el algoritmo que hacía la salida en Postcript del programa original para que use Cairo, ya comentada y que cada día me gusta más.

El widget no está ni apenas el 10%, solo es un hack de 1 noche para ver que salía y si era viable, y como se puede ver en la imagen adjunta, lo es 🙂

Cosas que debo agregar ahora :

  • gtk_barcode_set_encoding : seleccionar el tipo de encoding a usar y refrescar el widget
  • gtk_barcode_set_text : cambiar el texto a encodear (por ahora solo muestra el texto con el cual fue creado
  • gtk_barcode_use_checksum : setear si se debe usar un dígito de checksun al final
  • gtk_barcode_export_to : o algo así para exportar a PNG, PS y PDF
  • Alguna otra cosa que ahora no se me ocurra 🙂

Los códigos soportados son :

  • EAN
  • UPC (12-digit ean)
  • ISBN (still EAN13)
  • Code 39
  • Code 128
  • Code 128C (compact form for digits)
  • Code 128B (full printable ascii)
  • Code I25 (interleaved 2 of 5 (only digits))
  • Code 128RAW (Raw code 128)
  • Code CBR
  • Code MSI
  • Plessey
  • Code 93

Cabe aclarar que la parte de la codificación no he hecho nada. Aparentemente el source estaba separado para generar una biblioteca dinámica, pero Debian no lo hace, y en el paquete original no está terminado, es por eso que decidí meter todo el código útil para el widget (aka, la parte de codificación), dentro de mi proyecto, sitando el respectivo autor y toda la movida.

No tengo apuro en terminarlo, y calculo que cuando tenga más o menos ordenado el código crearé el repositorio Darcs para que lo puedan bajar y probar.

Ubuntu@Work

Ayer y hoy estuve sin PC en el trabajo por culpa del micro que se quemó. Cuando tuve micro nuevo, tuve que cambiar el mother porque no lo soportaba, y con el nuevo mother algo falló y me quedé sin disco (solo lógicamente). Por lo que al tener que reinstalar, aproveché y migré a Ubuntu Linux.

La tarea fue muy dificil, no por la distro, sino porque luego de 4 horas de tratar de instalarlo (pasando por pruebas con Knoppix 2.4 y 3.6, y cambio de memoria), descubrí que el mother nuevo tiene problemas con el IDE0 y por eso fallaba. En fin, ya tengo cambie el que no andaba y terminó de instalar mi PC para poder retornar a mis tareas diarias.

GPuzzle

Leyendo este artículo de OsNews.com, me encontré con que nombraron a GPuzzle entre los programas desarrollados con Mono «menos conocidos» :-), claro, seguramente la editora tomó una lista de GnomeFiles.org y no ha tenido tiempo de probarlos todos :-P, porque GPuzzle apesta 🙂 (y lo dice quién lo programó). Una excusa para mejorarlo 😛

Linux Users

Hoy en el trabajo hemos logrado un paso importante en la linuxificación de la empresa, hemos instalado nuestro primer escritorio GNU+Linux (sin contar los de sistemas, que hace rato lo son ;-)). La PC es un engendro que hizo Sebastián, con un solo CPU, 3 placas de video, 3 teclados USB y 3 ratones USB.

Dos de los usuario por ahora levantan un rdesktop al iniciar sesión y trabajan sobre Windows, pero afortunadamente tenemos uno que hoy empezó su capacitación utilizando Gnome, Gaim y Evolution, y usando rdesktop en ventana en lugar de pantalla completa (no podemos evitarlo, pues el sistema actual corre sobre FoxProp 2.6, que no funciona con Wine).

Desde ahora seguramente se comenzará a migrar de a poco al resto de los usuarios, empezando por aquellos que la tienen más clara para que despues el conocimiento se propague solo (y no nos jodan a nosotros :-P) … Mejor aún, en cuanto tengamos el nuevo sistema en línea, que es vía web, las sesiones por rdesktop seguramente serán obsoletas 🙂

Introducción a Web Services con Mono

Hace ya una semana que empecé a jugar de lleno con Mono y los WebServices. Fue una tarea interesante hacer andar las cosas en Debian, ya que los paquetes estan buggeados y tuve muchos problemas para que todo funcione.

Es por ello que escribí un pequeño artículo de Introducción a los WebServices en Mono, donde explico como instalar y configurar el servidor de páginas XSP, como codear un ejemplo de un WebService y un cliente que consuma el servicio (parte que aún me queda pendiente). No es nada del otro mundo, hay términos que todavía no comprendo del todo y que no están explicados como se debe, por eso he denominado esta primer versión como borrador.

Pueden dejarme conmentarios sobre errores (de ortografia creo haber eliminado la mayoría), errores conceptuales, o lo que se les ocurra 🙂

Otro aspecto interesante de haber escrito este artículo fue volver a mis raíces con DocBook, pero esta vez en lugar de vim utilicé Conglomerate (editor XML para Gnome), que promete mucho, pero está aún demasiado verde y no responde como debería (es más, en muchas cosas que uno quiere hacer recibe un hermoso diálogo avisando que eso fallará por un bug, y nos da la URL de donde ver el bug :-D, vean la imagen del final). Luego de tener mi XML terminado, generé el XHTML con xsltproc utilizando la XSL estándar de DocBook, agregué todo el estilo que se ve editando la CSS asignada, y la verdad, que Des me sigue asombrando con su sabiduría y enseñanzas … y si, CSS es milagroso y muy entretenido 😉

Firefox 1 – IExplorer 0

En mi contínuo intento de completar la interfaz del nuevo sistema web que realizo para mi empleador, necesité consultar dinámicamente desde DHTML para no recargar mucho la página (efecto que no es del agrado de los usuario). Bien, mi código Javascript utiliza un iframe oculto y otras yerbas raras. El problema es saber cuando el iframe fue cargado completamente, por lo que utilicé el evento onLoad para saberlo y llamar al callback que realiza la tarea de leer los datos. Mi sorpresa (más bien, lo comprobé) fue que en IExplorer no andaba, a pesar que, nuevamente, MSDN decía que si.

Fue por eso que hice un pequeño hack :

  imp = document.getElementById ('importe');
  while (!imp) imp = document.getElementById ('importe');

que espera a que la página sea cargada. Bien, lo probé en Windows y adivinen qué? 100% de uso del CPU y un IExplorer totalmente muerto … kill -9 😛

La gran sorpresa … probé lo mismo en Firefox!, y aquí el resultado en formato gráfico :

Pues bien, se dió cuenta, me avisó y aborté el script 🙂 .. otro motivo más para usar Firefox.

Organic

Organic es, como lo define su autor Synthetic resonance to warm up your soul.. Es un CD, cuyos temas fueron realizados con sintetizador por Jimmac, más conocido por sus habilidades gráficas haciendo íconos y pantallas de inicio de Gnome, Evolution y Gimp entre otros.

Vale decir que los temas están muy buenos, con sonidos muy claros y armónicos, nada de ruido del estilo The Mars Volta :-D, música muy cool para estudiar (de hecho los estuve escuchando mientras lo hacía :-)).

Les recomiendo bajar algunos temas al azar de la página y escuchar de que se trata.

Por cierto, Jimmac ha rediseñado su sitio web, lástima no tener el 10% de su talento para terminar el mío 😛

Mucho tiempo …

Hace más de una semana que no posteo nada, pues no tengo mucho para decir :-), salvo que Luca se aduerño del Planet por lo que tendrá que ponerme :-P.

Oregano

El progreso del PageManager va a ser lento, ya que no tengo mucho apuro. Estoy empezando a realizar los diagramas de clases, secuencia y algunos casos de uso del editor de Bibliotecas que quiero hacer como primer paso de la migración a Mono, pero antes de empezar a codear tengo que ver con que reemplazar Gnome.Canvas, ya que me niego a caer en la misma situación actual, por lo que probablemente termine haciendo algo con Gtk#+System.Drawing+Cairo#.

Por el lado de la rama estable no hay muchas noticias, hoy finalmente encontré la manera de hacer que los XML generados por Oregano no sean de una sola línea y están indentados «bonito», cambio que está en ambas ramas del repositorio.

gFilter

Los chicos de gFilter están avanzando según parece (no puedo dar fé porque no se que esperar del resultado que me da el programa :-)). Estan buscando gente que les de una mano con optimizaciones, aunque no se que tan grave será, con solo agregar -O2 a la línea de compilación bajo 1 (un) minuto el tiempo de cálculo :-). Mi problema es que no se «la fórmula mágica» que resuelven, y lo que le veo de malo es que sea recursiva, gran parte del tiempo tal vez se pueda mejorar haciendola iterativa, todo depende de que tan grande sea el árbol de recursión que se genera. Un lindo análisis para un sábado a la tarde.

Microsoft

Al fin, luego de muuuuchos años, parece que van a hacer una bien y finalmente vcc (el compilador de Visual Studio) va a ser ANSI C++ compatible (o «más compatible de lo que es ahora»). Claro, como no puede ser de otra manera, esto «romperá» cosas que hoy en día andan.

Mono

He encontrado este lindo de un buscador que hace una búsqueda en Google y muestra algunos resultados. Viene a compañado de una intrducción a lo que es la plataforma Mono y algunas cosas más sin importación.

Este es un ejemplo un poco más interesante : un buscador que utiliza un WebService de Google para realizar la búsqueda, en lugar de parsear HTML. Muy ilustrativo para iniciarse en los WebServices con .NET.

Nuevo estilo

Si no estan leyendo esto directamente desde el blog, sepan que he cambiado el aspecto del mismo. El cambio no es la gran cosa, y quedan detalles por pulir. La principal motivación fue que encontre como 10 blogs en un solo día con el theme por defecto de WordPress, y bueno, había que cambiar :-).

El mayor desafío fue lograr los marcos con esquinas redondeadas, sin utilizar tablas (Damián me lo debe estar agradeciendo :-P), solo utilizando CSS y DIVs, creo que ha quedado bastante bonito 🙂