Archive for the ‘Programación’ Category

El Real Zaragoza, twitter y Gaelyk(Groovy + AppEngine)

Tuesday, March 2nd, 2010

Este viernes noche después de cenar me puse a programar(o a jugar) uno de esos mini-pet-projects, lo suficientemente pequeño para no comprometerme a dedicarle más tiempo fuera del fin de semana y lo suficientemente grande para que sea algo más que un hello world. Y salvo a que tenga algún momento de aburrimiento en el que me de por mejorar o añadir alguna cosilla, así se va a quedar.

El proyecto es un agregador de twitts que hablan del Real Zaragoza(o #realzaragoza :) ). Y como uno no quiere hacerse de oro, no lo hace ni del Madrid ni del Barça :P .

Real Zaragoza

Hablando ya desde el punto de vista puramente técnico, es una aplicación muy sencillita que corre en la nube de Google, osea en App Engine (aquí voy a ahorrarme varios comentarios de lo que mola la nube, además de confundirlo con internet… No voy a dar nombres… ;) )

He utilizado un framework web ligero, hecho expresamente para correr en App Engine y muy sencillo llamado gaelyk, donde el código que escribimos es Groovy.

Gaelyk permite separar las vistas(Groovy Tempaltes) de las acciones(Groovlets). Inyecta en las acciones los elementos del SDK de GAE(datastore, memcache, mail, images…), y algunas variables para facilitar la vida y tener un código más escueto.

En mi caso he dejado la lógica de negocio en los mismos scripts de los Groovlets. Tan sólo hay tres: la home, la vista de un usuario(ej: @dani_latorre) y otro que es llamado cada 10 min para hacer una búsqueda en twitter e insertar los twitts nuevos.

Para la búsqueda de twitts, se hacen tan sólo dos peticiones cada 10 min y se parsea la respuesta atom de la búsqueda con XmlSlurper, se comprueba si no está duplicado y se crea y guarda una nueva Entity de GAE (gaelyk facilita su uso, para que sea más a la groovy).

Para recuperar lo que hemos persistido, por el momento no aporta novedades, a partir del datastore lanzaremos las queries. En el futuro es posible que surjan novedades en este apartado.

Para quien le interese conocer más detalles de gaelyk, le recomendaría pegarle una ojeada al tutorial.

Ver una presentación de Guillaume Laforge y Patrick Chanezon.

O un screencast de Pratik Patel(ojo, que a los elementos de GAE inyectados ya no se les llama loqueseaService, sólo loquesea)

Gaelyk & Groovy & Google App Engine – ATL2G from Pratik Patel on Vimeo.

Y aunque este año nos toca sufrir, aupa Zaragoza! XD

Historia de los frameworks web

Wednesday, February 24th, 2010


By @mraible

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.

Video de BDD con easyb

Friday, February 5th, 2010

Leo en el blog de Andrew Glover, que el equipo de easyb ha publicado un pequeño videotutorial de introducción a cómo utilizar este framework de testing para hacer Behaviour Driven Development en la JVM, tanto para escribir specifications como stories.

Aquí ya toqué el tema de easyb junto a grails, eso sí, no he llegado a utilizarlo de verdad.

Otras alternativas que pueden ser interesantes para practicar BDD, y que pueden correr en la JVM son Spock, RSpec, JBehave… y unos cuantos más cuyos nombres no recuerdo :P

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 :)

Estaremos en el Spring 2GX Day

Tuesday, January 12th, 2010

Con tanto festivo de por medio, ya casi se me pasaba avisar aquí de que el equipo de jobsket en pleno, vamos a participar en el evento Spring 2GX Day, el 19 de Febrero de 2010 en la Escuela Politécnica Superior de la Universidad CEU San Pablo de Madrid.

Jobsket en el Spring 2GX Day

Este es el primer evento en España que gira exclusivamente a las tecnologías relacionadas con Spring, Groovy y Grails; la asistencia es gratuita y está organizado conjuntamente por javaHispano y SpringSource.

La agenda no está completamente cerrada, pero ya se han confirmado como ponentes internacionales a Graeme Rocher y Joris Kuipers. Además de, entre otros, a Nacho Brito y Álvaro Sánchez-Mariscal de Escuela de Groovy.

En nuestro caso hablaremos de productividad con Grails y Java

Una de las características más importantes de Grails es la gran productividad que ofrece en el desarrollo, a la vez que se aprovecha toda la potencia de la plataforma Java a través de su integración con el framework Spring. Aún así, mucha gente puede estar tentada a deshechar la plataforma por estar asociada con Groovy y pensar que se trata de un todo o nada. En esta charla se mostrará como construimos Jobsket sobre Grails explotando al máximo la productividad y rapidez de desarrollo que aporta y como aprovechamos sus capacidades de integración para interactuar con todos los servicios Java que teníamos desarrollados

También quiero aprovechar a agradecer a Sergi Almar que haya contado con nosotros para participar en el evento. ¿Nos vemos en el Spring 2GX Day? :)

Cómo ven los fanboys a los lenguajes de programación

Thursday, December 24th, 2009

