viernes, octubre 31, 2008

Igor, el puto amo

Cada vez que algún mamonazo me trata como su lacayo me acuerdo de Igor* y me dan ganas de vacilarle.

* concretamente el del Jovencito Frankenstein, este:


La entradilla del vídeo es un poco forzada, lo se, pero es que me dieron ganas de poner el clip.

Marty Feldman, el actor que interpreta a Igor, es un verdadero crack , sólo con leer el principio de su biografía:
Feldman was born in London's East End, the son of Jewish immigrants from Kiev...

O una cita como esta:
Hookers have to deliver on their promise... unlike politicians.

jueves, octubre 30, 2008

[Python 2.6] Especificar imports relativos desde un módulo principal

La opción de línea de comando -m permite ejecutar un módulo como si fuera un programa. Cuando se ejecuta así un módulo que está dentro de un paquete, las importaciones relativas no funcionaban correctamente. Las importaciones relativas permiten a un módulo importar otros módulos dentro de un paquete usando rutas relativas, lo que permite cambiar la ubicación de todo el paquete a otra rama del sistema de directorio sin problemas.

Este error se ha corregido en Python 2.6 añadiendo un atributo __package__ a los módulos. Si este atributo está definido en el módulo, las importaciones relativas se realizarán en relación a su valor, en vez de al valor del atributo __name__.

Los importadores definidos según la PEP 302 pueden definir el atributo __package__ como crean necesario. El módulo runpy, que implementa la opción -m ya lo hace, de modo que si tenías módulos que actuaban también como programas y hacían uso de la importación relativa, ahora funcionan. Este cambio no implica, por lo tanto, ningún problema para la migración de nuestro código.

Importaciones relativas

Para ampliar un poco el tema de las importaciones relativas, añado un extracto del PEP-328 (Imports: Multi-Line and Absolute/Relative).

Después de una interesante y amplia discusión, se ha aceptado que los imports relativos usarán puntos como prefijos para indicar los niveles de anidamiento. Un único punto indica que es un import relativo, y se refiere al nivel actual. Dos o más puntos indican padres y demás ascendientes del nivel actual, indicando cada nivel con un punto. Por ejemplo, si tuviéramos la siguiente estructura en nuestro paquete (con perdón):

package/
    __init__.py
    subpackage1/
        __init__.py
        moduleX.py
        moduleY.py
    subpackage2/
        __init__.py
        moduleZ.py
    moduleA.py

Y suponiendo que el fichero actual es moduleX.py o subpackage1/__init__.py, los siguientes ejemplos de importación relativa son válidos:

from .moduleY import spam
from .moduleY import spam as ham
from . import moduleY
from ..subpackage1 import moduleY
from ..subpackage2.moduleZ import eggs
from ..moduleA import foo
from ...package import bar
from ...sys import path

Obsérvese que, aunque el último ejemplo es válido, está claramente desaconsejado (Guido lo definió como "chaladura").

Las importaciones relativas siempre deben usar la forma from X import; la forma import X siempre es absoluta. También debe quedar claro que se puede seguir haciendo importaciones absolutas con la primera forma, solo hay que excluir los puntos prefijos.

Intro Madmen de los Simpsons

Seguir los items compartidos en GReader de los colegas es como abrir una caja llena de sorpresas, siempre hay referencias interesantes.



Hoy, mirando los de Yon Macklein, he visto un post del blog Series Adictos, en el que ponen unas capturas de pantalla de la parodia de la intro de Madmen por los Simpsons:




Esta es la intro original de Madmen:


Los dos vídeos duran 37 segundos y son milimétricos, prueba a darle play a los dos vídeos a la vez.


Por cierto, Madmen es una serie muy recomendable, si quieres saber más mira este post en Espoiler.

miércoles, octubre 29, 2008

[Python 2.6] La sentencia with

En la versión anterior, Python 2.5, se añadió la sentencia with como una capacidad opcional, por lo que debíamos activarla explícitamente con una directiva from __future__ import. En esta nueva versión viene activada por defecto. La única incompatibilidad con nuestro código sería que tuviéramos definida alguna variable/función/clase/loquesea con el nombre with (Mala idea, por cierto). Si fuera este el caso, renombrando la variable resolveríamos el problema. Cualquier IDE moderno nos permitirá cambiar el nombre de la variable, aunque aparezca en varios ficheros.

Por lo demás, la explicación de qué es y para qué sirve esta nueva sentencia es idéntica a la que se se dio en su día cuando se introdujo esta capacidad en Python 2.5. Podemos, por tanto, consultar esta detallada explicación de la sentencia with en Python.

martes, octubre 28, 2008

Mashup: SOAD + Chavo del 8

Siempre me han gustado los mashups, mezclar cosas y hacer que encajen, eso unido a un amplio y diverso espectro de gustos, hace que, por ejemplo, me guste bastante el grupo de tralla System of a Down (SOAD) e igualmente me mole El Chavo del 8.

