• Desempaquetado y análisis Samsung SSD 840 EVO 250 GB

    hardware planeta-codigo

    En estos momentos sin lugar a dudas la actualización más provechosa para mejorar el rendimiento de un equipo es una unidad de estado sólido o SSD una vez tengamos memoria RAM suficiente, unos 2 GiB suelen ser suficientes para tareas ofimáticas y acceder a internet y los equipos que se están vendiendo ahora ya suelen venir con 4 GiB e incluso 8 GiB. El tiempo de acceso a un disco duro mecánico es grande y la velocidad de transferencia es pequeña, en los momentos que se require un uso intensivo del disco se nota que son el cuello de botella del sistema. A veces una mejora en el software puede producir una notable aumento de rendimiento con el mismo hardware pero cuando ya no hay margen de mejora en el software con una mejora en el hardware podemos conseguir el aumento de rendimiento buscado, este es el caso de los SSD.


    Continuar leyendo...

  • Novedades y nuevas características de Java 8

    java programacion planeta-codigo

    La octava versión de Java añade numerosas novedades importantes al lenguaje. Algunas de las más destacadas son las expresiones lambdas y los streams que dotan al lenguaje de características de programación funcional pero también lo hacen en muchas construcciones de código comunes más expresivo, menos extenso y más legible. Pero hay otras novedades relevantes que detallo en el artículo como los métodos por defecto en interfaces o la nueva API para fechas.
    Continuar leyendo...

  • Guía para la creación de un blog con Octopress

    blog software software-libre planeta-codigo

    Octopress

    En la primera entrada de este blog usando Octopress ya comentaba las razones por las que he pasado de usar Blogger a usar Octopress. Entre las razones del cambio estaban la posibilidad en Octopress de escribir en markdown, edición desconectado (para textos e imágenes), diseño adaptable y más personalizable, git y control de versiones, alojamiento en cualquier servidor web. Aún sin ser Octpress también tiene cosas mejorables pero desde luego me está resultando mucho mejor que blogger.


    Continuar leyendo...

  • Introducción y ejemplo sencillo de Java Message Service (JMS)

    java programacion planeta-codigo

    JMS es una especificación de Java que define en esta plataforma una forma comunicación entre aplicaciones basada en el intercambio de mensajes. Los mensajes permiten a las aplicaciones no conocerse entre sí y comunicarse de forma asíncrona pudiendo hacer que los mensajes de una cola solo sean consumidos por un único receptor o por varios suscriptores interesados en un determinado tema. En el código de ejemplo muestro tanto la comunicación con colas (queues) como con temas (topics)
    Continuar leyendo...

  • Configurar SSL/TLS en un servidor Tomcat, JBoss, WildFly, Lighttpd, Nginx o Apache

    seguridad software software-libre planeta-codigo web

    Tanto en un servidor web como de aplicaciones podemos hacer que la comunicación entre el cliente y el servidor esté cifrada usando un protocolo seguro. La configuración para usar un protocolo seguro en cada servidor es diferente pero todos se basan en lo mismo, usar un certificado y un clave. En este artículo muestro la configuración necesaria en los servidores web y de aplicaciones más populares.
    Continuar leyendo...

  • Generar y convertir claves y certificados con OpenSSL

    programacion seguridad software software-libre web

    Usando los comandos expuestos en este artículo y con OpenSSL podemos crear una clave pública y privada para usarlo con ssh o para cifrar y descifrar mensajes, un certificado autofirmado que podremos usar en un servidor de aplicaciones para usar un protocolo seguro y también convertir las claves y certificados a uno de los formatos aceptados por la aplicación que usemos.
    Continuar leyendo...

  • Libro sobre desarrollo de aplicaciones con Apache Tapestry

    java planeta-codigo programacion tapestry

    Apache Tapestry

    Hace unos meses publiqué el libro PlugIn Tapestry, un libro acerca del desarrollo de aplicaciones y páginas web en el lenguaje Java y con el framework Apache Tapestry.

    PlugIn Tapestry

    Apache Tapestry es un framework orientado a componentes para crear aplicaciones web rápidas, dinámicas, robustas y altamente escalables en la plataforma Java. Al basarse en componentes es distinto de los muchos basados en acciones similares en esencia a Struts que podemos encontrar en la plataforma Java como Spring, Grails y Play! y también de los muchos otros en los que la principal diferencia es el lenguaje como Django (Python), Symfony (PHP), ASP.NET MVC (C#) o Ruby On Rails (Ruby).


    Continuar leyendo...

  • Presentación sobre Apache Tapestry

    java programacion tapestry software planeta-codigo

    Apache Tapestry

    El 10 de febrero tuve la oportunidad de dar una charla, la primera, sobre Apache Tapestry para el equipo de desarrolladores de la empresa en la que trabajo. Que en el equipo de desarrollo tengamos la posibilidad de vez en cuando dedicar un par de horas para juntarnos y compartir conocimiento es una buena iniciativa ya que siendo ya un equipo bastante grande de personas y con un nivel técnico elevado cada uno tiene un conocimiento que los demás pueden estar interesados en conocer al menos a nivel superficial, es motivador tener estas oportunidades.


    Continuar leyendo...

  • El servidor de aplicaciones JBoss/WildFly

    java programacion software planeta-codigo

    WildFly

    Para una pequeña (o no tan pequeña) aplicación web desarrollada en la plataforma Java un servidor como Tomcat o Jetty es suficiente. Pero una aplicación grande o un entorno empresarial probablemente empiece a requerir funcionalidades que Tomcat no proporciona de por si. En algunos casos una librería puede suplir esta carencia, este podría ser el caso de Hibernate para la persistencia o Apache Shiro para la seguridad de la aplicación. Sin embargo, cuando sea posible y tenga sentido es buena idea seguir alguna de las especificaciones o APIs que proporciona la plataforma Java EE ya que de esta manera podremos cambiar de implementación sin necesidad de modificar el código de la aplicación y permite integrar dos sistemas diferentes si ambos siguen una determinada especificación. Un ejemplo podría ser el caso de Hibernate con la especificación JPA que proporciona una funcionalidad equivalente (de hecho esta especificación se basa en Hibernate y se puede usar Hibernate como implementación a través de la API que define JPA) o de integración de sistemas con JMS.


    Continuar leyendo...

  • Logging usando marcadores con slf4j y logback

    java planeta-codigo programacion

    Java

    Un sistema de logging en una aplicación es indispensable para saber lo que está sucediendo en la aplicación en el mismo momento o pasado un tiempo. Es de gran utilidad tanto para en el momento de desarrollar la aplicación como para una vez puesta en producción. Con el registro de las trazas podemos obtener información que nos permitirá descubrir un error o averiguar más fácilmente y rápidamente porque sucede algún comportamiento que no es como se espera.


    Continuar leyendo...

  • Ejemplo del patrón de diseño No Operation

    java planeta-codigo programacion

    Java

    Hasta el momento ya he escrito alguna entrada sobre los patrones de diseño en general, sobre algunos casos particulares como el patrón de diseño Command relacionado con la programación concurrente y sobre el patrón de diseño State para hacer máquinas de estados. En esta entrada hablaré sobre otro patrón de diseño, el patrón No Operation y de que forma podemos aprovecharlo para resolver algún problema y hacer nuestro código más simple.

    En un programa que emplea un lenguaje de programación orientado a objetos estos están constantemente relacionándose entre si a través de llamadas a métodos y a través de las referencias que un objeto posee de otros. Sin embargo, es habitual que un determinado método devuelva un null en vez de una referencia a un objeto. Esta referencia null puede ser un problema ya que nos obliga en el código hacer una comprobación antes de poder llamarlo. Si un método devuelve un null puede dar como resultado un NullPointerException en otra parte de la aplicación en donde se intente usar esa referencia y no se haga la comprobación.


    Continuar leyendo...

  • Mi experiencia y consejos para un blog

    blog

    Octopress

    Al momento de escribir esta entrada el blog ya tiene más de 3 años, ya más cerca de 4. En esta entrada en vez de algo relacionado con la tecnología quiero comentar por que empecé un blog, que supone tener un blog, como ha evolucionado durante este tiempo, como lo hago y por que hago algunas cosas como las hago por si mi modesta experiencia le sirve de utilidad a algún otro blogger.


    Continuar leyendo...

  • Raspberry Pi como Media Center con GeeXboX

    hardware software software-libre

    GeeXboX

    Raspberry Pi

    La Raspberry Pi es un computador del tamaño de una tarjeta de crédito que se puede usar para diferentes propósitos. Hasta hace no mucho a mi me servía para descargar películas mediante torrent, sin embargo, puede usarse perfectamente para otros propósitos muy interesantes como usarla como Media Center en una televisión que no es una Smart TV o como Media Center con más opciones.

    Dada la popularidad que tiene la Raspberry Pi disponemos de varias distribuciones con soporte para usar la Raspberry Pi como centro multimedia de nuestro salón. Las principales son:


    Continuar leyendo...

  • Hemeroteca #4

    blog planeta-codigo

    Octopress

    El 2013 toca a su fin, el 2014 está llamando a la puerta y como cada medio año en el blog toca hacer una recapitulación con las entradas que he escrito durante estos meses. Durante este año he cumplido con el objetivo de escribir y publicar una entrada por semana, en total han sido 52, casi todas publicadas en elblogdepicodev y las del último més del año publicadas en Blog Bitix. Esta entrada es un buen momento para leer alguna que te perdiste o releer alguna que te gustó.


    Continuar leyendo...