viernes, 12 de febrero de 2016

Promesitas titas titas...!

Casi cualquiera que haya trasteado un poco con JavaScript y principalmente con NodeJS es casi seguro que se ha encontrado con el patrón promesa y lo ha usado para quitarse anidaciones infinitas e infiernos de callbacks en operaciones asíncronas.

El patrón en sí mola y es una buena idea aunque, como todo, también depende de la implemetación que se use para que te de más o menos funcionalidades.

¿Pero cómo funciona por dentro este patrón?

martes, 9 de febrero de 2016

Transponiendo tablas en T-SQL con la cláusula PIVOT.

¿Cuántas veces, buscando soluciones para algún problema -navegando por Internet- damos con un código que modificamos y logramos poner a funcionar, aunque no sepamos muy bien cómo? Algo así como "¡ey! pues esto funciona pero ¿Podría implementarlo desde cero ahora que he visto la solución?... Espera, ¿Por qué he puesto esto aquí?...". A mi no me pasa, pero conozco a un amigo... Bueno, venga, sí que me ha pasado alguna vez, por ejemplo con la cláusula PIVOT de T-SQL... He tenido que usarla un par veces (al menos), sin prestarle nunca mucha atención, así que en la siguiente ocasión volvía a perder demasiado tiempo buscando por la red soluciones a medias. Por lo tanto, como viene siendo habitual cuando escribo estas parrafadas, espero que esta entrada sirva para ayudarme a entenderlo del todo o -al menos- para encontrar una referencia más directa la próxima vez que lo necesite (y bueno, a lo mejor es útil para alguien más...).

Transponer datos de una tabla -o pivotar datos de una tabla- es básicamente cambiar datos de filas a columnas (o viceversa). Pero en qué mundo descabellado y cruel podría ser necesario hacer una cosa así, os preguntaréis...; bueno, existe un modelo relacional de almacén de datos que se usa en entornos muy cambiantes que añaden o eliminan columnas en las tablas a lo loco o entidades que registran un montón de atributos. Se llama modelo EAV (o Entity-Attribute-Value). Este diseño consiste esencialmente en almacenar los datos en un formato de "atributo-valor". Uno de los mayores problemas que presenta este modelo es la dificultad para visualizar y presentar los datos. Imaginemos un ejemplo muy tonto: