Willyfrog

Salpimentar al gusto la contraseña

Actualmente estoy trabajando en un prototipo de aplicación bastante sencillo, pero que requiere que aprenda bastantes cosas (y por lo tanto voy algo lento). Uno de los pequeños problemas con los que me enfrenté fue la creación de un sistema de usuarios y no quería dejar el password en abierto en la base de datos aun cuando solo fuera a utilizarlo yo.

Echando un ojo al módulo crypt de Python, requería un poco de sal, por lo que me vi de repente con que no quería meter la sal ni en un fichero de configuración ni obviamente en el código fuente. Por lo que finalmente decidí que la sal continue.

Peores momentos de programar

Ultimamente he sufrido las dos cosas que mas me molestan al programar (provocadas por mi, claro está)

System Message: WARNING/2 (<string>, line 5)

Bullet list ends without a blank line; unexpected unindent.

no deja claro o puede llevar a error y te tiras un par de días buscando un error en el sitio equivocado.

System Message: WARNING/2 (<string>, line 9)

Bullet list ends without a blank line; unexpected unindent.

entendiste mal

Estoy seguro de que hay más cosas que me molesten, pero esas dos continue.

Más recursos para leer de python

Esta mañana he encontrado un enlace recopilatorio de lecturas sobre python, cubriendo un buen montón de temas. Algunos de los mencionados ya los nombré hace poco.

Intentaré actualizar este post segun vaya leyendo algunos de esos artículos si merecen algún tipo de reseña especial.

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.

time, datetime, epoch y el lio de todos los tiempos

Estoy intentando hacer la transición del código de Python de una aplicación desde mx.DateTime a la librería estándar de Python datetime. Las razones son 2, por un lado quitarnos una dependencia que no hace falta realmente y por otra facilitar la transición a psycopg2 (estamos usando el 1 ahora mismo). La mayor parte de las cosas son fácilmente traducibles ya que en ocasiones usan la misma sintaxis o parecida.

Si bien nadie debería jugar demasiado con epoch dado que Python ofrece múltiples opciones para jugar con la fecha tanto en mx.DateTime como en datetime, parece que los tiempos de C no se olvidan y hay quien lo prefiere. Esto, 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])

Recursos de Python de dificultad intermedia

La sintaxis básica de Python es algo que se aprende en una tarde, menos incluso según la experiencia de cada uno. Lo que se tarda más es conocer todo eso que viene después, todo lo que hace el código de Python más legible, o sencillo. Por ello, desde hace algún tiempo intento reservar un poco de tiempo cada día a leer algo sobre como mejorar esa parte. Para recordármelo y para ayudar a aquel que busque información de un nivel intermedio he montado la siguiente lista de recursos de python que hay que leer en algún momento:

« Next