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:
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.
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.
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
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.
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.
Ultimamente he sufrido las dos cosas que mas me molestan al programar
(provocadas por mi, claro está)
- una es la búsqueda de un error en el sitio incorrecto. El log de error
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.
- en el proceso de aprendizaje de una librería, descubrir que algo lo
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.
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.
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.
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: