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])

Psst! es un secreto

Una de las mayores dificultades que me estoy encontrando en mi nuevo trabajo, es la comunicación. Además, aunque el titulo del post habla de una de ellas, en realidad son varias si bien el título es la que me ha hecho empezar a escribir y planteármelo.

Por un lado, estoy notando una diferencia enorme según el receptor de la información y es que según con quien hable el jefe, se da una información, otra o casi ninguna. Quizás esto sea en parte culpa mía, no muy dado a llamar a la gente o a realizar informes periódicos sobre la situación, aunque sea de manera oral.

La que mas me continue.

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:

Kinectando

Una de las cosas con las que me propongo trastear este año es con los drivers libres OpenNi de Kinect. Por ello he seguido las instrucciones indicadas en algunos posts para instalarlo en el mac pero no dieron resultado.

Por suerte no me rendí y seguí buscando y encontré una página con paquetes ya preparados que ha instalado todo lo necesario (que es exactamente lo mismo a lo que yo instalé) y funcionó a la primera:

A partir de aquí, será una cuestión de ir investigando los drivers.

Mis unicas dudas es si estaba haciendo alguna tontería mal, o que la versión que usaba estuviera mal. Por desgracia la continue.

Aplicando cambios

Llevo meses o semanas pensando que tengo que hacer cambios en lo que hago y en como lo hago, retomar viejos hábitos y no tan habitos, en general sentir que lo que hago acaba en algún sitio y aunque este quizás no sea el mejor sitio para empezar, es el más cómodo.

Como siempre digo, un blog, aunque público, no se escribe para los demás, sino para uno mismo. Quiero evitar correr el riesgo que parece que he sufrido en otras ocasiones de intentar hacer lo que los demas quieren y no lo que yo quiero, por lo que como tantas otras veces he dicho (creo que es continue.

« Next