Como instalar nodejs en Mac OS X + “hola mundo”.

 

Código

Antes de nada nodejs sería algo así como un interprete de javascript del lado del servidor, no sería del todo un framework ni tampoco un servidor tipo apache. y sí en mi opinión una mezcla de ambos. ¿Que es lo que predica nodejs? “proporcionar una manera fácil para construir programas de red escalables”, en lenguajes como JAVA y/o PHP, cada conexión genera un nuevo hilo con su consumo de memoria correspondiente,  cuanto más usuarios más consumo, escalabilidad y concurrencia son un problema, nodejs resuelve este problema, en lugar de generar un nuevo hilo de OS para cada conexión, cada conexión dispara una ejecución de evento dentro del proceso del motor de nodejs.

En Mac OS X, es bastante sencillo, pero primero tenemos que tener instalado lo siguiente

Una vez tengamos instalado Xcode como git. abrimos nuestra terminal y copiamos los siguientes comandos:
git clone git://github.com/ry/node.git
cd node
./configure
make
sudo make install
Para probar que nodejs ha sido instalado correctamente que mejor que hacer nuestro Hola Mundo en nodejs:
Habrá que crear un archivo javascript con el siguiente código:
var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hola Mundo\n');
}).listen(8124, "127.0.0.1");
console.log('Server running at http://127.0.0.1:8124/');
Guardamos este archivo como hola.js, desde nuestra terminar accedemos a nuestro archivo y lo hacemos funcionar con el comando node delante
node hola.js
Lo único que nos queda es comprobar si nuestro Hola Mundo lo podemos ver en el navegador accediendo através de la url local http://127.0.0.1:8124/

Claves para mejorar nuestro código.

 

Código

Me gustaría compartir algunas de las cosas que tengo en mente cuando desarollo y hacerlo a mi máximo nivel.

  • MVC : modelo vista controlador.
  • DRY : No te repitas.
  • KISS : mantenelo breve y simple.
  • TDD : Programación orientada a tests.

MVC

El patrón y/o arquitecutra MVC (Model, Vista, Controlador), Nos ayuda a separa la parte de datos de una aplicación, de la parte lógica y de la interfaz de usuario. Hoy en día lo adopta cualquier framework de desarrollo, ahora bien aún teniendo un framework con esta arquitectura si nosotros mismos no adoptamos este patrón, podemos terminar haciendo lo que llamamos coloquialmente, una chapuza.

DRY

Dry (Don’t Repeat Yourself), podríamos traducirlo como no te repitas. Es un filosofía de procesos que promueve la no duplicidad del código, creo que cualquier desarrollador lucha con esto, hay otra cosa que se enseña por ahí, dicen que incluso su promotor podría ser la universidad en España, que es que si algo funciona no lo toques, Dry ya no es el hecho de que un código funcione, sino que al no repetirse, sea más fácil de modificar y detectar algún error, en definitiva ahorrar tiempo para poder relacionarnos con otros seres humanos.

KISS

KISS (Keep It Short and Simple) Mantenlo breve y simple o de una manera más dura que personalmente no me desagrada (Keep It Simple, Stupid). Mantenlo simple, estúpido!. En mi opinion esencial en nuestro día a día, personalmente para llevar a cabo esta “sugerencia”, pienso que mi código sin comentarios se tiene que entender perfectamente, y si me da pereza leerlo es que no cumplo con KISS.

TDD

TDD ( Test-driven development) traducido, desarrollo guiado por pruebas. es la práctica de escribir primero los tests, pensar en los casos que deberías probar, incluso antes de empezar a programar nada, crear el test, y después ya si, programar para que el test pase. Tengo que ser sincero esta última clave, es la que más me cuesta, en mi mente está el que estoy perdiendo el tiempo, me auto engaño, puede que sea cierto que “resultados” no sean visibles al principio con tanta velocidad, pero se que los resultados que obtengo son fiables, y esto al final es tiempo que ganas. Así que no se pierde tiempo ( me lo repito a mi mismo).

 

“deldan” Recomienda (28-06-12)

 

Recomienda

Instalar entorno para Tests Unitarios en cakePhp 2 (macosx)

 

cakePhp

Una peculiaridad de cakePhp2, es que Usa PhpUnit para la creación de test, y no viene instalada.

Al usar Mamp como servidor local, era algo complicado la instalación de PhpUnit en un projecto en cakePhp, encontré el siguiente Plugin que nos ayuda: https://github.com/Hyra/PHPUnit-Cake2 Gracías a Stef van den Ham.

