El otro día me vi leyendo artículos sobre arquitecturas basadas en servicios web, especialmente centrados en patrones REST y codificados en JSON. No es la primera vez que hago algo con frameworks no específicos, pero tras buscar un poco por internet, descubrí un framework específico para servicios REST llamado falcon.
Mucha gente no sabe de lo que hablamos cuando nos referimos a decoradores en contexto de programación python. No es un concepto demasiado complejo, pero nos puede servir para simplificar bastante nuestro código. Sin embargo, hay que admitir que es un concepto difícil si intentamos estudiarlo sin ninguna ayuda externa.
Ya sabéis que me gusta mucho el lenguaje python. Muchos de mis ejemplos y algunas aplicaciones simples no merecen el uso de un framework tan grande como pueda ser django. Para estos casos me encantan los microframeworks, y aunque hay varias alternativas disponibles, me gusta especialmente un microframework llamado bottle.
El otro día estaba haciendo un script de python que debía ejecutarse en un contenedor docker. A pesar de la cantidad de verbose que le puse, no era capaz de ver ningún texto cuando miraba los logs. Tras mucha búsqueda, finalmente encontré el culpable en la variable de entorno PYTHONUNBUFFERED.
El otro día tuvimos una caída del centro de datos de desarrollo. Inmediatamente después vimos que teníamos afectación en el entorno de producción, ya que lanzaba peticiones al DNS de desarrollo. Sin saber claramente porque pasaba, hice un servidor DNS en python, para ver que tipos de peticiones se lanzaban.
El otro día cayó en mis manos un escaneo de la plataforma para uno de los servicios que gestiono. No voy a dar detalles al respecto en virtud del acuerdo de confidencialidad que mantengo con ellos, pero consideré interesante una de las herramientas que usaron para testear el dominio SSL.
Es muy útil lanzar comandos SSH desde un script de bash. Sin embargo, los scripts en bash se vuelve ilegibles rápidamente, y no nos ofrece el poderío de la librería python. No es de extrañar que herramientas como ansible o fabric estén escritas en python, usando una librería llamada paramiko.
El otro día me encontraba en mi trabajo con otra petición muy especial: se necesitaba un check para Nagios que contara las apariciones de cierto tipo de errores en un fichero de log. Ese check debía saltar en función de cuán alejado estaba el valor de las últimas 100 muestras.
Cuando montamos un contenedor Docker para servir una aplicación cualquiera, solemos poner un montón de dependencias necesarias solamente para compilar el paquete o para empaquetar sus librerías. Esto supone un gasto innecesario en espacio y en tiempo de ejecución; usando contenedores desechables podemos agilizar este proceso de forma altamente considerable.
Cuando trabajamos con python, muchas veces necesitamos instalar librerías con pip o easy_install. Dependiendo de la naturaleza de nuestros proyectos, las librerías suelen variar, pero siempre solemos utilizar las mismas. En estos casos puede ser útil tenerlos cerca, cacheados en un servidor en nuestra red local, para su rápido acceso.