Node (2009)

Es un entorno de ejecución de JavaScript fuera del navegador. Sin transpiladores, scraping, automatización...

Todo lo que no sea sintaxis de programación van a ser modulos. Por lo que se podría decir que está centrado en módulos así como también está orientado a eventos. Ejecuta JavaScript así que es monohilo con entradas y salidas asincronas.

EventLoop: Asíncrona por diseño

Event Queue: Contiene todos los eventos que se generan por nuestro código (Funciones, peticiones, etc.), estos eventos quedan en una cola que van pasando uno a uno al Event Loop.

Event Loop: Se encarga de resolver los eventos ultra rápidos que llegan desde el Event Queue. En caso de no poder resolverse rápido, enviá el evento al Thread Pool.

Thread Pool: Se encarga de gestionar los eventos de forma asíncrona. Una vez terminado lo devuelve al Event Loop. El Event Loop verá si lo pasa a Event Queue o no.

Monohilo: Implicaciones en diseño y seguridad.

El hecho de que sea monohilo lo hace delicado en el sentido de que puede ejecutarse algo que corte el código y detenga el programa, como la ausencia de sintaxis o una variable pendiente por definir.

Aquí se pueden ver los problemas de seguridad y los Updates en este tema. Muy interesante leerlo para entender cómo atacan y saltan el código y cómo lo resolvieron.

Así que así se presentaría una de las principales implicaciones al estar haciendo un programa en Node. Si no se manejan bien los errores y uno falla, ya no continua con los procesos posteriores por lo que debes estar pendiente de todo el código y evitar estas situaciones.

Variables de entorno

El código no debería guardar ningún tipo de credenciales o valores destinados a cambiar. Para esto tenemos las variables de entorno.

Podemos acceder a nuestras variables a través de process. Usando algo como process.env.NOMBRE;

Si no tenemos ninguna variable podemos definir un mensaje por defecto.

Untitled

Para ingresar las variables con PowerShell primero hay que definirlas escribiendo:

$env:NOMBRE="Carlos"

Fuera de PowerShell en terminales UNIX podemos simplemente declararlas de la siguiente manera