Instalar node.js y no morir en el intento


Node.js   lleva   ya unos  cuantos años  muy de moda aunque,  ciertamente   no es algo nuevo puesto que existen librerías como Twisted que hacen exactamente lo mismo, pero si es cierto que es la primera basada en JavaScript y que tiene un gran rendimiento.

Node.js es similar en su propósito a Twisted o Tornado de Python, Perl Object Environment de Perl, libevent o libev de C, EventMachine de Ruby, vibe.d de D y JEE de Java existe Apache MINA, Netty, Akka, Vert.x, Grizzly o Xsocket  pero ,al contrario que la mayoría del código JavaScript, no se ejecuta en un navegador, sino en el servidor.

Quizas su éxito se deba a que  Node.js puede ser combinado con una base de datos documental (por ejemplo, MongoDB o CouchDB) y JSON lo que permite desarrollar en un entorno de desarrollo JavaScript unificado. Con la adaptación de los patrones para desarrollo del lado del servidor tales como MVC y sus variantes MVP, MVVM, etc. Node.js facilita la reutilización de código del mismo modelo de interfaz entre el lado del cliente y el lado del servidor.

Node.js implementa algunas especificaciones de CommonJS.5​ Node.js incluye un entorno REPL para depuración interactiva.

Node.js es una librería y entorno de ejecución de E/S dirigida por eventos y por lo tanto asíncrona que se ejecuta sobre el intérprete de JavaScript creado por Google V8.

Node.js es un entorno en tiempo de ejecución multiplataforma, de código abierto, para la capa del servidor (pero no limitándose a ello) basado en el lenguaje de programación ECMAScript, asíncrono, con I/O de datos en una arquitectura orientada a eventos y basado en el motor V8 de Google.

Fue creado con el enfoque de ser útil en la creación de programas de red altamente escalables, como por ejemplo, servidores web.

​ Fue creado por Ryan Dahl en 2009 y su evolución está apadrinada por la empresa Joyent, que además tiene contratado a Dahl en plantilla.3​ 4​

Node.js funciona con un modelo de evaluación de un único hilo de ejecución, usando entradas y salidas asíncronas las cuales pueden ejecutarse concurrentemente en un número de hasta cientos de miles sin incurrir en costos asociados al cambio de contexto.6​ Este diseño de compartir un único hilo de ejecución entre todas las solicitudes atiende a necesidades de aplicaciones altamente concurrentes, en el que toda operación que realice entradas y salidas debe tener una función callback. Un inconveniente de este enfoque de único hilo de ejecución es que Node.js requiere de módulos adicionales como cluster7​ para escalar la aplicación con el número de núcleos de procesamiento de la máquina en la que se ejecuta.

V8
V8 es el entorno de ejecución para JavaScript creado para Google Chrome. Es software libre desde 2008, está escrito en C++ y compila el código fuente JavaScript en código de máquina en lugar de interpretarlo en tiempo real.

Node.js contiene libuv para manejar eventos asíncronos. Libuv es una capa de abstracción de funcionalidades de redes y sistemas de archivo en sistemas Windows y sistemas basados en POSIX como Linux, Mac OS X y Unix.

El cuerpo de operaciones de base de Node.js está escrito en JavaScript con métodos de soporte escritos en C++.

Módulos
Node.js incorpora varios «módulos básicos» compilados en el propio binario, como por ejemplo el módulo de red, que proporciona una capa para programación de red asíncrona y otros módulos fundamentales, como por ejemplo Path, FileSystem, Buffer, Timers y el de propósito más general Stream. Es posible utilizar módulos desarrollados por terceros, ya sea como archivos «.node» precompilados, o como archivos en javascript plano. Los módulos Javascript se implementan siguiendo la especificación CommonJS para módulos,8​ utilizando una variable de exportación para dar a estos scripts acceso a funciones y variables implementadas por los módulos.9​

Los módulos de terceros pueden extender node.js o añadir un nivel de abstracción, implementando varias utilidades middleware para utilizar en aplicaciones web, como por ejemplo los frameworks connect y express. Pese a que los módulos pueden instalarse como archivos simples, normalmente se instalan utilizando el Node Package Manager (npm) que nos facilitará la compilación, instalación y actualización de módulos así como la gestión de las dependencias. Además, los módulos que no se instalen el directorio por defecto de módulos de Node necesitarán la utilización de una ruta relativa para poder encontrarlos. El wiki Node.js proporciona una lista de varios de los módulos de terceros disponibles.

Pero ¿por qué javascript del lado del servidor?

