Mostrando entradas con la etiqueta books reviews. Mostrar todas las entradas
Mostrando entradas con la etiqueta books reviews. Mostrar todas las entradas

lunes, 5 de agosto de 2013

Leído: Programming Grails



Ya se sabe, vacaciones, más tiempo libre, estar en la playa casi sin conexión a internet,... qué mejor forma de aprovechar el tiempo que leyendo :-)

Libro escrito por otro de los Core Developer de Grails, Burt Beckwith y como él mismo cuenta en la introducción, orientado a desarrolladores con experiencia en Grails que quieren conocer con más detalle cómo funciona la magia del framework y cómo se integra con Groovy, Spring y Hibernate. Si no conoces Grails este no debería ser tu primer libro porque no cuenta los distintos artefactos y cómo funciona el framework, sino que se mete directamente en sus tripas.

Para empezar en el capítulo 1 damos un repaso a Groovy, lenguaje en el que se basa Grails. Se explica de una manera sencilla las particularidades del lenguaje y lo que lo diferencia de Java. Además se explican las colecciones, mapas, closures e incluso se habla un poco de meta-programación. El siguiente capítulo explica con detalle los 16 plugins core de una aplicación Grails: controllers, codecs, filters, urlMappings,... Da un punto de partida de cómo funcionan y deja con ganas de ponerte con el IDE a mirar con más detalle.
El resto de capítulos habla de la capa de Persistencia, la relación con Spring, con Hibernate, la externalización de la configuración... y distintos "gotchas" a tener en cuenta y que más de una vez seguro que te han ocurrido y no sabías por qué.

El libro me ha dejado un sabor un poco agridulce. Por una parte algunos capítulos como la parte de Spring, Hibernate o los Plugins me han gustado mucho y he aprendido bastante. Por otra parte otros como el de los plugins core de Grails hay que leerlos con el IDE abierto para ir analizando las distintas clases e interfaces que van explicando, puesto que si no se entiende nada. Tendré que volver a releerlos delante del ordenador para seguir profundizando en las tripas del framework.
Por último, alguno de los últimos capítulos como el relacionado con los entornos Cloud o cómo actualizar las aplicaciones me han parecido un poco de relleno.

Aún así, me parece un libro imprescindible si ya llevas tiempo con el framework y quieres conocer más cómo funciona under the hood.

jueves, 25 de julio de 2013

Leído: The Definitive Guide to Grails 2

Aunque ya llevo varios años trabajando con Grails siempre está bien mantenerse al día con las actualizaciones de los libros existentes a las últimas versiones del framework. El libro está escrito por Graeme Rocher y Jeff Brown, Grails Team Leader y Core Developer de Grails respectivamente, lo que implica que ambos conocen bien las tripas del framework y saben de lo que hablan.

Durante 12 capítulos van explicando la esencia del framework y los pilares en los que se basa, principalmente Spring y Hibernate y Groovy como lenguaje de programación. Así, vamos viendo como empezar instalándolo y creando nuestra primera aplicación, las clases de dominio, los controladores, las vistas, los servicios hasta la internacionalización, GORM o el desarrollo de plugins. Los capítulos están bien estructurados y cuentan con buenos ejemplos con los que van explicando las particularidades de cada tipo de artefacto del framework. También incluyen en cada capítulo un apartado en el que se explica como testear el tipo de artefacto que se está explicando. Creo que habría sido mejor que los ejemplos de los tests hubiesen sido con Spock en lugar de con Junit, aunque mientras Grails no incluya Spock por defecto, tiene sentido no tener que instalar dependencias adicionales para hacer los tests. Yo sin embargo, siempre recomiendo a cualquiera que trabaje con Grails (e incluso con Java) que utilice Spock para realizar los tests puesto que conseguirá que sus tests sean mucho más explícitos, expresivos y fáciles de mantener que con Junit.

Para finalizar comentaré que aunque la gran mayoría de lo que he leído lo conocía, siempre viene bien refrescar conceptos y reforzar algunas partes del framework que son algo más complejas. También he aprendido algún truco nuevo que seguro que utilizo dentro de poco en algún proyecto. En definitiva, un libro interesante para cualquiera que se quiera iniciar en Grails y también para desarrolladores que lleven tiempo trabajando con el framework.

domingo, 7 de abril de 2013

Leído: Seven Databases in Seven Weeks



Con este artículo empiezo una serie en el blog en los que iré contando mi opinión sobre distintos libros técnicos que voy leyendo. Uno de mis propósitos para este año es lograr sacar tiempo para leer 5 ó 6 libros técnicos y, a ser posible, que no estén relacionados unos con otros ni estén centrados en un campo específico.

Así, empezamos con Seven Databases in Seven Weeks: A Guide to Modern Databases and the NoSQL Movement. A lo largo del libro hemos visto distintas bases de datos de distintos paradigmas. Desde las clásicas relacionales, hasta las modernas NoSQL con sus distintas variantes: orientadas a documentos, clave-valor, basada en columnas hasta las orientadas a grafos.

El libro no pretende ser una guía del DBA para cada una de esas bases de datos ni tampoco un manual de instalación de cada una de ellas, sino que directamente nos va mostrando distintas características de cada una a través de diversos ejemplos. También se centra en los distintos criterios que debemos tener en cuenta a la hora de elegir una u otra y destaca sus puntos fuertes y deficiencias.

Las bases de datos que se muestran, en el mismo orden de aparición son:
- PostgreSQL: Se trata de una de las base de datos opensource relacionales más potentes que existen en la actualidad. Aunque personalmente llevo utilizándola varios años, aprendí muchas cosas de tipos nativos, array n-dimensionales y búsquedas full text search.
- Riak: Entra dentro de la categoría de clave-valor aunque añade conceptos muy interesantes como un completo interfaz REST y enlaces entre campos de distintas relaciones.
- HBase: Es una base de datos orientada a columnas. Aunque inicialmente parece una base de datos relacional tal cual, ya en la introducción nos indican claramente que no es la típica base de datos que utilizaremos para nuestro pequeño catálogo de productos, sino que debemos tener muchos gigabytes o terabytes de datos para aprovecharla realmente. Al estar diseñada para un gran volumen de datos, el escalado es muy fácil de implementar. Otras cosas interesantes son el versionado automático de columnas y la compresión nativa de datos.
- MongoDB: Probablemente sea una de las bases de datos NoSQL más conocidas en la actualidad. El hecho de que sitios como Foursquare estén implementados con MongoDB le ha dado mucha fama. MongoDB encaja en la categoría de bases de datos orientadas a documentos, donde su principal característica es ser schemaless, es decir, no obligar a tener un esquema definido en las colecciones. Los documentos son JSON y entre sus principales características destacan la replicación de los datos y el sharding de grandes colecciones.
- CouchDB: Al igual que MongoDB, CouchDB es una base de datos orientada a documentos JSON y con interfaz REST. Una de sus principales características es que está diseñada para funcionar desde en un teléfono Android, en un pc hasta en un Datacenter.
- Neo4J: Se trata de una base de datos orientada a grafos. Es ideal para modelar tipos de relaciones de amistad, gustos,... Su principal lema es "si puedes dibujarlo como cajas y líneas en una pizarra, entonces puedes almacenarlo en Neo4J". Me ha impresionado porque es un nuevo paradigma de bases de datos para mí y sirve para cambiar el chip.
- Redis: La base de datos clave-valor por excelencia. Además posee numerosas operaciones para realizar todo tipo de operaciones: rankings ordenados, listas,...

Para terminar, añadiré que la lectura del libro es amena y cómoda. Cada capítulo está dividido en "3 días" y al final de cada día se incluyen una serie de ejercicios para practicar y afianzar lo aprendido. En mi caso, los ejercicios no los he podido hacer porque me llevarían demasiado tiempo (del que no dispongo). Aún así, estoy contento con lo aprendido a lo largo del libro que me ha servido para conocer otro tipo de bases de datos para utilizar en el futuro si los problemas a resolver lo requieren.