Usando Atom para Node.js

Node es una plataforma que me gusta para hacer pruebas de concepto, porque con poco código es fácil hacer muchas cosas.

Buscando un editor he empezado a utilizar Atom. Viniendo como vengo de Java, estoy familiarizado con entornos como Eclipse o IDEA de JetBrains, pero me apetecía practicar con algo mas ligero. Vim es otro editor que manejo bien y me gusta, pero no lo veo para esto. Me encanta para editar rápidamente sobre la línea de comando, pero no para desarrollar de forma continua.

Atom es sencillo, es bonito, es abierto, y tiene una comunidad muy rica detrás. No es tan rápido como Sublime y Visual Studio Code, pero me da igual.

En un sistema Linux como Ubuntu la instalación es la habitual con su gestor de paquetes. En la sección Atom Basics del manual de Atom se describen los comandos básicos para desenvolverse en el editor, en caso de duda un “Ctrl+Shift+P” te permite encontrar lo que necesites.

Una de las características de Atom es que es muy personalizable, existe multitud de extensiones disponibles para adaptarlo a tus necesidades. La instalación de estos paquetes se puede hacer con un “apm install <nombre-de-paquete>“.

Las que siguen son las extensiones que he encontrado mas útiles para desarrollar programas en servidor. He ignorado las que tienen que ver con la parte de presentación como autoclose-html, pigment o color-picker.

Las primeras en mi lista son atom-ternjs, node-debugger y script. Para mí son las mas necesarias, y las primeras que he instalado.

atom-ternjs

  • Acostumbrado a trabajar en IDEs como Eclipse algo que busco de forma natural es una utilidad de autocompletado de código y de chequeo de sintaxis. Esto es lo que encuentras en esta extensión. Como indica su documentación, si quieres usarla en tu proyecto, debes añadirle un fichero de configuración para tern donde le puedes indicar como quieres que te ayude.

node-debugger

  • Esta extensión es un depurador para Node con las funciones habituales de inserción de puntos de ruptura, ejecución paso a paso y consulta de pila de llamadas, entre otras.

script

  • Esto es una pequeña maravilla que te permite seleccionar un trozo de código y ejecutarlo en un momento. Algo como https://repl.it/ pero dentro de Atom. Ideal para prototipar una función o para probar con rapidez.

Otro grupo de extensiones que uso son las que me ayudan a editar mas rápidamente, porque visualizo mejor las cosas, o porque llego a ellas mas rápidamente: minimap, open-recent, highlight-selected, file-icons, maximize-panes, fold-lines y tool-bar.

minimap

  • Muestra a la derecha del editor una visión resumida de todo el código contenido en el fichero, permitiendo situarte con mas facilidad. Existen extensiones relacionadas con esta que permiten indicar la posición del cursor en el minimapa.

open-recent

  • En el menú de fichero muestra siempre los ficheros y carpetas que hemos abierto mas recientemente.

highlight-selected y minimap-highlight-selected

  • Al seleccionar una variable o una palabra clave, todas las ocurrencias de las mismas en el fichero aparecen resaltadas.

file-icons

  • Asocia un icono para cada extensión de fichero facilitando encontrar lo que buscas.

maximize-panes

  • Permite maximizar el panel del editor donde estás trabajando sin cerrar el resto de paneles.

fold-lines

  • Permite compactar en una línea distintos bloques de código para facilitar la lectura.

tool-bar

  • Aunque me encanta usar atajos de teclado, mi magia es limitada y necesito de una barra de herramientas como esta. Permite personalizar su contenido.

Y ahora este grupo final de plugins que veo interesantes. Puedo vivir sin ellos pero les he dado una oportunidad: linter, auto-detect-indentation y atom-beautify.

linter y linter-eslint

  • Es una extensión para corrección de código que también se integra en otros entornos de desarrollo. linter es el paquete base que soporta HTML, CSS y JavaScript. linter-eslint es una ampliación sobre el anterior específico para JavaScript y JSX. Como en el caso de tern, para usarlo en tu proyecto debes incluir un fichero de configuración eslint donde puedes detallar, por ejemplo, si se va a programar en JavaScript ES6 o con una versión anterior.

auto-detect-indentation y atom-beautify

  • El primero configura la identación del fichero basado en el contenido que ya tiene, no solo en las settings del editor. El segundo organiza el código para verlo mejor.

Y tras tanta personalización, ¿que pasa si quieres llevártela a otra máquina, quieres compartirla, o simplemente no perderla? Pues usar otra extensión: sync-settings.

syn-settings

  • Permite guardar la personalización realizada en el editor en un gist de GitHub. Hay que tener una cuenta disponible. Para hacer el backup hay que introducir en Atom el token de acceso a GitHub y el ID del gist donde vas a hacerlo. Aquí puedes encontrar la configuración descrita en este post.

En Internet hay muchas páginas mostrando conjuntos de extensiones preferidas para distintos usos. Aquí he compartido las mías.

Test plugin wp-gnusocial

Esto es un test del plugin wp-gnusocial. Permite usar gnusocial como plataforma de comentarios a partir de la publicación de un post. Los comentarios aparecen tanto en gnusocial como en wordpress. El plugin todavía en pruebas >> git://enkidu.coop/wp-gnusocial.

