La tecnología de contenedores nos ofrece múltiples ventajas para nuestras aplicaciones. Docker es una de las más nombradas y que está creciendo muy rápidamente. Es muy sencillo empezarla a usar como mostraré en unos pocos comandos a continuación.
Continuar leyendo...
Los contenedores no son una tecnología nueva pero Docker ha reunido las características necesarias para hacerla sencilla y popular en Linux. Suponen un cambio en la infraestructura de las aplicaciones con algunas ventajas sobre la virtualización y la instalación de los servicios directamente en el sistema.
Continuar leyendo...
Algunos sitios y aplicaciones pueden tener la necesidad de «scrapear» el contenido de sitios web para extraer información de ellos y posteriormente usarla de alguna forma. El contenido «scrapeado» o obtenido de una fuente externa debe ser filtrado, si no es filtrado y posteriormente es servido a los usuarios puede enviárseles principalmente scripts con contenido malicioso (provocando un ataque cross-site scripting, XSS) o causar una desmaquetación al visualizar el contenido. A la hora de implementar la agregación de contenido de forma segura en Blog Stack, contenido obtenido de una fuente RSS o Atom pero que en esencia es HTML he usado la librería jsoup, de tal forma que solo el contenido considerado seguro o confiable de los artículos sea agregado.
A falta de una forma estructurada para obtener datos de una fuente podemos extraerla directamente del contenido html de una página, a esto se le denomina «web scraping». En Java y con la librería jsoup podemos obtener la información que necesitamos de forma sencilla.
Continuar leyendo...
En algunas web las urls incluyen el identificativo del objeto de la base de datos a partir de cual se muestra el contenido principal de la página, en Blog Stack esto podría ser un artículo pero en otras páginas webs podría ser un producto. Esto genera direcciones de páginas webs «feas» de cara al usuario y al SEO de los buscadores además de exponer cierta información de la base de datos que probablemente no interese a nadie excepto al desarrollador de la página. En este artículo voy a explicar una forma de generar urls semánticas, «bonitas» o amigables de cara al usuario y al SEO para los buscadores y como lo he implementado en un ejemplo real como es Blog Stack.
Estas últimas semanas he podido dedicar un poco de tiempo a al proyecto personal de Blog Stack. Blog Stack es un agregador o planeta de bitácoras en español sobre linux, software libre, programación, desarrollo, metodologías ágiles y tecnología. En dos artículos anteriores explicaba más en detalle que es Blog Stack, en uno de ellos hacía una descripción y presentación y en otro explicaba como está hecho en el aspecto técnico tanto detallando cuales son las tecnología que usa como la arquitectura del proyecto.
En esta entrada quiero explicar un ejemplo de como aprovechar estas dos funcionalidades diferentes en un caso práctico y que nos puede ser útil en algún caso. La idea del ejemplo es definir la configuración de una aplicación como podría ser una aplicación web en un archivo de código fuente Java y que cuando se produjese algún cambio se recargase de forma dinámica.
Java a partir de la versión 7 del JDK ofrece el soporte para recibir notificaciones de cambios en el sistema de archivos sin tener que estar monitorizándolos constantemente en busca de actividad. No tener que estar monitorizando los archivos de forma «polling» para buscar cambios además de hacer que el código sea más sencillo desde el punto de vista de la programación hace que no se malgasten recursos del sistema si los cambios son esporádicos.
Desde la versión 1.6 del JDK disponemos de una API para acceder al compilador desde un programa Java. En el ejemplo de este artículo utilizaré varias clases de esa API para conseguir compilar un archivo con la definición de una clase Java y posteriormente instanciarla y usarla. En posteriores artículos comentaré un ejemplo práctico y muy útil con el que podemos sacar provecho de esta funcionalidad.
Hace unos días publiqué una nueva edición del libro PlugIn Tapestry, sobre el frameworkApache Tapestry para el desarrollo de páginas y aplicaciones web con Java. En este artículo quiero recoger las herramientas que utilicé para escribirlo y algunas cosas básicas a conocer para tener un libro con un aspecto decente y más profesional. Son cosas muy básicas pero que a mi me costo un poco poco encontrarlas para conseguir lo que quería, quizá a alguien le sirvan.
Hace un poco más de una año publiqué el libro PlugIn Tapestry que como su nombre ya adelanta versa sobre el frameworkApache Tapestry para el desarrollo de aplicaciones y páginas web con Java. Casi 300 páginas de documentación que describen este framework, como usarlo y va más allá explicando como realizar algunas de las tareas comunes que es necesario hacer en casi todas las aplicaciones web independientemente del framework que elijamos pero en este caso visto desde el punto de vista de Tapestry.
Por motivos de usabilidad en algunas páginas se incluyen dos barra de botones, una antes de una larga sección y otra después. El motivo de la doble barra de botones inicial es que no sea necesario hacer «scroll» hasta el final de la página para acceder a los botones y realizar la acción que permitan. Por el contrario, incluir la barra de botones al final de la página permite que una vez seleccionados los elementos o revisado el contenido de la sección hacer disponibles las acciones que es probable que se quieran realizar.
El protocolo seguro https hace que los datos que viajan entre el servidor y el cliente a través de internet estén cifrados de modo que nadie más pueda saber cual es es la información intercambiada ni se pueda alterar sin el conocimiento entre las dos partes. Estas propiedades nos son de interés para ciertas partes de una aplicación o en algunos casos la aplicación entera. ¿Cuales son estos casos? Son aquellos en los que queramos garantizar una mayor seguridad, estos pueden ser para proteger usuarios y contraseñas de autenticación para iniciar sesión, ciertos datos sensibles como datos personales, datos de tarjetas de crédito, … evitando que una tercera parte los obtenga y los utilice para su provecho propio y supongan un problema de seguridad en la aplicación.
Hace unos meses como suele ser habitual en los informáticos me pidieron que formatease e instalase los programas necesarios en un ordenador portátil, más concretamente en un ordenador que a la velocidad que evoluciona la tecnología podría considerarse obsoleto. El modelo exacto era un Acer Aspire 2000 diseñado para Windows XP con las siguientes características:
Como puede verse por las características no es un ordenador muy potente para los días de hoy pero que puede ser suficiente para navegar por internet, ver vídeos, escuchar música y realizar tareas ofimáticas.
Ya llevo usando algo más de 4 años Arch Linux de forma continuada desde que definitivamente hice el paso desde Windows según comentaba en mi camino de Windows a Arch Linux como sistema de mi ordenador personal. Pasé un poco de tiempo usando Debian y evaluando Ubuntu, Fedora, y openSUSE pero al final la distribución que elegí fue Arch Linux.
La razón de elegir Arch Linux fue que me dio muchos menos problemas configurar todos los dispositivos, por ser una distribución rolling release con lo que en todo momento tenía las últimas versiones de cada programa y disponía en poco tiempo las nuevas mejoras que se iban incorporando a ellos evitando a los pocos meses estar con la sensación de tener programas que han quedado superados con nuevas versiones y no tener que esperar al siguiente iteración de una nueva versión para disponer de ellas (o usar para cada programa un PPA), además tenía los programas que yo decidía y no los que los desarrolladores de la distribución preinstalaban por mi. Cualquier otra distribución linux de las que he mencionado son de gran calidad y son usadas por mucha gente, simplemente en mi caso Arch Linux se adaptaba mejor a lo que buscaba y no era yo el que me adaptaba a la distribución. También me gustaba su filosofía y su «Arch way» de una configuración simple no oculta, los paquetes lo normal es que no lleven modificaciones sobre lo que proporcionan sus desarrolladores aparte de tenerla actualizada en el momento que decidiese.