Pero ojo, una cosa no tiene nada que ver con la otra, o si:



La cancion de Shop Suey de System of a Down parodiada por el chavo del ocho.

viernes, octubre 24, 2008

Road Blogs [recomendaciones]

Dado que esta noche es el Blogs & Gofio XVIII y en calidad de servicio público autorreferente, la redacción de EOE, dedica este post a los blogs molones:

Hay ocasiones en las que uno se encuentra con un blog, ya sea por recomendación o por puro azar. Y nada más terminar de leer el primer post, empiezas a recorrerlo hacia atrás hasta llegar al primero. Esto pasa muy pocas veces, pero casualmente hace unos días me ocurrió con dos estupendos road blogs.



El primero de ellos es Doraemon por el mundo, un spin-off de MMM&E. No es estrictamente un road blog, es más bien un tema tipo gnomo de amelie, pero protagonizado por la deidad azul. Donde podremos ver sonrisas doraemitas en todos los rincones del mundo y el extranjero: América, Asia, Cameos, Canarias, España, Europa, Eventos deportivos, Eventos históricos, eventos musicales, Fiestas, Las Aventuras de Doraemon, Medios de comunicación, Series TV, Varios y África.


Aquí, Doraemon bendiciendo los Sanfermines.

Por cierto, hay un grupo en flickr llamado Everybody loves Doraemon!, es cierto, everybody.




El segundo es ¡A todo caucho!, un roadtrip por la américa profunda, con un objetivo claro y definido: intentar conseguir 120 retos por la américa bastarda. La cosa es bien sencilla, tienen una lista de retos y una ruta actualizada y luego van posteando sus aventuras, los retos conseguidos, los semi-completados y los fallidos.


Aquí, echando unos centavos en la máquina de Zoltar

Dejen lo que estén haciendo ahora mismo y visiten estos blogs.

jueves, octubre 23, 2008

Meme: La canción de tu vida

Me pasa Jose Frechín, de Túnel Carpiano un meme de esos: La canción de tu vida. Asunto peliagudo, porque sólo se permite elegir una -a menos que hagas trampa, claro.

Esta es mi elección: Los hermanos Elwood y Jake Blues, también conocidos como The Blues Brothers, interpretan Everybody Needs Somebody to love. Los pelos como escarpias, oiga. Si no te entran ganas de marcha oyendo este tema, es que no tienes sangre en las venas (No es correcto inferir lo contrario, es decir, se puede ser robot, vampiro, zombie o muerto viviente y, aun así, gustarte la canción).

(Me ha costado un egg y parte del otro encontrar el vídeo original de la pelicula, todo el mundo se dedica a hacer montajes hoy en día)

Le paso el Meme a la muchachada de Malditas Mentiras (A todos, ojo), a El infierno es aquí y a Nexus 6.

miércoles, octubre 22, 2008

Aviso a navegantes: El XVIII Blogs&Gofio cambia de lugar

El elevado número de asistentes obliga a ir a un sitio más amplio, así que se ha cambiado el lugar de la convocatoria a la Trattoria Da Stefano, C/Marqués de Celada, 45 (San Cristobal de La Laguna). Pasen la voz. Más detalles en el blog convocante, La gaveta de la derecha - B&GXVIII - Acción evasiva.

martes, octubre 21, 2008

Dibuja automáticamente diagramas de secuencia

UML es el estándar de facto para que los informáticos hagamos nuestros dibujitos (Hay una explicación un poco más seria en la Wikipedia: Lenguaje Unificado de Modelado). Define varios diagramas, que se usan para representar o modelar diferentes aspectos o partes de un sistema informático.

Uno de ellos, el Diagrama de secuencia, se usa para modelar la interacción de distintas partes del sistema en el tiempo (Dicho así, asusta, pero en realidad es una chorrada). El caso es que navegando por Internet encontré un servicio que permite generar estos diagramas a partir de una descripción textual. El servicio es www.websequencediagrams.com.

Soy un firme convencido de que como mejor se entienden las cosas es con un ejemplo. El siguiente fragmento de texto:

Alice-->Bob: Una caña, por favor
note right of Bob: Bob sirve una caña fría
Bob->Alice: Cerveza
Alice-->Bob: Gracias, saleroso
Bob-->Alice: A Mandar
Alice->Alice: Glub, glub, glub

Se convierte es este lindo diagrama:

¡Deja ya de ensuciar servilletas en el bar con tus diagramas de secuencia! ¡Usa www.websequencediagrams.com! ¡O no, como prefieras!

lunes, octubre 20, 2008

Rorschach a lo Bruce Timm

Esther, de Atarecos, me sugirió seguir con Rorschach en mi serie de dibujos al estilo Bruce Timm, serie que seguira hasta que me aburra o Bruce Timm se entere, lo que pase antes. Aquí esta la criatura:

