Pop up windows en las aplicaciones web

13 Enero 2009 por Giancarlo Corzo Sin comentarios »

Introducción

Las ventanas Pop up siempre han sido un problema en el desarrollo de aplicaciones web, las que proporciona el browser son poco prácticas al ser mini ventanas que se abren de manera separada a la aplicación, en un browser independiente y que no comparten información de manera natural. (Solamente mediante javascript).

Además recientemente éstas han sido utilizadas como una manera de spam publicitario al activarse al momento de ingresar a la página web, lo que hace que la navegación sea realmente molesta. Dada esta situación los browser decidieron desarrollar sistemas que bloqueen los Pop ups de toda aplicación sin importar si estos eran relevantes o no.

Es por esto que multiples frameworks de javascript como yui, ext, richfaces (aunque no es de javascript tambien provee Pop up windows) han desarrollado Pop up windows basados en un div flotante y que son bastante útiles.

» Leer más: Pop up windows en las aplicaciones web

Facelets y JSF – Uso de Templates

17 Diciembre 2008 por Otto Theo 14 comentarios »

Este artículo tratará sobre el framework JavaServer Facelets comenzando con una pequeña introducción y luego una descripción básica del uso de templating en una aplicación JSF (JavaServer Faces).

Introducción

JavaServer Facelets es un framework para plantillas (templates) centrado en la tecnología JSF (JavaServer Faces), por lo cual se integran de manera muy fácil. Este framework incluye muchas características siendo las más importantes:

» Leer más: Facelets y JSF – Uso de Templates

Integración continua en proyectos de desarrollo

1 Diciembre 2008 por Giancarlo Corzo 3 comentarios »

El siguiente artículo trata de un nuevo concepto que ha empezado a hacerse popular para el desarrollo de proyectos, sobre todo los que están basados en metodologías ágiles.

¿Qué es Integración continua o Continuous integration?

Según Martin Fowler, escritor de libro “Continuous integration – Improving software quality and reducing risk”, el concepto de integración continua se define como sigue:

“Es una práctica de software donde los miembros del equipo de trabajo integran su código de manera frecuente, dando así multiples integraciones por día. Donde cada integración forma parte de un Build (Integración, Construcción, Pruebas, Despliegue, entre otras cosas). ”

El proceso normal que se sigue en un esquema de trabajo CI es como sigue:

  1. Los desarrollares envían sus modificaciones al controlador de versiones (SVN, CVS, etc).
  2. El Servidor de integración continua monitorea el repositorio buscando cambios y ejecuta automáticamente el build.
  3. Una vez finalizado el proceso de build (integración, construcción, pruebas y despliegue) el servidor envía a los reponsables un email con el resultado del proceso (feedback del proyecto).
  4. El servidor realiza el paso 2 continuamente.

Como puede verse el proceso es relativamente simple pero en muchos proyectos no se realiza ésto que es tan elemental y que a la larga mejora el proceso de desarrollo y evita problemas.

Las ventajas de usar este esquema de trabajo:

  • Los problemas de integración son detectados rápidamente y pueden ser corregidos con la misma celeridad, no hay porque integrar 1 vez al mes y estar corriendo contra el reloj para detectar problemas.
  • Código que rompa el build es detectado automáticamente al tener un feedback automático.
  • Las pruebas unitarias corren cada vez que se ejecuta el build lo cual permite que el desarrollador pueda darse cuenta rápidamente de cualquier error en su código.
  • Existe un mecanismo de despliegue automatizado donde el código producido puede ir a parar a los distintos servers (development server, testing server, production server).

Algunos CI servers open source que se pueden utilizar son:

Algunos CI server pagados que se pueden usar son:

Antartec usa integración continua

Antartec se encuentra en el proceso de implementar un servidor CI para mejorar el proceso de desarrollo de todos nuestros proyectos, para lo cual se realizó la siguiente evaluación:

  • Actualmente en Antartec utilizamos la siguiente combinación para el desarrollo Maven y Subversion.
  • El Servidor CI en evaluación es Hudson.
  • El repositorio de dependencias en evaluación es Hudson ya no es necesario implementar un servidor de dependencias por separado puesto que Hudson ya lo trae incluido.
  • Los Servidores de aplicaciones para dev, test, prod dependiendo del tipo de proyecto pueden ser Tomcat, JBoss, Apache, etc.

La arquitectura propuesta

Basado en el trabajo realizado por Henry Carrión, miembro de Antartec, sobre Integración continua la arquitectura planteada es la siguiente:

Arquitectura planteada según el esquema CI

Arquitectura planteada según el esquema CI

Resultados a obtener

  • Control de cambios
  • Monitoreo constante
  • Integración de procesos
  • Retroalimentación
  • Gestión de dependencias
  • Proceso de desarrollo en base a Métricas
  • Finalmente disminuir el tiempo de desarrollo requerido para cada proyecto

Siendo este último punto el más importante dentro de esquema de trabajo de Antartec.

A manera de conclusión

El concepto de Integración continua es una forma de desarrollo de software que mejora el proceso y puesta en producción del producto desarrollado, mediante la aplicación de herramientas de automatización y mejora continua del proceso.

En Antartec se espera con este sistema mejorar nuestros procesos y tiempos de desarrollo  del software producido.

Antartec presente en el Spring Community Day Lima 2008

7 Noviembre 2008 por Otto Theo 1 comentario »

Spring User Group Perú realizó el Spring Community Day Lima 2008 el día 25 de octubre en el auditorio de Cibertec, evento al cual acudieron miembros de Antartec. En estas conferencias se tocaron temas relacionados a Spring Framework, aquí la agenda:

  • Presentación del evento.
  • Presentación de Spring Perú (Lennon Shimokawa).
  • Introducción a Spring Framework 2.5 (Lennon Shimokawa).
  • Spring Portlet MVC (Jose Luis Manrique).
  • Spring Security (Colin Fairless).
  • Spring Batch (Kenneth Delgado).
  • Extreme Testing con Spring (Abner Ballardo & Gustavo Quiroz).
  • Spring Dynamic Modules (Leonardo Torres).
  • Rueda de preguntas.

» Leer más: Antartec presente en el Spring Community Day Lima 2008

Hibernate Shard: “de lo centralizado a lo distribuido”

6 Noviembre 2008 por Jose Corcuera Sin comentarios »

Es un hecho que hoy en día las empresas se han distribuido en forma regional a lo largo del mundo, con sucursales en cada una de estas regiones, en donde se maneja el mismo aplicativo para realizar sus operaciones cotidianas. Es cierto, por ejemplo, si vamos a realizar un depósito en la sucursal X o Y de un banco específico y damos una ojeada (si es que la persona de ventanilla lo permite) a la pantalla de su ordenador, notaremos que se trata de la misma aplicación; y ésta misma trabajando con una o muchas bases de datos.

Las empresas optan por tener en cada sector su propia base de datos para el manejo de los datos locales, éste es un esquema distribuido de la información, en donde la base de datos ha sido particionada horizontalmente. La decisión de seguir este modelo se debe a cuestiones técnicas de diseño, siendo la principal: latencia en la red.

Diseñar un aplicativo que unifique la información de estas N bases de datos como si fuera una suele ser un poco engorroso debido al manejo de distintas fuentes de datos a nivel de la aplicación (datasources) y en el manejo de los recursos.

Navegando por la web me topé con un framework que realiza el trabajo mencionado en el párrafo anterior, me refiero a Hibernate Shard.

Hibernate Shard

El framework Hibernate Shard es una extensión de Hibernate Core que encapsula y minimiza la complejidad de trabajar con un modelo de datos particionado horizontalmente. Debido a que está basado en Hibernate Core, Hibernate Shards ofrece un conjunto de clases las cuales extienden de las clases base de Hibernate Core (Session, SessionFactory, entre otras).

Características

  • Se puede definir la forma en la que se hará la distribución de la data en las particiones que se tiene, siguiendo determinada lógica.
  • Si conoces Hibernate Core, entonces Hibernate Shard te resultará fácil de aprender.
  • Ofrece un mecanismo de redistribución de la data, ésto se da por ejemplo cuando se agrega una nueva base de datos; la solución es hacer uso de Particiones Virtuales. Las particiones virtuales estan asociadas a particiones fisicas, siendo éstas mapeadas una a una para luego realizar una determinada configuración.

Limitaciones

  • No se permite la relación de objetos de diferentes particiones.
  • No se tiene una implementación completa del API de Hibernate Core.
  • No soporta el uso de transacciones distribuidas, si queremos hacer manejo de esto debemos utilizar una herramienta alternativa.

Conclusión

Se puede apreciar que es una herramienta atractiva en el caso que se nos presente trabajar con un modelo de datos particionado horizontalmente, sin embargo; dado que tiene varias funcionalidades por implementar, seria bueno darle un tiempo para luego ver que tanto ha mejorado.