Como instalar este vendor:

  1. Descargar el zip y descomprimirla en tu proyecto en la carpeta Plugin o bien ejecutar el siguiente código en tu proyecto “git clone https://github.com/Hyra/PHPUnit-Cake2 app/Plugin/Phpunit”
  2. Ejecutar el siguiente código en tu consola dentro de tu proyecto “cake Phpunit.Phpunit install”, si no tienes configurado en el path cake, puede ayudarte este video , recomendamos que se instale en la opción 1 “app/vendors”.
  3. En tu archivo bootstrap.php añade al final “CakePlugin::loadAll();” para que se carguen todos los plugins o bien “CakePlugin::load(‘Phpunit’);” para cargar solo el plugin phpunit.
  4. Con estos pasos ya tiene instalado el entorno de testing con phpUnit, que funcionará en otros sistemas operativos.

 

 

Sublime Text 2

 

Código, Herramientas

Ya llevo unos meses, con el editor de código Sublime Text 2, y me ha hecho olvidar el resto que he usado (Coda, Espresso, Komodo Edit, Eclipse).

Me gustaría comentar alguno de los plugins que estoy utilizando en Sublime, que recomiendo.

 

Zend Code
Plugin para escribir código Html de una manera rápida y eficaz.
http://code.google.com/p/zen-coding/downloads/list

 

Trailing spaces
Plugin en el que ves espacios en blanco que nos dejamos programando, y eliminarlos.
https://github.com/SublimeText/TrailingSpaces

 

Sublime Linter
Un de las características de este plugin , es localizar error en tu código, si hay algo que no has cerrado …
https://github.com/Kronuz/SublimeLinter

 

Package Control
El primer plugin a instalar, para poder instalar el resto de plugins con gran facilidad.
http://wbond.net/sublime_packages/package_control

Review del libro No Me Hagas Pensar

 

Libros

No me hagas pensar de Steve Krug es un buen libro para desarrolladores, diseñadores, ejecutivos, etc.. sobre usabilidad web.

Es cierto que muchos de los ejemplos en el libro son bastante antiguos, pero lo sorprendente es que a día de hoy son ejemplos válidos.

Es un libro que lleva la usabilidad web al público en general, cualquiera de los que nos dedicamos a la web, con un pelín de esfuerzo podemos llevarlo a acabo y conocer mejor el valor de la usabilidad. Mi problema normalmente no es que  me de cuenta, es que el cliente no me da tiempo para ello, o no quiere pagarlo, quizás es un buen libro para regalar a clientes.

Píldora – Traducción de fechas en cakephp 2.0.

 

cakePhp

Si usamos el Helper Form para construir nuestro formularios, cuando tenemos un campo fecha, los meses no salen en inglés. ¿Como traducir esto?

Primero fijarnos en el Helper Form, como están construidos los textos traducibles

__d('cake', 'January');

Viendo en el código vemos que el archivo que va a buscar las traducciones no es el default.po ( como en otras versiones de cakePhp, sino uno llamado cake.po, habría que crear este archivo con las traducciones de todos los meses o descargar el que tengo hecho.

El último paso para que esto funcione, es configurar el cakePhp para que el idioma definido sea castellano.

Para probar ponemos el siguiente código en el controlador que necesitemos esa traducción.

Configure::write('Config.language', 'spa');

Píldora – Usar paginación con varios modelos en cakephp.

 

cakePhp

A veces en cakePhp nos encontramos con que queremos usar varios modelos en un mismo controlador, y paginar los modelos.
y como es algo que me ha surgido varias veces, y siempre me tengo que para a pensar, lo dejo colgado en el blog, como una pequeña píldora.

Decimos que queremos usar dos modelos.

public $uses = array( 'User', 'Profile');

En lo que siempre fallo es que pongo $this->paginate(); pero si hay varios modelos tengo que decir que modelo quiero paginar, sino por defecto siempre será el primero en la array $uses.

un ejemplo:

public function Profile() {
		$this->Profile->recursive = -1;
		$this->set('profile', $this->paginate('Profile'));
}

Review del libro Diseño ágil con TDD

 

Libros

Me he leido el libro Diseño ágil con TDD. Me ha gustado mucho la primera parte del libro algo más teórica, hablando más sobre porqué usar tests, la segunda parte del libro más práctica para mi fue algo más aburrida ya que tenía experiencia en la creación de tests.

Es un libro recomendado para todos los programadores con un nivel medio /alto, Y que quieran mejorar en sus prácticas de programación.

Puedes encontrar este libro en su web oficial http://www.dirigidoportests.com/el-libro , gratuito en su edición online, también cuenta con una edición impresa.