Comenzando con Docker

14 mayo 2017

Docker es una tecnología de contenedores relativamente reciente (de 2013) que si bien ha puesto sobre el terreno de juego el concepto de contenedores (aunque estos son tan antiguos como del 2005 que fue cuando salieron con Solaris...). Un contenedor viene a ser una máquina virtual ligera, en realidad es una aplicación (se ejecuta en espacio de usuario, usa el kernel del sistema operativo, etc...) en la que se puede instalar un sistema operativo y unas aplicaciones (una imagen) y por tanto se comportará como una máquina virtual a efectos prácticos. La ventaja de esta aproximación es que mientras una máquina virtual tiene unos recursos fijos que toma del sistema anfitrión, Docker no, con lo que es más eficiente y ligero.
La verdad es que todo el mundo habla de Docker, pero todavía no me he encontrado a nadie que lo use en producción. No obstante, este sistema es muy cómodo para montar entornos de desarrollo.
Lo primero, como siempre, es instalar Docker. La página de instalación no refiere aún información para Ubuntu 17.04, a ver que me voy encontrando.
El primer paso de la instalación es instalar una serie de paquetes que para mi sorpresa (no) ya tengo instalados. A continuación, y resumiendo las detalladísimas instrucciones de instalación (esto es buena documentación y lo demás son tonterías), los pasos para la instalación son los siguientes:
...

Logging de consultas y parametros de Hibernate

27 marzo 2017

Una de las funcionalidades básicas de Hibernate es abstraer la base de datos, pero sin embargo en tiempo de desarrollo resulta bastante útil controlar las consultas que va generando el motor así como sus parámetros.
Desde las primeras versiones Hibernate tiene una propiedad, show_sql que muestra estas consultas por consola. Esto tiene dos desventajas, la primera que usa la consola y la segunda que para habilitarlo y deshabilitarlo se depende de un archivo de configuración específico (normalmente el propio de Hibernate o incluso una clase Java si se esta utilizando la configuración Java de Spring). Además este parámetro tan sólo muestra las consultas y no los parámetros de las mismas.
La solución idónea pasa por utilizar el sistema de logging estándar que se utilice en la aplicación, así se puede mostrar en consola o registrar en un archivo o cualquier otro tipo de solución y además su activación y desactivación se hace en el sitio lógico, el archivo de configuración de logs de la aplicación.
Otra ventaja es que, además, con su configuración oportuna se pueden logar también los parámetros de las consultas (algo muy útil para contrastar con nuestro cliente SQL favorito).
Para poder mostrar estos logs hay dos loggers propios de Hibernate que configurar:
...

Nueva API de Fecha y Hora en Java 8

16 junio 2016

Unos apuntes rápidos sobre la nueva API de fecha y hora en Java 8. Primero, clases fundamentales:
1. LocalDate: La fecha en el contexto local. En una zona horaria determinada.
2. LocalTime: La hora en el contexto local.
3. LocalDateTime: La composición de ambas.
...

Wordpress to JBake - Generación de Archivos

10 junio 2016

Bueno, pues ya queda la parte final, lanzarlo. Creo un método main en Wp2JBake, el primer argumento será el archivo de origen y el segundo el directorio de destino.
Como de toda la gestión de errores se encarga el programa en sí, lo único que tengo que hacer es capturar la posible IllegalArgumentException y listo:
...

Configuración de Linux Mint

09 junio 2016

Aprovechando que he actualizado el portátil (le he puesto 16 Gb de RAM y un SSD de 240 Gb), voy a documentar un poco mi configuración para que no se me vuelva a olvidar.
En primer lugar he instalado el último Linux Mint disponible, el 17.3 Rosa. No soy un gran fan de Mint (de hecho me parece que gráficamente hablando se han quedado un poco desfasados).
Una vez instalado he dado los siguientes pasos:
...

Wordpress to JBake - Integración

08 junio 2016

Realmente las pruebas de integración ya casi estan hechas y son muy sencillas ya que se trata de interactuar en todo caso con la clase principal Wp2JBake, usando donde sea necesario el archivo de pruebas.
Lo único interesante van a ser los asserts para comprobar que todo es correcto.
En un principio, las pruebas definidas pasan sin mayor problema, pero en primer lugar, hay que preguntarse si se estan exportando todos los posts o solo aquellos que estan publicados, es decir, el test usando el wp-source.xml sería el siguiente:
...

Wordpress to JBake - Escritura

05 junio 2016

Retomando la migración del blog, una vez resuelta la parte de leer los posts, hay que hacer la escritura. El enfoque pasa por lo siguiente:
...

Spring Boot Developer Tools e Intellij IDEA

30 mayo 2016

Una de las mejores incorporaciones que tuvo Spring Boot en la versión 1.3 fueron las Developer Tools.
De entre toda la funcionalidad, lo que me parece mas útil es sin lugar a dudas el automatic restart, que relanza la aplicación en cuanto detecta cambios en un
fichero que esta en el classpath y el LiveReload, que en conjunción con un plugin de Chrome detecta cuando ha habido cambios en la aplicación (como un reinicio)
y refresca automáticamente la página.
...

Wordpress to JBake - Parseo

20 marzo 2016

Pues ahora que ya tengo el constructor y construyo un objeto siempre que, al menos es coherente, toca parsear el xml para extraer los datos.
En Java, esencialmente hay tres formas de parsear xml, todas dentro de lo que se denomina Java XML Processing API, JAXP:
...

Wordpress to JBake - Inicio

04 febrero 2016

En la migración del blog a GitHub Pages uno de los objetivos era no perder contenido, por lo que una vez puesta en pie toda la infraestructura, toca migrar los posts (mucho me temo que los comentarios si se van a perder...). Solución: Hacer un pequeño programa en Java (casi que diría script) que realice automáticamente esta conversión, además voy a seguir TDD para "mantenerme en forma".
En un principio lo voy a plantear como una mera conversión de formatos, como formato inicial tengo el que devuelve Wordpress para la exportación: Wordpress Extended RSS y como formato final quiero un archivo en el formato específico de JBake, que no deja de ser Markdown con unas cabeceras (metadata) particulares:
...