miércoles, 22 de enero de 2014

Gadget de comentarios recientes para blogspot

Hace unos días me daba cuenta de que en mi blog de blogspot, de nuevo se volvía a 'estropear' el gadget de comentarios recientes. Como en ocasiones anteriores, el motivo de que se haya estropeado el plugin es que para funcionar necesitaba archivos externos y al retirar alguno de ellos el código que genera los comentarios recientes deja de funcionar, pero ya hay solución.

jueves, 16 de enero de 2014

Depurar código administrado en entorno de producción.

Tienes un programa que sólo falla (lanzando una fea excepción) en el entorno de producción y eso es una putada. Por fortuna podemos mirar que esta pasando gracias a depurador de windows WinDgb.exe y un programita muy chulo de microsft que se llama Debug Diagnostic Tool 2.0. (DebugDiag)

lunes, 13 de enero de 2014

Code Kata for fun and profit.

Code Kata es un término acuñado por Dave Thomas en analogía al concepto de kata en las artes marciales. Consiste en un ejercicio de programación para practicar que, en el mejor de los casos, puede ser resuelto de diferentes formas. Voy a proponer uno que me ha parecido muy interesante debido a la gran variedad de formas de resolverse que puede llegar a tener.

miércoles, 11 de diciembre de 2013

Desarrollar en Android apesta.

Pues sí, últimamente estamos de diatriba. Será el frío del invierno que me cabrea...

martes, 22 de octubre de 2013

Tell, Don't Ask

Si tienes clases con un conjunto de getters y setters planos para todos sus atributos lo estás haciendo mal.

jueves, 26 de septiembre de 2013

Una útil combinación de CROSS APPLY y FOR XML

De los numerosos problemas que pueden darse a la hora de presentar información de una base de datos a un cliente, quizás uno de los más recurrentes sea que quieran ver determinados datos agrupados -concatenados- en una única columna. Por ejemplo, supongamos que hay un concesionario de coches de lujo que sirve vehículos exclusivos a una serie de clientes. El caso es que el concesionario mantiene una tabla de clientes y una tabla de vehículos asociados a los clientes. Como son clientes con mucha pasta, cada uno puede tener un número indeterminado de coches (ya que pensamos un ejemplo no vamos a andarnos con miseras de supermercados ecológicos donde se compran calabacines y tomatitos cherry...). 

lunes, 12 de agosto de 2013

No borres nada de la base de datos... pero ni se te ocurra usar borrados lógicos.

Me encanta la cara que me ponen los programadores y analistas cuando les suelto esta frase. Se quedan quietos pensando en la frase e intentando comprender como puede no ser una paradoja imposible de cumplir lo que les acabo de soltar en tan pocas palabras.

La primera parte de la frase se entiende fácil y rápidamente. Unos de los requisitos del sistema es no perder la información original que se ha borrado o modificado para poder consultarla en un momento futuro. En el caso de las modificaciones o borrados permitidos, la solución mas sencilla que viene a la cabeza es una solución completamente válida, aceptable y con unos problemas inherentes asumibles: Tablas de auditoría. Con ellas podemos recuperar fácilmente los valores de una entidad en una fecha concreta.

jueves, 4 de julio de 2013

Arquitecturas para Domain-Driven Design - Parte VII

Diseño final

Bueno final final... queda muchísimo por hacer y definir para tener una arquitectura de verdad, pero sí que puedo crear un esqueleto muy básico que puede dar una idea a grandes rasgos.

Una vez definida la colaboración entre las distintas capas del sistema, voy a dejar fragmentos de código de ejemplo para que el lector se haga una idea del resultado final.

En estos ejemplos se utiliza un contenedor de inyección de dependencias para resolver los servicios de aplicación que se van a utilizar, esto nos ayuda a tener un ServiceLocator que además se encarga de montar toda la cascada de dependencias entre clases. Cosa muy buena para tener una arquitectura débilmente acoplada. 

lunes, 24 de junio de 2013

Conceptos básicos de CSS

Hace poco he hecho un breve resumen introductorio de CSS para una persona que está comenzando a aprender lo que es el HTML, el resultado es este artículo, que está dirigido a personas que no tienen una idea clara de lo que es el CSS. 

jueves, 13 de junio de 2013

Un proyecto en NetBeans de principio a fin (VI). Clases de entidad y beans de sesión

En esta parte del tutorial se presentan las tecnologías Enterprise JavaBeans y Java Persistence. Vamos a conocer a dos asistentes que nos facilitarán bastante la vida a la hora de desarrollar para Java EE:
  • El Asistente para Clases de Entidad de Base de Datos, crea una clase de entidad de la API de persistencia de Java completa para cada tabla seleccionada de la base de datos; con anotaciones de consultas con nombre, campos representando columnas y relaciones representado claves externas.
  • El Asistente de Beans de Sesión para Clases de Entidad crea una fachada EJB de sesión para cada clase de entidad, con métodos básicos de acceso.