Buscar en el Blog

jueves, 29 de abril de 2010

Estrés Informático

Leyendo algo de noticias en la red, me encontré con el término "estrés informático", primera vez que escucho el término pero que su definición tiene mucho que ver con lo que realmente suele pasar a los usuarios de los sistemas informáticos.

 Algunas de las causas del estrés informático en los usuarios son las siguientes:
  • El sistema es lento, no se tiene una respuesta rápida
  • No se abren las páginas web
  • No se puede imprimir
  • No se cargó correctamente los datos para generar un reporte
  • No sé cómo usar bien el sistema, tengo muchos pasos que seguir
  • Interfaces no amigables,
  • La información se pierde, no hay consistencia, etc. etc. etc.

Estas causas y muchísimas más, son el pan de cada día, cuando se da soporte técnico de un sistema informático. Pero realmente, ¿nos preocupamos por el estrés informático en los usuarios? Un buen porcentaje o me atrevería a decir casi todos responderíamos que NO.

El estrés informático en un usuario causa desmotivación, falta de productividad y mala actitud. Como diseñadores y programadores de software deberíamos hacer lo imposible para evitar que los sistemas informáticos que construyamos se conviertan en la fuente de estrés de nuestros usuarios. Es importante que las herramientas de software que construyamos se conviertan en aceleradores de los procesos de una empresa y no en sus frenos.

viernes, 23 de abril de 2010

Web Frameworks Timeline

Comparto una línea del tiempo de los frameworks web que han aparecido en toda ésta decada. Realmente es muy complejo decidir cuál es el mejor framework web, considero que depende de muchos aspectos. Por ejemplo, cómo decir que un framework web es el mejor sin una herramienta que lo respalde.

El siguiente gráfico que comparto fue realizado por Matt Raible, y publicado en DZone, considero que es de mucha utilidad y muy informativo.

miércoles, 21 de abril de 2010

Lectura de un archivo de propiedades que se encuentra dentro de un mismo JAR

El siguiente código de Java sirve para leer un archivo de propiedades que se encuentra en un mismo JAR. Por ejemplo, sí se tiene el archivo de Java my-app-0.0.1.jar y dentro de éste un archivo de propiedades de nombre config.properties como se muestra a continuación:

my-app-0.0.1.jar
|_ META-INF
   |_ config.properties

El siguiente código me permitirá leer el archivo de propiedades y obtener una propiedad del mismo:

try {

    InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("META-INF/config.properties");
    Properties props = new Properties();
    String wsURL = null;    

    if (inputStream != null) {
        props.load(inputStream);
        wsURL = props.getProperty("myApp.webServiceURL");
        inputStream.close();   
    }
} catch(IOException e) {}

Convertir un objeto GregorianCalendar a XMLGregorianCalendar

Cuando se trabaja con servicios web en Java las fechas son manejadas a través de instancias de la clase javax.xml.datatype.XMLGregorianCalendar. Sin embargo, generalmente se trabaja con instancias de la clase java.util.GregorianCalendar para trabajar con fechas.

Al generar un client stub para un servicio web usando Apache Axis los tipos de dato fecha del WSDL se mapean a objetos del tipo XMLGregorianCalendar. Sí se dispone de un objeto GregorianCalendar con el siguiente código se puede realizar la conversión a un objeto del tipo XMLGregorianCalendar.

try {

GregorianCalendar fechaX = new GregorianCalendar();
fechaX.setTime(objetoTipoDate);
XMLGregorianCalendar fechaXML = DatatypeFactory.newInstance().newXMLGregorianCalendar(fechaX);

} catch (DatatypeConfigurationException e) {}

jueves, 15 de abril de 2010

James Gosling abandona Oracle

James Gosling, conocido como el padre de Java, ha decidido abandonar Oracle, después de que el proceso de transición entre Sun y Oracle finalizó hace un par de meses. Realmente es preocupante como Oracle está perdiendo a personas claves que aportaron y trabajaron por la tecnología Java. James, menciona en su blog lo siguiente:

"Yes, indeed, the rumors are true: I resigned from Oracle a week ago (April 2nd). I apologize to everyone in St Petersburg who came to TechDays on Thursday expecting to hear from me. I really hated not being there. As to why I left, it's difficult to answer: Just about anything I could say that would be accurate and honest would do more harm than good. The hardest part is no longer being with all the great people I've had the privilege to work with over the years. I don't know what I'm going to do next, other than take some time off before I start job hunting."

Good Luck James, 




miércoles, 14 de abril de 2010

Índices de popularidad de lenguajes de programación TIOBE - ABRIL 2010

TIOBE, ha publicado sus índices de popularidad de lenguajes de programación para lo que va de éste mes [1]. Es preocupante apreciar como el lenguaje de programación Java ha ocupado el 2do lugar, y su tendencia en popularidad está a la baja. Sinceramente desconozco cómo sea la forma de trabajar y operar de Oracle, pero lo que sí me preocupa es que está perdiendo poco a poco talentos clave que pertenecían al difunto Sun, como son Sang Shin, Jonathan I. Schwartz, por nombrar algunos. Adicional a ésto leí también que James Gosling, "Java Father" ha decidido abandonar el JCP (Java Community Process) mencionando que se ha convertido en un infierno político ("political nightmare")[2]. Comparto la tabla de índices de popularidad de TIOBE y las tendencias hasta Abril 2010.




[1] http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
[2] http://www.theserverside.com/news/thread.tss?thread_id=59920

jueves, 1 de abril de 2010

Conexión a una base de datos Oracle usando JDBC OCI

En el siguiente artículo explico cómo configurar Mule para conectarse a una base de datos Oracle usando las librerías de Oracle Instant Client.

1. Descargar Oracle Instant Client para la plataforma sobre la cuál se va a trabajar.
    http://www.oracle.com/technology/software/tech/oci/instantclient/index.html

   NOTA: Para Oracle 10g sobre plataforma Windows, descargar del siguiente link:
   http://download.oracle.com/otn/nt/instantclient/10204/instantclient-basic-win32-10.2.0.4.zip

2. Una vez descargado, descomprimir el archivo.
3. Copiar las siguientes DLLs al directorio MULE_HOME/lib/boot
  • oraociei10.dll
  • oci.dll
  • oraocijdbc10.dll
  • orannzsbb10.dll
4. Copiar el JDBC ojdbc14.jar al directorio MULE_HOME/lib/user
5. Incluir el Spring Bean y el conector JDBC en el archivo de configuración de MULE.


<?xml version="1.0" encoding="UTF-8"?>
<mule 
... >
<spring:bean id="oracleDataSource" class="oracle.jdbc.pool.OracleOCIConnectionPool" destroy-method="close">
        <spring:property name="user" value="user"/>
        <spring:property name="password" value="password"/>
        <spring:property name="URL" value="jdbc:oracle:oci:@(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST = 192.168.10.196)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = DBNAME)))"/>
        <spring:property name="poolConfig" ref="oraclePoolProperties"/>

    </spring:bean>

    <spring:bean id="oraclePoolProperties"
                 class="org.springframework.beans.factory.config.PropertiesFactoryBean">
        <spring:property name="properties">
            <spring:props>
                <spring:prop key="connpool_min_limit">1</spring:prop>
                <spring:prop key="connpool_max_limit">5</spring:prop>
                <spring:prop key="connpool_increment">2</spring:prop>
                <spring:prop key="connpool_timeout">10</spring:prop>
                <spring:prop key="connpool_nowait">true</spring:prop>
            </spring:props>
        </spring:property>
    </spring:bean>
...
<jdbc:connector name="OracleJDBCOCIConnector" dataSource-ref="oracleDataSource">
    </jdbc:connector>
...
</mule>