Metaprogramación en Python

Python está bárbaro, es sencillo y todo… siempre leí que era muy fácil hacer metaprogramming con él, pero el problema es que uno haga metaprogramming de una forma fácil en su mente. :-P Veamos, la función getattr(), disponible en el módulo __builtins__ (o sea, disponible en todo momento), me permite cambiar esto: def get_transportistas_custodia(id_custodia): """ Devuelvo todos los transportistas que están relacionados con una custodia """ c = Custodia.objects.get(id=1) # Necesito el conjunto de transportistas de la custodia return c.transportistacustodia_set.all() def get_asegurados_custodia(id_custodia): """ Devuelvo todos los asegurados que están relacionados con una custodia """ ... (lo malo es que tengo que hacer una función por cada tipo de empresa relacionada con custodia). ...

August 4, 2007 · 3 min · mfernandez

Un "Yo" dibujado por Matt Groening

Después de haber disfrutado anoche de la película de Los Simpsons (si te gustan, no te la pierdas, es buenísima!), me tomé un ratito (un domingo aburrido…) en entrar a la página de los simpsons… está muy buena (aunque el uso de flash es obligatorio), y aunque no la recorrí toda, pude crear un avatar con la paleta de colores, barbas, cabello, ojos, nariz, etc. de los Simpsons. Y tratando de hacerme a mí mismo, me salió esto: ...

July 29, 2007 · 1 min · mfernandez

Muerte al top. Usá htop!

A éste post, sólo le agrego la captura obligada: Y cómo instalarlo: sudo apt-get install htop Htop es un reemplazo más amigable del viejo y querido top de consola, permitiéndote matar y hacer scroll entre los procesos (era hora!). Saludos Marcelo

July 15, 2007 · 1 min · mfernandez

MPX: Multi-Point X Server

Buenas… Hace unos meses había salido la noticia de la presentación de Microsoft Surface, que aunque no va a estar disponible hasta fines de 2007, sus videos permiten apreciar una nueva manera de interactuar con una computadora, ya que el Touch Screen horizontal posee un sensor Multi-touch. Una combinación de hardware y software donde una o varias personas interactuaban en una “mesa digital”, al mismo tiempo… realmente es muy interesante! (más alla de que Microsoft lo sepa vender bien). ...

July 15, 2007 · 3 min · mfernandez

Samsung Syncmaster 206/226 NW en Ubuntu

Tengo chiche nuevo! Después de algún tiempo de sacrificado laburo, me dí uno de los mayores gustos “informáticos” hasta ahora: comprarme un monitor LCD de 22" wide… más precisamente el Samsung Syncmaster 226 NW. :-D De más está decir que es fantabuloso cómo se ve cualquier cosa que uno quiera ver. No hay “efecto arrastre” al hacer scroll, excelente contraste, excelente resolución y nitidez… Lo único “malo” técnicamente es que no viene con conexión DVI. ...

July 14, 2007 · 3 min · mfernandez

Chusmeando SQLObject - Parte II

Continuando el post de ayer, otra desventaja del sistema de persistencia de Django es que no soporta atributos en relaciones “Muchos a Muchos”. Un caso podría ser Usuario <–> Rol, donde un Usuario puede tener varios Roles y a su vez un Rol ser referenciado por varios usuarios; además, necesito almacenar si alguna combinación usuario<->rol está activa o no. El atributo booleano “activo” sería una propiedad por cada Usuario<->Rol en particular, y esto es lo que no soporta Django con su ManyToManyField. ...

July 11, 2007 · 2 min · mfernandez

Chusmeando SQLObject - Parte I

Aprovechando que el ORM en Python es noticia (ya que Canonical liberó Storm)… comento un par de desventajas del framework para acceder a BDs desde Django y cómo las soluciona SQLObject (específicamente no lo usé, pero estuve leyendo algo…) Al momento de laburar con Django y la forma en que maneja la BD (definición de los modelos) nos encontramos dos limitaciones graves: No soporte de herencia entre tablas. Es decir, si yo desde mi “mundo real” tengo que representar: class Transporte(): modelo = '' largo = '' ancho = '' patente = '' class Auto(Vehiculo): tiene_baul = '' class Camion(Vehiculo): tiene_semi = '' No puedo representar esto en Django, ya que no soporta herencia. Por lo tanto, se puede “simular” la herencia usando relaciones “uno a uno” o copiando y pegando. Con la primera opción caímos en varios problemas, así que tuvimos que “copiar y pegar” las propiedades que deberían haber sido heredadas. ...

July 10, 2007 · 3 min · mfernandez

Esto es groso... Banshee Media Server

Después de entrar en esta página, sobre un servidor web de música, dije “es medio pobre, le falta algo de diseño…pero… funcionará?” Andá bárbaro!!! Pruébenlo. Me imagino que no es el primero en existir, pero sinceramente me sorprendió el equipo de Banshee (un reproductor de música desarrollado en Mono). Claro que está en desarrollo, pero parece que pronto reemplazo al Amarok (esperemos, pero si no tiene Crossfading no me cambio nada eh!). En este post hay más detalles al respecto (el sonido viene por un plugin Flash y es controlado con Javascript). ...

July 1, 2007 · 1 min · mfernandez

Sufrís "versionitis"?

Una de las cosas que hacen estable y previsible a una distribución como Ubuntu es que una vez que fue lanzada una versión definitiva, las actualizaciones de los programas que contiene sólo se limitan a correcciones de seguridad o errores críticos. Esto está bueno, si uno quiere que todo “sólo funcione” una vez se configuró y la PC se comenzó a usar diariamente; lo mismo pasa si se usa la PC para laburar y necesita que todo ande de forma ordenada y sin sobresaltos. ...

July 1, 2007 · 3 min · mfernandez

Tipeando Caracteres Unicode en Gnome (II)

Tratando de probar el “truquito” que postié hace bastante pero ahora en Ubuntu Feisty, veo que si le doy al Ctrl+Alt+40 no me genera la @…. Buscando, buscando por qué, encontré esto: http://live.gnome.org/TwoPointFifteen/ReleaseNotes que dice: “Use CTRL-SHIFT-u instead of CTRL_SHIFT- to generate unicode keys – This is a change in behaviour so important to note ( OlavVitters)” O sea, que a partir de Gnome 2.16 no es más Ctrl+Shift+Código_Unicode, sino que es Ctrl+Shift+u+Código_Unicode. ...

June 25, 2007 · 1 min · mfernandez