jueves, 16 de diciembre de 2010

Video: Windmill trae una alternativa al testing web

Windmill

La mayoría del testing automatizado sobre aplicaciones web se hace hoy día utilizando Selenium, que se ganó su predominancia por haber sido el primer framework completo para este objetivo.

Sin embargo, quienes lo utilizan bastante empiezan a notar algunos problemas estructurales que no le restan valor, pero complican el pasar de cierto nivel de aseguramiento. Como siempre, una buena respuesta a lo límites de una herramienta suele ser utilizar otras complementarias, sacando provecho de la diversidad.

Windmill es otro framework open source,  para efectuar este tipo de pruebas que tiene algunas características prometedoras y está siendo cada vez más apreciado en la comunidad. El producto corre en Python pero sirve para probar cualquier tipo de interfaz web, soportando múltiples browsers (incluso, con algunos cuidados, el problemático IE6).

Algunas de sus características principales:

  • Múltiples browsers
  • Grabación, Edición y Ejecución de pruebas
  • Shell interactivo, basado en Python, que permite scripts para extender los casos
  • API de Proxy que permite interceptar y modificar el contexto de ejecución para contemplar situaciones posibles en distintos browsers y escenarios cliente
  • Las pruebas pueden escribirse también en Javascript, incluyendo las funciones de JSUnit
  • Controller API que permite ejecutar programáticamente cualquier tipo de acción interactiva como cliquear, escribir, esperar, arrastrar y soltar, hacer clic derecho, etc.

Pero como nada es mejor que ver algo en acción, aquí comparto un video demostrando rápidamente el framework en acción:

miércoles, 15 de diciembre de 2010

Cartilla de ayuda para vi/vim

Vim

vi es una herramienta clásica del mundo Unix que mucha gente encuentra arcaica y obscura, mientras otros son fanáticos de su simpleza y flexibilidad.

Se trata de un editor de textos escrito por Bill Joy en el 76, años antes de la fundación de Sun, famoso por sus modos de operación (insert o normal) y su capacidad para interactuar con el sistema operativo subyacente.

Uno de sus derivados más populares es Vim, creado originalmente en 1991 para las computadoras Atari Amiga y portado con el tiempo a prácticamente todas las plataformas modernas, aunque su mayor popularidad sigue estando en la comunidad Linux/Unix.

La particularidad de ambos editores es que no utilizan menúes sino comandos de texto (estilo línea de comando) o teclas especiales. Es esta característica la que fanatiza a muchos usuarios de Vim: no hace falta tocar el mouse para usarlo.

El equipo de ViEmu, un plugin para Visual Studio, Word, Outlook y SQL Server Studio que agrega a estos entornos las capacidades de comandos, macros y secuencias de teclado tradicionales de Vi, ha publicado una cartilla visual (cheat sheet) que puede ayudarnos a aprender vi/vim o servirnos de referencia para los comandos menos usados. La reproduzco vinculada a la página original donde también hayuna serie cartillas en forma de lecciones para aprender el uso en orden.

Vim Cheat Sheet

 

martes, 14 de diciembre de 2010

13 cosas que todo Programador debería saber

Portada del libro

A principio de este año O'Reilly publicó este libro que compila 97 cosas que todos en esta profesión deberíamos saber, expresadas por una serie de profesionales de diferentes orígenes, algunos muy famosos, otros no tanto.

Lo que no me había enterado es que el libro completo surgió de un proyecto colaborativo y abierto, y que todo el contenido está disponible en línea en forma gratuita, además de muchos otros consejos que quedaron fuera del libro, pero pueden ser leído y evaluados.

En la Wiki pública del proyecto puede accederse todo este contenido, proponer colaboraciones y muchos más.

Aunque el contenido principal está en inglés, creo que es un material interesante para revisar.

Una de las preguntas más frecuentes alrededor del proyecto es ¿por qué 97? La respuesta es que apuntaban a alrededor de 100 consejos, pero no querían caer en los obvios 99 o 101, por lo que decidieron tomar el número primo más cercano: 97. Toda una muestra del espíritu nerd detrás del proyecto.

Siguiendo ese tono, traduzco los primeros 13 puntos, con sus respectivos links a la wiki (cuyos textos siguen en inglés, lamentablemente; si alguien conoce alguna iniciativa para traducir el contenido, por favor, avísenme).

  1. Actúa con Prudencia por Seb Rose

  2. Aplica Principios de Programación Funcional por Edward Garson

  3. Pregúntate: "¿que haría el usuario?" (tu no eres el usuario) por Giles Colborne

  4. Automatiza tus estándares de código por Filip van Laenen

  5. La belleza está en la simplicidad por Jørn Ølmheim

  6. Antes de refactorizar por Rajith Attapattu

  7. Cuidado al compartir por Udi Dahan

  8. La regla de los Niños Exploradores por Uncle Bob

  9. Verifica tu código antes de buscar otro a quien culpar por Allan Kelly

  10. Elige tus herramientas con cautela por Giovanni Asproni

  11. Programa en el lenguaje del dominio por Dan North

  12. Codificar es Diseñar por Ryan Brush

  13. El formato del código importa por Steve Freeman

lunes, 13 de diciembre de 2010

Biblioteca open source de algoritmos y estructuras de datos para .NET

Frans Bouma

Frans Bouma, reconocido en la comunidad por su O/RM LLBLGen Pro, ha publicado recientemente en CodePlex una biblioteca open source para .NET cubriendo una cantidad importante de algoritmos y estructuras de datos clásicas que la Base Class Library no tiene, o cuya implementación podía mejorarse.

Algunas de las estructuras y algoritmos asociados son:

  • Comandos (y su administración): con soporte de undo/redo y grupos de comandos.
  • Grafos: directos y no-directos, sub-grafos, clausuras transitivas y ordenamiento topológico, etc.
  • Heaps
  • Colas prioritizadas
  • Ordenamiento
  • Bolsa de Propiedades
  • Implementaciones mejoradas de IEditableObject/IDataErrorInfo
  • Filtro de eventos
  • y otras utilidades menores

Esta biblioteca, llamada Algorithmia, se suma a las BCLExtensions, un conjunto de extension methods sobre varios tipos de la Base Class Library, para propósitos generales.

Ambos proyectos están disponibles en CodePlex, utilizando el soporte de código fuente de Mercurial y licenciados bajo BSD2.

Como Frans ya ha aclarado varias veces, no importa si a alguien le gusta más GIT que Mercurial o GitHub que CodePlex. Esas elecciones corresponden al autor, y sólo tienen importancia si uno está decidido a colaborar con el proyecto (para usarlo basta con un download plano de los fuentes), cosa que pocos hacen en la práctica, y quienes realmente quieren contribuir nunca tienen problemas en utilizar un cliente u otro de control de código.

 

viernes, 10 de diciembre de 2010

Finalmente está aquí: Chrome Web Store

Chrome Web Store

Como se venía anunciando desde hace tiempo, esta semana abrió al público la Chrome Web Store.

La idea de esta tienda en línea es brindar el mismo tipo de experiencia de búsqueda de aplicaciones con calificaciones y comentarios de usuarios, categorías, descripciones, y opciones pagas o gratuitas que los usuarios de teléfonos inteligentes disfrutan desde el éxito del AppStore del iPhone, y que fue replicado en Android, Windows Phone 7, la iPad y demás.

Hay bastante discusión en línea acerca de que esta tienda no es más que maquillaje sobre el concepto de links y favoritos, pero veamos un poco sus características:

Lo primero que notará quien la acceda desde un navegador que no sea Chrome será que las aplicaciones sólo funcionan en ese browser. La imagen a continuación está capturada desde mi Firefox.

Web Store Home

¿Porqué sólo funciona en Chrome? En principio porque las aplicaciones pueden ser de varios tipos.

El nivel más básico puede ser un sitio web tradicional al que se le agrega sólo algo de metadata que usa la tienda para identificarla. Pero también puede ser una extensión para Chrome o un tipo de aplicación web más específico que puede descargarse y correr incluso offline dentro del sandbox de Chrome. Estos dos tipos de aplicaciones pueden utilizar además el API de Chrome para brindar funcionalidad específica más integrada al browser mismo.

Desde el punto de vista de nosotros como desarrolladores, lo más importante es el Developer Dashboard, que permite publicar cualquiera de estos tipos de aplicaciones, sin restricciones específicas, ya que Google ha decidido dejar la tarea de evaluar las aplicaciones a los usuarios mismos. Para poder publicar cualquier cosa, debe realizarse un pago por única vez de 5 dólares, más orientado a verificar la identidad asociada a la cuenta utilizada que a otra cosa.

Más que ninguna otra cosa, este es un nuevo mecanismo para dar a conocer aplicaciones y sigue empujando el mercado de empresas pequeñas de desarrollo que pueden alcanzar una alcance global con facilidad.

El principal problema que veo a todo esto es que crea un nuevo silo en lugar de ser algo abierto, pero es un experimento interesante.