El fichero package-lock.json ¿Tengo que versionarlo?

34293010980_cbb8882bc6_o.jpg

Fotografía de portada de Chris Garcia

Si habéis actualizado estas semanas NPM a la versión 5, cuando hayáis usado alguno de los comandos, habréis apreciado un nuevo fichero al lado de vuestro package.json: el nuevo fichero package-lock.json.

Los que estáis acostumbrados a trabajar con YARN, no os habrá parecido nada extraña esta nueva funcionalidad de NPM, pero los que, como yo, nunca llegamos a cambiar de gestor de paquetes, este ficheros nos ha traído, por lo menos, curiosidad.

En el post de hoy explicaremos de qué trata este fichero, averiguaremos si es algo importante y comentaremos si hay necesidad de versionarlo en nuestro repositorio de Git o SVN, o si por el contrario lo tenemos que enviar al baúl de ignorados.

Read More

Anuncios

4 formas de manejar dependencias en NodeJS

La gestión de dependencias es uno de los trabajos importantes que tenemos los programadores a la hora de desarrollar sistemas. La forma en que creamos módulos y los relacionamos los unos con los otros puede ser el factor determinante para que nuestro proyecto sea un éxito o no.

¿Cuanta funcionalidad incluyo en un módulo? ¿Cuándo divido un módulo en partes más pequeñas? ¿Cómo los conecto? ¿Qué módulo depende de quien? Contestar todas estas preguntas suele ser difícil y dependiendo del programador con el que hables y el contexto en el que te encuentres, podrás tomar decisiones de diseño diferentes.

Pero ya no es solo en cómo creamos esos módulos y los conectamos, sino más bien, en cómo hacemos que los módulos sean lo mas independientes posibles, cómo podemos hacer que nuestro módulo pueda ser extraído de la maraña para, sino ya ser reutilizado, por lo menos ser testado de manera aislada del resto.

Cómo podremos manejar las dependencias de un módulo, nos va ayudar en nuestro cometido, por ello, el post de hoy nos hablará de cómo incluir dependencias de 4 formas diferentes que nos podrán ser útiles dependiendo del contexto de cada uno de los módulos.

Veremos que la versatilidad de JavaScript nos va a ayudar a la hora de manejar dependencias.

Read More

Patrones JavaScript encontrados en tu API

28580064681_6b328e0973_o.jpg

Foto de Paul Hudson

Cuando miras el código de una de las librerías que usas en tu día a día, aprendes mucho a cómo otros desarrolladores solucionan un problema en particular. Ese conocimiento puede ser usado por ti en el futuro para que, dado un problema parecido, tu puedas adaptar esa solución y te sea útil en tu desarrollo.

Sin darte cuenta, has creado una pieza de conocimiento que puede ser usada siempre que te encuentres con este problema en concreto. Has usado un patrón. Al igual que pasa en lenguajes como Java o C#, en JavaScript es muy común hacer uso de patrones de diseño.

Los patrones de diseño ayudan a crear un repositorio de ‘problema-solución’ que la mayoría de desarrolladores ha experimentado. Este repositorio nos ayuda a crear un lenguaje común entre desarrolladores y nos permite ordenar el conocimiento y nuestras experiencias.

Como no me gusta solo quedarme en el uso de librerías, sino que me parece importante entenderlas, hoy explicaremos 5 patrones de diseño que se suelen encontrar en nuestras librerías de NodeJS favoritas. Adelante:

Read More

El manejo de streams en NodeJS

16927235050_fb1bb19262_h.jpg

Imagen de Jack Landau

Parece mentira, pero muchas veces olvidamos que la mayoría de APIs con las que cuenta NodeJS en su ‘core’ están basadas en sistemas de streams. Las APIs nos acaban abstrayendo tanto del bajo nivel que olvidamos conceptos vistos en la programación tradicional de toda la vida.

Estas abstracciones nos ayuda a ser más productivos, pero muchas veces nos hacen olvidar la esencia de las cosas, el aprendizaje de los conceptos más básicos y hace que, algunos problemas que se podrían solucionarse de una forma más o menos sencilla, se nos compliquen por culpa de no tener estos conocimientos.

