viernes, julio 22, 2011

Review SQL Antipatterns


Hace unos días terminé de leer SQL Antipatterns, un libro que desde ya recomiendo y que considero de imprescindible lectura.

El autor hace un repaso a las picias más comunes a la hora de crear los modelos de datos de las aplicaciones.

El libro está dividido en cuatro grandes secciones: Antipatrones de diseño lógico, físico, antipatrones de consulta y lo que él llama Application Development Antipatterns (esto es, higiene general).

Sin duda, la parte más jugosa del libro se encuentra en los antipatrones de deseño lógico. Aquí he de reconocer que, aunque en la actualidad ya no caigo en estos errores antipatrones (mi trabajo me ha costado), sí que en algún momento llegué a usar alguno... como el Jaywalking (evitar los "cruces" de tablas mediante campos que contienen listas de identificadores) y el Entity-Attribute-Value... vamos, el famoso cajón DEsastre. La juventud, que nos hace temerarios.

El libro está escrito en un lenguaje que no usa términos demasiado técnicos que podrían llegar a despistar al lector. Se ha preferido obviar ciertos conceptos (se explican luego, en uno de los apéndices) de bb.dd. para centrar la atención única y exclusivamente en cómo evitar el error.

Los ejemplos están construídos a través de una aplicación de control de bugs. Aunque normalmente no hacen falta para conseguir transmitir el mensaje, están bien enlazados y trabajados. Incluye también una gran cantidad de código SQL.

Lo dicho, esencial para poder construir modelos de datos robustos.

miércoles, junio 29, 2011

Problemas con JDBCRealm en Tomcat6 sobre Ubuntu

Me ha llevado unos días el poder desplegar correctamente una aplicación que usaba un realm para la validación de usuarios.

Una vez configurado los ficheros oportunos en el proyecto (podéis ver una entrada sobre esto aquí), al desplegar la aplicación e intentar acceder a los recursos protegidos por el realm, el servidor me redirigía contínuamente a la página de error del login definida para la aplicación.

El problema, aunque simple, me costó más de tres días de trabajo. El servidor era una instalación limpia de un Apache+Tomcat6+MySQL en una Ubuntu. Esta versión de Tomcat para Ubuntu (y supongo que para todas las distro Linux), no se instala con el formato tradicional de carpetas, sino que aparece instalada sobre distintos directorios. Tengo la impresión de que está predefinida para el uso de distintas instancias sobre la misma instalación.

El motivo de que no me validara el usuario cuando accedía a recursos protegidos era que Tomcat no era capaz de encontrar el driver de MySQL. En esta instalación de Tomcat no existe una carpeta TOMCAT_HOME/common/lib (y si la creas, no la tiene en cuenta), y hay que colocar estos en la ruta CATALINA_HOME, que está establecida por defecto en /usr/share/tomcat6 (tomcat6 es el nombre de mi instancia). Ahí hay que dejar los drivers.

Si se quiere cambiar el valor de CATALINA_HOME, deberemos editar el fichero /etc/default/tomcat6. Este fichero también contiene otras cosas interesantes, merece la pena echarle un vistazo.

Bueno... espero que ayude.