Aunque Javascript tradicionalmente ha sido relegado a realizar tareas menores en el navegador, es actualmente un lenguaje de programación totalmente, tan capaz como cualquier otro lenguaje tradicional como C++, Ruby o Java. Ademas Javascript tiene la ventaja de poseer un excelente modelo de eventos, ideal para la programación asíncrona. Javascript también es un lenguaje omnipresente, conocido por millones de desarrolladores. Esto reduce la curva de aprendizaje de Node,js, ya que la mayoría de los desarrolladores no tendrán que aprender un nuevo lenguaje para empezar a construir aplicaciones usando Node.js.

Bucle de Eventos (Event Loop).

Además de la alta velocidad de ejecución de Javascript, la verdadera magia detrás de Node.js es el Bucle de Eventos (Event Loop). Para escalar grandes volúmenes de clientes, todas las operaciones intensivas I/O en Node.js se llevan a cabo de forma asíncrona. El enfoque tradicional para generar código asíncrono es engorroso y crea un espacio en memoria no trivial para un gran número de clientes(cada cliente genera un hilo, y el uso de memoria de cada uno se suma). Para evitar esta ineficiencia,así como la dificultad conocida de las aplicaciones basadas en hilos, (programming threaded applications), Node.js mantiene un event loop que gestiona todas las operaciones asíncronas.

Cuando una aplicación Node.js necesita realizar una operación de bloqueo (operaciones I/O como trabajo con archivos …etc) envía una tarea asíncrona al event loop, junto con un callback, y luego continúa.

Node.js se registra con el sistema operativo y cada vez que un cliente establece una conexión se ejecuta un callback. Dentro del entorno de ejecución de Node.js, cada conexión recibe una pequeña asignación de espacio de memoria dinámico, sin tener que generar un hilo de trabajo.10​ A diferencia de otros servidores dirigidos por eventos, el lazo de manejo de eventos de Node.js no es llamado explícitamente sino que se activa al final de cada ejecución de una función de callback. El lazo de manejo de eventos se termina cuando ya no quedan eventos por atender.

¿Qué usos reales se le da a nodejs?

Es una herramienta genial para todo tipo de cosas. Aplicaciones web, aplicaciones en línea de comandos, scripts para administración de sistemas, todo tipo de aplicaciones de red, etc.

Es rápido, muy rápido. Esto es importante por varias razones:

  1. El desarrollo es más rápido.
  2. La ejecución de tests de unidad se puede hacer más rápido.
  3. Las aplicaciones son más rápidas y por tanto la experiencia de usuario es mejor.
  4. Menor coste de infraestrucutra (Linkedin pasó de tener 15 servidores a 4).

También destaca su flexibilidad. En otros entornos hay un servidor “monolítico” (apache, tomcat, etc.) y tu aplicación se “despliega” en él, y tienes unas estructuras de directorios y ficheros de configuración muy concretos. En nodejs tú lanzas el servidor web, y si quieres puedes lanzar varios, y si quieres puedes lanzar a la vez un servidor ftp, y los lanzas desde el directorio que quieras…

Node.js es un ambiente de ejecución para JavaScript construido sobre el motor JavaScript V8 de Chrome. Lo anterior significa que el uso de JavaScript ya no queda restringido solamente al navegador web, sino que tambien es posible usar este popular lenguage de programación para desarrollar aplicaciones de todo tipo, desde servidores web hasta aplicaciones de escritorio.

Por otra parte, npm es el administrador de paquetes de Node.js y funciona de manera similar a pip en el entorno Python. Con él podemos instalar cualquier paquete Node.jsque lleguemos a necesitar para nuestros proyectos.

Métodos de instalación de Node.js

Para instalar Node.js podemos seguir dos caminos:

  • Instalar Node.js usando el instalador o los binarios oficiales. Este método es el más universal y funciona para usuarios de diferentes sistemas operativos y arquitecturas, entre ellos WindowsMac y Linux.
  • Instalar Node.js por medio de un gestor de paquetes. Este método es mas limitado y solamente funciona para usuarios de sistemas operativos tipo UNIX.

nodejs.PNG

node1.PNG

node2.PNG

node5.PNG

node4.PNG

node3.PNG

node6.PNG

node7.PNG

node10.PNG

Puede que al intentar instalar algún paquete  usando el instalador  npm  .

Por ejemplo, intentando reinstalar el paquete de firebase   con npm install firebase angularfire2 –save  le de un error parecido al siguiente:

PS C:\windows\system32> npm -v
2.5.1
PS C:\windows\system32> npm install bower -g
npm ERR! Windows_NT 6.3.9600
npm ERR! argv "C:\\Program Files\\nodejs\\\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "i
nstall" "bower" "-g"
npm ERR! node v0.12.0
npm ERR! npm  v2.5.1
npm ERR! code ETIMEDOUT
npm ERR! errno ETIMEDOUT
npm ERR! syscall connect

