El problema del día perdido
Tiempo de lectura estimada: 3 minutos
Víctor JáquezHoy definitivamente hize varias cosas, pero ninguna de las cosas que yo quisiera haber hecho. El problema es no tener un problema qué resolver, una agenda con la que uno se halla comprometido. Es el problema del agente viajero que quiere ir a todos lados al mismo tiempo. Lástima que Dijkstra no inventó un algoritmo para eso. ¿Cuál debe ser mi objetivo del día de mañana? Tengo que tener uno y mandar al carajo todo lo demás, al menos por un rato.
Creo que lo que debo hacer es mi "itch" personal. ¡Tengo que rascarme! Así que mañana lo dedicaré a intentar portar el Doom al board... Suena cool ¿no? Ya veremos que tan cool es el proceso.
Finalmente pude destazar boost y extraer solamente la biblioteca program_options y hacer que compile en Windows. El problema es que tuve que copiarme casi todos los includes. Veremos que tal va esta apuesta.
Los ebuilds se me han atrasado y ahora mi emerge --update es enooorme. Con la añadidura de que tengo Gnome inestable (2.16) pendiente. Dejaré la compu trabajando en eso toda la noche. Por lo pronto está compilando gcc4.
Vero vino a Monterrey. Me dijo que me buscaría al terminar su jornada. No me ha hablado. Yo creo que ya es compromiso roto.
Hablemos sobre le patrón de diseño Proxy.
Problema:
Necesitas manejar objetos que consumen muchos recursos, y no deseas instanciar tales objetos a menos y sólo hasta el momento en que estos objetos solicitados por el cliente.
Objetivos:
Proporcionar un sustituto o intermediario de un objeto para controlar su acceso.
Usar una capa extra indirecta para proporcionar un acceso ya sea distribuido, controlado o inteligente.
Agregar un envoltorio y un delegado para proteger al componente real de complejidad innecesaria.
Implementación:
Diseñar un sustituto o intermediario que: instancie el objeto real la primera vez que el cliente haca una solicitud del proxy, almacene la instancia y devuelva este objeto real. Posteriormente todas las solicitudes siguientes son simples reenvíos del objeto real almacenado previamente.
Ejemplos clásicos del patrón proxy:
Proxy remoto: Ofrece una referencia a un objeto localizado en un espacio con dirección diferente ya sea en la misma computadora o en otra.
Proxy virtual: Permite la creación de un objeto que consume intensivamente memoria bajo demanda. El objeto no será creado hasta que realmente sea necesario.
Proxy Copy-On-Write: Difiere la copia (clonación) de un objeto seleccionado hasta que sea esto requerido dadas las acciones de un cliente.
Proxy de protección de acceso: Ofrece distintos clientes con diferentes niveles de acceso al objeto seleccionado.
Proxy caché: Ofrece un almacenamiento temporal de los resultados de una operación objetivo costosa, por lo que varios clientes puedes compartir los mismos resultados.
Proxy cortafuegos: Proteje al objetivo de clientes malintencionados (o viceversa).
Proxy de sincronización: Ofrece accesos múltiples al objeto seleccionado.
Proxy de referencia inteligente: Ofrece acciones adicionales cuando el objeto seleccionado es referenciado, tal como contar el número de referencias al objeto.