Archive for the ‘Grails’ Category

Taller de Grails en Madrid On Rails

Wednesday, March 9th, 2011

Supongo que algunos ya lo sabréis, este Viernes 11 de marzo a partir de las 16:00 voy a impartir un taller de Grails que ha organizado primerViernes.

El taller durará 4 horas, tiene un coste de 100€ y lo llevaremos a cabo en las instalaciones de Madrid On Rails.

El taller está enfocado a gente que ya conoce el framework y quiere acelerar su aprendizaje. En el taller veremos ejemplos en código y trabajaremos sobre distintos tipos de caché, plugins propios y de terceros, sistemas de colas… vamos, que NO va a ser introductorio.

¿Que aún no conoces primerViernes?

primerViernes es un grupo organizado para el lanzamiento de proyectos en Internet que se basa en la idea de “más hacer y menos hablar”.

Logo de Primer Viernes

Con esa declaración de intenciones, ya supondréis que soy simpatizante de este grupo que se concentra en Madrid, y con el que vemos un espíritu muy similar al que nos ha empujado a mover la iniciativa CachiruloValley en Aragón.

Además, habiendo estado en uno de los primerViernes, tengo la sensación que del grupo saldrán algunas empresas interneteras que van a dar guerra :)

Un repaso del Spring I/O 2011

Monday, February 28th, 2011

Ya hace casi un par de semanas que se celebró el Spring I/O 2011, y algunos ya han escrito sobre ello.

Iba a hacer un resumen completo del evento, pero visto que otros ya han hecho muy buenos resúmenes y que me he enfriado sólo destacaré lo que me resultó más interesante de las charlas y talleres que pude asistir. Estaba muy difícil elegir entre los 3 tracks, se veía que iba a haber nivel… a ver si este año suben los videos para ver charlas que me perdí de las que me hablaron muy bien.

- Lo que más me gustó:

De cero a multinacional con Grails y EC2, de Jorge Uriarte y Eloy García-Borreguero. Siempre es interesante ver como otra gente soluciona sus problemas y más cuando usan un framework que tú mismo usas, en cierto modo me recordó un poco a nuestra charla de jobsket del año pasado. No por el contenido ni por el producto, si no por ver un caso real y que el caso fuera un negocio en internet.

Conociendo Griffon a fondo, de Andrés Almiray. La verdad que no le había prestado demasiada atención a griffon por que estoy bastante alejado de las aplicaciones de escritorio desde que me pagan por programar :P . Pero vi que era una buena oportunidad de aprender un poco de la mano de Andrés(entre otras muchas cosas, uno de los fundadores de griffon), ya que posiblemente desarrolle en el futuro un pequeño proyecto de escritorio y quería conocer que me ofrecía el framework. Como mínimo debería hacer un hola mundo :)

Aplicaciones web ultraescalables con Redis de Alberto Gimeno. No es colegeo(que podría serlo :P ), ya sabía por donde iban a ir los tiros de su presentación porque fuimos hablando sobre el evento desde días antes, y precisamente fui porque sabía de antemano que iba a resultar interesante. No decepcionó, asistió mucha gente y fue la charla en la que más gente vi preguntar; les descubrió a mucha gente una alternativa a las típicas bases de datos relacionales.

Tuning your Grails applications, de Peter Ledbrook. Que sin descubrir grandes cosas, hizo un interesante repaso a las buenas prácticas que deberíamos utilizar en el desarrollo web para que nuestras webs sean más rápidas(empezando por evitar optimizaciones prematuras :) ), y algunas formas de hacerlo con Grails.

Esto fue lo que más me gustó, otras cosas que me resultaron muy interesantes fueron las keynotes de Juergen Holler y Graeme Rocher, la charla de pruebas de Aitor Alzola, el taller de Geb con Fátima Casaú

Por otro lado, el primer día hice de facilitador(que dicen los agilistas :P ) de un taller de groovy koans. Vamos, que hice una pequeña introducción-presentación de que son los koans, la gente se puso a programar y yo echaba una mano a quien me pidiera ayuda o tuviera alguna duda.

Esta fue la mini presentación que preparé:

Los koans recortados que hicimos en el taller están en github.

Personalmente me gustó mucho el evento, se notó que se aprovechó el rodaje y experiencia de los eventos de México DF y de Madrid y que habían más medios que el año pasado. También un WIN montar fiesta la primera noche para que la gente se relacionara distendidamente tras el duro día :)