Vía RubyInside. El de sistemas operativos en el blog de Abel Mendivil. :)

Meme: Objetivos para el 2010

Friday, December 18th, 2009

Me pasa el meme Miquel Camps, a.k.a gafeman. Y aunque no suelo ponerme objetivos oficialmente, voy a hacer una excepción :)

  • 1. Hacer rentable jobsket, este objetivo es el principal y oficialísimo XD. Como supongo que muchos sabréis, este miércoles hemos lanzado los planes para empresas, que es de lo que pretendemos vivir :) .
  • 2. Crear un plugin de geolocalización con google maps para Grails, lo tengo en la cabeza, me falta el tiempo para escribirlo, quizás con un par de fines de semana tontos…
  • 3. Aprender Ruby de verdad, tengo vacíos de conocimiento acerca de este lenguaje, que probablemente sea de los más divertidos con los que programar.
  • 4. Este me da vergüenza hasta ponerlo: retomar y lanzar flatee, que me da mucha pena dejarlo como lo dejé :( , cerca de estar lo suficientemente acabado como para poder lanzar una primera versión.
  • 5. Hacer mis pinitos con alguno de los lenguajes de programación funcional que se oyen desde hace un tiempo (Erlang, Scala, Clojure…).
  • 6. Volver a leer más libros, que este año he leído bastante menos que el anterior.
  • 7. Tratar de mover algún mini-evento-reunión de alcohólicos anónimos técnicos en Zaragoza, es algo que hemos hablado algunos muchas veces, se echa en falta algún evento, pero quizás seamos demasiado frikis y realmente no haya hueco para eso XD. Además, que como ahora no vivo allí, aunque me pase casi cada semana, para mi ahora es todavía más difícil moverlo.
  • 8. Mejorar mi Inglés. Sí, soy muy torpe con el inglés, aunque leyendo no suelo tener excesivos problemas, es mi eterno punto débil.
  • 9. Organizarme y aprovechar mejor mi tiempo, es muy posible que me acabe haciendo con un pomodoro para ayudarme ;) .
  • 10. Ir por fin a vaquillas. Para justificar que nunca haya ido, diré que cuando he podido moverme ese fin de semana del año ha sido a los san fermines.
  • 11. Mantener la constancia de ir al gimnasio. Empecé hace 2 meses y por ahora la mantengo(aunque ya no salgo a correr), la verdad que me está ayudando bastante a evitar los problemillas de espalda y de rodilla que he tenido en algunas temporadas, además de ayudarme a despejar la mente.
  • 12. Tener una oficina donde trabajar, o algo que se le parezca. Lo de trabajar en casa, bares o lugares así, está bien para hacerlo algunos ratos, pero después de año y medio uno empieza a estar cansado de esta situación.

Pues nada, veremos lo que se cumple y lo que no.

Y si tienen ganas de seguir el meme, les animo hacerlo a Jordi Monné, Jesús Navarrete, Dani Torres Burriel, Alberto Gimeno, José Félix Lucía, David Bonilla, Manuel Recena, Abel Muiño, Mamen Pradel, Juan Luis Belmonte, Raúl Expósito, Isa Casanova, Sergi Almar… y paro aquí que igual ya es demasiada gente. Y sí, a algunos os lo paso para ver si dáis señales de vida, porque escribís todavía menos que yo XD.

Testeando respuestas JSON con Grails

Friday, November 20th, 2009

Aunque en la documentación de Grails aparece un ejemplo de como escribir un test para una acción que recibe una petición en formato XML o JSON, no lo hace de como escribir un test de una acción que genera el JSON, que tampoco es que sea precisamente complicado.

Si lo único que quisieramos probar es que, en una cadena JSON, se está devolviendo algún valor que estuvieramos esperando, podríamos utilizar el contenido que devuelve la response como una cadena(con contentAsString) y hacer alguna comprobación sobre el texto:

def response = controller.response.contentAsString
assertTrue response.contains('"name":"Gustavo Poyet"')
assertTrue response.contains('"goals":63')

Pero claro, este test es un muy ligero y no prueba demasiado. Si quisieramos probar más a fondo la respuesta(estructura, un elemento concreto de un array, etc), podríamos usar contains sobre la cadena devuelta, convertir tipos… vamos, que sería más que posible que el código del test terminara siendo infumable. Pero está disponible out of the box el converter JSON de Grails, que permite testear más a fondo fácilmente y con un código mucho más claro.

Es muy posible que si alguien se ve en la necesidad de escribir un test para una acción que devuelve un JSON, ya conozca el converter, por que es una de las alternativas que hay para hacerlo:

render object as JSON

Pues esa misma clase, tiene el paso contrario, pasar una cadena a un objeto groovy/java(JSONElement). De esta forma ya nos ahorraremos trabajo sucio y el código quedará bastante claro:

def response = controller.response.contentAsString
def responseJSON = grails.converters.JSON.parse(response)
assertNotNull responseJSON.players
assertEquals 5, responseJSON.players.size()
assertEquals 63, responseJSON.players[0].goals
assertEquals "Gustavo Poyet", responseJSON.players[0].name