23.11.09

Estrucutras de Oracle 10g(Types) accedidos desde java

Por esas casualidades de los proyectos me tocó participar en la definición y construcción de un componente que hiciera una consulta, mediante un procedimiento almacenado, a base de datos pero que sus atributos de entrada/salida son tipos definidos en la base de datos (Oracle 10g). Para ello tuve que investigar, leer y sufrir con las "famosas" clases que pertenecen al package oracle.sql (ArrayDescriptor, STRUCT, ARRAY, etc) y que permiten un "manejo" de estas estructuras en java. La realidad es que, después de mucho luchar, le tome el gustillo. El acceso, desde java, se realiza mediante Object lo que permite acceder con gran facilidad a los atributos y sólo preocuparse del tipo (que tiene en las tablas) para realizar el cast.

Aquí dejo parte del código para su revisión.

1. ArrayDescriptor descriptor = ArrayDescriptor.createDescriptor(, );
2. ARRAY entrada = new ARRAY(descriptor, , null);
3. ARRAY salida = (ARRAY) (((weblogic.jdbc.wrapper.Array)cs.getArray(1)).unwrap(Class.forName("oracle.sql.ARRAY")));
4. Object[] nivel_1 = (Object[]) salida.getOracleArray();
5. Object[] nivel_2 = ((STRUCT) nivel_1 []).getAttributes();

  • Se obtiene el descriptor del tipo. (1)
  • Se crea la estructura del tipo de entrada. (2)
  • Se ingresan objetos de I/O del procedimiento almacenado.
  • Se ejecuta el procedimiento almacenado.
  • Se obtiene la salida desde el procedimiento almacenado. (3)
  • Se crea un arreglo de Object. (4)
  • Se recorre el arreglo preocupándose de "castear" al tipo correspondiente cada posición del arreglo.
  • En caso en que los objetos sean estructuras se debe "castear" a STRUCT. (5)
  • Se recorre el arreglo de Object.

Saludos.

4.9.09

Primer Chileno miembro de GNOME Foundation

Germán Poo, académico de la Universidad del Bío - Bío, fue elegido miembro de GNOME Foundation Board of Directors. Este reconocimiento se debe a su basta contribución a proyectos relacionados con GNU/Linux y especialmente con GNOME.

Un merecido reconocimiento.

Felicitaciones.

Más información aquí.

Saludos.


20.7.09

Cloud Computing

¿Qué es Cloud Computing? En términos simple, es la disponibilización de servicios (aplicaciones, plataforma e infraestructura) a través de internet (nube) y que permite a los clientes/usuarios escalar rápidamente, de acuerdo a sus necesidades, sin preocuparse del hardware, software o del personal necesario para realizar el escalamiento requerido. Los clientes/usuarios consumen estos servicios de acuerdo a sus necesidades logrando un eficiente uso de sus recursos debido a que solo "pagan" por lo que utilizan. La administración de los servicios es responsabilidad de quien los provee lo que trae consigo un ahorro, en términos reales, de todo tipo de recurso para los clientes/usuarios.

Aquí dejo unos videos explicativos que me parecieron interesantes.

Saludos.








22.6.09

CentOS 5.3

Me decidí a instalar CentOS 5.3 en mi Sony Vaio VGN-NR350FE. El sistema operativo reconoció la totalidad del hardware presente en mi maquina. Mi sorpresa fue cuando quise navegar a través de la tarjeta inalámbrica (Intel Corporation PRO/Wireless 3945AGM [Golan] Network Connection) y no pude, así que me vi en la obligación de "googlear" para obtener información. Lo que descubrí fue que CentOS no posee el driver para la tarjeta mencionada, se debe instalar el rpm que sirve de controlador de la tarjeta.

El procedimiento de instalación fue el siguiente:
  1. Bajar iwl3945-firmware-15.28.1.8-2.el5.rf.noarch.rpm
  2. Instalar el rpm bajado (rpm -Uhv)
  3. Habilitar el programa NetworkManager cuando se inicia el sistema operativo mediante chkconfig NetworkManager on
  4. Iniciar el servicio de NetworkManager con service NetworkManager start
Con estos pasos pude navegar sin inconvenientes.
Para más información ingresar a http://wiki.centos.org/HowTos.

Saludos.

18.5.09

