Bueno, el término digamos que me lo he inventado, porque no tengo idea de cómo se llaman, pero lo que pretendo presentar es una idea interesante cuando se trabaja con consultas SQL. Hablo de Oracle porque es el SGBD con el que suelo trabajar, pero sería extrapolable a cualquier otro.
Partamos del problema: supongamos que queremos actualizar todos los registros de una tabla cuyo valor para una determinada columna comience por una cadena concreta, a otra cadena (también concreta, claro). Dicho así suena extraño, pero pongamos que tenemos los siguientes valores en una tabla:
Nombre
Don Manuel
Don Joaquín
Doña Lucía
Don Carlos
Pues lo que queremos, sencillamente, es actualizar los valores "Don X" a "D. X".
A priori, cualquiera diría que lo que hay que hacer es una única sentencia update muy sencilla, pero en cuanto empecemos a pensar nos daremos cuenta de que no lo es tanto. Sí resultaría sencillo con una consulta para cada registro a modificar, pero escribirlas todas no es una solución válida, puesto que queremos un método que nos sirva para tablas de cualquier tamaño, y si tenemos un millón de registros, podríamos tardar un ratito curioso.
Pues aquí es donde entran las "metaconsultas", a las que denomino así porque son consultas que nos permiten generar otras consultas. Simplemente tenemos que ejecutar lo siguiente:
select 'update nombre_tabla set nombre_campo=''D. ' || nombre_campo || ''' where nombre_campo=''' || nombre_campo || ''';' from nombre_tabla where nombre_campo like 'Don %';
Y obtendremos como salida una serie de sentencias update que si copiamos y ejecutamos, realizarán la actualización deseada.
El ejemplo presentado es el más básico posible, pero conociendo esta técnica seguro que le encontraréis muchas utilidades.
domingo, 9 de mayo de 2010
viernes, 7 de mayo de 2010
Configuración del proxy en Internet Explorer y Google Chrome
Somos muchos los que en nuestras empresas accedemos a Internet a través de proxy. Conocí a este interesante amiguito el primer día de trabajo, y desde entonces no es que me haya llevado especialmente bien con él, la verdad.
Cuando trabajamos siempre con un mismo equipo y en una misma ubicación, la configuración del proxy no trae mayores complicaciones. Sin embargo, cuando trabajamos con un portátil y nos vamos moviendo con él, este tema acaba siendo de lo más fastidioso, ya que en cada ubicación se requiere una configuración distinta.
En Internet Explorer 6 (así estamos en el Organismo en que trabajo...), la configuración del proxy se modifica dentro de la opción Conexiones - Configuración LAN, donde podemos activarlo, e indicar su dirección. Pero en esta entrada no se trata de hablar de cómo se configura normalmente el proxy, que es algo conocido, sino de presentar un par de ideas para llevarnos mejor con nuestro amigo.
La primera utilidad que recomiendo es Proxy Pal. No he encontrado ninguna página oficial, pero parece ser que su autor es Brett Bartholomew, y si buscáis en Internet encontraréis enlaces para su descarga. Cuando instales esta herramienta podrás ver un nuevo botón en tu Internet Explorer desde el que podrás habilitar y deshabilitar el proxy, ahorrándote un buen número de clics cada vez que cambies tu ubicación.
Algo más completa es Switchy! para Google Chrome, que puedes encontrar, junto con otras muchas extensiones interesantes, en http://www.chromeextensions.org/. En este caso podremos almacenar distintas configuraciones de proxy, y seleccionar rápidamente la que queremos usar en cada momento.
Fecha de creación en Java
Un tema que acabo de descubrir gracias a una pregunta planteada en Debug Mode On.
Nunca me había encontrado con la necesidad de acceder a la fecha de creación de un archivo desde un programa Java, y como todos, al ver la pregunta pensé que sería tan simple como buscar un método tal que getCreationDate en el API... pues no.
Resulta que, por el momento, Java no ofrece ninguna opción para acceder a este dato, según parece por aquello de que pretende ser multiplataforma, y la fecha de creación no se puede recuperar en todos los sistemas operativos.
Así que hay que hay que buscarse la vida. Por lo que he podido leer, se plantean dos posibles alternativas para solventar este problema. Por un lado, hacer una llamada a nuestro sistema desde el código, y parsear la respuesta. Por otro, utilizar JNI.
Y, ¿qué es JNI? Pues una más de las muchas siglas que componen nuestro peculiar lenguaje. Java Native Interface, básicamente, sirve para poder invocar desde Java programas desarrollados en otros lenguajes. Por tanto, la solución la tenemos en hacer un programa en cualquier lenguaje que te permita consultar la fecha de creación, e invocarlo a través de JNI.
Si navegáis por ese maravilloso mundo que es Internet encontraréis varias páginas con código para ambas alternativas.
Por cierto, que según comenta GreenEyed en el hilo del comienzo de esta entrada, se está trabajando en la JSR-203, que proporcionará alguna forma de acceder a información proporcionada específicamente por cada sistema operativo, con lo que se acabarían nuestros problemas.
martes, 4 de mayo de 2010
Synergy - Control de varios equipos con un ratón y teclado
Hoy voy a hablar de la herramienta más maravillosa que he conocido en los últimos meses: Synergy.
Somos muchos los que trabajamos simultáneamente con varios equipos: el portátil, el sobremesa, el servidor... y resulta realmente molesto tener sobre la mesa un teclado y ratón para manejar cada uno de ellos, además de acarrear obvios problemas de espacio.
Por eso creo que esta utilidad es imprescindible para muchos de nosotros. Con Synergy tendrás la posibilidad de manejar varios ordenadores sólo con un teclado y un ratón. Además, aunque no lo he probado, aseguran que no hay restricciones en cuanto a plataformas, siendo posible conectar Windows con Max y Linux.
El funcionamiento es muy simple, uno de los ordenadores tendrá conectados el ratón y el teclado, y actuará como servidor. A través de la herramienta configuraremos el resto de equipos, y podremos acceder a su control sencillamente llevando el cursor del ratón hacia el extremo de la pantalla que hayamos configurado, exactamente igual que cuando conectamos dos monitores a nuestro PC, con la diferencia de que en este caso el control pasará a un equipo distinto.
Además de unificar el control, Synergy también unifica el portapapeles de los distintos equipos, por lo que es posible copiar un texto en uno de ellos, y pegarlo en cualquier de los otros, poniendo fin a la necesidad de utilizar el correo o el chat para pasar una url, por ejemplo.
Eso sí, como todo en este mundo la herramienta tiene sus defectos. El primero y más importante, es que tiene problemas con los acentos, y es necesario reducir la velocidad de escritura para que los coja correctamente. En un principio es muy molesto, pero uno acaba acostumbrándose, y es de esperar que este tema se resuelva en futuras versiones. El otro defecto que le veo, poniéndome ya exigente, es que cuando se bloquea uno de los equipos cliente no se puede desbloquear sin utilizar su propio teclado, por lo que si eres de los que bloqueas con frecuencia tu ordenador no podrás prescindir por completo de su teclado.
La configuración de la herramienta es muy sencilla, pero adjunto una pequeña guía en la que se explica cómo ponerla a trabajar en pocos minutos: http://sites.google.com/site/blogjvel/TutorialdeSynergy.doc
En resumen, una idea brillante, que si se pule puede convertirse en imprescindible para muchos. La pena es que, por lo que se ve en su Web, lleva varios años sin novedades.
domingo, 2 de mayo de 2010
Business Intelligence
Hoy doy una pequeña introducción a uno de esos conceptos que se ponen muy de moda en el mundo de la informática, y con el que en principio trabajaré en mi trabajo final de máster: la Inteligencia Empresarial, o Business Intelligence, que los términos ingleses siempre se imponen.
El objetivo del BI sería explotar la información almacenada en los distintos sistemas de información de una empresa u organización, con el fin de ayudar en la toma de decisiones. Para ello se siguen procesos ETL (Extract, Transform, Load), en los que se obtienen datos de distintas fuentes, se procesan (se combinan, filtran, transforman, homogeneizan...), y finalmente se cargan en un nuevo almacen de datos.
Las fuentes de datos de las que se parte pueden ser completamente heterogéneas, tanto a nivel técnico como en cuanto a la información que almacenan: bases de datos de clientes, hojas excel con datos financieros...
Una vez realizadas las transformaciones, se definen Indicadores (KPI, Key Performance Indicators) que son datos que nos ofrecen información interesante para la toma de decisiones. Por ejemplo, ¿en qué grado se ajustan los resultados de los proyectos a las previsiones realizadas? ¿en qué porcentaje se exceden los costes de los proyectos? ¿cuál es el índice de errores detectados para nuestros sistemas en producción?...
Por último, podríamos definir Cuadros de Mando, que serían informes en los que se presentan resúmenes de esta información de una forma rápida y visual, sirviendo, como se ha dicho, de apoyo a la hora de tomar decisiones en la organización.
Esta sería, a grandes rasgos, la idea detrás de la Inteligencia Empresarial. Si todo va bien, en próximas entradas entraré en mayor detalle proporcionando algunos ejemplos concretos, e introduciendo el uso de herramientas como Pentaho y Jaspersoft BI Suite.
Suscribirse a:
Entradas (Atom)
