sábado, 18 de diciembre de 2010

Opera: give it a try!

En un mundo en el que Internet se ha impuesto, la guerra de los navegadores Web por la hegemonía del mercado ha adquirido un enorme interés. Internet Explorer y Firefox siguen siendo los dos grandes destacados, pero a la cola vienen otros tres siguiendo su estela (en cuanto a cifras de uso, que no en cuanto a innovación y propuestas).

Esto de los navegadores es, como decía aquél, una cuestión de feeling. Resulta difícil ofrecer datos objetivos que indiquen que un navegador es mejor que otro, porque acaban ofreciendo básicamente lo mismo. Cada vez que uno saca una funcionalidad interesante, los otros la copian e incluso mejoran. Donde quizá sí pueda haber más diferencias es en la ligereza de cada uno, y es precisamente por eso que digo que, para mí, todo se reduce a una cuestión de feeling: al final me quedo con el que me da una mejor y más regular respuesta a mis necesidades.

De ahí que sea usuario, por este orden, de Google Chrome, Internet Explorer y Firefox. Desde que apareció el navegador de Google, se ha convertido en mi preferido; principalmente porque se abre más rápido, no me da problemas al visualizar ninguna de las páginas en las que me suelo mover, y tiene todas las funciones que utilizo. Explorer lo uso en segundo lugar, porque siguen quedando sitios, y sobre todo aplicaciones, que lo tienen como requisito. Y a Firefox recurro muy de vez en cuando, si me levanto con ganas de cambiar un poco.

Pero, ¿y qué hay del resto? Pues por ahí quedan Safari y Opera. El primero parece tener la estigma de ser un navegador para MAC, aunque tenga versión para PC. Y con el segundo llegamos a Opera.

Cosas de la vida, ayer se apoderó de mí la curiosidad, y me dio por descargármelo. Tenemos reciente la versión 11, y era una buena excusa para darle un oportunidad. La primera impresión ha sido buena: tiene un diseño atractivo y personalizable, ofrece marcadores, búsqueda en la barra de direcciones, pestañas... vamos, como todos. Pero también tiene algunos detalles que no he encontrado en Chrome.

Por un lado, permite la agrupación de pestañas. Es algo que personalmente no veo muy útil, pero ahí está por si acaso. Por otro, tiene una papelera de reciclaje en la que guarda las páginas que se van cerrando durante la sesión. Esto sí que me parece interesante, por si algo se cierra por accidente, o para volver atrás cuando se está buscando información (me parece mucho más cómodo que el historial). Y por último, tiene una página de acceso rápido de verdad. Para mí esta fue una de las aportaciones más interesantes de Chrome (fue el primer navegador donde lo vi, no sé si fue el primero que lo propuso), pero estaba muy limitada. Sólo mostraba las 8 página más visitadas. Sin embargo Opera permite definir cuántas y qué página quieres mostrar, y hasta poner una imagen de fondo para presentarla.


Así que en las próximas semanas le voy a dar cancha a Opera, y a ver qué sensaciones me llevo. No sé si desbancará a Chrome en mi ranking particular, pero tras la primer impresión todo apunta a que tiene garantizada la tercera posición.

jueves, 16 de diciembre de 2010

Tutorial de Pentaho: definición de un proceso ETL con Spoon

Hace ya varios meses publiqué una pequeña introducción teórica al concepto de Business Intelligence. Al final de esa entrada adelantaba mi intención de publicar algunos tutoriales en los que se mostrase cómo trabajar con herramientas de BI. Y hoy, por fin, ha llegado el primero.

Durante este tiempo he trabajado especialmente con algunas de las herramientas de la suite Pentaho, ya que las he necesitado para mi trabajo final de Máster. De esta forma he podido ver que pueden ser interesantes para algunas de las tareas que realizo habitualmente.

Un ejemplo claro son las cargas de datos. La integración de aplicaciones es algo que consume mucho más tiempo y recursos de lo que puede parecer. Por ejemplo, seguro que la mayoría de informáticos ha participado alguna vez en un proyecto en el que se tenía que hacer una migración de datos entre sistemas.

En este tutorial se desarrolla un pequeño ejemplo en el que se puede ver cómo trabajar con Spoon para obtener información de ficheros de texto, realizar un procesamiento sencillo, y después almacenarla en una base de datos. A partir de ahí, las posibilidades son enormes.

En este enlace podéis descargar el tutorial.

domingo, 12 de diciembre de 2010

¿Dónde están mis mensajes de error?

En estos días, trabajando en el que espero que sea mi segundo tutorial publicado en JavaHispano, he pasado de utilizar la versión 11.1.1.2 de jDeveloper, a la 11.1.1.3. En principio todo fue muy bien; de hecho, no se aprecian cambias sustanciales al trabajar con las tecnologías que estaba utilizando. Sin embargo, he tenido unos días de complicaciones por un mensaje de error desaparecido. ¿Quién me lo iba a decir?

Resulta que tenía una aplicación casi completamente desarrollada, que mostraba un popup cada vez que se producía un error. Por ejemplo, si al ejecutar una consulta sobre la base de datos obtenía una excepción ORA-XXXXX, ésta iba recorriendo las distintas capas hasta aparecer delante del usuario.

