Publica tu how-to

Dinos como hacer lo que sabes hacer, mándanos un email a wdonet@gmail.com y lo publicamos (dos días máximo) o si te interesa unirte al equipo de redactores, también háznoslo saber por correo.

Como subir un proyecto con GIT a GitHub

Para subir un proyecto a gitHub no hay mas que seguir los mismos tutoriales que te proveen pero a resumidas cuentas tienes que hacer lo siguiente:

1.- Crear una cuenta en GitHub

 Tienes que ir a la liga : https://github.com/plans y darle en el botón de Create a free Account, una cuenta libre te permite tener tantos repositorios públicos y colaboradores públicos como quieras, pero ninguno privado, si quieres esto, tienes que pagar.

Este paso es muy rápido y obvio, después de ingresar tus datos recibirás un mail de confirmación y listo, regresas a la página para entrar a tu cuenta.

2.- Instalar Git en tu equipo 

En windows puedes descargar una versión de Git desde : http://code.google.com/p/msysgit/, pero para los que usamos linux Mint y similares a Ubuntu lo que tienes que hacer es:

sudo apt-get install git git-core git-gui git-doc
(lo que está en negritas es lo esencial, lo demás son agregados y puedes no indicarlos)

luego debes crear la configuración global de git para que se puede rastrear los cambios que tu haces y diferenciarlos con respecto a los demás integrantes del proyecto.

git config --global user.name "Nombres Apellidos"
git config --global user.mail "tunick@gmail.com"


Creacion de un proyecto base con Grails 2.0.3

Vamos a crear un proyecto web base para una aplicación que podría usar un kinder considerando solo poder hacer Altas Bajas y Cambios (ABC) de dos entidades Tutores y Alumnos.  Yo trabajaré en un Linux Mint, las instrucciones en consola son similares en cualquier distribución derivada de Debian o Ubuntu, para windows solo cambiarían las carpetas y las variables de entorno.

Empecemos instalando Grails.

Necesitamos tener instalado java y haber definido nuestra variable de entorno JAVA_HOME.
  1. Descargar grails
  2. Descomprimir ZIP en una carpeta (la mia será /opt )
  3. Crear las variables de entorno GRAILS_HOME y JAVA_HOME (si no existe)
export GRAILS_HOME=/opt/grails-2.0.3
export PATH=$PATH:/opt/grails-2.0.3/bin


Para comprobar que nuestra instalación está completa debemos ejecutar el comando grails para obtener la versión.  En algunos sistemas como el mío se requiere reiniciar la sesión de usuario para que se apliquen los cambios en las variables de entorno.

$ grails -version
Grails version: 2.0.3


Ahora creamos nuestra aplicación, se genera una carpeta con el nombre de la aplicación, ingresamos a dicha carpeta y luego abrimos la consola de grails.

$ grails create-app kinder
| Created Grails Application at /home/wdonet/branches/grails/kinder
$ cd kinder/
$ ls
application.properties  grails-app  lib  scripts  src  test  web-app
$ grails
| Downloading: plugins-list.xml
grails> help

Podemos usar el comando help para ver todos los comandos que tenemos disponibles en la consola de grails, incluso puedes obtener ayuda de un comando en especifico escribiendo por ejemplo : help create-appPero toma nota que la consola de grails es una forma para jugar con el ambiente de tu proyecto, si quieres ejecutar tu aplicación es mejor usar el comando grails (fuera de la consola).

Clases embebidas en Grails

En Grails se pueden mapear clases a entidades simplemente ubicándolas en un paquete dentro de la carpeta /grails-app/domain como se muestra abajo.  Mapeando la clase y atributos a una tabla y columnas con un mismo nombre si no se le especifica otra cosa con la propiedad mapping.

import mx.com.proyecto
class Tutor {
    String nombres
    String paterno
    String materno
    Integer edad
    static constraints = {
        nombres maxSize: 150, nullable: false, blank: false
        paterno maxSize: 80, nullable: false, blank: false
        materno maxSize: 80, nullable: true, blank: false
    }
}

Pero quizá nos interese tener nuestra entidad un poco mas amigable y legible agrupando los tres elementos nombres, paterno y materno dentro de un mismo POJO y seguirla mapeando a las mismas columnas de una sola tabla.

La regla de oro está en definir el POJO en el mismo archivo Tutor.groovy o en un archivo separado pero dentro de la carpeta /src/groovy/ (Nombre.groovy).

Introducción a MongoDB


Me metí un poco a ver como funcionaba CouchDB pero entre revisiones y vistas rápidas a referencias aquí y allá llegue a MongoDB, ambas son alternativas No-SQL (termino que empezó a agarrar fama desde 2009) y que su almacenamiento de datos está orientado a documentos JSON y BSON (Bynary JSON) para ofrecer sistemas flexibles, rápidos, ligeros, potentes y fáciles de usar.

Según Eliot Horowitz, 10gen CTO y co-fundador de mongoDB, prácticamente podrías tomar una base de datos hecha en MySQL, cambias el modelo relacional a uno basado en documentos y obtendrías varias mejoras como:
  1. Documentos embebidos para mejorar la velocidad
    1. El uso de json es más amigables con objetos en lenguajes de programación
    2. El meter documentos embebidos y arreglos reduce la necesidad de hacer joins
  2. Manejabilidad
  3. Desarrollo ágil con base de datos sin esquemas
    1. Al usar JSON/BSON es fácil de codificar y administrar
  4. Escalabilidad horizontal más facil
    1. Es una solución para sistemas que requieren escalar horizontalmente sobre varios servidores.
    2. La funcionalidad de autosharding permite escalar tu cluster agregando mas equipos sin necesidad de dar de baja el servicio.

En realidad no estamos quitando todo el trabajo que ya se ha hecho con las bases de datos relacionales porque en muchas cosas como la creación de indices, llaves primarias, consultas dinámicas y actualizaciones, por mencionar algunas,  se tiene que hacer los mismo, salvo que se busca tener las ventajas arriba descritas.

La gente de apache que desarrolla CouchDB mencionan que los esquemas relacionales funcionarán en algunos casos mientras que los esquemas no-SQL funcionarán en otros.