Rorschach a lo Bruce Timm

El siguiente creo que será el bueno del Doctor Manhattan, que será más fácil.

PD: Vespinoza, sigo trabajando en el Capitán Fosferno, en breve espero poder enseñar algo.

lunes, octubre 13, 2008

[Python 2.6] Nuevo formato para la documentacion

La documentación original de Python se preparó usando LaTeX, y llevaba así desde sus inicios, en 1989. Por entonces la documentación se preparaba para ser impresa, más que para ser vista en pantalla. Una de las principales virtudes de LaTeX es su capacidad para generar una salida impresa atractiva, a la vez que resultaba relativamente fácil de escribir, una vez que se aprendían las reglas elementales.

LaTeX es todavía una de las mejores opciones para preparar textos impresos, pero el entorno de herramientas de los desarrolladores ha cambiado. Ahora es más frecuente usar el navegador, en vez de imprimir toda la documentación de una vez. Es por ello que Html se ha convertido en el principal formato de salida.

Desgraciadamente, convertir LaTeX a Html ha demostrado ser un asunto farragoso, y Fred L. Drake Jr., que lleva bastante tiempo como editor de la documentación, perdía mucho tiempo en la conversión. De vez en cuando la gente sugería pasarse a SGML o XML, pero una conversión correcta implicaba también un trabajo considerable que, por una razón u otra, nunca se llevó a cabo.

Durante el ciclo de desarrollo de la versión 2.6, Georg Brandl trabajó arduamente en preparar un nuevo sistema de documentación, llamado sphinx, y disponible en http://sphinx.pocoo.org/ El punto fuerte de Sphinx es la generación de código HTML moderno y atractivo. La salida impresa sigue siendo posible, mediante conversión a LaTeX. El formato de entrada es reStructuredText, que es un formato de marcado, con posiblidad de definir nuevas extensiones y directivas, y ampliamente usado en la comunidad Python. Sphinx es un proyecto con existencia independiente, y ha sido usado para escribir la documentación de, por ahora, casi dos docenas de proyectos diferentes.

viernes, octubre 10, 2008

Esto si es publicidad personalizada y no la de Google

Hay que reconocerlo, Ono si que sabe hacer publicidad personalizada:

Al parecer, también tienen una cuña en la radio. Si la pillo la pondré aquí.

Por cortesía de nuestro colaborador invitado, Guanche.

Nota: No tenemos acciones en Ono. Si acaso, en ¡Oh, no!

jueves, octubre 09, 2008

XVIII Blogs y Gofio

Publicarlo en twitter Publicarlo en twitter.

La Gaveta de la Derecha ha convocado el XVIII Blogs and Gofio. Estas reuniones aperiódicas de blogs canarios llegan así a su mayoría de edad*. Los detalles, como siempre, en el blog convocante: La Gaveta de la derecha - Blogs&Gofio XVIII, pero les adelanto unas cosillas:
  • Habrá: Buen rollo, diversión, animada charla, gente interesante, comida y bebida, no necesariamente en ese orden.
  • Cuando: El 24 de Octubre, a las 21:00
  • Donde: Restaurante Rosso Divo, calle Bencomo, 18, esquina Tabares de CalaLa Trattoria Da Stefano, C/Marqués de Celada, 45, San Cristobal de La Laguna
  • Cómo (Me apunto): Ve al blog convocante y deja un comentario allí diciendo que vas.
  • A destacar: El Pedazo de cartel que se ha marcado el Rafa.
XVIII Blogs & gofio * Por si nos lee algún alto ejecutivo de AEG: Equis Eve Palito Palito Palito = 18 en números romanos.

The Rural Juror [30 Rock]

The rural juror: the true story of rory journer whose pure furor endures a terrible murder.


martes, octubre 07, 2008

[Python 2.6] Qué hay de nuevo en el Python 2.6

Voy a escribir una serie de pequeños artículos con las novedades más interesantes de la nueva versión del Python 2.6. Estas notas son una traducción más o menos exacta* del documento what's new in Python 2.6. Como ya hice en su día con las novedades de la versión 2.5, en el título de cada entrada añadiré el texto [Python 2.6], para que la gente que no tenga interés en estos temas le pueda dar el cartuchazo.

