29 de noviembre de 2011

Hello World Node.js + Express.js

Creando un hola mundo con express.js + node.js.

Instalamos node.js + npm (ya lo vimos aquí)

Instalamos express.js

$ npm install -g express

/home/b3ni/local/bin/express -> /home/b3ni/local/lib/node_modules/express/bin/express
qs@0.4.0 /home/b3ni/local/lib/node_modules/express/node_modules/qs 
mkdirp@0.0.7 /home/b3ni/local/lib/node_modules/express/node_modules/mkdirp 
mime@1.2.4 /home/b3ni/local/lib/node_modules/express/node_modules/mime 
formidable@1.0.8 /home/b3ni/local/lib/node_modules/express/node_modules/connect/node_modules/formidable 
connect@1.8.1 /home/b3ni/local/lib/node_modules/express/node_modules/connect 
express@2.5.1 /home/b3ni/local/lib/node_modules/express 

Creamos carpeta para el proyecto, en mi caso, mi proyecto git + bitbucket (ya lo vimos aquí)

$ cd ~/git/proyecto
$ express

destination is not empty, continue? yes

   create : .
   create : ./package.json
   create : ./app.js
   create : ./public
   create : ./routes
   create : ./routes/index.js
   create : ./views
   create : ./views/layout.jade
   create : ./views/index.jade
   create : ./public/javascripts
   create : ./public/images
   create : ./public/stylesheets
   create : ./public/stylesheets/style.css

   dont forget to install dependencies:
   $ cd . && npm install

Instalamos dependencia si son necesarias.

$ npm install -g express

/home/b3ni/local/bin/express -> /home/b3ni/local/lib/node_modules/express/bin/express
qs@0.4.0 /home/b3ni/local/lib/node_modules/express/node_modules/qs 
mkdirp@0.0.7 /home/b3ni/local/lib/node_modules/express/node_modules/mkdirp 
mime@1.2.4 /home/b3ni/local/lib/node_modules/express/node_modules/mime 
formidable@1.0.8 /home/b3ni/local/lib/node_modules/express/node_modules/connect/node_modules/formidable 
connect@1.8.1 /home/b3ni/local/lib/node_modules/express/node_modules/connect 
express@2.5.1 /home/b3ni/local/lib/node_modules/express

Ya podemos arrancar el server con

$ node app.js
Express server listening on port 3000 in development mode

Vamos a escribir el mensaje Hello World. Para ello miramos la vista que se está renderizando. 

// Routes
app.get('/', routes.index);

En la configuración tenemos:

app.configure(function(){
  app.set('views', __dirname + '/views');
  app.set('view engine', 'jade');
  app.use(express.bodyParser());
  app.use(express.methodOverride());
  app.use(app.router);
  app.use(express.static(__dirname + '/public'));
});

Podemos ver que los ficheros éstaticos se sirven con node.js y están ela carperta /public. Las vistas estás en /views. Editamos el template /views/index.jade y lo cambiamos a nuestro gusto

h1= title
p Hello World


Referencias:
http://expressjs.com/guide.html


15 de noviembre de 2011

MySQL Full Text y longitud de palabras

Si utilizamos índices Full Text en nuestras consultas de Mysql, quizás interese establecer la longitud mínima de palabra al valor que nos interese.

Por defecto este valor se establece a 4. De esta forma, si realizamos búsquedas del tipo:

SELECT * 
FROM products 
WHERE MATCH (title) AGAINST ('+Pad' IN BOOLEAN MODE);

No dará resultados para productos con nombre: "Papyre Pad"

Para establecer el valor de la variable, se debe hacer en el fichero de configuración de Msyql.

$ sudo vi /etc/mysql/conf.d/variables.cnf

[mysqld]
set-variable    = ft_min_word_len=3


$ sudo /etc/init.d/mysql restart

Reparamos las tablas con indices Full Text.

mysql> REPAIR TABLE products QUICK;

Referencias:
http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html
http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_ft_min_word_len

12 de noviembre de 2011

Hola Mundo en Node.js / Ubuntu 11.10

HOWTO para instalar Node.js en Ubuntu 11.10

Instalando node.js

Se instalará node.js en tu carpeta de usuario: ~/local/bin
La versión a instalar será la 0.4.7, para luego poder deployarlo en Heroku

$ sudo apt-get install libssl-dev build-essential g++ curl git

$ mkdir ~/local
$ echo 'export PATH=$HOME/local/bin:$PATH' >> ~/.bashrc
$ source ~/.bashrc
$ export NODE_VERSION='0.4.7'

$ wget http://nodejs.org/dist/node-v$NODE_VERSION.tar.gz
$ tar xvfz node-v$NODE_VERSION.tar.gz
$ cd node-v$NODE_VERSION
$ ./configure --prefix=~/local --without-ssl
$ make install
$ cd ~

Instalando npm

Npm es el gestor de paquetes de node.js.

$ curl http://npmjs.org/install.sh | sh

Probando

Creamos el fichero test.js con el contenido.


var http = require('http');


http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(1337, "127.0.0.1");


console.log('Server running at http://127.0.0.1:1337/');

Ejecutamos...


$ node test.js 
Server running at http://127.0.0.1:1337/


Referencias:

Update

Para instalar la última versión actual de node (v0.6.3), sustituimos:

$ export NODE_VERSION='0.4.7'


por 


$ export NODE_VERSION='0.6.3'


y


$ wget http://nodejs.org/dist/node-v$NODE_VERSION.tar.gz


por


$ wget http://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION.tar.gz

Git Repository bitbucket.org Ubuntu 11.10 / Eclipse

Preparando el sistema y configuraciones varias

Vamos a clonar un proyecto Git de https://bitbucket.org.

Necesitamos subir nuestra clave pública a bitbucket. En la siguiente dirección indican como crearla y subirla.

Si no tenemos clave pública en /home/b3ni/.ssh/id_rsa.pub la crearemos de forma normal con (email de tu cuenta bitbucket):


ssh-keygen -t rsa -C "your_email@youremail.com"


Subimos el fichero id_rsa.pub generado en el perfil de usuario de bitbucket.



En la opción SSH Keys



Clonamos el repositorio en nuestra máquina.

$ git clone git@bitbucket.org:b3ni/REPO.git

Si nos da un error de autenticación del estilo.

Permission denied (publickey).

Añadimos nuestra key al sistema (por si no lo estaba antes), con la orden:

$ ssh-add

Clonando en Eclipse

De forma similar a como instalamos el plugin para Mercurial. Nos vamos al Eclipse MarketPlace he instalamos EGit - Git Team Provider (http://marketplace.eclipse.org/content/egit-git-team-provider)

Añadimos la perspectiva de Git.


Una forma cómoda de clonarlo, es copiando la url anterior (git@bitbucket.org:b3ni/REPO.git) al portapapeles y pegarla en la ventana de repositorios.


Indicamos el protocolo, ssh y siguiente. Más adelante seleccionamos en que directorio se va a clonar, en mi caso dentro de mi workspace.


Ahora creamos un proyecto para trabajar en Eclipse. Hacemos click derecho sobre la copia de trabajo importada y le damos a Import Project...



En la vista de proyectos de Eclipse creamos un fichero y hacemos Team > Commit para añadirlo al repositorio local.


Si nos pide identificación, poner tu mail de tu ssh / bitbucket.


A continuación enviamos los cambios al master. Con Team > Push To Upstream. Si nos vamos a la vista web de bitbucket, ya tenemos nuestro fichero subido.


Fin.