Friday, October 10, 2008

Integración Spring-Ajax

Estuve buscando en La Red cual sería la mejor manera de integrar Spring con Ajax. Al parecer el framework por defecto es DWR, sin embargo no quedé convencido del todo, necesito más flexibilidad y conociendo las ventajas que ofrece Json (aqui, aqui), busqué alternativas con esa idea en mente.

Encontré dos opciones, el proyecto Spring Json View, que como su nombre lo dice, es una implementación de una vista para Spring MVC. Nada mal, lo que buscaba, el único detalle fué que al integrarlo como depedencia de Maven a mi proyecto, incluyó también (como sus dependencias) versiones de Spring y Cglib anteriores a las que estoy usando. Seguro ese detalle puede arreglarse, pero como el tiempo simpre apremia, traté de ir mejor a la otra opción.

Vino el turno de json-lib-ext-spring, que es una extensión del proyecto json-lib desarrollado por Andrés Almiray. Al igual que Spring Json View, este proyecto ofrece la implementación de una vista para Spring MVC. El lado flaco de este proyecto vino con la escasa documenteción que tiene. Sin embargo después de haber publicado algunas dudas en el foro del proyecto, la integración resultó más o menos tersa, dado los problemas que hubo con Hibernate. Sin embargo, luego de ver este post en el blog de Andrés, los problemas se solucionaron.

Creo que json-lib-ext-spring resuelve el problema de integración de manera excelente. Y como del lado del cliente pienso usar Yahoo! User Interface Library (YUI), todo está resuelto. Como decía la abuela, es cosa de coser y cantar :)

Thursday, September 4, 2008

Integración de Google Chrome con Delicious

Una de las cosas que más extañaba en Chrome de FireFox (FF) es la integración que FF tiene con Delicious, hay un plugin para FF que hace la vida muy, muy fácil.

Pero no todo está perdido, Delicious proveé aquí scripts de integración para MS Internet Explorer, Safari, Opera y FF. Seguí los pasos que apliacan para Safari y voilà.

Wednesday, September 3, 2008

Configurando mi ambiente de desarrollo (Take II)

En este post comentaba cómo me gustaría que estuviera armado mi ambiente de desarrollo para trabajar en Java. Todo eso ahora está corriendo bastante bien, sin embargo falta agregar una pieza. Un buen equipo de desarrollo debe incluir además una herramienta que se encargue de las tareas de Integración Continua (Continuos Integration).

Tenía la intención de evaluar Cruise Control, Continumm y Hudson. Empecé por Hudson y creo que me voy a quedar ahi. Me llevó casi un par de días tenerla configurada y funcionando.

La integración con Subversion y Maven es realmente buena, Hudson toma los fuentes del repositorio SVN y ejecuta el goal de Maven que se le establezca. Todavía hay algunos aspectos que tengo pendientes, por ejemplo la configuración del correo electrónico, de modo que se envíen alertas por correo cuando el build no haya sido exitoso.

Como primer intento para tener Continuos Integration en el proyecto creo que Hudson es una muy buena opción. Si luego hay tiempo trataré de configurar Continnum de Apache.

Thursday, August 28, 2008

Controlando mis finanzas

Luego de vivir esas terribles espirales existenciales que se experimentan cuando las tarjetas paulatinamente te van asfixiando, ví que ya era tiempo de llevar un mejor control de mis finanzas.

Estuve explorando las aplicaciones open source que hay para manejo de finanzas personales y la que más me gustó es Buddi. Después de usarla por dos meses creo que es una herramienta imprescindible para todo aquel que no tenga, o tenga conocimientos muy básicos de finanzas.

Ahora mi sistema nervioso está un poco más relajado (estuve a punto de llamar a las gentes de "Pare de sufrir").

La he corrido en Mac (of course) y en Win XP. Es una aplicación hecha en Java sin embargo en Mac se ve como una aplicación nativa. También hay versión para Linux.

Friday, July 11, 2008

Mi ambiente de desarrollo J2EE basado en Eclipse

Estoy armando el ambiente de desarrollo que usaré para un proyecto personal, aunque trataré de usarlo también en mi trabajo. Tengo alguna afinidad hacia Eclipse, fué el primer IDE que usé y sigue siendo mi favorito.

