Automágica: durante 2017 estoy trabajando bastante en Automágica, mi software para editar libros: Más información - Posts relacionados


Decorando decoradores

Una de las preguntas que aveces me hacen luego de hablar sobre Taint Mode es: una vez que la aplicación pasa de desarrollo a producción, ¿hay alguna forma de deshabilitar los decoradores?

La biblioteca usa decoradores para marcar entradas no confiables, sumideros sensibles y funciones limpiadoras con la idea de encontrar posibles vulnerabilidades en tiempo de desarrollo. Si en producción no los requerimos más, esos decoradores producen overhead.

Entonces... qué se puede hacer? Editar el código comentando los decoradores no escala[0]. Una alternativa es utilizar un nuevo decorador: llamemoslo @apply_decorator y vamos a utilizarlo para controlar mediante alguna condición (por ejemplo una variable en el archivo de configuración) si se debe usar o no el decorador.

COND = True

def apply_decorator(d):

if COND:

    return d

else:

    return lambda f: f

Si la condición es verdadera, se retorna el decorador original, sino una función fake (implementada utilizando lambda) que recibe una función y retorna la misma función: un decorador que no hace nada.

Un ejemplo de su uso en el REPL de Python:


>>> @apply_decorator

... def mydeco(f):

...     def inner(*a, **kw):

...             print "decorado"

...             return f(*a, **kw)

...     return inner

... 

>>> mydeco



>>> COND = False

>>> @apply_decorator

... def mydeco(f):

...     def inner(*a, **kw):

...             print "decorado"

...             return f(*a, **kw)

...     return inner

... 

>>> mydeco

 at 0xb7753dbc>

Podemos aplicarlo directamente a la definición de nuestros decoradores


@apply_decorator

def mi_decorador(f):

    ...

o al principio de nuestro programa.


mi_decorador = apply_decorator(mi_decorador)

[0] nessita trademark.



Si te gusta leer y vivís en Santa Fe, tenés que ser socio de la Biblioteca Pedagógica

La Biblioteca Pedagógica y Popular "Domingo F. Sarmiento" es genial. Por solo $35 pesos al año tenés acceso a un montón de libros, incluyendo gran variedad de novelas además de los libros de estudio.

Para hacerte socio solo necesitás llegarte hasta su sede en San Martín 2839 y presentar:

    <li>Foto carné (una)</li>
    
    <li>D.N.I.</li>
    
    <li>Verificación del domicilio (Factura de Luz, Impuesto, TV, etc.)</li>
    



    Los hombres que no amaban a las mujeres (una novela sueca)

    Durante los dos últimos fines de semana me moví bastante en colectivo a ciudades distantes y aproveché para terminar esta novela que había empezado un tiempo atrás.

    El primer tomo de la trilogía Millenium cuenta la historia de un periodista que es contratado para descubrir un misterio que lleva 40 años enterrado en el seno de una vieja familia industrial de Suecia. Para ayudarlo, entra en escena Wasp, una chica de 24 años con problemas sociales y habilidades super hacker.

    No cuento más, la novela está muy buena, así que si tienen oportunidad de leerla, se las recomiendo.

    Esta tarde aproveché y miré la película basada en el libro: una porquería. No respeta la historia para nada; en el afán de acortar se simplifica la trama. No solo se omiten partes, sino que se cambian totalmente roles y situaciones.



    Goodreads review: Los hombres que no amaban a las mujeres (Millennium, #1) (Stieg Larsson)

    https://viejoblog.juanjoconti.com.ar/2010/11...

    Durante los dos últimos fines de semana me moví bastante en colectivo a ciudades distantes y aproveché para terminar esta novela que había empezado un tiempo atrás.

    El primer tomo de la trilogía Millenium cuenta la historia de un periodista que es contratado para descubrir un misterio que lleva 40 años enterrado en el seno de una vieja familia industrial de Suecia. Para ayudarlo, entra en escena Wasp, una chica de 24 años con problemas sociales y habilidades super hacker.

    No cuento más, la novela está muy buena, así que si tienen oportunidad de leerla, se las recomiendo.

    Rating: 4/5

    Original: https://www.goodreads.com/review/show/817592626

    Charla: Desarrollando aplicaciones de red con Twisted

    Hoy di en Junín una charla introductoria Twisted.

    Cuando los organizadores me contactaron hace un para de meses para invitarme a venir, me preguntaron sobre qué podía hablar. Mi primera idea era una charla titulada algo así como Python para diversión, trabajo y estudio. Mandé un guión con los temas que incluiría, en en el track trabajo mensioné Twisted, el framework que venía usando hacía un tiempo ya. La respuesta que recibí fue.

    "Dale, date una charla de Twisted"

    :)

    Si bien venía usándolo hacía casi dos años, mi forma de aprenderlo no fue la más pedagógica, sino que fue la forma dura. Empecé a desarrollar y fui conociendo lo puntudo de sus aristas a medida que iba necesitando agregar nuevas funcionalidades.

    Preparar la charla mi vino muy bien para organizar lo que sabía y aprender algunas que había venido evitando. Hoy di la charla en Junín y creo que salió bastante bien.

    Introducción a Twisted, un framework escrito en Python que permite

    crear aplicaciones de red (clientes y servidores) asincrónicas.

    Veremos sus conceptos principales y ejemplos que permitirán al

    auditorio volver a su casa con las herramientas básicas para empezar a programar utilizándolo.

    Dejo el material de la charla:

    Slides

    Ejemplos

    Y una propaganda que fue mi última slide. PyAr, el grupo de usuarios de Python de Argentina está dando charlas abiertas (de 2hs c/u) en La Tribu todos los sábados. El próximo sábado tenemos justamenet una clase de Twisted!

    http://python.org.ar/pyar/CharlasAbiertas2010#Twisted

    Sábado 13 de Noviembre - Charlas Abiertas de Python en La Tribu (Lambaré 873, Capital Federal)

    Twisted

    Vamos a ver porque el modelo de twisted es necesario, como se programa en modo asyncronico usando deferreds y conocer el api de red de twisted para hacer servicios.

    Disertante: Lucio Torre

    13 a 15 horas