Willyfrog

Cargando modulos dinámicamente en la botella

Estoy algo liado montando una api para un pequeño proyecto mio, buscando que sea lo más cercano a RESTFUL por motivos laborales y por aprender cosas nuevas (entremedias estoy probando Emacs, que me esta costando un rato el cambio desde Vim).

Como framework estoy usando bottle, ya que siempre estoy usando Flask y quería probar otro distinto a ver qué tal. Y más adelante intentaré montarlo de manera asíncrona, pero eso para más adelante.

Como digo, es una primera aproximación, imagino que el código final tendrá una pinta muy diferente, pero para alguien que quiera cargar dinámicamente los módulos y tratar de ejecutar las funciones es un buen punto de continue.

El arbol de navidad de QBert

En el weekly python newsletter, enlazaban al problema de sacar la suma máxima, dado un árbol y utilizando el movimiento del clásico videojuego qBert (no del todo cierto porque qBert sí podía subir, pero eso son tecnicismos). El árbol en concreto sería así:

chrismasTree =   [
                [75],
               [95,64],
             [17,47,82],
            [18,35,87,10],
 
continue.

Música en una línea de codigo, versión Python

El otro día vi en reddit algunos temas en los cuales se creaba música a partir de una línea de código (en realidad algo mas, pero la parte importante estaba solo en una) y como curiosidad personal, decidí hacer una versión serpentina de dicho programa, una vez conseguido (fácil, rápido y feo) quise poner un poco mas interés y utilizar funciones lambda y generadores. El resultado es el siguiente:

#redirigir el output a /dev/audio o instalar sox y redirigir a
# "play -u -b 8 -t raw -r 8000 -" sin las comillas

#modificar la parte interna de la funcion int() para variar la "melodia"
func = lambda t: 
continue.

De dict a sql where

he decidido mejorar un poco el codigo de una de las funciones heredadas de alguien que ni siquiera conozco (por suerte) y he decidido convertirlo de

buf.write(" WHERE 1=1 ")
for col in to.pk:
    buf.write( " AND " )
    buf.write( col )
    buf.write( " = %s" )
    par.append( getattr( obj, to.map[ col ] ) )

a esto otro

buf.write("WHERE %s" % " AND ".join(["%s = %s" % (col,getattr(obj,to.map[col])) for col in to.pk])