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.
miércoles, 22 de enero de 2014
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)
Etiquetas:
Debug,
Debug Diagnostic Tool,
DebugDiag,
SOS.,
WinDbg
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.
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.
Etiquetas:
Arquitectura de Software,
Domain-Driven Design
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.
Etiquetas:
Beans de Sesion,
Clases de entidad,
EJB,
Java,
JPA,
NetBeans,
Tutorial
Suscribirse a:
Entradas (Atom)