Patrones: Observer (Java/Python)

A menudo necesitamos realizar operaciones cuando ocurren eventos. En este tipo de situaciones existen dos soluciones: inyectar el objeto que tiene que recibir los eventos en el que los provoca o implementar el patrón Observer (“Observador”, pero es raro que alguien traduzca los nombres de los patrones).

También es posible que un objeto genere eventos pero sean varios los consumidores de éstos. En swing, gtk,… ocurre constantemente, utilizando los conocidos listeners. Pero… ¿Qué es un listener realmente? No es más que una implementación del patrón Observer.

Veremos cómo utilizar este utilísimo patrón en Java y en Python.

Python Tornado: Web Testing

Una vez tenemos los conocimientos básicos de Tornado, lo lógico es seguir añadiendo características del framework.

En este caso voy a añadir una de las características más importantes: el entorno de pruebas. En mi opinión, es siempre lo primero que se debería enseñar, mucho antes de otras cosas como el sistema de location (idiomas, etc.), acceso a servicios de terceros (google, facebook, twitter, oauth, …) y otras cosas molonas.

Partiremos de los conocimientos anteriores y pondremos un ejemplo sencillo de uso de esta herramienta.

Se tratará de pruebas de integración. No se utilizará un Browser, y podremos mockear lo que nos haga falta (aunque en este artículo no se utilizarán mocks).

Python Tornado

En esta ocasión trataré de ver cómo utilizar un framework de red, como es el caso de python-tornado.

Crearemos un site pequeño y básico, lo justo como para tener una idea de sus posibilidades.

En cuanto al uso, yo últimamente lo utilizo para todo: desde pequeñas aplicaciones web hasta herramientas de soporte en el escritorio, donde necesito un servidor.

Selenium y QA Automation: PageObjects

En los artículos anteriores, “Selenium y QA Automation” y “Selenium y QA Automation: Tests” hemos visto cómo utilizar Selenium/Webdriver.

En este caso vamos a ver cómo organizar estos tests. Realmente no es necesario el conocimiento previo de Selenium, ya que puede utilizarse algún otro framework. Sin embargo, sí que resulta interesante ya que lo usaremos para los ejemplos.

Aunque los PageObjects se idearon para pruebas en la Web (de hecho, creo que son una idea de Selenium), este artículo está escrito pensando que los PageObjects pueden usarse tanto en aplicaciones de escritorio como web, por lo que veréis “pantalla” o “página” indistintamente.

Emacs y ficheros basura

Este artículo ya lo escribí en Crysol, pero lo replico aquí porque he estado a punto de volver a currármelo porque no lo encontraba XD

Estaba harto de encontrarme ficheros ~, ## y .semantic por todas partes, y puede llegar a ser muy aburrido borrarlos periódicamente. ¡Tiene que haber alguna manera de optimizar esto! Y, efectivamente…