Hace poco descubrí algunos plugins para Eclipse que facilitan el desarrollo y tengo la intención de usarlos en mis proyectos. Además pretendo usar un conjunto de productos ó herramientas que permitan que el trabajo colaborativo sea más natural y sencillo.

Después de haber explorado en Internet tratando de encontrar lo que me gustaría tener en mi ambiente de desarrollo, seleccioné lo siguiente:

Herramientas:

Maven

Maven es muchas cosas, facilita tareas de compilación, distribución, documentación, pruebas, administra las dependencias del proyecto, genera una estructura de proyecto, etc. Su principio base es "Convention over configuration", y se refiere a que ofrece estrategias por default para tareas comunes, aquellas que se presentan en todo proyecto.

Assembla

Ofrece espacios de trabajo que incluyen, SVN, Trac, chat, foros de discusión, Wiki y más. Todo gratis si el proyecto no excede 500 MB, sin importar el tamaño del equipo.

Track

Herramienta de administración de proyectos, cambios y defectos. Se integra con eclipse a través de Mylyn.


Plugins para Eclipse:

Mylyn

Es un plugin muy interesante que tiene dos principales características. Por un lado le permite al programador visualizar las tareas que deberá atacar en la semana actual (puede integrarse con varios repositorios de tareas, incluyendo Trac). Y por otro, al estar el programador trabajando en alguna tarea particular, Mylyn crea un workspace que tiene sólo los recursos que permiten atacar tal tarea.

Esto hace que el programador sea mas productivo, puesto que solo ve las tareas de la semana que esta corriendo y al seleccionar alguna de ellas, el IDE muestra los recursos que tienen que ver con esa tarea, en lugar de tener que navegar en toda la estructura del proyecto

Spring IDE

Para proyectos Spring, Spring IDE facilita mucho el el trabajo, sobre todo con los archivos de configuración.

Hibernate Tools for Eclipse

Un plugin muy útil si se trabaja con Hibernate. Es posible generar los archivos xml (mappings) usando ingeniería en reversa. Trae un editor HQL (Hibernate Query Language) que permite probar las consultas antes de integrarlas al código del proyecto, entre otras cosas.

Subclipse y Maven Integration for Eclipse

Plugins para integrar Subversion y Maven con Eclipse


Aquí esta pues lo que pretendo usar. Estaré contando como me voy sintiendo con todo esto. Tal vez en el camino integre algo más, o tal vez quite algo de lo que está en la lista. Veremos.

Tuesday, June 24, 2008

Desarrollo Web

Estos muchachos de www.sitioswebmx.com son realmente buenos, si de Sitios Web se trata, ellos son los indicados :)

Monday, June 23, 2008

Empezando a practicar con Spring

Hace un año y medio empezaba a leer acerca de Spring, desde entonces estoy convencido de que es un framework que debo usar en mis proyectos ya que facilita en gran medida el desarrollo de aplicaciones.

Inyección de dependencias (DI ó Dependency Injection) y AOP (Aspect Object Programming) son su core. Este par de conceptos llevados a la práctica permite tener aplicaciones con bajo acoplamiento.

Con DI es posible tener código (clases) totalmente agonósticas de sus dependencias, de modo que tales dependencias les son dadas por el contenedor ligero de Spring, de acuerdo a la configuración hecha a través de un archivo XML (típicamente). Con esto, con solo cambiar la configuración en dicho archivo es posible inyectar dependencias diferentes.

Con AOP se obtiene también desacoplamiento, pero diferente a DI. AOP permite agregar funcionalidad a nuestro código en tiempo de ejecución. Es posible, por ejemplo, establecer el conjunto de métodos que podrán demarcar una transacción sin que la clase contenedora de tales métodos se entere de que tendrá esa funcionalidad. Este "aumento" en la funcionalidad para una clase dada es conocido como aspecto. Así, otras responsabilidades pueden ser manejadas como aspectos, típicamente aquellas que se presentan en más de una capa de la aplicación, conocidas como crosscutting concerns.

Con Spring tendremos aplicaciones que serán mucho mas fáciles de probar y mantener.

Tal está siendo el éxito de Spring que ya se puede considerar como la plataforma tecnolólogica de facto en el desarrollo empresarial con Java.