SpringIO Día 2

Tras un primer día de conferencias que fue bastante largo pero muy entretenido, nos levantamos llenos de energía para el segundo y último día. Mientras Tino y yo desayunamos en una cafetería cercana al hotel recibimos un SMS de @chozero y @yurenaghm, se iban a retrasar un poco :-), por lo que dimos un paseo por los aledaños del hotel haciendo tiempo. Una vez en el coche, esta vez el trayecto fue directo, pero nos pasamos la entrada!!! y bueno se nos hizo un pelín tarde.

Sin ningún contratiempo más, llegamos a la CEU San Pablo y nos dio tiempo de entrar a la mitad de la charla de Graeme Rocher sobre Grails. Sinceramente no me termine de enterar bien de que iba, pero tuve la oportunidad de ver Spring Insight en funcionamiento y puedo decir que es una herramienta fantástica para la monitorización de tu aplicación web, cuando haga una prueba crearé una entrada en el blog (vaya, se me van acumulando las entradas). Tome notas de lo que pude entender y me quedé impresionado por el Spanglish de Graeme, todo un esfuerzo por parte de este ponente.

Aplicaciones Web ultraescalables con Redis de Alberto Gimeno

La siguiente elección en mi día de charlas fue la de @gimenete que trataba sobre Redis. Nada más entrar en la sala nos quedamos impresionados porque casi no había sitio, la sensación general de la gente en Twitter era "@gimenete lo ha petado en la charla de Redis" :-)

No tenía ni idea de la existencia de esta base de datos NoSQL, pero como en la empresa ya habíamos probado con CouchDB, tenía ganas de ver la experiencia de otras personas con otras soluciones distintas.

Redis es un producto de VMWare y propone como novedades o ventajas respecto a otras bases de datos NoSQL un promedio de 100000 operaciones por segundo!!!, sí sí habéis escuchado bien 100000, y también transaccionalidad que es una característica que no se encuentra en las demás soluciones NoSQL. Pues vaya sí que se está poniendo interesante el tema, pero no solo porque el producto merece la pena y será otra entrada en el blog :-), sino porque @gimenete es un presentador fantástico y muy ameno.

Otros temas interesantes que se tocaron en esta charla, fueron las herramientas para trabajar con Redis y hacer los mapeos de forma más sencilla (como por ejemplo Spring Data) o cual es la razón de ser de las BBDD NoSQL, principalmente la escalabilidad aunque yo también destaco que son una buena solución cuando hay cierta incertidumbre alrededor de la aplicación y no se sabe muy bien lo que se desea.


A raíz de una pregunta del público apareció el tema del rendimiento de lectura o escritura, y pudimos ver una prueba en directo en el ordenador de @gimenete que indicaba que Redis era incluso más rápido en escritura que en lectura.

Un fortísimo aplauso para @gimenete y buscamos nuestro camino a la siguiente sesión en mi caso probe con el taller de @fatimacasau

Testing en Grails y pruebas funcionales con Geb (Webdriver) de Fatima Casaú

Aunque no tenía mucha idea de Grails, y tampoco es que la tenga ahora, me interesaba ver como se realizaban las pruebas funcionales con Webdriver y como trabajaba otra gente en este aspecto, porque seguro que algo podría sacar para mi provecho :-)

Al principio todo fueron problemas, me había fiado de la instalación que tenía de STS en mi máquina, pero no tenía los plugins de Grails, y la versión de Grails en mi ordenador era mucho más que vieja. Nota mental: acuérdate de preguntar los requisitos y llevarlo todo instalado. Tiramos de la red del centro pero parece que no iba muy bien, bueno lo deje descargando y me puse con el compañero que tenía al lado que para mi suerte era ni más ni menos que @dani_latorre, así aprendería por partida doble.

@fatimacasau tenía un proyecto preparado con una serie de ejemplos, lo cual ayudo mucho a entender mejor como se hacen las pruebas con Webdriver, y demostró el buen hacer de esta chica.

Para muestra un botón. En el siguiente código se puede ver como se hace un test con Webdriver haciendo uso de Geb. Más sencillo imposible.

class AddCommentSpec extends GebSpec {
        
        def browser = new Browser(new FirefoxDriver(), "http://localhost:8080",ShowPublishPostPage)
        
        def "se muestra el ultimo post insertado"() {
            browser.to(ShowPublishPostPage)
            assert browser.page instanceof ShowPublishPostPage
            assert browser.page.$("p", id: "subtitle" ,text: startsWith("Creado por")).size() == 1
            assert browser.page.$("p", id: "subtitle" ,text: contains(Post.lastPostPublished().authorFullName())).size() == 1
            
        }
        
        ...
        
}

Como vemos, haciendo uso del framework Geb podemos hacer pruebas funcionales con mucha facilidad, tan solo hay que darle la URL de acceso y luego hacer los asserts que consideremos necesarios. Como comenté en la entrada anterior tras la charla de Webdriver, yo no lo veo útil para hacer pruebas muy intensivas probando todos los detalles de la vista, pero me gusta para comprobar que existen los elementos indispensables.

Por lo que pude hablar con @dani_latorre, parece que se puede usar Geb perfectamente en proyectos Java por lo que puedo decir que este taller fue muy interesante porque no aprendí solo cosas de Grails sino cosas que voy a poder usar todos los días. Salí muy contento de la charla y he de decir que @fatimacasau es la demostración empírica de que la belleza no está reñida con la inteligencia :-)

Ahora tocaba irse a comer un rato, unos sandwiches y algo de fruta claro, para lo que me reuní con el resto del #comandomuyayo y fuimos a buscar la comida. Mientras buscamos un sitio en el que comer tranquilamente nos encontramos con @mgryszko y tuvimos la oportunidad de pensar en un montón de ideas para la próxima edición del concurso AbreDatos, una comida muy interesante.

Taller de creación de DSLs con Groovy de Alberto Vilches

En este taller aprendí bastante aunque para ello tendría que mostrar todo el código que hicimos y eso me llevaría toda una nueva entrada y no de las pequeñas precisamente :-)

@albertovilches introdujo a la audiencia a las características principalmente de Groovy para crear DSLs, como por ejemplo los closures, es un tema complicado pero @albertovilches supo salir muy bien adelante y continuamos con los ejercicios, eran muchos y no dio tiempo a hacerlos todos pero creo que la idea principal quedo bien reflejada.

Mi más sincera felicitación para este chico que según @DavidBonilla es el mejor programador del mundo :-)

¿Configurar con Spring un API no basado en Spring?

Tras el taller de @albertovilches tocaba un descanso y fui a hablar con mis amigos de Autentia con quienes pude conocer a algunas personas más del equipo de desarrollo de esta empresa. Y puedo decir que la charla fue tan interesante que hablando con @alejandropgarci y José se me paso la charla sobre Spring a la que iba a asistir :-)

Tras más de una hora el #comandomuyayo se personó en la cafetería con cara de dónde te habías metido??? a lo cual solo puedo disculparme y presentarles a la gente de Autentia, pero no me arrepiento porque pude compartir un buen momento con @alejandropgarci y José y aprender cosas pese a que la gente no lo crea.

Networking nocturno :-D

Tras despedirnos de @alejandropgarci y José nos volvemos a la ciudad para dejar las cosas en el hotel y ... sí reunirnos con la gente para algo de networking nocturno. Íbamos un poco tarde por lo que recibí la llamada de @dani_latorre pero ya estábamos a punto de llegar, así que nos esperaron en la parada de metro y luego fuimos a comer. En la mesa había un selecto grupo con el que compartimos la experiencia como @dani_latorre, @gimenete, @ialcazar, @eamodeorubio, @jmbeas, @jerolba, @antoniofdr y algunas personas de las que no me acuerdo del nombre o no tengo su twitter. En definitiva una cena fantástica y luego un buen rato en una cervecería en donde tuve el placer de compartir algunas ideas y planes para el futuro con @jmbeas y @jerolba, esto parece que marcha!!!

Y esta vez sí ... eché de menos a @DavidBonilla (ver comentarios de la entrada anterior :-)


El grupo de networking nocturno, faltan @eamodeorubio y @yurenaghm en la foto

El #comandomuyayo destronando a @dani_latorre de su puesto de agilista nocturno :-)

Conclusiones

Tras estos dos días de Spring, Grails, talleres y compartir experiencias con otros desarrolladores de España me quedo con varias conclusiones.
  • Un 10 para la organización, todo ha salido fantásticamente bien aunque ya esté un poco harto de sandwiches de paquete :-)
  • Los ponentes españoles no tienen nada que envidiar a los grandes gurús del panorama.
  • El sector va cambiando poco a poco y cada vez son más las personas que asisten a estos eventos.
Un saludo y nos vemos en la próxima.

Comentarios

Gregorio Mena ha dicho que…
Yeray, veo que ya tienes material para cumplir con el propósito de escribir más durante un tiempo. Te tengo que pasar un par de rutas para cumlir con otro de los propósitos que habías comentado :P

Estaré especialmente atento a la entrada de Spring Insight, un compañero está trasteando con eso y seguro que lo que comentes nos viene bien.

Un abrazo!
Yeray Darias ha dicho que…
Espero esas rutas para analizarlas y ver que se puede hacer :-)

Y pondré la entrada de Spring Insight la primera de la cola después de la de la reunión del viernes pasado de AgileCanarias.

Un abrazo.

Entradas populares de este blog

Log4j - JMS Appender con ActiveMQ

La técnica del patito de goma

#informáticaSoluciónYA