5 frases para cuando se limpia el teclado

  • “Un gran teclado implica una gran responsabilidad” – Spiderman
  • “Limpias tu teclado? porque un ñoño que no limpia su teclado no es un hombre de verdad” – The Godfather
  • “Me encanta el olor del teclado en la mañana” – Apocalypse Now
  • “Es un simbolo, significa que ahora la mugre duerme con los peces” – The Godfather
  • “Aprendemos a usar el teclado para no tener que limpiarlo” – Los Simpson

Para acompañar, un par de imágenes de la última limpieza.

Reutilización de configuración de cache: Spring, Hibernate y EhCache

Desde hace un buen tiempo es conocido el beneficio y los cuidados necesarios del (ab)uso de sistemas de Cache en nuestras aplicaciones. Hibernate soporta el uso de varios proveedores de caché (en la inminente versión 3.5 se incluirá un nuevo jugador a la lista, el muy interesante Infinispan, que a juzgar por el benchamark sobre aplicaciones locales publicado en su blog es muuuy eficiente -cerca de un 20% más que EhCache 1.7-, sin embargo aún no he encontrado una comparación contra el reciente EhCache 2.0 y la cantidad de dependencias de Infinispan es realmente grande).
Sigue leyendo

Hibernate, Spring, cglib y maven

Actualizando las dependencias de un proyecto a Hibernate 3.3.2 (en espera de la versión 3.5) me encontré con que hay algunas cuestiones a tener en cuenta, la primera es que desde hace un par de versiones Hibernate reemplazó cglib por javassist (que es mas lento):

  1. Los releases de Hibernate se publican en el repositorio maven de repository.jboss.org/maven2
  2. Para hacer disponible un repositorio en sonatype nexus no solo es necesario crearlo sino que hace falta insertarlo en el listado de repositorios públicos
  3. Las dependencias de Hibernate para usar cglib como bytecode provider incluyen:
    <!-- Hibernate -->
    	<dependency>
    	   <groupId>org.hibernate</groupId>
    	   <artifactId>hibernate-core</artifactId>
    	   <version>${hibernate.version}</version>
    		<exclusions>
    		  <exclusion>
    		      <groupId>asm</groupId>
    		      <artifactId>asm</artifactId>
    		  </exclusion>
    		  <exclusion>
    		      <groupId>asm</groupId>
    		      <artifactId>asm-attrs</artifactId>
    		  </exclusion>
    		</exclusions>
    	</dependency>
    	<dependency>
    	    <groupId>org.hibernate</groupId>
    	    <artifactId>hibernate-annotations</artifactId>
    	    <version>${hibernate.annotations.version}</version>
    	</dependency>
    	<dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-c3p0</artifactId>
            <version>${hibernate.version}</version>
        </dependency>
    	
    	<!-- Bytecode -->
    	<dependency>
    		<groupId>cglib</groupId>
    		<artifactId>cglib-nodep</artifactId>
    		<version>${cglib.version}</version>
    	</dependency>
    
  4. La versión de hibernate es 3.3.2.GA, la de hibernate-annotations es 3.4.0.GA la de cglib es 2.2
  5. Es necesario crear el archivo hibernate.properties con una propiedad hibernate.bytecode.provider=cglib en la raíz del classpath (no sirve configurarlo mediante la propiedad hibernateProperties de la configuración de spring del sessionFactory)

De esta manera se actualiza correctamente Hibernate, se evade la dependencia (viejisima) de ehcache 1.2.3 y se pueden usar anotaciones además de archivos de mapeo.

IS en Colombia, al nivel de la Ingeniería Civil?

En Colombia es claro el atraso [1,2] a nivel de infraestructura que se tiene respecto a la media latinoamericana y más aún a nivel mundial. Es claro que el nivel de la ingeniería Civil Colombiana no es el mejor, ahora bien, con el último escándalo cabe preguntarse si el nivel de calidad de la Ingeniería de Software en Colombia esta en un estado tan lamentable como el que parecen mostrar los hechos.
Sigue leyendo