Agustín Ventura

Ingeniería de Software

Configuración de Linux Mint

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

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

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: Tener una plantilla de post que se leerá en el constructor. Esta plantilla tendrá placeholders para saber donde van los campos. Tratar según que campos, por ejemplo los tags habrá que representarlos como un string y separados por comas, las etiquetas <pre> que indican código habrá que convertiras a shell. Escribir el archivo, a ser posible usando async I/O, así no se bloquea. Empezando por lo primero, la plantilla irá en src/main/resources y será la siguiente

Spring Boot Developer Tools e Intellij IDEA

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

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: SAX: La API originaria, orientada a eventos. Muy rápida, muy eficiente y muy farragosa. Técnicamente es una API de streaming mediante push, es decir, nosotros arrancamos el procesamiento del documento y la API empieza a funcionar mandándonos eventos conforme va encontrando elementos. DOM: La API orientada a objetos, representa el XML como un árbol en memoria. Muy fácil de acceder, muy tragón de recursos. Técnicamente, se representa el árbol del DOM en memoria y listo, se puede acceder libremente, por ejemplo usando XPath. StAX: A partir del JDK 1.5 se encuentra disponible esta API que es un modelo mixto, se basa en un modelo de streaming (parecido a SAX) pero más sencillo de utilizar y además permite escribir. Técnicamente se define como una API de streming mediante pull, es decir, que somos nosotros los que vamos indicanto los elementos que queremos acceder. Eso sí, al ser de streaming solo permite avanzar en el documento, es decir, no podemos ignorar el elemento 1, tratar el 2 y en función de este retroceder a tratar el 1. En mi caso en particular, y dado que el modelo de “ir hacia delante” se adapta perfectamente al caso de uso (ya que simplemente estoy emparejando), pero tampoco necesito tantísima eficiencia ni tengo ganas de fastidiarme la vida, voy a utilizar StAX.