npm ERR! network connect ETIMEDOUT
npm ERR! network This is most likely not a problem with npm itself
npm ERR! network and is related to network connectivity.
npm ERR! network In most cases you are behind a proxy or have bad network settings.
npm ERR! network
npm ERR! network If you are behind a proxy, please make sure that the
npm ERR! network 'proxy' config is set properly.  See: 'npm help config'

npm ERR! Please include the following file with any support request:
npm ERR!     C:\windows\system32\npm-debug.log

Estos errores normalmente tienen su procedencia en el Proxy , por lo que deberemos configurar este para que interaccione con node,.js

Una vía para configurar el proxy  y  solucionar el problema es  con el comando siguiente:

npm config set proxy “http://servidorproxy%5xxxxx:yyyyyyy@tesa:8080/”

xxxxxx: usuario que usamos para validarnos

yyyyy: pwd que usamos para validarnos

Como monitorizar nuestro consumo eléctrico con Alexa


Clevergy, una empresa fundada por Beltrán Aznar, Juan López y Álvaro Pérez, ha desarrollado un software de inteligencia artificial que se integra en las aplicaciones de comercializadoras de energía para ayudar a los clientes a reducir su consumo y factura de la luz. Este software proporciona información detallada sobre el consumo del cliente, datos externos que afectan al consumo (como condiciones meteorológicas y orientación de viviendas) y la interacción del cliente con la comercializadora.

Clevergy ofrece tres modalidades para incorporar su software: White Level, Tecnología Microfrontend y Vía API. A través de la aplicación de la comercializadora, los usuarios pueden entender su consumo y recibir alternativas para reducirlo. La empresa ha obtenido inversión de Rocket Internet y está siendo probada por Naturgy. Además, forma parte del programa de aceleración de Google enfocado a la sostenibilidad. Clevergy tiene como objetivo ayudar a las comercializadoras a fidelizar a sus clientes mediante el ahorro en la factura de la luz.

Uno de los puntos mas interesantes de esta propuesta es que no necesita ningun hardware especial dado que actualmente casi toda la población cuenta con un contador inteligente propiedad de la suministradora que esta vertiendo constantemente los datos del consumo a sus sistemas, asi que veamos como usarlo.

Photo by Benjamin Farren on Pexels.com

Instalando Clevergy en el móvil

El alto costo de la electricidad se ha convertido en un problema para muchas familias. Actualmente, tratamos de usar nuestros electrodomésticos principalmente durante las horas en que la electricidad es más barata. Aunque hay muchas aplicaciones que ofrecen información sobre los precios de la electricidad, ninguna es tan fácil de usar como Alexa pues con un simple comando de voz, Alexa nos proporciona esta información. Con el aumento de los precios de la electricidad, las familias buscan soluciones para evitar pagar facturas cada vez más altas. Aunque existen aplicaciones que muestran los momentos de tarifas más bajas, la forma más conveniente de acceder a esta información es a través de Alexa. Para hacerlo, primero debemos configurar la aplicación Clevergy correctamente. Aunque esta función no es nativa de Alexa, podemos lograrlo utilizando esta aplicación de terceros siguiendo unos simples pasos.

Skill Clevergy

Esta skill nos puede ayudar a comprender los hábitos de consumo energético en nuestro hogar y ayudarnos a ahorrar en nuestra factura de la luz. Puedo ayudarnos con consejos sobre ahorro energético, «Alexa, abre mi gestor energético y dime cómo ahorrar en la factura de la luz», o indicarnos el precio medio de la luz en el día de hoy, «Alexa, abre mi gestor energético y dime cuál es el precio de la luz».

Estas opciones no necesitan que vinculemos la skill a nuestra cuenta de Alexa. Aunque si queremos tener mayor control sobre nuestro consumo, lo ideal es vincular nuestra cuenta de Alexa con la app de Clevergy y saber más sobre nuestros hábitos de consumo como:

  • Cuál es nuestro consumo en una fecha concreta o en un rango de fechas
  • «Alexa, abre mi gestor energético y dime cuál fue mi consumo la semana pasada»
  • «Alexa, abre mi gestor energético y dime cuál fue mi consumo desde el 1 de Enero de 2023 al 15 de Mayo de 2023».
  • También puedo ayudar a saber cuál es el electrodoméstico que más gastó en su casa en el último mes, «Alexa, abre mi gestor energético y dime cuál fue el electrodoméstico que más gastó» ó «Alexa, abre mi gestor energético y dime cuál fue el aparato que más gastó».

Como vemos lo realmente interesante es que tenemos toda la información energética sin necesidad de instalar un hardware adicional, pero para ello tenderemos que vincular nuestra cuenta , para lo cual tenemos varias opciones:

