Entendiendo correctamente los modulos de nodejs

Cuando se programa en nodejs, es realmente importante tener un entendimiento del manejo de modulos, pues esta es una pieza angular dentro de nodejs.

Aquí algunas recomendaciones, que se deben aplicar:

Una explicación simple de las diferencias entre module.exports y exports

http://stackoverflow.com/questions/16383795/difference-between-module-exports-and-exports-in-the-commonjs-module-system?answertab=active#tab-top

Una explicación mas detallada de la misma diferencia

http://www.sitepoint.com/understanding-module-exports-exports-node-js/

   

 

Es también importante mencionar que ES6 (EcmaScript6) esta alterando ligeramente la sintaxis que se usa en la definición de modulos, aquí algunos enlaces importantes, esta sintaxis ya puede ser utilizada mediante Babel o Typescript:

Una explicación oficial de los cambios soportados

https://github.com/ModuleLoader/es6-module-loader/wiki/Brief-Overview-of-ES6-Module-syntax

Una explicación también mas detallada de lo anterior

http://www.2ality.com/2014/09/es6-modules-final.html

   

Saludos

Configurando un agente linux de VSTS

La necesidad de tener un proceso de integracion continua de una aplicacion basada en nodejs, me ha llevado a tener que investigar como integrar Visual Studio Team Services (aka Visual Studio OnLine) con Linux, tenemos nuestro projecto y queremos ejecutar basicamente grunt dentro de el. Algunos diran del porque no usamos solamente Windows y las opciones de build que Brinda, la respuesta: «no nos son suficientes». Aqui algunos interesantes links que me permitieron ejecutar el agente dentro de mi servidor linux.

 

   Â

Javascript, NPM y la programacion orientada a objetos

Como muchos han conocido, estos días, muchos grandes paquetes o componentes de NPM estuvieron quebrados por algún tiempo, entre los más famosos paquetes podemos nombrar a ReactJs y Babel. Y la razón no deja de ser absolutamente ridícula, todos esos paquetes se rompieron porque hubo un error en una dependencia, un paquete llamado ‘leftpad’. Este paquete lo muestro a continuación:

Pero lo preocupante incluso después del análisis que hace @haneycodes, es que aparte de estarnos olvidando de programar, estamos olvidando programar con unidades elementales de abstracción como las clases, estamos convirtiendo una simple función, en un paquete y aunque los defensores del nuevo modelo de desarrollo creen que está bien hacer jolgorio de las potencialidades de javascript. Creo que estamos tendiendo al desorden y a la anarquía del código, donde lo importante es entregar el producto (en este caso el paquete) que haga lo que se necesita sin preocuparnos de principios elementales de diseño. Esperemos que el advenimiento de ES6 signifique un cambio para mejor, con todas las nuevas características que me hacen recordar programar en de una manera ordenada (no llamemos orientada a objetos, porque javascript es peculiar en sí mismo y único en su campo), una manera en la que los principios de desarrollo primen por encima de las soluciones cómodas y frágiles.

Saludos

Opciones de Serializacion Binaria

En estas semanas me vi involucrado en la necesidad de realizar un serializacion binaria personalizada, en cualquier caso esa historia pertenece al pasado, la cuestion es que encontre que hay varios serializadores muy populares alla afuera, que muchos utilizan. Aqui les dejo los links y mas que todo un recordatorio a mi mismo para algun momento futuro:

MessagePack: Quiza mi favorito, simple, extensible (modificando el codigo, haciendo un fork al Proyecto) https://github.com/msgpack/msgpack-cli

BinarySerializer: Simple bastante bien documentado, no lo revise a profundidad pero para aprender los ‘secretos’ de la serializacion, un buen punto de inicio https://github.com/jefffhaynes/BinarySerializer

SharpSerializer: Popular con Xamarin/Mono, no estoy seguro cuan actualizado esta. http://www.sharpserializer.com/en/index.html

Protobuf: De lejos el serializador para interop por excelencia, ampliamente usado por diversos lenguajes de programacion y apoyado por Google https://github.com/google/protobuf ; https://developers.google.com/protocol-buffers/docs/csharptutorial#defining-your-protocol-format

 

Saludos