Willyfrog

Movimiento estático

Finalmente he movido el blog de Wordpress a algo estático, como llevaba queriendo hacer desde hace tiempo. Wordpress no tiene nada malo, me sigue pareciendo una plataforma de blog muy buena, especialmente para gente que no quiera complicarse la vida.

Pero (y si no hubiera un pero, seria que me gusta mover por mover) requiere ser activo, cosa que no me pasa con el blog, que durante un tiempo escribo y durante un tiempo dejo de escribir, alternandose ambos a lo largo del tiempo. Y wordpress, siendo dinamico, con php y mysql, require de mimo, cuidado y mantenimiento para evitar que continue.

Cargando modulos dinámicamente en la botella

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.

Des/activando virtualenv automaticamente

Algo que no se me habia ocurrido hasta que mi compañero me lo comentó es la activación automática del entorno virtualenv nada más entrar en el propio directorio, de esta manera ahorramos tiempo y problemas de no estar en el virtualenv apropiado.

Buscando un poco por la red, encontré este gist donde hacía parte de lo que queria, ya que no terminaba el virtualenv al abandonar el directorio, por lo que podria dar problemas al seguir en la misma linea de comandos y ejecutar otras cosas. De ahí que modificara el script para que al abandonar el directorio desactivara el entorno.

Para poder utilizarlo se puede poner el entorno continue.

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.

Pyweek 2012

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

Nuevo mini-proyecto: tuitorrent

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.

Snipet: Generador de etiquetas

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.

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.

Calculo de numeros primos

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.

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.
Previous »