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.
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.
Despues del "subidon" con ludum dare, me atreví a meterme en pyweek.
No ha sido tan excitante en algunos aspectos, ya que tenia mucho más
tiempo y eso provocó el "luego lo hago". La mayor parte del tiempo se me
fue en pequeños errores (alguno de los cuales aun siguen existiendo) en
el tema de colisiones. En general los consejos y criticas son los que yo
mismo pensaba cuando subí la versión final.
Quizás me planteo para más adelante recuperar la idea y hacerlo de nuevo
con otro engine... pero eso es hablar del futuro.
Mi participación en el pyweek
Este fin de semana me he dado un homenaje tremendamente geek: he
participado en un gamejam (explicacion en castellano) de 48 horas, en
concreto el ludum dare en su 23ª edición. Las reglas son sencillas:
dado un tema tienes 48 horas para hacer un juego completo tú solo
(incluye código, animaciones, sonido, etc.)
No he podido entregar al final del concurso, aunque ciertamente no
esperaba hacerlo. Este fin de semana he tenido varios compromisos que no
me iban a permitir sacar el máximo de horas para el evento, pero estoy
contento de tener algo jugable
Una de las cosas que me ha permitido el ir tan relajado es el …continue.
En estos días, he intentado sacar algo de tiempo para un mini-proyecto
que tenía en mente desde hace mucho y que recordé hace poco gracias a un
artículo: "Como crear un bot de Twitter en Python" (titulo traducido
libremente).
La idea es la de un bot de twitter al que mandarle torrents y que este
se encargue de gestionarlos. Por ahora solo descarga el torrent y lo
coloca en una carpeta, la cual está vigilada por utorrent que al
detectar el nuevo archivo lo pone a la cola. Como efecto extra, también
descarga archivos que no sean torrent, pero en este caso no se añaden a
la lista y …continue.
Para poder generar automaticamente etiquetas para nodos (aunque valdria
para cualquier otra cosa) he hecho un generador automatico sencillo que
va dando strings de texto:
def generador_etiquetas(self):
'''genera etiquetas,primero minusculas, luego mayusculas y finalmente
digitos'''
for a in string.lowercase:
yield a
for A in string.uppercase: #cuando termina con las minusculas, pasa a las
#
…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 un problema que resolvi recientemente en el proyecto euler, descubrí
un algoritmo sencillo para calcular numeros primos: la criba de
eratóstenes El cual inicialmente traduje a python como:
1 def eratostenes(m):
2 primos = set(range(2,m+1))
3 for i in xrange(2,int(sqrt(m))+1):
4 if i in primos:
5 for j in xrange(2,m/i+1):
6 primos.discard(i*j)
7
8 return primos
No comento el código por …continue.
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.
Previous »