Al final lo mejor, como siempre, es reencontrarte con amiguetes y conocidos; desvirtualizar o conocer gente nueva. Si al final lo bueno siempre está en el cara a cara :)

Nos vemos en otra ;)

Autentificación HTTP con Grails

Friday, February 11th, 2011

Todo el mundo en algún momento ha necesitado implementar autentificación HTTP en una aplicación o página web(o no :D ).

Con grails me ha vuelto a tocar hacerlo, por medio de un filtro para que fuera muy fácil de poner o quitar. El código queda como algo así:


class AuthFilters {
 def USERNAME = "user"
 def PASSWORD = "pass"

 static filters = {
  httpAuth(uri:"/**") {
   before = {
   def authHeader = request.getHeader('Authorization')
   if (authHeader) {
    def usernamePassword = new String(authHeader.split(' ')[1].decodeBase64())
    if (usernamePassword == "$USERNAME:$PASSWORD") {
     return true
    }
   }
   response.setHeader('WWW-Authenticate', 'basic realm="myRealm"')
   response.sendError(response.SC_UNAUTHORIZED)
   return false
   }
  }
 }
}

¿Hace falta explicar algo? :P

Jobsket.com, Grails en un proyecto real

Sunday, July 25th, 2010

Dejo por aquí mi presentación del sábado.

A ver si en estos días saco algo de tiempo y escribo sobre que tal estuvo la Lan Party

Nos vemos en la Tenerife Lan Party 2010

Monday, July 19th, 2010

El sábado 24 a las 12:00 de la mañana, daré una charla en la Tenerife Lan Party 2010: Jobsket.com, Grails en un proyecto real.

La charla será una explicación de qué es Grails y cómo lo usamos en Jobsket, una startup pequeñita con unos recursos muuuucho menores que otras empresas, y como nos ayuda a ser una de las compañías más innovadoras tecnológicamente en el sector de empleo en internet.

TLP 2k10

También hay otras actividades muy interesantes para desarrolladores en el programa. Aunque yo voy a destacar las relacionadas con la gente de Agile-Canarias, el viernes por la mañana a las 10:00 Yeray Darias y Fran Reyes impartirán un taller de Integración continua, y seguidamente a las 12:00 Carlos Blé organiza un Code Retreat.

grails.sh, trabaja fácilmente con distintas versiones de Grails

Thursday, July 15th, 2010

Leyendo la lista de correo de grails, me encuentro un pequeño script, que al menos a mi me parece muy útil para los que a veces andamos cambiando entre varias versiones de grails: grails.sh.

  • En el directorio de un proyecto ejecuta la versión del mismo proyecto.
  • Desde otros directorios se ejecutará la versión de grails que tengamos por defecto en GRAILS_HOME.
  • Y para utilizar una versión concreta, simplemente se lo debemos pasar como parámetro.

Sencillo y cumple su función. Al parecer funciona perfectamente en Mac, Linux y Windows con cygwin. Y para los despistados como yo, recordad darle permisos de ejecución al script :P

Usando Cucumber con Grails

Monday, July 12th, 2010

Desde que trabajé hace algo más de un año con los cracks de Linking Paths y Rails que no tocaba Cucumber, hasta este fin de semana, que he estado haciendo algunas pruebas con el plugin grails-cucumber. Cucumber es una herramienta para hacer tests de aceptación(a la Behaviour Driven Development) escrita en Ruby que ayuda a bajar la barrera que separa a la gente de negocio o de testing(hay una leyenda urbana que dice que existen XD) con los programadores, utilizando un DSL de por medio.

Por un lado gracias a la JVM y JRuby podíamos aprovecharnos de esta interesante herramienta utilizando Ruby, y por otro, hace cosa de un año y algo que se han ido añadiendo soporte a otros lenguajes de la JVM con el proyecto cuke4duke. A día de hoy, también podemos escribir los tests con Java, Groovy, Scala, Clojure, Javascript y Ioke; cada uno que elija el lenguaje que más le guste :) . Y siguiendo con la recapitulación, a principios de primavera surgió el plugin para grails y desde entonces que tenía pendiente probarlo, pero por falta de tiempo unas veces o simplemente no acordarme otras, lo había ido retrasando :P .

