Angel "Java" Lopez

NET, Java, PHP y Desarrollo de Software

This Blog

Syndication

Search

Tags

Community

Email Notifications

Archives

.NET

ASP.NET

Windows Form

VB.NET

C#

Sitios

Blogs

Jugando con Node.js, Ubuntu, Sqlite3 y node-Sqlite

Hace unos días, estuve jugando con Node.Js, la librería Javascript que puede ser usada para crear aplicaciones web en el servidor. Como puede ser complicado instalarlo en Windows, lo instalé directamente en Ubuntu. Me bajé el código de:

http://nodejs.org/#download

Expandí el archivo, y pasé al directorio que quedó creado. Ahí ejecuté los pasos:

./configure
make
sudo make install

(Noten que es diferente de lo que indica una de mis fuentes consultadas Learning Server-Side Javascript with Node.js: agregué el .configure, nacido hace décadas debido a la necesidad de detectar en qué sistema se va a ejecutar el make; recuerdo aquellos tiempos donde sólo había make ;-)

Hecho esto, instalé Sqlite3 en mi Ubuntu (no Sqlite, sino la versión 3):

sudo apt-get install sqlite3

En un directorio de trabajo para este proyecto, ejecuté:

sqlite3 test.db

Esta es una línea de comando (no hay servidor que se esté ejecutando; va directamente al archivo recién creado como test.db (si existe, usa el existente)). Luego, ingresé:

create table customers(id int, name varchar(30), address varchar(30));
insert into customers(id, name, address) values (1, ‘Customer 1’, ‘Address 1’);
insert into customers(id, name, address) values (2, ‘Customer 2’, ‘Address 2’);
insert into customers(id, name, address) values (3, ‘Customer 3’, ‘Address 3’);

Mi creatividad para los datos de test es proverbial ;-)

Hay una lista de módulos para Node.js:

https://github.com/ry/node/wiki/modules

Quería usar el módulo de node.js llamado express, lo bajé desde Express. Lo expandí bajo mi directorio de trabajo, con nombre express (podría haberlo puesto en otro lado, y comenzar a probar la variable de entorno NODE_PATH, para que las referencias a ese módulo se resolvieran desde cualquier parte). En el directorio recién creado express, ejecuté:

./install.sh

Luego, descargué el código de node-sqlite, desde grumdig github. (Tengo que probar otra implementación: http://github.com/orlandov/node-sqlite, que tiene llamadas asincrónicas.).

Expandí lo bajado en un subdirectorio de mi directorio de trabajo, pasé a ese directorio, e intenté las instrucciones de instalación:

node-waf configure
node-waf build

Pero la segunda falló. El build del binding de c++ a Sqlite3 requiere el código fuente de Sqlite3 (no vi indicado en ningún lado eso, pero es así). Así que investigué un poco, y ejecuté:

sudo apt-get install libsqlite3-dev

volví a intentar la instalación de node-sqlite, y funcionó.

Nota, si no tienen un compilador c++, como puede pasar en un Ubunto de uso, no de desarrollo, tendran que traerlo con un sudo apt-get g++, por ejemplo. Hay varios compiladores c++ para elegir.

Luego de escribir unos ejemplos de prueba, escribí una aplicación simple (noten que los require se refieren a mi directorio de trabajo):

/**
 * Module dependencies.
 */
var express = require('./express/lib/express');
var sqlite = require("./node-sqlite/sqlite");
var sys = require('sys');
/*
 * Open the database
 */
var db = sqlite.openDatabaseSync("test.db");
/*
 * Creates the web server
 */
var app = express.createServer();
app.get('/', function(req, res){
  res.send('Hello World');
});
app.get('/customers', function(req, res){
  res.writeHead(200, { 'Content-Type': 'text/html' });
  db.query("SELECT id, name, address from customers", function (records) {
    res.write('<h1>Customers</h1>\n');
    res.write('<table>\n');
    for (var i = 0; i < records.length; i++) {
        res.write('<tr>\n');
        res.write('<td>' + records[i].id + '</td>\n');
        res.write('<td>' + records[i].name + '</td>\n');
        res.write('<td>' + records[i].address + '</td>\n');
        res.write('</tr>');
    }
    res.write('</table>\n');
    res.end();
  });
}); 
/*
 * Start web server
 */
app.listen(3000);

Ejecutando la aplicación, la página http://localhost:3000/customers resultó:

Bueno, no será “qué bruto, qué aplicación!” ;-) ;-) pero espero que les sirva por si tienen que pasar por todos estos pasos.

Como siempre, colecciono enlaces. Mis enlaces sobre Node.Js:

http://delicious.com/ajlopez/nodejs

Mi plan: implementar un servidor web en AjSharp, mínima sombra de Node.js; seguir con Node.js con páginas CRUD de una tabla; probar el otro node-sqlite3 con llamadas asincrónicas; generar código para todo esto.

Nos leemos!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

Published Fri, Feb 4 2011 10:44 by lopez

Filed under: , , ,

Comments

# re: Jugando con Node.js, Ubuntu, Sqlite3 y node-Sqlite@ Friday, February 04, 2011 6:26 AM

La forma mas simple de instalar módulos en node es usando npm (https://github.com/isaacs/npm), si se meten de lleno en el desarrollo con node, les recomiendo nave (https://github.com/isaacs/nave) que es un versión manager como el rvm de Ruby pero para node, por ultimo hay un libro escrito de forma colaborativa sobre node (visionmedia.github.com/masteringnode) toca todo lo basico para empezar y algunas cosas avanzadas como frameworks y deployment.

paulo

# Jugando con NodeJs (1) En Windows (y en Azure)@ Friday, September 02, 2011 5:46 AM

Hasta unas semanas atrás, la única forma de ejecutar NodeJs en Windows era bajar el código desde el repositorio

Angel "Java" Lopez

# re: Jugando con Node.js, Ubuntu, Sqlite3 y node-Sqlite@ Friday, September 07, 2012 4:20 PM

Bien explicado. Me gustó.

Gracias

eduardo

Leave a Comment

(required) 
(required) 
(optional)
(required) 
If you can't read this number refresh your screen
Enter the numbers above: