jueves, octubre 29, 2009

DevLab: Introducción a Sinatra

A raíz de mi plática sobre Sinatra en el pasado CodeCamp/SHDH Tijuana 09, he decidido iniciar una serie de Videocasts sobre el desarrollo de aplicaciones Web con Sinatra, siendo este el primero de esta saga.

Sinatra es un DSL o un lenguaje de dominio específico para Ruby, el cual permite desarrollar aplicaciones Web cuya complejidad y tamaño no es tan grande como para usar algún framework de gran calada, por ejemplo Ruby on Rails.

Sin lugar a dudas Sinatra esta enfocado 100% a la simplicidad y por lo tanto es posible entregar aplicaciones completas en un muy corto tiempo.

require 'rubygems'
require 'sinatra'
get '/hi' do
"Hello World!"
end

Si se quiere seguir paso a paso el Videocast y no se cuenta con Ruby instalado, pueden consultar el post de Como instalar Ruby, el cual tiene instrucciones para Windows, Linux y OSX.

Para instalara Sinatra es tan simple como ejecutar:

gem install sinatra

En el caso de Linux y OSX es requerido ejecutar este comando bajo sudo.

Adicional a Sinatra hay que instalar las siguientes gemas de DataMapper:

gem install dm-core
gem install dm-serializer

Aquí dejo el video no sin antes listar un par de recursos para Sinatra.
- Documentación de Sinatra
- Sinatra, libro en línea


Como instalar Ruby

Ruby es un lenguaje dinámico opensource, enfocado a la simplicidad y productividad. Su sintaxis esta diseñada para la lectura y escritura de código de lo mas natural, Ruby es un lenguaje de programacion para humanos.

La popularidad actual de Ruby se debe principalmente al ambiente de desarrollo Web Ruby On Rails, pero Ruby en realidad tiene un mundo más amplio de posibilidades.

Ruby ha sido portado a Java en en version de JRuby y a .NET en forma de IronRuby.

Es posible ejecutar aplicaciones de Ruby en Windows, Linux y OSX. La instalacion de Ruby en todos estos ambientes es muy simple:
- Para Windows solo basta con descargar el instalador de "One Click" y ejecutarlo
- Para Linux, por ejemplo que tenga sus repositorios en APT solo basta con ejecutar

sudo apt-get install ruby irb rdoc

- Para OSX con instalar las herramientas de desarrollo XCode para tener Ruby

Finalmente Ruby cuenta con RubyGems, el cual es una herramienta para crear un ecosistema de librerías y addins para Ruby; estas gemas de Ruby generalmente se descargan de un repositorio publico como Gemcutter, en donde en una búsqueda rápida nos podemos dar cuenta que hay gemas para casi todo lo que necesitemos en Ruby.

Para instalar una gema, es tan sencillo como ejecutar
gem install <nombre de la gema>

Ya para terminar aquí dejo un par de recursos para conocer Ruby
- Ruby en 20 minutos
- Documentación de Ruby


martes, octubre 27, 2009

CodeCamp/SHDH Tijuana 2009

DarleneLuquín CateringEl pasado sábado 24 se llevo a cabo el denominado CodeCamp/SHDH Tijuana 09, el cual tuvo mas de CodeCamp que de SHDH en esta primera edición. El lugar fue el auditorio del Cesun Universidad campus Morelos.

El espacio fue muy bueno, amplio, muy iluminado y en excelentes condiciones, gracias @danmazter que nos ayudo a conseguir el lugar, aparte de ofrecerlo para próximos eventos.

En total durante el día asistimos poco mas de 20 personas, tanto desarrolladores como diseñadores, profesionistas y estudiantes, con una buena convivencia. Fue interesante ver en este tipo de eventos a gente de la Comunidad Tijuana.NET y el Grupo de Usuario Linux de Tijuana sentados lado a lado platicando, mientras se discutían temas sobre desarrollo.

La primera platica me toco a mi, y fue sobre Sinatra, un micro framework para el desarrollo de aplicaciones Web en el lenguaje Ruby, tuve la oportunidad de dar una introducción a como Sinatra funciona, posteriormente mostré una pequeña aplicación para el registro de tiempos en tareas y finalmente platique sobre www.crucegaritas.info

Enseguida @mhcornejo dio su platica sobre TDD con C#, hablando un poco sobre Inversión de Control (IoC) y objetos mocks para aislar el código bajo prueba de otras dependencias que no importaban en las pruebas.

Después de la platica de @mhcornejo llego @darleneluquin quien se ofreció a patrocinar comida para los asistentes, la cual consistió en una pasta fría estilo meditarraneo, muy rica por cierto, gracias a su servicio de banquetes www.darleluquin.com por alimentar un grupo de hambrientos geeks que se dieron cita, por ahí pude ver a mas de uno haciendo fila un par de ocasiones para degustar de la comida.

Después de la agradable comida, le toco el turno a @alvarezp2000, el platicar sobre GIT, el sistema de control de versiones de código fuente del kernel de Linux, su platica-taller puso a Windowceros y Linuxeros trabajar un repositorio GIT, y aunque tuvo por ahí algún contratiempo - el cual explica en su blog - todo salió muy bien al final.

Finalmente @fcastellanos nos platico sobre Inyección de Dependencias con Ninject y C#, fue curioso asomarse a las laps de algunos de los presentes mientras seguían a las instrucciones de @fcastelanos en MonoDevelop bajo Linux. En los fragmentos de código que @fcastellanos manejo fue también curioso como los traía "On The Cloud", ya que los copiaba de servicio pastie.org.

Al final le preguntaron que cual era el motivo de preferir Ninject sobre otros frameworks similares y comentó que entró a las páginas de los otros frameworks y que no le habían gustado los logos, en cambio del sitio de Ninject le gustó los gráficos de ninjas y eso lo convenció para elegir ese framework.

Como mencione al principio, fue mas CodeCamp que SHDH y no esta del todo mal para ser el primer intento, afortunadamente como mencione también al principio se logro reunir gente con diferentes intereses en el área de desarrollo y diferentes perfiles.

Ahora el reto es poder llevar a cabo el siguiente mes un SHDH con la opción de CodeCamp - afortunadamente el espacio, si es que nos lo vuelve a prestar el Cesun, es lo suficientemente grande - pero de preferencia apuntarse con una idea de proyecto y llegar al lugar buscando ayuda para poder desarrollarla.

Espero que los asistentes se hayan quedado con las ganas de participar en otro evento mas y podamos reunirnos para poder "echar a volar" algún proyecto.

Por cierto para los asistentes, @josebasurto creo una pequeña encuesta, por favor sean amables de llenarla.

@stanmx publico un post en relación al evento y en flick @josebasurto y @mario_chavez publicamos nuestras fotos de ese día, espero que los demás que tomaron fotos también nos ayuden subiendolas a flickr.