InstantObjects (III) y OpenSource

Nunca he sido de los ortodoxos a la hora de programar, en cada caso he buscado la mejor solución para el problema en cuestión aún sabiendo que no era lo que marcan los cánones.

Como he comentado, estamos utilizando InstantObjects como ORM, pero hay aspectos que requieren ciertas mejoras, por ejemplo cuando queremos realizar búsquedas complejas. Al menos yo no he conseguido que dichas búsquedas se realicen a una velocidad aceptable.

Después de varias pruebas he optado por hacer un _bypass_ de InstantObjects y consultar directamente la base de datos. Se que no es correcto, que si estoy trabajando con objetos no deberí­a en ningún caso _saber_ como es la estructura en la que se almacenan dichos objetos en la base de datos, pero es que tengo una maní­a, me gusta que los programas sean ágiles, que las consultas no tarden más de 2 segundos en responder, cosas mí­as.

El caso es que en algunas ocasiones me interesará tratar con objetos y en otras con consultas SQL. Para los _reports_ y _grids_ me interesa (siempre por cuestiones de rendimiento) consultar directamente la base de datos y cuando el usuario localiza el dato que quiere, a partir de ahí­ si que todo son objetos.

Por cierto, he descubierto un componente para mostrar datos muy bueno, «Virtual TreeView»:http://www.soft-gems.net/index.php?option=com_content&task=view&id=12&Itemid=33, lo único es que hay que currarse el proceso de carga de datos, pero luego funciona muy bien. Prueba de ello es que se utiliza en el propio IDE de Delphi. Muy recomendable.

He decidido que, siempre que se pueda, utilizaré componentes y librerí­as *OpenSource* para las aplicaciones. He puesto la puntilla de «siempre que se pueda» porque hay ocasiones en las que no encuentro equivalentes OpenSource para determinados componentes, como por ejemplo, para listados, informes y documentos, estoy investigando «FastReports»

De momento estos son los componentes, librerí­as y aplicaciones que estoy utilizando:

* «TortoiseSVN»:http://tortoisesvn.tigris.org Cliente de subversion para el control del código fuente
* «Subversion»:http://subversion.tigris.org Servidor para el control del código fuente
* «InnoSetup»:http://www.jrsoftware.org/isinfo.php para preparar los instaladores
* «Python»:http://www.python.org/download/windows/ para el proceso de compilado y empaquetado. Utilizo varias librerí­as para python que permiten desde subir por FTP las aplicaciones hasta crear imágenes ISO preparadas para grabar en CD
* «DUnit»:http://dunit.sourceforge.net/ para las pruebas unitarias, «aquí­»:http://www.lawebdejm.com/prog/delphi/dunit.html una buena explicación de como funciona DUnit.
* «Firebird»:http://www.firebirdsql.org, fantástica base de datos, con un tamaño mí­nimo tiene un rendimiento muy bueno y unas funcionalidades como los mejores.
* «JVCL»:http://homepages.borland.com/jedi/jvcl/ la famosa JEDI.
* «Virtual TreeView»:http://www.soft-gems.net/index.php?option=com_content&task=view&id=12&Itemid=33, ya lo he comentado
* «Indy»:http://www.indyproject.org/, para todo lo relacionado con comunicaciones TCP/IP
* «DelphiZip»:http://www.delphizip.org/ para manejar ficheros ZIP, para copias de seguridad, intercambio de información, etc.

Pendiente de probar:

* «Pages»:http://www.angusj.com/delphi/ para imprimir Visual TreeView (en este punto todaví­a estoy trabajando)
* Gráficos de barras, tartas, lí­neas, etc. de momento tengo pendiente de probar estos dos:
** «XYGRAPH»:http://www.solcon.nl/wcemmens/xygraph.htm
** «RiverSoftAVG»:http://www.riversoftavg.com/charting.htm

Nuestra intención es colaborar en lo posible con dichos proyectos OpenSource, como lo estamos haciendo con InstantObjects.