Si todo va bien este post aparecerá publicado en liberakampo.org …

 

Unete a la federación con GNU-Social

Esta semana he instalado un sitio de microblogging con gnu-social donde queremos cacharrear y aprender. Lo he llamado Libera Kampo. Si os suena raro es porque quereis ;-). Es Esperanto  y es sencillo de aprender.

GNU-Social es un software de redes sociales de código abierto y gratuito. Básicamente te permite crear tu propia red social dedicada a lo que desees y que esta a su vez forme parte de una red mas extensa compuesta por todos los nodos GNU-Social que existen en el mundo. Desde un nodo puedes tener conversaciones con la gente registrada en ese nodo o también con personas registradas en otros.

gnu

Continue reading Unete a la federación con GNU-Social

De la pizarra a la base de datos –> Neo4j

He de confesar que quizá no sea muy objetivo a la hora de comparar una base de datos orientada a grafos con otras NoSQL. Para aprender algo nuevo suelo visualizar relaciones, y en general tiendo a fijarme menos en los detalles y mas en que papel cumplen unas cosas respecto a otras.

un grafo

Y resulta que estos almacenes de datos me dan lo que me gusta, su foco está puesto en las relaciones, y de forma muy sencilla puedo convertir el dibujito de cajitas y flechas que tengo en la cabeza en una base de datos real. Apenas hay un salto o traducción.

Continue reading De la pizarra a la base de datos –> Neo4j

Humongous Mongo

Parece ser que el nombre de Mongo DB se deriva del término humongous que viene a significar algo así como “enorme” o “monstruoso”, quizá por su habilidad para tratar grandes cantidades de datos y peticiones. Yo, la primera vez que oí este nombre pensé en el planeta Mongo de los comics de Flash Gordon 😛 Ejemplos de lugares donde se usa Mongo son Foursquare, Bitly o el CERN para almacenar los datos del LHC.

flash-gordon-mapa-mongo

Esta BD open source NoSQL, es de las llamadas “documentales”. En una base de datos relacional cada cliente en una tabla de clientes, tiene siempre los mismos campos, nombre, apellidos, dni… en una BD documental, hoy un cliente de la colección clientes tiene quizá 10 campos, si el mes que viene nos damos cuenta de que los nuevos clientes necesitan 12, no hay problema, simplemente insertamos los nuevos con 12 campos. Es una BD sin un esquema que restrinja (o garantice) una estructura. Más libertad para el usuario, pero también más responsabilidad.

Continue reading Humongous Mongo

Big Data y HBase

Big Data va de complejidad en los datos con los que trabajamos, de los que queremos extraer valor. No tiene que ver tanto con cantidad como con el número de datos diferentes, con el número de relaciones diferentes… Si tengo un disco de 100GB repleto con 100 películas, pero lo que me preocupa es conocer los títulos o los actores no estoy trabajando con Big Data, por mucho que una película ocupe una barbaridad, solo tengo 100 casos. Otra cosa sería si el disco lo tuviera lleno de 100 millones de registros que tenemos que poder consultar individualmente. A ese tipo de complejidad me refiero.

HBase es un ejemplo de base de datos NoSQL open source pensada para Big Data. Continue reading Big Data y HBase

Bases de datos NoSQL

Cuando uno piensa en un programa que necesita almacenar datos piensa en una base de datos, y además, casi seguro, en una relacional. Ya sea Postgres, MySQL, Oracle, DB2… las bases de datos relacionales son fiables y robustas tras mas de 40 años de investigación y de uso en producción. Los problemas a los que se enfrentaban en 1975 tienen poco que ver con los de hoy en día, pero estos almacenes de datos siguen teniendo su hueco en lugares tan extraños para ellos como los servicios cloud de Twitter.

Continue reading Bases de datos NoSQL

El liderazgo

Continuando con el post anterior, aquí va una tanda de ideas que he extraido del libro respecto a liderazgo y resolución de conflictos en estas organizaciones voluntarias. Algunas son conocidas de la gestión de proyectos. Otras, no son tan habituales.

Los lideres, las personas que “cuidan” de la organización y despejan los obstáculos del camino, no dicen al resto lo que hay que hacer, mas bien “Keep Everybody’s Eyes on Target, and Paint It Red Daily”. Las personas deciden libremente que es lo que van a hacer a partir de una lista de tareas pública, y de un “timeline” que está siempre bien visible.

Continue reading El liderazgo

Los andamios

Aquí van algunas notas mas sacadas a lo bestia del libro del Rickard Falkvinge: Swarmwise.

Como comentaba en el post anterior, para Falkvinge, una organización de voluntarios embarcada en un proyecto a medio o largo plazo solo puede conseguir su objetivo si tiene un nucleo que le da estructura, cierta jerarquía en el sentido tradicional. Una organización completamente plana no llega muy lejos. Lo explica a partir de su experiencia liderando el Partido Pirata de Suecia desde sus inicios hasta llegar a la representación actual en el Parlamento Europeo. Sin embargo la jerarquía ni es rígida, ni lo cubre todo. En el libro utiliza una metáfora: la jerarquía es solo el “andamiaje” de la organización.

Continue reading Los andamios