En fin, pues después de encontrarme varios problemas para instalar y hacer funcionar el plugin, preferí hacer un fork para modificar el código bajo mis necesidades y luego hacer un pull request en github para que se pudieran aprovechar los cambios. Arreglé un problemilla con el script Gant de ejecución de cucumber con mi versión de grails(1.2.2), aproveché a actualizar las depenencias con jruby y cuke4duke a las últimas versiones y eliminé la dependencia con picocontainer.

Tras estos pasos me puse a escribir una feature como esta:


Feature: Search job offers
  Scenario: Search job offers in zaragoza, we should have results
    Given I'm at jobsket.es
    And I write zaragoza into the seachbox
    When I submit the form
    Then the result should contains Promotora
    And the result should contains zaragoza

Supongo que a los que conozcáis otras herramientas de BDD os resultará familiar o imaginaréis por donde van los tiros del significado de este DSL(pre-condiciones, proceso, post-condiciones). Pero como supongo que a algunos les resultará útil, ahí va una mini-explicación con mis palabras :P

Feature: Es la funcionalidad que vamos a testear, en este caso la búsqueda de ofertas de empleo en jobsket.
Scenario: El escenario vendría a ser una historia de usario de la funcionalidad, esto quiere decir que cada scenario sería probar una funcionalidad en un contexto distinto.
Given: El estado inicial del escenario, se pueden concatenar varios con And’s.
When: El proceso que queremos probar, también se pueden concatenar varios usando And’s… pero de inicio no tiene sentido, deberíamos probar sólo una cosa en cada escenario.
Then: Las comprobaciones para saber si el escenario se está ejecutando correctamente o no.

Bueno, una vez escritos los pasos de la feature, nos queda escribir los steps para que se ejecute el test del escenario. Como en nuestro caso queremos aplicar el test de aceptación a una interfaz web, utilizaremos el archi-conocido Selenium. El código en Groovy quedaría algo parecido a esto:


import org.openqa.selenium.By
import org.openqa.selenium.WebDriver
import org.openqa.selenium.WebElement
import org.openqa.selenium.htmlunit.HtmlUnitDriver
import static groovy.util.GroovyTestCase.*
this.metaClass.mixin(cuke4duke.GroovyDsl)

WebDriver driver
WebElement element
Before() {
 driver = new HtmlUnitDriver()
}
Given(~"I'm at jobsket.es") {
 driver.get("http://www.jobsket.es/home")
}
Given(~"I write (\\w+) into the seachbox") {keywords ->
 element = driver.findElement(By.id("keywords"))
 element.sendKeys(keywords)
}
When(~"I submit the form"){
 element.submit()
}
Then(~"the result should contains (\\w+)") { someContent ->
 assertFalse(-1 == driver.getPageSource().indexOf(someContent))
}

Si os fijáis, lo único raro es this.metaClass.mixin(cuke4duke.GroovyDsl), que hace la “magia” para que funcione el DSL. Los Given, When y Then se ejecutarán cuando coincida una cadena de las features, internamente funcina mediante expresiones regulares. El Before() se ejecuta antes de cada escenario, y para ser re-utilizable entre features distintas debería estar en el directorio support. El resto del código no deja de ser de selenium/webdriver normal y corriente, además de usar GroovyTest(basado en JUnit) para comprobar que se cumplen las post-condiciones.

Hasta aquí no hay diferencias con utilizar cuke4duke con Groovy sin Grails. Lo que aporta el plugin de grails es que ayuda a olvidarse de instalar jruby y la gema de cuke4duke, lo integra como herramienta de línea de comandos(ejecutando grails cucumber) y entonces tampoco es necesario configurar nada nuevo en el servidor de integracion contínua para ejecutar estos tests.

En mi opinión, todavía está lejos de la integración de Cucumber con Rails, al menos por lo que yo recuerdo. Con Rails tras cada escenario se devuelve la base de datos al mismo estado inicial, es posibl combinar comprobaciones a nivel de interfaz y a la vez acceder a los métodos de los modelos para preparar o comprobar el escenario… vamos, que ayuda a que puedan ser tests menos frágiles, que es lo negativo que se suele ver en los test de aceptación(también llamados funcionales o de sistema).

De todas formas, sigue siendo un plugin muy interesante por poder conocer en un lenguaje cercano al natural si un escenario está en un estado aceptable o no, y si hay gente no técnica de por medio puede ser una herramienta perfecta para acercar mundos.

