YAKC - Yet Another Kubernetes Client
Introducción Desde hace algún tiempo, soy uno de los miembros del equipo que se encarga del mantenimiento de Fabric8 Kubernetes Client, uno de los clientes Java más populares para Kubernetes y OpenShift. Fabric8 Kubernetes Client es una de las mejores opciones disponibles ya que nos permite hacer la mayoría de operaciones soportadas por kubectl desde Java con una API muy elegante y fluida. No obstante, acceder a las operaciones de bajo nivel de la API REST o a una versión específica de la API es complicado, ya que el cliente de Fabric8 no lo permite (de momento). Este es el principal […]

Kubernetes Client for Java: Presentando YAKC


GitHub Actions
Introducción En este post veremos cómo desde un workflow de GitHub Actions en un repositorio podemos invocar otro workflow de un repositorio distinto. La primera parte muestra los distintos tipos de eventos que pueden desencadenar un workflow, centrándose en el evento repository_dispatch. La segunda parte es un ejemplo práctico mostrando cómo dos repositorios diferentes pueden desencadenar/iniciar sus workflows mutuamente. Eventos que desencadenan workflows Como probablemente sepas, hay diferentes tipos de eventos que pueden iniciar la ejecución de un workflow de GitHub Actions. Los eventos más conocidos para desencadenar esta ejecución son push, pull_request y schedule.  Estos eventos cubren la mayoría de […]

Lanzando GitHub Actions entre distintos repositorios


Quarkus + GraalVM + Fabric8 Maven Plugin
Introducción En este tutorial veremos como desarrollar una aplicación muy sencilla con Quarkus e integrarla con Fabric8 Maven Plugin para publicar una imagen nativa con  GraalVM en Docker Hub. La primera parte de la publicación describe como desrrollar una simple aplicación con Quarkus. La siguiente parte describe como construir un ejecutable nativo con GraalVM. La última sección muestra como integrar el proyecto con Fabric8 Maven Plugin y cómo desplegar las diferentes imágenes de la aplicación en Docker Hub. Quarkus, aplicación de muestra En esta sección se muestra cómo desarrollar una aplicación muy sencilla que devolverá una cita al azar cada […]

Quarkus + Fabric8 Maven Plugin + GraalVM



Isotope + Kuberentes
Introducción Isotope mail client es una aplicación webmail de código libre y uno de los proyectos personales en los que he invertido más tiempo durante el pasado año. Puedes leer más información acerca de las funcionalidades de Isotope en una publicación anterior. A pesar de que todavía no hay una versión oficial, la aplicación está bastante estable. En este post describiré la forma en la que se puede desplegar Isotope un un clúster de Kubernetes. En el tutorial se ha empleado minikube + kubectl, pero los mismos pasos podrían reproducirse en un clúster de K8s en producción. Traefik v1 Pese […]

Isotope Mail: Cómo desplegar Isotope+Traefik en Kubernetes


Fedora 1
Qué es Cinnamon? Cinnamon es un entorno de escritorio libre derivado de GNOME 3 y el principal entorno de escritorio para la distribución Linux Mint (Y también mi favorito). Fedora 30 viene por defecto con GNOME como el entorno de escritorio para el sistema X Window, sin embargo, hay un spin que es una variación de la distribución oficial de Fedora con Cinnamon con el entorno por defecto para el escritorio. Aunque se puede descargar el spin de Cinnamon, en esta publicación veremos cómo instalar los paquetes necesarios para desplegar de forma sencilla Cinnamon como el entorno de escritorio en […]

Fedora: Cómo instalar el entorno de escritorio Cinnamon


Webpack ReactJS Gatsby
Introducción Gatsby es una plataforma para la generación de webs estáticas basada en ReactJS y alimentada por GraphQL. Llevo bastante tiempo utilizando Gatsby y más recientemente lo he empleado para reconstruir mi página personal por completo. Una de las características que más me ha llamado la atención es que los source maps correspondientes al código Javsascript transpilado se publican en los builds de producción por defecto en la V2. Es bueno ser transparentes y publicar el código fuente para compartir con la comunidad software, pero tal vez este sea un efecto indeseado (especialmente cuando desarrollemos websites comerciales). En esta publicación […]

Gatsby: Deshabilitar source maps en producción