Oracle BPM Studio 10gR3


Actualmente me encuentro implementado procesos con la herramienta Oracle BPM Studio 10gR3 y he preparado una serie de videos (14 para ser más exacto) que describen la utilización, de una manera muy simple y básica, del IDE. Los videos muestran:
  1. Crear un Nuevo Proyecto.
  2. Crear un Nuevo Proceso en el Proyecto.
  3. Crear un Rol y una Actividad Interactiva.
  4. Agregar Manualmente un Nuevo Rol.
  5. Agregar Nueva Actividad a Rol Existente.
  6. Agregar Transiciones.
  7. Crear un Modelo de Simulación de Proyecto.
  8. Crear un Componente de Integración de Servicio Web.
  9. Crear un Componente de Integración de Base de Datos.
  10. Creación de Variables.
  11. Crear un Objeto BPM.
  12. Creación de Flujos de Pantallas.
  13. Dashboard.
  14. Workspace.
Estos videos se pueden descargar desde aquí.

Saludos.

23.2.09

Crisis Económica

En una economía globalizada, donde lo que hacen algunos afectan a otros, es posible que se cometan errores que conciernan de manera inesperada a un conjunto de industrias y/o sectores que no, necesariamente, tengan contemplado un "plan" de contingencia para enfrentar estas situaciones. Es el caso de empresas que prestan servicios y dependen de otras. Estas empresas, en su gran mayoría, van por la "vida" realizando su trabajo de manera eficaz, actuando o tratando de actuar de la "mejor forma posible". Es el caso de empresas que, por razones obvias no voy a mencionar, jamás han documentado sus procesos, menos, han definido sus actividades y/o procedimientos y por lo tanto no saben en que, ni como se consumen los recursos, donde están los cuellos de botellas, cuantas personas trabajan en resolver cada una de las actividades necesarias dentro de su proceso, etc. Y, ¿Que hacen cuando se les viene una crisis económica como la que estamos viviendo? suelen tomar decisiones como:
  • Despedir a colaboradores, no importando su productividad, que tengan menos de un año en la empresa (generalmente).
  • Reducir las gratificaciones de los empleados (bonos, aguinaldos, etc.).
  • Frenar y/o detener las inversiones.
¿Que se logra con esto? Crear un círculo vicioso que lleva a las demás empresas a tomar medidas igualmente tontas. Esto es semejante a la famosa guerra fría (Conflicto global desarrollado entre 1947 y 1991) y que vio como EE.UU. (Estados Unidos) construía armas debido a los informes entregados por sus espías dentro de la U.R.S.S. (Unión de Repúblicas Socialistas Soviéticas), de igual manera, la U.R.S.S. construía más armas para contrarrestar la amenaza de EE.UU.

Pero, ¿Que deberíamos hacer?, no existe una solución simple para un tema tremendamente complejo, sólo se debería, desde mi humilde punto de vista, documentar y revisar constantemente los procesos estratégicos, operacionales y de soporte lo que daría una visión completa de cómo estamos trabajando, definir KPI (Key Performance Indicators) que permiten obtener indicadores con los cuales se deberán comparar los resultados obtenidos de los procesos y así tomar medidas reactivas y/o correctivas. Está claro que con esto no se resuelve el problema de fondo (que cualquier crisis nos afecta de una u otra forma) pero, nos permitirá estar medianamente preparados para este tipo situaciones y no incurrir en medidas que deberíamos haber tomado mucho antes.

Saludos.

8.1.09

Colaboración, Gestión de Contenidos y Portales

En el marco de un trabajo, se me solicito definir los conceptos de Colaboración, Gestión de Contenidos y Portales. Existe, como ya lo he mencionado anteriormente, una infinidad de definiciones las cuales se van nutriendo y complementando unas con otras. Esta “recopilación”, no es la excepción. Espero les guste.