Ala! Fin del tocho! XD

Sobre el Spring2GX Day

Monday, February 22nd, 2010

El viernes tuvo lugar el Spring2GX Day en Madrid, evento organizado por Sergi Almar junto a javaHispano y SpringSource. La verdad es que me quedé muy sorprendido por el interés que generó el evento, con más de 400 inscritos, no sé cuál sería el número de asistentes finalmente, pero se vió bastante gente durante todo el día.

La sala de conferencias

Una de las cosas que más me gustan de estos eventos es tener la oportunidad de reencontrarte con viejos conocidos como Sergi, Nacho Brito, Álvaro Sánchez-Mariscal, Aitor Alzola, los paisanos de MasterD… además de con Martín y Jordi, por supuesto XD. Poner cara a gente con la que has mantenido algún contacto por internet como Tomás Lin, Raúl Expósito, Alberto Vilches o el mismo Graeme Rocher. Y por supuesto entablar conversaciones y conocer gente nueva durante el evento.

Eso sí, me quedé con mal sabor de boca por no haberme podido quedar hasta el final del evento, ya que hubo gente con la que no pude hablar o ni si quiera saludar, pero el tren de vuelta no esperaba :(

Algunos ponentes
Algunos de los ponentes, compartido por @sergialmar

Sobre las charlas no me voy a extender, Alberto Vilches y Tomás Lin han hecho unos resúmenes del evento estupendos, además, no creo que tarden mucho en publicarse los videos del evento :) .

Acerca de la presentación que hicimos nosotros sobre nuestra experiencia creando Jobsket con Grails y Java, Martín publicó ayer las transparencias que utilizamos. Parece que para bastante gente resultó interesante conocer de primera mano una experiencia concreta con estas tecnologías.


Martín hablando de nuestros números, foto de @jerolba

También me quedo con la sensación de que Groovy y Grails empiezan a calar en España. Tanto por interés a nivel particular de desarrolladores, como de algunas empresas y organizaciones que lo están empezando a adoptar o que están interesadas en conocer lo que les puede aportar.

El código y la presentación del taller

Wednesday, February 3rd, 2010

Ya he subido a github el código que añadimos el viernes en el taller de Grails(con algunos arreglillos que tenía pendientes) que hicimos en la sede de hispalinux Zaragoza.

Aún siendo un día festivo, finalmente vinieron 10 personas, y eso que se despistaron un par de la hora(mea culpa por no mandar un email de recordatorio el día de antes :S). Creo que durante las casi 3 horas que duró, llegamos a ver bastante del framework y algunos detalles de lo que puede aportar groovy en casos prácticos.

Antes de ponernos a trabajar sobre el código, también hice una pequeña presentación de introducción, para situar a la gente que no conociera demasiado acerca de groovy y grails.

Al terminar el taller estuvimos charlando de varias cosas, lo más interesante:

  • Montar más talleres/charlas de temática técnica para aprender unos de otros, vernos las caras… y seguro que todo el mundo puede aportar algo o hablar sobre un tema.
  • Retomar las quedadas del ZaragozaJUG, aproximadamente una vez al mes. Y aunque tenga el nombre de Java User Group, jamás se ha hablado exclusivamente de Java o programación; es simplemente una reunión de gente del gremio(sin importancia del lenguaje) para charlar sobre lo que surja alrededor de unas cervezas, y obviamente alguna vez toca hablar de temas relacionados con el desarrollo de software :)

Taller gratuito de Grails en Zaragoza

Friday, January 22nd, 2010

El viernes 29 de Enero(día de San Valero y festivo en Zaragoza) impartiré un taller de iniciación a Grails, en la sede de Hispalinux en Zaragoza (Calle San Blás 104). El taller lo organizamos desde Jobsket con la colaboración de Hispalinux y Escuela de Groovy.

Para el taller utilizaremos como base un pequeño proyecto que he subido a github, un simple directorio de desarrolladores, para empezar con algo más que un proyecto tipo hello world. Podéis descargaros el código y pegarle una ojeada, veréis que he utilizado el plugin de acegi para el registro y autentificación de usuarios, así como image tools para las fotos de perfil.

Hay un máximo de 12 plazas para asistir al taller, así que si quieres asistir inscríbete, aunque sea un día raro para un taller de programación, nunca se sabe… :P

Ah! Y al terminar el taller iremos a tomar unas cervezas :)