jueves, 22 de febrero de 2007

GeneXus Extensions: Realizar una acción al eliminar un objeto

Está disponible para bajar del sitio de Available extensions (en el wiki de GeneXus), una extensión de nombre RemoveFilesOnDelete, que permite eliminar todos los archivos asociados a un determinado objeto de la KB, en el momento en que este se borra.

Pero, ¿cómo saber cuando un objeto se borra? Voy a explicar como desarrollar esta extensión.

Lo primero que debemos hacer es crear un nuevo proyecto de Visual Studio de tipo GeneXus Package (para que aparezca en la lista hay que tener instalado el SDK). Cuando se selecciona esta opción, se muestra un wizard, en el cual debemos desmarcar la opción para crear un nuevo tipo de objeto, que no es lo que queremos hacer en esta oportunidad.

Una vez creado el proyecto, tenemos un archivo de nombew Package.cs, que tiene la implementación básica. En ese archivo, dentro del método Initialize, debemos agregar la siguiente línea

EventsService.Events.Participate(this);

Lo que hace esto es suscribir al objeto Package (mediante la referencia "this") para que sea notificado cuando se produce algún evento. Es necesario incluir el namespace Artech.Architecture.Common.Events mediante la directiva using para poder utilizar la clase EventsService.

Ahora lo que debemos hacer es programar la lógica par capturar específicamente el evento que nos interesa, en este caso, va a ser AfterDeleteKBObject. Esto lo hacemos también en la clase Package, creando un método como sigue:

[EventSubscription(ArchitectureEvents.AfterDeleteKBObject)]
public void OnAfterDeleteKBObject(object sender, KBObjectEventArgs args)
{
}

La clase EventSubscriptionAttribute se encuentra dentro del namespace Microsoft.Practices.CompositeUI.EventBroker, por lo que también debemos agregarlo.

Dentro de este método, es donde debemos programar la acción que querramos realizar cuando se borra un objeto. La información del objeto borrado se encuentra en la variable args.

Este ejemplo sirve también para suscribirse a otra clase de eventos, ya que en la clase ArchitectureEvents tenemos eventos que se disparan luego de abrir o cerrar una KB, luego de un copy model, antes de después de guardar o borrar un objeto, etc.

Blogged with Flock

domingo, 18 de febrero de 2007

Ciencia ficción vs. realidad

Hace unos años (¿1998?) leí un libro de ciencia ficción llamado 3001: The final odyssey de Arthur C. Clarke. Es la continuación de 2001: A space odyssey, en realidad es el cuarto libro de la serie.

En esta novela, uno de los personajes de 2001: A space odyssey, que se había perdido en el espacio, es recuperado y revivido en el año 3001. En determinado momento, Poole (que es nombre del personaje) se encuentra con un dispositivo de almacenamiento óptico, aparentemente hecho de vidrio, y del tamaño de un diskette pero el doble de ancho. Cuanto pregunta por la capacidad, resulta ser de aproximadamente un terabyte, porque

It's enough to record everything any person can experience during one lifetime.

Me acuerdo que en su momento esta frase me impactó. Tanto es así, que hoy cuando encontré un artículo en Scientific American titulado A digital life, fui directo al libro a releer esta parte.

El artículo está escrito por gente de Microsoft Research, y habla sobre la posibilidad de almacenar toda la información de la vida de una persona en médios digitales. El artículo dice que:

The growth of digital storage capacity has been staggering: today a $600 hard drive can hold a terabyte (one trillion bytes) of data, which is enough to store everything you read (including e-mails, Web pages, papers and books), all the music you purchase, eight hours of speech and 10 pictures a day for the next 60 years.

Cuando se escribió el libro (tiene fecha de 1997) esto sin duda era ciencia ficción, aunque no pareciera tan lejano. Hoy, 10 años después, ya aparece como una posibilidad.

Blogged with Flock

miércoles, 14 de febrero de 2007

Nueva cara para el Blog

Estuve haciendo algunos cambios al blog.

Pasé a la nueva versión de Blogger, por lo que ahora el blog tiene etiquetas. Además esta versión permite definir el estilo del sitio de una forma bastante más amigable que la versión anterior, por lo que también hice algunos cambios estéticos.

Lo otro que agregué al panel lateral son los Shared items de Google Reader. Ahí deberían aparecer todos los artículos que marque como para compartir.

El origen de la vida

Ayer estuve leyendo un artículo muy interesante en Scientific American sobre el origen de la vida.

El artículo explica por qué el ADN no pudo haber sido el origen de la vida (el ADN necesita de las proteinas para replicarse, y la información para construir las proteinas está en el ADN). Sin embargo el ARN no tiene este problema, y podría haber sido el primer replicator, el origen de la vida. Pero el problema que tiene el ARN es que es una molécula demasiado compleja y que no se ha conseguido generar de forma espontanea en el laboratorio, en las condiciones que se supone había en la Tierra en los momentos que surgió la vida.

Entonces propone que fueron otros componentes los que originaron la vida, más simples que el ARN, de los cuales actualmente no quedan rastros.

Ojo, esta es una explicación de alguien que casi no tiene conocimientos de química orgánica. El artículo sí está bien explicado :)

Además del artículo en sí, hay dos cosas que me parecieron interesantes. La primera es la definición que usa para lo que es la vida. Hay dos definiciones, la primera es:

Life is a self-sustained chemical system capable of undergoing Darwinian evolution.

y la segunda es una definición termodinámica:

A localized region which increases in order (decreases in entropy) through cycles driven by an energy flow would be considered alive

Sin duda no es algo fácil de definir, pero es interesante ver a lo que se ha llegado...

Lo otro interesante del artículo es una reflexión. Si bien el ARN no es la primer forma de vida, sí es la más antigua que ha llegado hasta nuestros días. De hecho, el ARN de alguna forma logró combinarse para formar ADN y proteinas, luego células, organizmos multicelulares, en fin, todos los seres vivos que existen hoy en día.

Entonces, al final de cuentas, solo somos la forma que encontró el ARN de sobrevivir a la evolución, de perpetuarse. Somos, todos los seres vivos, un vehículo para lograr que el ARN sobreviva...

miércoles, 7 de febrero de 2007

Soporte de OpenID por parte de Microsoft

OpenID (Radar post) got a big boost today when it gained support from Microsoft.

O'Reilly Radar > OpenID Gets a Boost From Microsoft

OpenID es un sistema de autenticación descentralizado, que permite autenticarse una única vez contra cualquier servidor que soporte el protocolo, y luego acceder a cualquiera de los sitios que permiten autenticarse mediante esta tecnología.

Por el momento son pocos los sitios que utilizan este protocolo, pero si Microsoft comienza a soportarlo, podría convertirse en un estandar. Una buena noticia...

Más información sobre OpenID