martes, 11 de diciembre de 2012

Números mágicos

En términos de programación, un "Magic Number" es una constante numérica usada para identificar un ente (ya sea valor de un diccionario, un estado, una constante...). Algo que directamente podría interpretarse como una mala práctica. Desde luego, el uso de estos números, no condiciona el propio código en sí, ya que seguirá funcionando perfectamente; ahora bien, no se puede decir lo mismo en cuanto a la mantenibilidad del mismo.

Buscando en la wikipedia sobre estos bichitos, encuentro dos códigos para una misma tarea.

   for i from 1 to 52
       j := i + randomInt(53 - i) - 1
       a.swapEntries(i, j)

En este primer código, encontramos que nos devuelve 52 valores aleatorios de un Array.

   constant int deckSize := 52
   for i from 1 to deckSize
       j := i + randomInt(deckSize + 1 - i) - 1
       a.swapEntries(i, j)

En este, ya comprendemos un poco más. Resulta que el 52 es el tamaño de una baraja (deckSize) en cartas.

Obviamete, y para mi gusto, el hecho de tener una variable que identifique con su nombre el porqué de un valor, no es suficiente.

Usemos enumerados por favor. En este caso, podríamos tener por ejemplo, un enumerado llamado Deck (baraja). Aquí nos hemos ido a .NET:


Ahora, el uso de un enumerado, junto con una buena descripción de la variable, nos lo dice todo:





Hay una herramienta para ello: 13 herramientas esenciales para el desarrollador web Ninja

Destacaré algunas herramientas que considero útiles a la hora de desarrollar web, y lo mejor de todo, casi todas son completamente gratis!!

Herramientas generales

  • Fiddler : Uno de las mejores herramientas para hacer debug HTTP hoy en día.

Herramientas generales para exploradores & Plugins

Inspección y debugging en cliente


Subtítulos en vídeos con HTML 5

Es de todos sabido, o por lo menos, conocida, la nueva etiqueta de HTML 5 <video>, gracias a la cual se pueden reproducir de manera nativa en el entono web, vídeos. Pues bien, resulta que HTML 5 ha ido más allá, dándonos más control.

En este caso, con la característica de los subtítulos, lo cuales están ganando terreno cada vez más.


La idea es que estos subtítulos cumplan con el sistema Closed Caption para que las personas con deficiencia auditiva o visual puedan comprender el contenido que les queremos transmitir, o simplemente para dotar a nuestros vídeos de una transcripción en otros idiomas.
Dependiendo del navegador podremos utilizar diferentes formatos, como por ejemplo TTML, SRT, WebVTT, etcétera. En este post hablaremos del último nombrado.


40 APIs para diseñadores web y programadores

Una API (Application Programming Interface) es un conjunto de reglas y especificaciones que los programas de software pueden seguir para comunicarse o relacionarse con cualquier otro.

Como sabemos los desarrolladores, hay cientos de APIs para hacer casi cualquier cosa imaginable online. Algunas son mejores que otras, y algunas definitivamente más útiles que otras.

Entre otras, tenemos:

  • APIs de Google, entre las que se encuentran la de Places, Geocoding, Blogger, Calendar, YouTube,  etc.
  • APIs de Yahoo!, entre las que están Flickr, Delicious, Meme, etc.
  • API de Twitter
  • API de Facebook
  • API de Digg.
  • ....

Resto del artículo (fuente original).

Tests en Javascript


Cuando trabajamos con lenguajes dinámicos como Javascript los tests son mucho más importantes que en lenguajes estáticos. Ahora que he empezado a usar mas Javascript en la vida real y tener cosas más complejas que aplicaciones básicas con node.js o Knockout, mantener el código funcionando se hace más complicado y los tests más necesarios.

La principal razón por la que los tests son más necesarios se porque no hay una fase de compilación como tal. Esto provoca que no podamos detectar fallos hasta el momento de ejecutar la aplicación, pero sobre todo impide aprovechar las capacidades de análisis estático de un compilador moderno.