Isotope Mail Client
Introducción Isotope mail client es una aplicación webmail de código libre y gratuita construida siguiendo una arquitectura basada en microservicios. En el estado actual, la aplicación es sólo un MVP que ofrece las funcionalidades básicas de cualquier cliente de correo electrónico. A modo personal, el propósito principal de la aplicación es para exponer, explorar y aprender nuevas tecnologías y patrones de diseño y desarrollo de aplicaciones. No obstante, la aplicación debería de ser completamente funcional y resolver muchos de los problemas a los que se enfrentan otros clientes de correo electrónico. Funcionalidades No requiere base de datos Despliegue sencillo y rápido […]

Isotope Mail Client: Introducción y funcionalidades


Test Pyramid
Introducción En esta publicación veremos cómo utilizar MockMvc para probar endpoints creados con Spring. Este es el primer post de una serie dónde analizaremos las principales ventajas de utilizar Spring MVC test framework para probar clases de tipo Controller respecto a otras soluciones y cuáles son las distintas formas de configurar los tests. El código fuente completo del artículo puede encontrarse en GitHub. El proyecto contiene un controller MVC estándar que reenvía las llamadas a un recurso estático y dos controladores REST que devuelven una lista de lenguajes y otra de cafés. MockMvc y la pirámide de los tests En […]

MockMvc – Introducción a Spring MVC testing framework: Probando endpoints


react webpack babel sass mn 2
Introducción En este tutorial veremos como construir una aplicación React con Webpack, Babel y Sass. El principal requisito para este tutorial es disponer de una instalación para tu plataforma/sistema operativo de node con npm. El tutorial está estructurado en varias secciones: Crear un directorio con un proyecto inicial en blanco Instalar Webpack Instalar Babel React Añadir soporte para estilos con Sass Proyecto Inicial El primer paso es crear un proyecto inicial en blanco. Para ello crearemos un directorio para el proyecto y ejecutaremos el siguiente comando dentro del mismo: [crayon-5f364340101e4478578360/] Este comando creará un nuevo fichero package.json con los metadatos por defecto […]

React : Babel + Webpack + Sass aplicación básica



Prestashop
Introducción Clouding.io es una empresa española que ofrece servicios de hosting en la nube, más concretamente servidores Cloud. Recientemente se pusieron en contacto conmigo para que pusiera a prueba sus VPS Cloud desplegando un servidor Linux con Docker y una instancia de Prestashop. En este tutorial veremos cómo crear un nuevo servidor CentOS 7.0 desde la intuitiva interfaz de clouding.io y como instalar y configurar Docker-ce para el despliegue de una tienda virtual Prestashop. Para este último paso emplearemos una imagen Docker de Prestahsop y otra de MySQL para crear una base de datos exclusiva para la tienda. Clouding.io Despliegue […]

Clouding.io: Prestashop sobre Docker en servidor CentOS 7.0


Introducción Esta es la segunda publicación en la seria acerca de Spring Bean Scopes. En el tutorial anterior vimos que cuando se inyectaban Beans de ámbito Prototype dentro de un Singleton  aparecían algunas trabas. El principal problema es que las dependencias Autowired se inyectan en el Singleton cuando este se instancia (evento que ocurre una sola vez) por lo que aunque el Bean inyectado se haya declarado como Prototype, en realidad se comportará como un Singleton. El siguiente código resalta este comportamiento: [crayon-5f3643401254c978899121/] En el ejemplo anterior, a pesar de que el objeto devuelto por el método getAutowiredSample se ha declarado como un […]

Spring Bean Scopes: Singleton con Prototypes


Java 10
Introducción Como probablemente ya sabrás, Java 10 se liberó el pasado 20 de marzo siguiendo el nuevo programa para liberar versiones cada 6 meses. Esta versión viene tras el lanzamiento de Java 9 el pasado septiembre de 2017 y deja esta última version obsoleta. Java 11 se liberará como una versión de soporte prolongado (LTS) y tendrá un periodo de vida mucho más amplio, pero hasta entonces, veamos cuáles son algunas de las nueva funcionalidades en Java 10. Versionado de lanzamientos basado en tiempo Java 10 introduce el nuevo versionado basado en tiempo (JEP 322) que es una reestructuración de JEP 223 liberado en Java […]

Java 10: Probando las nuevas funcionalidades