• Después de la guerra del número de núcleos en los procesadores, ¿vendrá la guerra de la computación heterogénea o manycores?

    hardware opinion planeta-codigo

    Intel

    AMD

    Hace alguna década los procesadores eran de un solo núcleo y hasta la aparición de Windows NT y GNU/Linux los sistemas operativos no se aprovechaban plenamente las capacidades de multiprogramación de los procesadores que ya se incluían desde los Intel 386.

    La mejora de rendimiento en los procesadores se conseguía a base de mejores diseños en los procesadores como la segmentación, superescalaridad, caches de datos e caches de instrucciones más grandes que era posible debido también en parte al mayor número de transistores que permitían incluir los procesos de litografía de tamaño más reducidos para los transistores, también por la adición de nuevas instrucciones en el conjunto de la arquitectura o ISA, o mayor número de registros y de mayor tamaño entre otras cosas.


    Continuar leyendo...

  • Identificar todas las trazas de una petición en una aplicación web Java con Log4j

    java planeta-codigo programacion

    Java

    En una aplicación web hay múltiples usuarios realizando peticiones al servidor de modo que al usar una librería de logging como Log4j las trazas de información de los diferentes usuarios aparecerán intercaladas. En esta maraña de trazas resulta difícil obtener la secuencia de trazas de una petición siendo la diferencia entre descubrir la causa de un error o pasar varias horas revisando trazas sin encontrar nada significativo en la inmensa cantidad de ellas relativas a otras peticiones. La librería Log4j proporciona un mecanismo para seguir la secuencia completa de trazas de una petición con el concepto denominado fish tagging.


    Continuar leyendo...

  • Como recuperar Arch Linux después de una actualización que provoca el sistema no inicie

    gnu-linux planeta-codigo software-libre

    Instalar un sistema GNU/Linux es sencillo y está muy bien, también es importante saber como intentar recuperarlo cuando una actualización de software provoca que el sistema no se inicie con normalidad hasta el entorno de escritorio gráfico, el motivo puede ser incluso un kernel panic. El objetivo de la recuperación es corregir el problema del inicio, si no es posible, recuperar los valiosos documentos, imágenes, vídeos u otros archivos antes de finalmente llegar al punto de reinstalar el sistema para devolverlo a un estado correcto aunque quizá perdiendo los datos que tuviese.
    Continuar leyendo...

  • La librería Log4j para emitir trazas en aplicaciones Java

    java planeta-codigo programacion

    Java

    La librería Log4j es una librería para emitir las trazas de depuración e información indispensables cuando son requeridas en una aplicación Java. Es la librería sucesora de logback y aunque no es imprescindible suele usarse en combinación con slf4j ya que esta permite cambiar de librería de logging subyacente sin hacer ningún cambio en la aplicación.

    Algunas de las nuevas características de log4j son:

    • Rendimiento mejorado usando funcionalidades asíncronas en los loggers.
    • Soporte para múltiples APIs como SL4J, Commons Logging y java.util.logging (JUL).
    • Sin encadenamientos a la librería al poder en cualquier momento usar cualquier librería compatible con SLF4J.
    • Recarga automática de la configuración sin perder ninguna traza.
    • Filtrado avanzado basado en datos de contexto, marcadores, expresiones regulares y otros componentes.
    • Arquitectura basada en plugins.
    • Soporte de propiedades definidas en archivos de configuración, propiedades del sistema, variables de entorno, el mapa ThreadContext y datos del evento.
    • Soporte de lambdas de Java 8. Las expresiones lambdas no se evalúan si no está activado el nivel de log consiguiendo el mismo efecto que con una sentencia if pero en menos código.
    • Niveles de log personalizados fácilmente definibles sin necesidad de realizar subclases.
    • Recolección de basura reducida lo que evita presión al recolector de basura y mejora el rendimiento de las aplicaciones.

    Por defecto, la configuración de Log4j se describe en un archivo xml aunque también soporta definirlo en un formato menos verboso como yaml. La siguiente aplicación de Spring Boot al iniciarse emite en la consola varios mensajes usando log4j2.


    Continuar leyendo...

  • Sobre la venta entre particulares de eBay, milanuncios y Wallapop

    opinion

    Ya he escrito en un varios artículos relacionados comentando que estoy interesando en comprar un Intel NUC pero como lo que quiero aún no se comercializa la espera ya se me está haciendo muy larga, me estoy aburriendo un poco de impaciencia y para entretenerme mientras me ha dado por buscar NUCs en las principales páginas de venta entre particulares y de segunda mano como eBay, milanuncios y Wallapop. Por curiosidad a ver que precio tienen y si me resultaría atractivo comprar un NUC de una generación anterior en vez de la última que saldrá ya no a mucho tardar.


    Continuar leyendo...

  • Pruebas funcionales con Geb en una aplicación web Java

    java planeta-codigo programacion

    Geb

    Java

    Las pruebas automatizados permiten comprobar que una aplicación se comporta de la manera esperada en los casos probados, creando pruebas automatizadas se evita hacer las aburridas y repetitivas pruebas manuales que consumen gran cantidad de tiempo. Hay diferentes categorías de pruebas: unitarias, de integración y las funcionales. Para las pruebas unitarias y de integración en la plataforma Java unas de las más populares herramientas son JUnit y Spock, para las pruebas funcionales están Selenium y la herramienta que explicaré en este artículo Geb que puede usarse junto con Spock haciendo que el código de los teses sea muy descriptivo.


    Continuar leyendo...

  • Qué es un SUT, fake, stub, mock y spy en las pruebas con un ejemplo

    java planeta-codigo programacion

    Las pruebas unitarias y de integración tratan de probar que el comportamiento del sujeto bajo prueba es el esperado. Este sujeto bajo prueba usará colaboradores que en las pruebas deben ser reemplazados por fakes para probar las condiciones deseadas del de sujeto bajo prueba. Dependiendo del comportamiento asignado al colaborador tenemos varios tipos: stub, mock o spy.
    Continuar leyendo...

  • Hemeroteca #13

    blog java planeta-codigo programacion software software-libre tapestry gnu-linux

    El primer semestre del 2018 ya ha pasado. Estos primeros meses he publicado 38 artículos sobre la temática habitual de esta bitácora como programación, software libre, GNU/Linux algunos de opinión relacionados con la tecnología. Las visitas e ingresos de AdSense no han crecido tanto como en ocasiones anteriores pero se han mantenido a un nivel similar sobre los 30K páginas vistas y los 30 € de ingresos en AdSense que no están nada mal.


    Continuar leyendo...

  • Decidido a comprar un Intel NUC entre las opciones que he evaluado

    hardware planeta-codigo opinion

    Intel

    El ordenador portátil que tenía sigue siendo perfectamente útil, sin embargo, en algunos casos concretos de mi uso la cantidad de memoria que tenía se me estaba quedando corta y cuando me pasa esto suelo aprovechar si alguien de mi entorno necesita ordenador traspasarlo y yo comprarme otro nuevo.

    El ordenador que tenía era un Sony VAIO de finales del 2012 con un procesador Intel i5-3210M con gráfica integrada HD 4000, 8 GiB de memoria, almacenamiento de estado sólido Samsung 840 EVO de 256 GiB con interfaz SATA y una pantalla de resolución 1600x900. Durante todo este tiempo me ha funcionado a la perfección, incluso con su gráfica me fue suficiente para un entorno de escritorio GNOME con GNU/Linux y he acabado muy contento con la marca Sony al contrario de mi anterior portátil Dell XPS 1530 de la que no pienso comprar nunca nada de esta marca, quizá tuve mala suerte pero el portátil Dell no fue barato, no acabé contento con la calidad del producto pasado el encantamiento inicial y al final acabó totalmente muerto sin ni siquiera encenderse.


    Continuar leyendo...

  • Java Magazine, la publicación gratuita sobre Java

    java planeta-codigo programacion

    Java

    La revista Java Magazine es una publicación bimensual gratuita que contiene artículos técnicos sobre temas muy variados relacionados con Java. Las revistas pueden consultarse directamente en la web o de forma más cómoda descargándola a nuestro ordenador en formato de archivo PDF. También es posible suscribirse a una lista de distribución para recibir mediante un correo electrónico una notificación cuando se publique un nuevo número de la revista o estar atento y seguir al twitter de la revista @Oraclejavamag. Su longitud ronda algo menos de 100 páginas por número.


    Continuar leyendo...

  • Soporte para lanzar eventos desde JavaScript con Ajax en un componente de Apache Tapestry

    java javascript planeta-codigo programacion tapestry

    Apache Tapestry

    Java

    Para desarrollar aplicaciones web con el lenguaje de programación Java hay gran cantidad de frameworks que proponen un marco de trabajo para proporcionar la mayor parte de la funcionalidad de infraestructura necesaria para una aplicación. La mayoría basados en acciones y unos pocos basados en componentes. Una aplicación web no solo consta de la parte del servidor y desde hace tiempo la parte de cliente ha cobrado gran importancia.


    Continuar leyendo...

  • Actualizar las versiones de las librerías JavaScript built-in de Apache Tapestry

    java planeta-codigo programacion tapestry

    Apache Tapestry

    Java

    El framework Apache Tapestry para el desarrollo de aplicaciones web Java basado en componentes aparte de ser un framework para el desarrollo de la capa de presentación del lado del servidor y lógica de negocio también ofrece soporte para el desarrollo de funcionalidad del lado del cliente. Incorpora de serie las librerías RequireJS para la gestión de módulos y dependencias de JavaScript, la popular jQuery para la manipulación de elementos del HTML y Underscore que añade algunas utilidades que no tiene el lenguaje JavaScript y Bootstrap para los estilos además de alguna otra librería JavaScript de menor relevancia que estas.


    Continuar leyendo...

  • Dependencias sobre librerías de lado de cliente con Webjars en una aplicación web Java

    java planeta-codigo programacion tapestry

    Java

    Webjars

    Una aplicación web se compone de código de lado de servidor, en el caso de utilizar el lenguaje de programación Java de código Java normalmente utilizando algún de los muchos framework web, por otra parte se compone de código de lado de cliente con una gran variedad de librerías de JavaScript como jQuery, React, Underscore o Bootstrap para los estilos. En las aplicaciones Java las librerías de lado de servidor se gestionan como dependencias del proyecto y con herramientas como Gradle se puede automatizar el descargar la librería de repositorios como Maven Central y la versión que se necesite así como hacer sencillo actualizar a una nueva. En el caso de las librerías de lado del cliente con Webjars se consiguen los mismos beneficios.


    Continuar leyendo...

  • Empaquetar una aplicación Java en un archivo jar ejecutable incluyendo sus dependencias

    java planeta-codigo programacion

    Las aplicaciones Java se distribuyen en uno o varios archivos jar. Si queremos facilitar la distribución de la aplicación con un único archivo jar existe la posibilidad de reempaquetar el jar de la aplicación y sus dependencias en tiempo de ejecución en un nuevo archivo jar que lo contenga todo, a este nuevo jar se le conoce como uberjar o fatjar.
    Continuar leyendo...

  • Generador de páginas web estáticas y bitácoras Hugo

    blog planeta-codigo

    Hugo es un de las mejores herramientas en la categoría de generadores de páginas web estáticas, también puede utilizarse para generar bitácoras. Su fácil instalación, rapidez, personalización o su gran sistema de plantillas y taxonomía son varias de sus características destacadas. Con Hugo conseguí resolver varias de las necesidades que tenía para Blog Bitix, la gestión de enlaces internos y externos, personalización de diseño y procesado de imágenes.
    Continuar leyendo...