Me he dado cuenta que conocer los streams en NodeJS puede suponernos un cambio a la hora en la que programamos y en cómo damos solución a los problemas, por lo que creo que es bueno que nos detengamos un tiempo en aprender sobre ellos.

A lo largo del artículo explicaremos que es esto de los streams, veremos los diferentes tipos con los que contamos en NodeJS, mostraremos algunos casos en donde ya estamos haciendo uso de ellos, crearemos un nuevo tipo de stream y explicaremos que tienen que ver los streams con la Programación Funcional Reactiva.

Parece bastante ambicioso el plan ¿lo lograremos? ¿Nos adentramos un rato en el mundo de los streams en NodeJS? Adelante:

Read More

Desarrollo de CorDapps: Introducción

15744044622_9451e331b5_b.jpg

Imagen de Flavio Ricci

Tenía muchas ganas de traer este tema por el blog y de compartir con vosotros esta nueva temática que se distancia del Frontend y de JavaScript durante un tiempo. Como muchos ya sabréis, durante los últimos meses, me encuentro trabajando activamente para comprender ciertos conceptos sobre blockchain y el desarrollo de aplicaciones distribuidas.

Mi conocimiento todavía es muy limitado comparado con el de mis compañeros, pero sí he podido investigar y probar pequeñas cosas que me han aportado bastante comprensión. Durante las próximas semanas, quería hablaros sobre una tecnología que se encuentran desarrollando varias empresas del sector financiero dentro del abanico del R3.

El R3 es un consorcio fundado por varias empresas del sector preocupadas en conseguir desarrollar servicios, productos y soluciones de forma distinta a la que se hace hoy en día. La idea surge de poder usar toda la potencia de los blockchain actuales y conseguir un marco de trabajo que ayude a crear casos de uso del mundo real que escalen y sean productivos para los desarrolladores.

El mundo blockchain se encuentra en plena efervescencia y mientras el ‘hype’ inicial empieza a calmarse, el estado actual de las compañías es el de encontrar herramientas que generen un ecosistema maduro.

Corda y las CorDapps nacen con esta idea, nacen como una forma de ayudar a los desarrolladores a crear aplicaciones financieras de una manera diferente, aprovechándose al máximo de las técnicas de blockchain, pero intentando que escalen y puedan ser útiles.

El conocimiento que he sacado de Corda y las CorDapps puede que te ayude en encontrar soluciones distribuidas en tu día a día aunque no te dediques a desarrollar aplicaciones financieras, por lo que te invito a que sigas conmigo en lo que, por ahora, serán 6 posts que explicarán cómo empezar a desarrollar CorDapps con Corda:

Read More

Kong: El King de los Microservicios

2752594335_2a06435fd8_z

Bueno, Denham, los aviones lo mataron. – No, no fueron los aviones… fue Bella quien mató a la bestia.

Uno de los grandes problemas a lo que nos enfrentamos cuando tenemos una arquitectura dividida en diferentes microservicios, es lo difícil que se puede llegar a ser el gestionar tantas entidades independientes dentro de una infraestructura común.

Además, y por normal general, cuando tu arquitectura se encuentra dividida en partes de negocio segregadas, necesitas presentar tu API de una manera homogénea al exterior evitando dar pistas de cómo es tu infraestructura de servicios interna.

Es por ello que es necesario contar con una herramienta que nos permita homogeneizar ciertos procesos y que nos permita gestionar todas las APIs de las que cuenta la arquitectura. Una buena opción puede ser por medio de Kong: Una herramienta que rápidamente se convertirá en un auténtico aliado para nosotros.

Read More

TypeScript para NodeJS usando Visual Studio Code

nodejs-typescript.png

Como todos bien sabéis, JavaScript es un lenguaje de programación débilmente tipado. Esto quiere decir que nosotros como desarrolladores nunca tenemos que inferir a una variable, una constante o un parámetro un tipo especial para que el compilador lo interprete, si no que el propio compilador o intérprete va a inferir el tipo por medio del contexto en el que se encuentre una variable.

Read More