Sin embargo, al empezar a trabajar con la versión 11.1.1.3 del IDE, los mensajes de error dejaron de mostrarse. Seguían recogiéndose como siempre en el log de jDeveloper, pero nada más. No había forma de presentarlos al usuario.

Al final, preguntando en el foro de Oracle, se confirmaron las sospechas de que era un cambio de comportamiento de la nueva versión. Por el momento no conozco ninguna forma para conseguir que los mensajes lleguen a la interfaz, así que la única opción si los queremos es volver atrás, y esperar.

martes, 30 de noviembre de 2010

Error adquiriendo fuentes de datos en jDeveloper 11

En los últimos días he estado lidiando con un problema trabajando con jDeveloper 11.1.1.3.0. Estaba desarrollando una aplicación utilizando ADF y EJB, que venía funcionando correctamente. Sin embargo, un buen día, al arrancar el servidor, sin haber realizado cambios desde la última vez, me encuentro que mi aplicación lanza la siguiente excepción:


Exception [EclipseLink-7060] (Eclipse Persistence Services - 2.0.2.v20100323-r6872): org.eclipse.persistence.exceptions.ValidationException
Exception Description: Cannot acquire data source [java:/app/jdbc/jdbc/TareasDS].
Internal Exception: javax.naming.NameNotFoundException: While trying to look up /app/jdbc/jdbc/TareasDS in /app/ejb/ModelEJB.jar#TareasSessionEJB.; remaining name '/app/jdbc/jdbc/TareasDS'
at org.eclipse.persistence.exceptions.ValidationException.cannotAcquireDataSource(ValidationException.java:451)
at org.eclipse.persistence.sessions.JNDIConnector.connect(JNDIConnector.java:116)
at org.eclipse.persistence.sessions.JNDIConnector.connect(JNDIConnector.java:94)
at org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:162)
at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.loginAndDetectDatasource(DatabaseSessionImpl.java:584)
...
...
...
Caused by: javax.naming.NameNotFoundException: While trying to look up /app/jdbc/jdbc/TareasDS in /app/ejb/ModelEJB.jar#TareasSessionEJB.; remaining name '/app/jdbc/jdbc/TareasDS'
at weblogic.jndi.internal.BasicNamingNode.newNameNotFoundException(BasicNamingNode.java:1139)
at weblogic.jndi.internal.ApplicationNamingNode.lookup(ApplicationNamingNode.java:144)
at weblogic.jndi.internal.WLEventContextImpl.lookup(WLEventContextImpl.java:254)
at weblogic.jndi.internal.WLContextImpl.lookup(WLContextImpl.java:393)
at weblogic.jndi.factories.java.ReadOnlyContextWrapper.lookup(ReadOnlyContextWrapper.java:45)
at weblogic.jndi.internal.AbstractURLContext.lookup(AbstractURLContext.java:135)
at javax.naming.InitialContext.lookup(InitialContext.java:396)
at org.eclipse.persistence.sessions.JNDIConnector.connect(JNDIConnector.java:110)
... 204 more


Este error indica que la aplicación está tratando de acceder al DataSource indicado en el fichero persistence.xml, pero no lo consigue. Por tanto lo primero que uno puede pensar es que el fallo tiene que venir de algún problema de configuración de ese fichero, y empezar a editarlo: quitando el doble /jdbc, añadiendo y eliminando propiedades... Sin embargo no van por ahí los tiros.

A la hora de desplegar una aplicación en el servidor de aplicaciones WebLogic embebido de jDeveloper, éste crea fuentes de datos basándose en las conexiones configuradas por el usuario, que se pueden ver en la pestaña Database Navigator (si no la veis junto al Application Navigator podéis mostrarla mediante el menú View - Database - Database Navigator).

Pues bien, en mi caso el problema se debía a que, por algún motivo, la contraseña había desaparecido de las propiedades de la conexión que había configurado para mi aplicación. Bastó volver a introducirla y redesplegar la aplicación para que todo volviese a funcionar como siempre.

Sólo queda averiguar qué fue de la contraseña.

Tutorial de Swing Application Framework publicado en JavaHispano

La Asociación JavaHispano ha tenido el detalle de publicar un tutorial que he realizado en el que se desarrolla una pequeña aplicación utilizando el Swing Application Framework.

Este framework, desarrollado en la JSR-296, proporciona la infraestructura necesaria para la construcción de aplicaciones de escritorio con Java, incluyendo:

- Ciclo de vida
- Gestión de recursos (mensajes, imágenes, fuentes de texto...)
- Acciones
- Sesión (permite guardar el estado de la aplicación entre ejecuciones)

Actualmente la JSR se encuentra inactiva, por lo que el framework tal cual está condenado a morir. Sin embargo, creo que en su última versión ofrece suficientes cosas como para ser una buena opción a la hora de empezar a trabajar con Swing; y, por otro lado, la idea de crear un framework para esta tecnología sí sigue viva, y seguirá desarrollándose, seguro, en nuevos proyectos que partirán de SAF. Como muestra, Better SAF o guts-gui.

En esta página de JavaHispano podéis descargar el tutorial.

Muchas gracias a JavaHispano, y en concreto a Peyrona, Leonardo, Isaac, y revisor1 por su colaboración, y por haber mejorado sustancialmente el resultado final.