En primer lugar, lo más importante de esta revisión es que intenta ser una vía de migración hacia la versión 3.0 de Python (Python 3000 o 3k), sin romper la compatibilidad hacia atrás. La idea es que con esta versión podremos escribir código que será totalmente compatible tanto con la versión 2.6 como con la 3.0. Para ello, Python 2.6 incorporará las nuevas capacidades y sintaxis de la versión 3.0 de la siguiente manera:

  • Si es posible introducirlas sin romper la compatibilidad, se introducen directamente. La cláusula with o la forma de capturar multiples excepciones, por ejemplo.
  • Si no fuera posible, las nuevas capacidades y sintaxis podrán ser accedidas mediante los módulos __future__ o future_builtins. Por ejemplo, para usar la nueva función map, tal y como estará definida por defecto en 3.0, podemos usar la sentencia from future_builtins import map.
  • Hay una nueva opción de línea de comandos, -3, que informa mediante warnings de usos obsoletos que no serán permitidos en Python 3.0. Es conveniente ejecutar el código que tengamos escrito con esta opción para hacernos una idea de la cantidad de cambios que habrá que hacer. Se puede acceder a este valor desde Python mediante la variable booleana sys.py3kwarning, y para las extensiones escritas en C, mediante la variable Py_Py3kWarningFlag.

Hay algunos paquetes nuevos en la librería estándar, como multiprocessing y json, pero la mayoría de los cambios se refieren a las adaptaciones a Python 3.0. Una búsqueda rápida en los ficheros de cambios indican que en esta nueva versión se han corregido como mínimo 612 bugs, posiblemente bastantes más (Por si necesitas argumentos para convencer a tu jefe de cambiar de versión).


* Más o menos exacta. Es decir, que igual dejo cosas en en tintero como añado otras de mi cosecha. Para una explicación más detallada de este comportamiento, sírvanse consultar el muy recomendable blog de Ad Astra, y especialmente su post Mi edad cerebral.

lunes, octubre 06, 2008

El negocio de la gestión de los miedos

La gestión de los miedos como actividad empresarial siempre ha sido muy lucrativa. Las distintas iglesias del ayer, hoy y mañana han sabido explotar hasta límites insospechados uno de los miedos más grandes del ser humano. La muerte.

Pero como en cualquier otro sector, las cosas van evolucionando. El imprevisto aumento de la esperanza de vida en los países del primer mundo lleva aparejada la ausencia del miedo a la muerte durante la fase más productiva de la vida de los potenciales y temerosos embaucados.

Y a la sombra de esta nueva situación han surgido como champiñones nuevas vías en el modelo de negocio denominado "vender hielo a esquimales", que basados en la gestión de otros miedos son igualmente lucrativos.


La respuesta exagerada frente a algunos síntomas de enfermedades, o simplemente por la ignorancia emocional frente a las mismas, llevará en muy poco tiempo a algunas empresas avispadas y desaprensivas a comercializar productos para calmar innecesariamente cualquier tipo de ansiedad colateral.

Por ejemplo, un matrimonio feliz sentirá mucha preocupación porque el primer diente de su primer hijo tardará más tiempo en salir que el de sus compañeros de guardería A pesar de que el pediatra les diga que es normal y que no pasa nada. Acabarán comprando dentiout una crema bucal que facilite el paso del pequeño al mundo mordiente.

Con lo que se conseguirá que los padres tranquilicen sus nervios y el chiquillo muerda, cuando le toque, con total regocijo.

En el mundo de la estética se da esta situación de forma socialmente aceptada a pesar de tratarse de flagrantes timos. La elección de una crema facial, antiarrugas, con frutas del bosque, el pehache adecuado, bífidus activo, taninos y briznas de barro salteadas con su justo tiempo de cocción, se puede complicar hasta niveles insospechados.

El proceso de descubrir los efectos que conllevan la combinación de dos o más de estos tratamientos puede ser más complicado que cualquier investigación científica, siempre por el tortuoso camino de prueba y ensayo. Pasando por caja, claro. Que es, al fin y al cabo, de lo que se trata.

Así que amigos empresarios, exploremos este campo, sólo hay que encontrar el nicho de miedo necesario y explotarlo, los humanos estamos programados genéticamente para pagar lo que haga falta y de forma regular por acabar, mitigar, minimizar o enmascarar nuestros miedos.

viernes, octubre 03, 2008

Control remoto around the world

Sólo si eres un friky pirado puedes experimentar el gustazo de conseguir una proeza telecomunicativa y colaborativa como ésta, a pesar de poder hacerlo simplemente levantándote. En la genial serie The Big Bang Theory lo tienen muy claro:



Si no has visto la serie, acude a tu camello mulo más cercano inmediatamente. También lo puedes ver en versión original usamericana en la web de la CBS The Big Bang Theory.

jueves, octubre 02, 2008

Liberado Python 2.6

Ayer, 1 de octubre de 2008, se liberó la nueva versión de Python, la 2.6 (La próxima versión que se libere será Python 3000). Según la nota:
There are a huge number of new features, modules, improvements and bug fixes.
Amenazo desde ya con empezar a traducir poco a poco la lista de cambios en Python 2.6 (http://docs.python.org/whatsnew/2.6.html) e ir publicándolos aquí, como ya hiciera en su día con la 2.5. Avisados quedan.