Mono + NHibernate + SQLite

Después de usar por tanto tiempo Gentle.NET, un ORM que ha sido discontinuado, he decidido al fin comenzar a estudiar NHibernate. Los ejemplos que dan en los manuales y páginas son para Windows (con MS .NET) y SQL Server. Trabajando en GNU/Linux, hice las pruebas con SQLite.

El problema es que el driver utilizado por NHibernate para esta base de datos utiliza un binding desactualizado. Además Mono trae una implementación mejor, que soporta el standard ADO.NET 2.0, que es Mono.Data.Sqlite, disponible a partir de la versión 1.2.4.

El post es especialmente útil para aquellos que quieran utilizar en GNU/Linux (yo uso Ubuntu Gutsy), con Mono, NHibernate y SQLite, utilizando el binding Mono.Data.Sqlite. Si bien puede parecer esto tan fácil como seguir el documento QuickStart y cambiar las opciones correspondientes, no lo es si se intenta utilizar SQLite. Por eso, en este post no voy a explicar todas las cosas, ya que no me interesa y se pueden aprender en la documentación, sino que voy a desarrollar un ejemplo muy sencillo y mostrar cómo utilizar SQLite, ya que hay que solucionar unos problemas no muy triviales.

Continuá leyendo Mono + NHibernate + SQLite

¡Feliz Navidad!

jesus.jpgEs mi deseo para todo el que se encuentre con este post. Que tenga una muy feliz navidad, que la pasen muy bien con quienes hayan elegido para pasar este momento, que se diviertan, que recuerden momentos lindos que hayan vivido, y que lo disfruten. Y también que recuerden, aunque sea por un momento, el significado de esta fiesta: el nacimiento de Jesús, Dios hecho hombre.

Un abrazo a todos, y gracias a los que me han saludado.

La casa sobre roca – Primera parte

He aquí por qué la juventud es poco a propósito para hacer un estudio serio de la ciencia que trata de las relaciones entre las personas, puesto que no tiene experiencia de las cosas de la vida, de las cuales trata precisamente la ciencia de las relaciones entre las personas y de las que deduce sus teorías. Debe añadirse que aquella juventud que sólo escucha la voz de sus pasiones, en vano oiría tales enseñanzas, y ningún provecho sacaría de ellas, puesto que el fin que se propone la ciencia que trata de las relaciones entre las personas, no es el simple conocimiento teórico de las cosas, sino que tiene, ante todo, un fin práctico.

Cuando digo juventud quiero decir lo mismo la juventud del espíritu que la juventud de la edad, sin que bajo esta relación haya diferencia, porque el defecto que yo señalo, no tiene que ver con el tiempo que se ha vivido, sino que se refiere únicamente al que se vive bajo el imperio de la pasión, sin dejarse guiar sino por ella en la prosecución de sus deseos. Para los espíritus de este género, como para todos aquellos que a consecuencia de algún exceso han perdido el control de sí mismos, el conocimiento objetivo de las cosas es completamente infecundo.

Por el contrario, los que arreglan sus deseos y sus actos solamente según la razón, pueden aprovechar mucho en el estudio de la ciencia de las relaciones entre las personas.

Aristóteles
Ética a Nicómaco
Libro I, capítulo 1

Continuá leyendo La casa sobre roca – Primera parte

Gtk# – Aplicaciones sensibles

En el TP de implementación de Adm. de Recursos desarrollamos con Nacho y César un cliente de mensajería instantánea muy simple. Está hecho en C# y para la GUI usamos Gtk#, todo corriendo en Mono. Por cierto, ésta es la página del proyecto por si quieren investigar el código y hacer algunas pruebas.

Pero el motivo del post no es este trabajo en sí, sino la solución a un problema que se había presentado. Utilizamos Remoting para comunicar los clientes con el servidor. Remoting es una tecnología para comunicar procesos, en la que podemos instanciar, por ejemplo, objetos remotos y llamar métodos del mismo, ejecutándose éstos en el servidor. Lo veo como algo muy parecido a RPC. Tampoco es el objetivo del post hablar de Remoting, sino simplemente decir que cuando ejecutamos un método remoto, se abre un thread nuevo para llevar a cabo la ejecución del mismo en el servidor.

Continuá leyendo Gtk# – Aplicaciones sensibles