• Documentación para registrar las decisiones de arquitectura en software e infraestructura

    planeta-codigo programacion

    Las tareas de un programador no consisten únicamente en escribir líneas de código o de un arquitecto decidir que usar o no usar y como. Una tarea importante de un programador o un arquitecto debe ser también escribir o mantener documentación actualizada. La arquitectura empleada en una aplicación permite conocer cuáles son sus componentes y piezas específicas de las que se compone sin tener que analizar el código fuente. La arquitectura de una aplicación puede ser de muchas formas, las decisiones de arquitectura también son un aspecto susceptible de ser documentadas, que permitan conocer cuáles fueron las motivaciones para elegir entre unas opciones y otras y que cambios de arquitectura ha sufrido una aplicación y por que motivos.
    Continuar leyendo...

  • Analítica web con Matomo como alternativa a Google Analytics

    planeta-codigo web

    Matomo es una alternativa a Google Analytics con funciones similares que cubren las necesidades de la mayoría de sitios web. Es software libre con algunas funciones premium que requieren comprar una licencia anual de uso. Matomo se puede hospedar on-premise que requiere administrar esa infraestructura o en la nube ofrecida por la propia Matomo. En el artículo muestro en un ejemplo como empezar a usar Matomo en un sitio web con Docker.
    Continuar leyendo...

  • Estrategia de batalla básica en el juego World of Warships Legends

    juegos

    El juego World of Warships es un juego de estrategia en el que la habilidad en el manejo del mando o disparo no es tan importante para ser un jugador que tenga un nivel por encima de la media. Otra parte importante de este juego es el juego en equipo en la que cada miembro según clase de barco y características ha de desempeñar su papel para que el equipo consiga la victoria. Conocer la misión de cada barco, las características de barco propio y del contrario junto con otras nociones básicas como que objetivos enemigos son los prioritarios, dónde posicionarse y que errores comunes no cometer también contribuyen a ser un mejor jugador.
    Continuar leyendo...

  • Analítica web en el servidor sin JavaScript en el cliente con GoAccess

    planeta-codigo web

    Google Analytics es la herramienta más utilizada para implementar la funcionalidad de analítica en un sitio web. Es fácil de usar, de implementar, no requiere mantenimiento de infraestructura propia, es gratuita, ofrece numerosas funcionalidades que ayudan enormemente a obtener información del sitio web, de los usuarios, obtener informes. Sin embargo, Google Analytics es una tercera parte con la que se comparte la información del sitio web que supone una pérdida de privacidad y protección de datos del sitio web y requiere instalar un script de JavaScript que ralentiza la carga de las páginas web. GoAccess ofrece analítica web en tiempo real que al contrario que Analytics obtiene los datos únicamente desde el lado del servidor basándose en los archivos del log del servidor web, es software libre y es utilizable sin necesidad de involucrar a terceras partes.
    Continuar leyendo...

  • Análisis y guía del juego de rol For the King

    juegos

    El juego de rol For the King no destaca por tener los gráficos más avanzados o una historia muy elaborada. Lo compensa con una muy buena implementación de lo esencial en un juego de rol con múltiples clases de personajes, estadísticas en cada atributo, equipo y objetos, un sistema de combate sencillo, rápido y bien implementado basado en estadística que requiere pensar en la acción a realizar durante el turno de combate. Un juego sencillo a la vez que bastante entretenido en la categoría de juego de rol, estrategia, exploración de mazmorras y combate por turnos.
    Continuar leyendo...

  • Hemeroteca #18

    blog planeta-codigo

    Una cosa es escribir artículos de ejemplo y otra usarlos en una empresa que factura unos cuantos cientos de millones de euros cuyo servicio es considerado crítico en producción. Por ejemplo por citar algunos artículos de este año, algo como la autenticación de los usuarios con Keycloak no es sencillo implementarlo e integrarlo en una organización con numerosos sistemas ya funcionando, o implementar un segundo factor de autenticación, o un sistema para realizar las traducciones, o trazabilidad con Sleuth y Zipkin, o tener una herramienta para consultas SQL en producción con SQLPad, o definir una autoridad de certificación, o disponer de una arquitectura de referencia en grado de producción de las aplicaciones Consul, Vault y Nomad de HashiCorp.
    Continuar leyendo...

  • Artículo #8 de Yo apoyo al software libre

    planeta-codigo software-libre

    Con este artículo continúo haciendo de vez en cuando una pequeña donación a algunos programas que utilizo habitualmente y proyectos que me parecen importántes e útiles con la intención de apoyar su desarrollo aunque sean cantidades pequeñas. Este es ya el octavo artículo de donación que escribo y poco a poco las cantidades que he donado ya empiezan a ser respetables.
    Continuar leyendo...

  • Para qué sirve la palabra clave final en el código fuente Java

    java planeta-codigo

    Algunas personas y en algunos proyectos Java añaden en la declaración de cada parámetro de un método o variable local la palabra reservada final. La palabra final tiene su utilidad pero hacerlo de forma indiscriminada y en la totalidad de cada parámetro y variable local de cada método hace más verboso el código sin proporcionar una utilidad significativa porque Java ya en ciertas circunstancias considera a muchas variables efectivamente como final, si al escribir el código se sigue la recomendación de no hacer nunca asignaciones sobre variables que son parámetros y se prefiere crear una nueva variable local en vez de modificar el valor de una existente.
    Continuar leyendo...

  • Internacionalizar, localizar y dar formato a cadenas, números, importes y fechas en Java

    java planeta-codigo

    La internacionalización y localización son funcionalidades habitualmente necesarias de implementar en una aplicación. La localización ha de tener en cuenta los diferentes literales para cada idioma y no hardcodearlos en el código fuente de la aplicación, las diferentes formas plurales de los lenguajes, el formato de números e importes, fechas e incluso utilizar la forma correcta para ordenar cadenas alfabéticamente.
    Continuar leyendo...

  • La herramienta Weblate para traducir una aplicación a múltiples idiomas

    planeta-codigo programacion software-libre

    La internacionalización (i18n) y localización (i10n) en un proyecto de software es muy habitual y necesario cuando la aplicación ha de soportar múltiples lenguajes, países, regiones, culturas o en el mismo país diferentes idiomas oficiales según la región. La traducción necesita un flujo de trabajo coordinado entre los desarrolladores de la aplicación que realizan la internacionalización y los traductores que realizan la localización. Para facilitar el flujo de trabajo y funcionalidades útiles para los traductores hay herramientas específicas para la tarea, una herramienta para traducciones de software libre es Weblate.
    Continuar leyendo...

  • Tipos de arquitecturas de aplicaciones de software

    programacion planeta-codigo

    Con el paso de los años las arquitectura recomendadas han cambiado. En el caso de las aplicaciones web pasando por la arquitectura spaghetti, a la por capas y finalmente con una mezcla de hexagonal, domain-driven-design o DDD y dependiendo del caso siendo RESTful, utilizando CQRS, estándo dirigida por eventos o event-driven y en los casos en los que su aplicación es útil usando event sourcing.
    Continuar leyendo...

  • Guía básica sobre teclados mecánicos para ordenador

    hardware planeta-codigo

    Los teclados mecánicos son un producto de mayor calidad que los teclados de membrana más baratos. Los teclados mecánicos son apreciados por sus usuarios por la diferencia de tacto en la pulsación de las teclas, durabilidad, personalización y formatos de tamaños. Los teclados mecánicos son más caros pero para los usuarios que hacen un uso intensivo de ellos durante muchas horas son una mejora significativa en la escritura y pulsación de teclas.
    Continuar leyendo...

  • Autenticación con OpenID/OAuth en cualquier web con Nginx y de forma nativa con Spring Boot

    java planeta-codigo programacion software-libre

    La autenticación permite identificar a los usuarios en una aplicación, en muchas es una necesidad para no permitir accesos no autorizados a la información que proporcionan o realizar las acciones que ofrecen. Las aplicaciones heredadas o legacy en ocasiones no es posible modificarlas y cuando una organización tiene varias aplicaciones gestionar los usuarios en cada una de ellas de forma individual se convierte en un problema. OpenID Connect proporciona la autenticación en el protocolo OAuth 2, con este protocolo las aplicaciones pueden delegar la autenticación a un proveedor de autenticación y ser este la que identifique a los usuarios y los gestione de forma forma centralizada además de proporcionar un inicio de sesión único o single-sing-on a varias aplicaciones. El servidor web Nginx tiene proxys que permiten añadir autenticación OAuth 2 a cualquier servicio web y las aplicaciones de Spring Boot pueden implementarlo de forma nativa.
    Continuar leyendo...