viernes, 31 de enero de 2014

Como saltarse las restricciones del antivirus de GMAIL

Hoy me he encontrado con que GMAIL no me deja descargarme un fichero zip sin cifrar adjunto a un correo porque me dice que es o tiene un virus. Resulta que no hay ninguna opción para desactivar esta característica, por lo que ya daba el archivo por perdido puesto que ya no está en las fuentes de donde lo saque antaño y ese correo era mi "copia de seguridad".

lunes, 27 de enero de 2014

Un proyecto en NetBeans de principio a fin (VII). Gestión de sesiones

Todas las aplicaciones de comercio electrónico que ofrecen algún tipo de funcionalidad del estilo del carrito de la compra, necesitan ser capaces de recordar los datos específicos de un usuario y sus acciones en el sitio web. Desafortunadamente, el protocolo HTTP -base de las comunicaciones en Internet- es un protocolo stateless. Esto quiere decir que cada petición recibida por el servidor, es un fragmento independiente de información, que no tiene relación con peticiones recibidas previamente. Por lo tanto, si un cliente pulsa un botón y añade algún artículo a su carrito, nuestra aplicación debe tomar las medidas necesarias para asegurar que el estado del carrito del usuario se actualiza, y además, esa acción no debe afectar al carrito de otro usuario que eventualmente pueda estar navegando por el website al mismo tiempo.

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.