Colaboración
El concepto de colaboración esta directamente relacionado con el concepto de web 2.0 o la nueva “revolución” de las aplicaciones en Internet. Según Tom O'Reilly es la segunda generación de web's basada en el intercambio de información (por medio de comunidades, redes sociales, blogs, etc.) que fomentan la colaboración entre los usuarios. De esta definición se desprenden aspectos importantes que deben ser considerados para tener claridad de los que significa web 2.0, en un sentido amplio de la definición. La web es la plataforma que permitirá el desarrollo de aplicaciones, la integración y adición de usuarios, los cuales aportarán con sus propios recursos. Cada usuario pasa de ser un "consumidor" de información a un "productor" de la misma. El agregar y extraer información de las fuentes debe realizarse fácilmente. El software empaquetado pierde terreno frente a los servicios. El surgimiento de sitios como wikipedia reafirma este concepto, sitio web que permite la edición de sus contenidos por parte de las personas que acceden a él, con ciertas restricciones mínimas y que además es la base de conocimiento colaborativa para todos y de manera común. De esto se desprende que la Web 2.0 no puede ser posible si no existe una verdadera colaboración de todos los que acceden a este tipo de comunidades.

Gestión de Contenidos
La gestión de contenidos es un conjunto de herramientas o sistemas que se utilizan principalmente para facilitar la gestión de aplicaciones presente en la red, ya sea de manera interna a la organización (intranet) como externa (Internet). James Robertson propone una división de la funcionalidad de los sistemas de gestión de contenidos en cuatro categorías: creación de contenido, gestión de contenido, publicación y presentación.

1. Creación de contenido
Un sistema de gestión de contenidos aporta herramientas para que los creadores, sin conocimientos técnicos en el desarrollo y/o modificación de páginas web, puedan concentrarse en el contenido. Típicamente, estas herramientas proporcionan un editor de texto WYSIWYG (What You See Is What You Get, lo que ves es lo que obtienes), en el que el usuario ve el resultado final mientras escribe pero con un rango limitado. Esta limitación es una restricción que permite al creador centrarse sobre algunos puntos del sitio sobre los cuales tiene permiso de modificación. Para desarrollar las aplicaciones web, los sistemas de gestión de contenidos proveen de herramientas que permiten definir la estructura, el formato de las páginas, el aspecto visual, uso de patrones de diseño y módulos que permite incluir funciones no previstas originalmente.
2. Gestión de contenido
Los documentos creados son almacenados en una base de datos central donde también se guardan un conjunto de atributos como: datos relativos al documento (versiones, autor, fecha de publicación, fecha de caducidad, etc.) y datos relativos a los usuarios, la estructura de la web, etc. La estructura de la web se puede configurar con una herramienta que, habitualmente, presenta una visión jerárquica del sitio y permite modificaciones. Mediante esta estructura se puede asignar un grupo a cada área, con responsables, editores, autores y usuarios con diferentes permisos. Eso es imprescindible para facilitar el ciclo que va desde la edición hasta el responsable final de la publicación. El sistema de gestión de contenidos permite la comunicación entre los miembros del grupo y hace un seguimiento del estado de cada paso del ciclo de trabajo.
3. Publicación
Una página aprobada se publica automáticamente cuando llega la fecha de publicación, y cuando caduca se archiva para futuras referencias. En su publicación se aplica el patrón definido para toda la web o para la sección concreta donde está situada, de forma que el resultado final es un sitio web con un aspecto consistente en todas sus páginas. Esta separación entre contenido y forma permite que se pueda modificar el aspecto visual de un sitio web sin afectar a los documentos ya creados y libera a los autores de preocuparse por el diseño final de sus páginas.
4. Presentación
Un sistema de gestión de contenidos puede gestionar automáticamente la accesibilidad de la web y adaptarse a las preferencias o necesidades de cada usuario. También puede proporcionar compatibilidad con los diferentes navegadores disponibles y su capacidad de internacionalización le permite adaptarse al idioma, sistema de medidas y cultura del visitante.
El sistema se encarga de gestionar muchos otros aspectos como son los menús de navegación o la jerarquía de la página actual dentro de la aplicación web, añadiendo enlaces de forma automática. También gestiona todos los módulos, internos o externos, que incorpore al sistema.

Portales
Según wikipedia, un portal de Internet es un sitio web cuyo objetivo es ofrecer al usuario, de forma fácil e integrada, el acceso a una serie de recursos y de servicios, entre los que suelen encontrarse buscadores, foros, documentos, aplicaciones, compra electrónica, etc.
Principalmente están dirigidos a resolver necesidades específicas de un grupo de personas o de acceso a la información y servicios de una institución pública o privada.

Saludos.