• 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...

  • Crear un archivo Zip con Java, comprimir y descomprimir datos

    java planeta-codigo programacion

    Desde las primeras versiones de Java en el JDK se incluyen clases en el paquete java.util.zip que heredan de las del paquete java.io del sistema de entrada y salida con las que crear archivos comprimidos en formato Zip y comprimir datos en este formato. Comprimir los archivos que permite reducir sensiblemente el tamaño de algunos tipos de archivos como los basados en texto o ciertos archivos que de por si no están comprimidos.
    Continuar leyendo...

  • Herramienta para ejecutar consultas SQL en la base de datos de producción

    software-libre programacion

    No siempre las aplicaciones proporcionan los datos que se necesitan. A veces para obtener cierta información de forma puntual o para corregir un dato que no se puede hacer desde la aplicación es necesario lanzar una consulta SQL a la base de datos relacional. Esto no es lo ideal, simplemente en ocasiones es lo más simple y rápido. Por otro lado, para tareas de análisis algunos usuarios necesitan una forma de tener acceso a los datos y obtener gráficas para analizarlos. En el artículo comento varias herramientas para tener acceso a las diferentes bases de datos ya sean de producción o del entorno de QA.
    Continuar leyendo...

  • Qué es, por qué y cómo activar un segundo factor de autenticación en Google, Amazon, PayPal y otros servicios

    planeta-codigo seguridad

    Las contraseñas son un mecanismo de seguridad empleado para autenticar a un usuario en un servicio al iniciar sesión. Pero las contraseñas son un mecanismo potencialmente débil, por ello varios de los servicios más importantes implementan mecanismos de seguridad adicionales para proteger en mayor medida las cuentas de los usuarios. El segundo factor de autenticación o 2FA es un mecanismo adicional, las contraseñas son algo que se conoce, el 2FA es algo que se tiene. Varios de los servicios más importantes como Google, Amazon y PayPal entre otros lo ofrecen y es recomendable activarlos en aquellos en los que lo hacen.
    Continuar leyendo...

  • Emitir trazas de las peticiones y respuestas HTTP con clientes Java

    java planeta-codigo programacion

    En las peticiones HTTP que se hacen unos microservicios a otros o a recursos externos son varias las cosas por las que una petición HTTP es capaz de fallar. El fallo es un código de estado distinto al correcto 200, ya sea petición invalida 400, un recurso no encontrado 404, credenciales requeridas 401, credenciales inválidas 403 o un error interno de servidor 500 entre otros códigos de estado, otras posibilidades son fallos de conexión de red. Añadir trazas de las peticiones que hacen los microservicios permite obtener información con la que averiguar cual es el motivo de fallo, si además emiten las trazas con las cabeceras y parámetros en formato de la herramienta curl es fácil probar y reproducir el mismo error o la misma acción.
    Continuar leyendo...

  • Cómo encontrar las mejores ofertas de juegos para consola y PC

    juegos

    En las diferentes tiendas digitales de venta de juegos cada semana o quincena hay nuevos juegos con importantes descuentos y ofertas con los que ahorrar, momento ideal para comprarlos a precio reducido aquellos que están en la lista de deseados y bajo seguimiento. Algunas tiendas de juegos envían notificaciones con los juegos en oferta de la lista de favoritos, otras páginas especializadas permiten además hacer un seguimiento del histórico de los precios y también recibir alertas cuando alguno de los juegos bajo seguimiento varía su precio con un descuento durante un periodo de unos días.
    Continuar leyendo...