Willyfrog

Receta para introspeccion en python

Al final no me ha servido ya que hay varias propiedades que no son legibles en el codigo legacy que estoy mirando, pero por si a alguien le sirviera copio una receta vista en SO para ver los contenidos de un objeto:

Original:diveintopython
Author:Mark Pilgrim (mark@diveintopython.org)
def info(object, spacing=10, collapse=1):
   """
   Print methods and doc strings.
   Takes module, class, list, dictionary, or string.
   """

    methodList = [e for e in dir(object) if callable(getattr(object, e))]
    processFunc = collapse and (lambda s: " ".join(s.split())) or (lambdas: s)
    print "\\n".join(["%s %s" %
 
continue.

Acortador de urls terminado

He terminado (alcanzado el estado de 1.0) mi pequeño proyecto de acortador de urls, no pretende ser útil en el mundo real, pero si quizás sirva como punto de partida para otros en caso de querer ver un ejemplo de flask+redis+sqlalchemy.

La motivación principal, es una entrega para la facultad, pero he aprovechado para aprender un par de cosas y puede que acabe usándola para dar una charla introductoria en codemotion.

Está bajo licencia BSD (3 clausulas), por lo que podeis hacer casi cualquier cosa con ella ;)

Una última cosa, está pensada para trabajar con postgresql, pero cambiando la configuración de la bb.dd. debería poder adaptarse a otras bases de continue.

Recomendacion de libro para aprender haskell

Si estás necesitado de aprender Haskell a marchas forzadas este fin de semana me ayudó mucho el libro: learn you a haskell for greater good. Y si lo prefieres en castellano está traducido en Aprende Haskell (si pongo los dos es porque al parecer la traducción es muy reciente y esta en proceso de revisión). Bastante conciso y la mayoría de los conceptos (si no eres nuevo completamente en programación funcional) se cogen rápido con la excepción quizás de los functores y las mónadas.

Realmente útil para iniciarse en ese complejo mundo que es Haskell. Seguramente acabe cogiendome la versión en papel de amazon

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.

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.

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: