Alpha's Manifesto

A black and white figure's thought-hive

CommonLibrary.NET

Don't repeat yourself

En cierto punto en el camino de evolución de una compañía o un desarrollador, se encuentra como hecho el estar siempre re-haciendo las mismas partes, o reutilizando partes comunes que alguna vez ya se usaron para un proyecto anterior. Esto es muy común, y ciertamente no es algo malo. De hecho, es deseable, y en el ámbito recibe el nombre de DRY principle.

(Read more →)

HtmlUnit en .NET

Unit testing para web frontends

Hay un artículo en particular de Steve Sanderson llamado Using HtmlUnit on .NET Headless browser automation que indaga sobre los beneficios de utilizar esa librería para simular un browser completamente funcional que podemos utilizar para nuestro unit testing, y, por qué no, para automatizar tareas en un browser. La idea principal es poder ejecutar tareas como si de un browser se tratara, e inspeccionar los elementos de la página e interactuar con ellos.

Cabe destacar que HtmlUnit en realidad está hecho para Java, pero puede portarse a .NET de la forma que Steve Anderson menciona. He leído por ahí que es un poco lento, pero creo que su API agrega la suficiente simpleza como para trabajar fácilmente por él.

Soy un zorrinito automatizado.

Link del día: Cryptico.js

Ya alguna vez había mencionado una librería JavaScript para encriptar datos (jCryption), pero nunca está de más considerar otras alternativas. En este caso se trata de cryptico.js. El proyecto también es de Open Source y nos permite usar AES y RSA (o eso leí, pero la documentación sólo menciona RSA), y con una serie de métodos muy simples, nos permite operar con cadenas que queramos utilizar para transmitir de forma segura.

Lo curioso es que podemos generar claves especificando el tamaño de la misma, pudiendo ir desde una clave de 512 bits hasta 8192… pedazo de clave.

Este tipo de encriptación, por el hecho requerir una clave “insegura” para generar la clave RSA, no es inseguro de por sí. Recordemos que estamos hablando de encriptación asimétrica, de forma que por más que se tenga la clave generada, no hay inseguridad, puesto que es la otra clave (la que se queda con nosotros, la privada) la que se usará para desencriptar los datos.

Soy un zorrinito encriptado.

Link del día: Combres, optimización ASP.NET

Justo ayer, rondando la medianoche, JH me envió por email un link a este proyecto llamado Combres 2.0, una librería para optimización de sitios ASP.NET. Recuerdan el caso de Minify para PHP o mod_pagespeed para Apache, este es el turno de ASP.NET.

Esta librería nos permite incluir recursos haciendo uso de ella, de forma que al momento de generar los links también se hacen referentes a una dirección que esta librería manejará, y se encarga del cacheo, compresión y minimizado de los documentos. La reducción de HTTP requests es, por lejos, una de las ganancias más útiles y menos costosas de lograr que nos ofrece.

En el sitio de CodeProject (en donde se encuentra alojado) se pueden ver varias de las aplicaciones y usos que tiene. Veré si prontamente puedo comenzar a utilizarla.

Soy un zorrinito optimizado.

Link del día: Adaptive Images (mobile)

Nuevamente de la gente de CSS Tricks me llega un dato de una librería muy útil. En este caso es Adaptive Images, es una librería en PHP que nos permite servir imágenes con el tamaño justo dependiendo del tipo de cliente. No sólo se hace la diferenciación del tipo de cliente, sino del tamaño de la pantalla real.

Cómo es que funciona? Básicamente al momento de cargar la página un javascript se ejecuta antes de que ejecute el cuerpo. Este javascript carga una cookie en nuestro navegador con esa información de tamaño de pantalla, y cuando nuestro navegador procede a buscar las imágenes, ese cookie viaja también y el servidor puede devolver una imagen del tamaño justo.

Por supuesto que posee varias opciones de configuración para servir imágenes de la mejor forma para nuestra necesidad, y por supuesto, podemos servir una imagen de baja resolución si la ventana del navegador tenía poco espacio y luego se amplió. Pero hay workarounds para todo, de forma que sigue siendo una herramienta útil.

Soy un zorrinito adaptativo.

Link del día: Presentaciones JavaScript

Muchos me felicitaron por cómo se veía mi presentación sobre una pequeña encuesta sobre redes sociales, aunque la verdad los créditos no me los debo llevar yo sino Prezi… pero lo bueno es que todos podemos tener algo así en nuestros sitios sin usar ningún servicio de terceros. Deck.js (lo encontré en CSS Tricks) es una librería JavaScript que utilizando HTML5 nos permite crear presentaciones con una visualización muy atractiva (lo cual también ayuda a llamar la atención y transmitir nuestro mensaje).

Deck.js nos permite crear una variedad de animaciones y formatos de presentación, y lo bueno es que nos ofrecen distintos downloads dependiendo de nuestro nivel de habilidad con HTML/CSS/JavaScript, para que estemos cómodos utilizándolo.

A ver quién me muestra la primera implementación que hayan hecho con deck.js así lo coloco aquí!

Soy un zorrinito animado.

Link del día: Scrollability

Scrollability es un pequeño proyecto/librería que podemos utilizar para dar una suerte de scroll para páginas móviles, del mismo tipo que los dispositivos iOS presentan en sus interfaces nativas. Por supuesto, queremos aprovechar esa características para poder dar al usuario una experiencia mucho más cercana a la que ya posee en su teléfono.

Si a eso le sumamos el uso de HTML5 y canvas, prácticamente podemos hacer aplicaciones iguales a las nativas o más aún, aprovechando las posibilidades de la web sin necesidad de pedir permiso al usuario (o al sistema) de usar una conexión saliente. Incluso más, no hace falta pedir permiso a Apple para instalar nada en el teléfono de nadie.

Sé que divagué un poco pero, ¿ustedes qué opinan?

Soy un zorrinito scrolleable.

Link del día: Script Src

Sacando esto del cajón de las aplicaciones que no hacen nada pero son útiles, me encontré a ScriptSrc, una aplicación que mantiene las últimas versiones a varios frameworks y librerías comunes, como jQuery, mooTools, extJS, YUI, etc. Por supuesto, los scripts no están alojados en este propio servidor, sino que ellos nos dan el link al CDN correspondiente que lo aloja, permitiéndonos linkearlo directamente.

Y aunque hay un poco de discusión sobre si realmente conviene usar CDNs o mejor archivos pequeños en nuestro propio host, hay ciertas ventajas y desventajas. Las ventajas son ineludibles, las desventajas no lo son tanto.

Soy un zorrinito distribuido.