1. Desde la app de Clevergy. Descargue la app desde la store de tu móvil, regístrese, acceda a la sección de integraciones de tu perfil y dele al botón Conectar situado junto al icono de Alexa.

2. Una vez instalada la skill desde su app de Alexa, acceda a la configuración de la skill, y pulse sobre la opción «Vincular cuenta». Introduzca sus credenciales de Clevergy, seleccione la dirección de la casa que desea vincular con Alexa y pulse el botón «Enviar».

3. Desde la pantalla de su dispositivo Alexa. Si necesita ayuda sobre alguna información de consumo que requiera la vinculación de su cuenta, en la pantalla de tu dispositivo Alexa, se mostrará un botón «Vincular cuenta». Introduzca sus credenciales de Clevergy, seleccione la dirección de la casa que desea vincular con Alexa y pulsa el botón «Enviar».

Conectar desde la APP

Para usar la función de Clevergy en Alexa, primero necesitamos sincronizar nuestra cuenta de usuario con nuestro perfil de Alexa.

Siga estos pasos para hacerlo:

  • Descargue e instale las aplicaciones de Alexa y Clevergy en su dispositivo. Si ya tiene la aplicación de Alexa, no necesita volverla a instalarla, pero si necesitará en todo caso instalar la app Clevergy desde la Tienda de aplicaciones de su dispositivo ( está disponible esta app tanto para Android como para IoS).
  • Arranque la app desde su dispositivo móvil e inicie sesión o regístrese en la aplicación de Clevergy( en Android basta con entrar desde la cuenta de google asociada al terminal) . Este proceso es muy simple y solo requiere algunos datos básicos para comenzar a usar la app sin restricciones.
  • Obviamente desde la aplicación necesitaremos configurar cual es nuestro domicilio a efectos y otorgarle los permisos adecuados para que Clevergy pueda acceder a nuestros datos de consumo que una vez aceptados podremos verlo desde la app.

  • Una vez que tengamos configurado clevergy con nuestra cuenta y nuestro domicilio , nos vamos a mi perfil –>Integraciones

Lógicamente nos iremos a Alexa y le damos a Conectar, lo cual abrirá la aplicación de Alexa y haga clic en el botón «Más». Luego, seleccione «Skills y juegos». Aquí encontrará la aplicación de Clevergy. Haga clic en ella y aparecerá la opción «Vincular cuenta«.

En este punto, solo necesita ingresar sus credenciales de Clevergy ( puede que necesite , seleccionar la dirección de su domicilio para la vinculación si no lo hizo anteriormente ) y hacer clic en «Enviar».

!Ojo! porque si tiene varios dispositivos con Alexa deberá seleccionar en cual de ellos desea tener disponible esta skill siendo lo ideal al menos configurarlo para que funcione en alguno con pantalla como el Echo Show (esto se hacer desde la app de Alexa).

Una vez que haya completado estos pasos, podrá utilizar comandos de voz en Alexa para obtener la información que necesita sobre su consumo, los precios de la electricidad y mucho mas.

Si hemos recorrido todos los pasos anteriores de manera correcta, a partir de ese momento vamos a poder recibir actualizaciones de nuestro consumo energético con únicamente utilizar comandos de voz. Para ello, podemos accionar todo tipo de comandos como “Alexa, abre mi gestor energético” y nos mostrará la vista general de la app. Pero también podremos ejecutar órdenes sobre un periodo de tiempo en específico, como “Alexa, quiero conocer la cantidad de energía que llevo gastada hoy” o “Cuál fue el consumo realizado durante el mes pasado”. Incluso conocer el consumo por electrodoméstico.

Si accionamos los comandos de voz desde el móvil, la aplicación nos dirá la información que hemos pedido. No obstante, si queremos ver los gráficos y tener un mayor detalle sobre los consumos, deberemos abrir la aplicación de nuestro móvil para poder consultar todos los datos. Con el Echo Show 8, por ejemplo, también poder disfrutar de todas las métricas desde la pantalla, sin necesidad de accionar ningún otro comando.

¿Qué puedo preguntarle a la skill de Clevergy?

  • Alexa, abre mi gestor energético y dime cómo puedo ahorrar en mi factura de la luz.
  • Alexa, abre mi gestor energético y dime cuál es el precio de la luz.
  • Alexa, abre mi gestor energético y dime cuál es mi consumo hoy, ó Alexa, abre mi gestor energético y dime cuál fue mi consumo el mes pasado.
  • Alexa, abre mi gestor energético y dime qué electrodoméstico gasta más en mi casa, ó Alexa, abre mi gestor energético y dime cuál es el aparato que más gastó en mi casa.