Archive for julio, 2011


Db4o-logo.gifDespués de mucho tiempo, he podido dar con un proyecto donde esta herramienta a dado muy buenos resultados.

Estoy hablando de DB4O,  un motor de bases de objetos. o sistema de administracion de bases orientada a objetos. La idea de es eliminar el problema de impedancia, que se genera entre el paradigma de objetos y el relacional.

Un gráfico nos permitirá entender rápidamente. EL dibujo de la izquierda muestra como los objetos que pueden llegar a ser complejos, deben mapearse a una RDBMS o Sistema de Administración de Base de Datos Relacional entre las distintas tablas de la misma, muchas veces con el cuidado que se merece la normalización de ellas, el diagrama E/R, la escritura de las sentencias SQL, etc.

En el dibujo de la derecha, parece demasiado simple para ser verdad. Pero es así. Simplemente guardamos nuestros objetos Java (también esta para .NET) desde un Entidad que persistirá nuestros objetos.

Su uso mas extendido es en la modalidad embebida, pero se puede trabajar en modo Cliente-Servidor.

En el caso particular, que debí resolver, recurrí a una solución muy simple del tipo Lote (BATCH, desde la consola se ejecutaba o desde Eclipse mismo). La  Secretaria de Hacienda Nación ofrece un sistema llamado UEPEX, para las Unidades Ejecutoras de Prestamos Externos (generalmente dolares estadounidenses). Con el cual lleve adelante tres implementaciones que generan 3 libros mayores en Excel.

 Si bien es Excel, debemos pensar que son hoja de cálculo para imprimir como reportes, asi que hay logos, títulos y demas. Con un simple BOT en  java, se rastrea cada hoja de cálculo, analiza cada linea, y de ahí cada Celda, tomando solo las que indican un movimiento contable. Cada registro Impacto Contable es en realidad un objeto (la clase se llama así), se persiste el objeto en una base única y se lleva a cabo un proceso de consolidación, todo sobre DB4O (todo porque no tengo acceso SQL, obvio, así que era la única posibilidad)

Entonces, sin ORM, sin Stored, sin SQL, sin Tablas, sin nada mas que JAVA y el JAR de DB4O. Termine generando un reporte en HTML que me permita jugar con estilos y demás antes de generar un PDF.

Todo esto, luego fue sometido a una prueba para un aproximado millón de objetos, que terminó generando un archivo de 300 MB en solo 180 segundos. ¿Parece rápido? Pues sí.
Hay que tener en cuenta que hablamos de un montón de operaciones para con ese millón de objetos, manejar los ZIP, rastear, indexar, ordenar, consolidar, sumarizar, etc. Pero si solo instanciasn en un FOR un millón de objetos de una clase simple de dos o tres atributos y a cada uno lo van persistiendo (nada de jugar con perfomace), podrán comprobar que dependiendo de su hardware y JAVA, la operación en segundos va de 75 a 90.

Otro de los aspectos interesantes, es la posibilidad de combinar las soluciones con un enfoque de Inteligencia de Negocios, a través de BIRT. Realmente, con solo jugar con scripts (javascript) podemos generar reportes en HTML, Planilla de Cálculo y en PDF.

 

DataNucleus16-300.jpgSi buscamos una estrategia de administración de la información, una forma unificada de encarar el desafío de persistir datos, DataNucleus es una de las alternativas a considerar.

Es un proyecto libre, open source, con licencia Apache. Derivado de JPOX (o simplemente renombrado) proporciona las herramientas para trabajar con APIs como JDO (2, 2.1 u 2.2 ), JPA (1 y 2), REST y contra motores de servidores de bases de datos relacionales (RDBMS), de objetos (DB4O), XML, soluciones de Cloud Computing (Amazon, Google, etc), OpenOffice, Excel, JSON, HBase, LDAP, etc. También hay casos con MongoDB

Los lenguajes son JDOQL, JPQL, SQL, db4o Native, NeoDatis Native, NeoDatis Criteria…. y requiere JRE 1.5 o superior

Entre los usos actuales, destaca ser la capa para las soluciones Google App Engine  en Java, o JFire (un ERP libre), por sobre estos casos.

Obviamente se conjuga con nuestro querido Eclipse del que ya hemos hablado y seguiremos haciéndolo.

La arquitectura es simple y muy clara

 

Debo reconocer que en parte doy con esta solución o mejor dicho me inclino por ella, por el buen soporte. Como saben, estoy usando DB4O, como base de objetos y esta muy bien documentada la opción

Eclipse y PHP

Gracias a nuestro aclamado Eclipse PDT, el desarrollo de PHP, nunca fue tan facil.

Si bien, gracias a symfony y al autocompletado, se hace todo muy intuitivo. Con Eclipse podemos hacernos nuestros propios atajos de codigo.

Menu  > Window > Preferences > PHP  > Templates

Nos ofrecera la posibilidad de editar los existentes o de crear uno nuevo. Le damos a NEW y debemos tener algo asi:

Eclipse Indigo

Ya tenemos entre nosotros la nueva versión de Eclipse este entorno de desarrollo integrado o ambiente-herramienta-comunidad (ya no tengo en claro que más puede llegar a ser). Me refiero a Eclipse Indigo (v3.7).

Ya habíamos hablado de Eclipse. Si bien la anterior versión ya era destacable, esta nueva versión, avanza en lo que respecta a modelado introduciendo AcceleoAgent Modeling PlatformModeling Amalgamation, CDO.

Otro aspecto a celebrar es en el campo del trabajo colaborativo, EGit 1.0 es provisto para una mejor integración con el sistema de versionado Git. Jubula ofrece una interfaz para efectuar testing tanro para Java como HTML. WindowBuilder, fue una donación de Google para Eclipse y ahora se puede contar con un excelente diseñador gráfico de Interfaz de Usuario (GUI). Xtext 2.0 permite crear facilmente domain specific languages.

Eclipse Modeling Framework también es referenciado como EMF. Es un importante proyecto dentro del universo Eclipse, que proporciona un marco de trabajo, herramientas y por sobretodo metodología para el modelado de objetos y generación de código que acelera el desarrollo de aplicaciones.
Si bien parece algo respecto solo a UML, va mas allá. La documentación es extensa. Ofreciendo diversos beneficios como conectividad de datos, validación, consulta, transacciones, persistencias, etc


Eclipse

Eclipse es un entorno de desarrollo integrado de código abierto multiplataforma para el desarrollo de sistemas y tecnologías. Muy conocido por los desarrolladores y programadores (software libre y código abierto) de lenguajes como JavaCC++,AdaCOBOLPerlPHPPythonRuby (Ruby on Rails ), Scala,ClojureScheme, etc. La lista puede serguir.

Pero no solo es un entorno, también es una plataforma en sí misma, es decir que puedes pensar en desarrollar toda tu ecosistema de software sobre utilizando como base Eclipse mismo. Esta construido sobre Equinox (una implementación OSGi). Sus objetivos pueden ser muy variados

  • Aplicaciones de Cliente Enriquecido.
  • OSGi
  • Web
  • Desarrollo de Aplicaciones para celulares y tablets.
  • Modelado
  • Análisis
  • Testing

El título puede ser medio largo, pero es eso sin mas rodeos. Crear un Pendrive para bootear distintos Sistemas Operativos, usando solo las imagenes ISO, sin necesidad de instalar nada. Esta es una gran herramienta para aquellos que deseen probar los sabores de Linux por ejemplo, que siendo usuarios de Windows, aun no saben que elegir y son temerosos de instalar otro OS en sus discos duros.

Entonces para ellos, tenemos YUMI ( web ) ( Descarga ) .

YUMI - Multiboot USB Creator

Como podemos apreciar, solo hay que conectar el pendrive al puerto USB, lo que nos permitirá tener una Unidad de Disco, que debemos seleccionar, y luego elegir que sistema deseamos, para terminar un tercer paso en la búsqueda de la imagen ISO.

Ejecutando una segunda vez YUMI podremos cargar el otro sistema de nuestra preferencia.