3ENGINE

Programación y otros cachivaches

Etiqueta: node.js

Tecnologia

Ubuntu 12.04: Cómo instalar node.js


Te voy a explicar paso a paso como instalar node.js en Ubuntu.

Node.js es un entorno de programación en la capa del servidor basado en el lenguaje de programación Javascript, con I/O de datos en una arquitectura orientada a eventos y basado en el motor Javascript V8

Node.js necesita Python 2.6 o 2.7 para funcionar que Ubuntu tiene instalado por defecto.

Pasos:

1. Instalar el compilador de g++, necesario para hacer el make:

$ sudo aptitude install g++

2. Descargar el .tar con la versión mas reciente de la web de node.js

3. Descomprimir el .tar

4. Ejecutar lo siguiente desde la carpeta donde se ha descomprimido:

$ ./configure
$ sudo make
$ sudo make install

5. Instalar npm (Node Package Manager):

$ sudo aptitude install npm

6. Escribir Hello World con node.js:

$ node -e "console.log('Hello World');"
$ Hello World

 




Tecnologia

node.js, javascript: función para formatear una fecha


Javascript y por lo tanto node.js no proveen de funciones potentes para formatear una fecha. La siguiente función para formatear una fecha quizá os facilite la vida.

/*
parámetro fstr: %Y - año , %m - mes, %d - día, %H - hora, %M - minuto, %S - segundo
parámetro utc: true, calcula la fecha y hora local
*/Date.prototype.format = function(fstr, utc) {
  var that = this;
  utc = utc ? 'getUTC' : 'get';
  return fstr.replace (/%[YmdHMS]/g, function (m) {
    switch (m) {
    case '%Y': return that[utc + 'FullYear'] ();
    case '%m': m = 1 + that[utc + 'Month'] (); break;
    case '%d': m = that[utc + 'Date'] (); break;
    case '%H': m = that[utc + 'Hours'] (); break;
    case '%M': m = that[utc + 'Minutes'] (); break;
    case '%S': m = that[utc + 'Seconds'] (); break;
    default: return m.slice (1); 
    }    
    return ('0' + m).slice (-2);
  });
};

Demo:

a = new Date();
console.log(a.format ("%Y-%m-%d %H:%M:%S", true) );
console.log(a.format ("%d/%m/%Y %H:%M:%S", true));
console.log(a.format ("%d/%m/%Y %H:%M:%S", false));
console.log(a.format ("%m", true) ); 
console.log(a.format ("%d", true) );
2013-05-22 19:40:27
22/05/2013 19:40:27
22/05/2013 21:40:27
05
22



Tecnologia

node.js: codificación correcta de caracteres de un HTTP response


Si en node.js definimos el siguiente callback para dar respuesta a una petición HTTP

var server = http.createServer(function (request, response) {
  response.writeHead(200);
  response.write('el niño es rápido');
  response.end();
});

Esto es lo que obtendremos en nuestro navegador Web:

el niño es rápido

Vemos que el navegador no interpreta bien ni los acentos ni la eñe de la frase. Esto pasa porque estamos incluyendo caracteres que están fueran del rango del código ASCII. El navegador necesita que en la cabecera HTTP le especifiquemos el juego de caracteres correcto. Esto se hace a través del Header HTTP Contec-Type, donde en nuestro caso le indicaremos UTF-8.

Modificamos la función:

var server = http.createServer(function (request, response) {
  res.writeHead(200, {"Content-Type": "text/html;charset=UTF-8"});
  response.write('el niño es rápido');
  response.end();
});

Y ahora el navegador Web interpreta correctamente la respuesta:

el niño es rápido

referencias:
http://nodejs.org/api/http.html
http://howtonode.org/hello-node




Tecnologia

Format y format array en javacript


Javascript, y por lo tanto node.js, no tiene nada parecido a una función format, pero se puede emular facilmente aprovechando el prototipado de javascript:

// Format emulate
String.prototype.format = function () {
  var args = arguments;
  return this.replace(/\{\{|\}\}|\{(\d+)\}/g, function (m, n) {
    if (m == "{{") { return "{"; }
    if (m == "}}") { return "}"; }
    return args[n];
  });
};

Ademas, si necesitas aplicar un format sobre un array puedes hacer esto:

// apply string format to all elements of array and return result
Array.prototype.format=function(prefix)
{
    var result = [];
    this.forEach(function(entry) {
        result.push(prefix.format(entry));
    });
    return result;
};

Ejemplo de uso

console.log("soy el numero {0}".format(1));   
// return soy el numero 1
var misNumeros = [1,2,3];
console.log(misNumeros.format("soy el numero {0}")); 
// return [ 'soy el numero 1', 'soy el numero 2', 'soy el numero 3' ]