miércoles, 26 de mayo de 2010

¡He perdido el botón mostrar escritorio!

Este tema está muy trillado, pero ayer me volvió a pasar. Somos muchos los que no podemos vivir sin ese botoncito de la barra de inicio rápido que minimiza de golpe todas las ventanas que tenemos abiertas, y nos muestra el escritorio de nuestro PC.

El problema es que es muy habitual que en un momento dado nos lo carguemos sin querer, arrastrándolo a donde no debemos, por ejemplo, y en ese momento nos entra el pánico. Pero tampoco hay que ser extremistas, porque es muy sencillo recuperarlo.

Lo primero que hay que saber es que los elementos que vemos en la barra de inicio rápido se encuentran en la siguiente carpeta de nuestro equipo: C:\Documents and Settings\usuario\Datos de programa\Microsoft\Internet Explorer\Quick Launch, donde usuario es el nombre de usuario que usamos para acceder a nuestro ordenador, claro. También podemos obtener la ruta de la carpeta haciendo clic derecho sobre el fondo de la barra y pulsando abrir, o sobre cualquiera de los iconos, entrando en las propiedades, y copiando la ubicación.

Pues bien, lo único que queda es tener ahí el fichero de marras. Si lo que hemos hecho es moverlo a otra ubicación, lo cortamos y pegamos. Si directamente lo hemos perdido, volvemos a crearlo. Generamos un fichero de texto y lo renombramos como 'Mostrar escritorio.scf', y lo rellenamos con el siguiente texto.


[Shell]
Command=2
IconFile=explorer.exe,3
[Taskbar]
Command=ToggleDesktop

Y eso es todo...

martes, 25 de mayo de 2010

Excluir direcciones en los filtros de gmail

Como ando cortito de tiempo y quiero mantener la cadencia del blog, hoy publico un tema muy simple, pero que a mí, en su día, me costó mucho trabajo resolver. La verdad es que no me he parado a mirar si hoy es más fácil encontrar información.

Supongo que la mayoría conocerá la opción de gmail de utilizar filtros. Esta opción te da la posibilidad de clasificar tus correos de forma automática, de configurar reenvíos, de desechar los correos que no te interesan... Vamos que son muy interesante para mejorar la efectividad de tu correo electrónico.

El primer uso que yo le di a los filtros de gmail fue precisamente el reenvío de correos, debido a que normalmente trabajo fuera de la oficina de mi empresa, y no tengo acceso al correo corporativo. Eso ha hecho que convierta gmail en mi gestor de correo profesional, y que en ocasiones reciba en esa cuenta mensajes relacionados con mi trabajo. Por tanto, me interesaba mantener la sincronía entre ambas cuentas, por lo que decidí configurar mi correo de gmail para que reenviase los mensajes a mi correo profesional.

Lógicamente, el problema es que no quería que absolutamente todo mi correo fuese reenviado, ya que a gmail me llegan correos de temas personales, de amigos, de publicidad, y un largo etcétera.

Cuando busqué en Internet, me di cuenta de que los tutoriales que explicaban cómo crear filtros los hacían siempre en positivo; esto es, las reglas siempre decían a qué correos hay que aplicarles la acción. Sin embargo, en mi caso, era mucho más fácil definir la regla en negativo, diciendo a qué correos no hay que aplicarles la acción, puesto que eran muchos menos.

Pues bien, la solución es tan simple como utilizar el operador -, de la siguiente forma:

from:(-(*@publicidad.com OR amigo@dominio.es OR ....)

Una cosa tan simple, y vaya rollo que he soltao... ¡Espero que os sirva!

miércoles, 19 de mayo de 2010

Net Beans no actualiza los ficheros de propiedades trabajando con Swing Application Framework

Hoy me he encontrado un pequeño problema al trabajar con Net Beans 6.8 realizando una aplicación de escritorio con Swing Application Framework. Un error que no es grave, pero que puede producir grandes niveles de frustración si no se da con la tecla.

Normalmente, trabajando con este entorno, tenemos nuestros paneles Swing enlazados con ficheros de propiedades en los que se definen los textos para nuestros componentes. Net Beans se encarga de ir actualizando los ficheros de propiedades, haciendo muy cómodo el trabajo.

Hasta ahí todo bien, pero, ¿qué pasa si renombramos un panel con la opción rename del IDE? En principio todo parece correcto: se cambia el nombre de la clase, se actualizan todas las referencias, el proyecto sigue compilando... Si seguimos trabajando con nuestro panel todo parecerá ser correcto. Podemos agregar nuevos controles o modificar sus textos y el editor se actualiza, pero... al ejecutar salta la sorpresa. Los nuevos controles no tienen texto, los modificados no se han actualizado... ¿qué he hecho para merecer esto?

Si nos vamos al fichero de propiedades, veremos que, efectivamente, los últimos cambios en el editor gráfico no se han visto reflejados. Lógicamente podemos modificar los que queremos directamente en este fichero, pero, por algún extraño motivo, la sincronización desde el editor gráfico hacia el .properties se ha perdido. ¿¿Por qué?? Pues la verdad es que no lo sé. He revisado todo lo que se me ha ocurrido sin encontrar una respuesta, pero sí una solución. Basta con cerrar el panel que hemos renombrado y volver a abrirlo para que todo vuelva a funcionar como siempre.

Este fallo tiene dos grandes problemas. Uno es que cuando caes en la cuenta de que los ficheros de propiedades no se están actualizando, lo más probable es que no seas capaz de encontrar la causa, ya que puede que haga mucho tiempo que renombraste el panel, y te pases un buen rato revisando tu código sin suerte. El otro es que luego hay que tener la ocurrencia de recurrir al "reset" (cerrar y abrir la clase) para que todo vuelva a la normalidad.

Un pequeño error más que anotarle a este IDE trabajando con SAF.

martes, 18 de mayo de 2010

KM Software

Hace poco hablaba de la gran experiencia que supuso para mí conocer una herramienta como Synergy. En las últimas semanas he ahondado un poco más en el tema, y he descubierto que este tipo de utilidades son conocidas como KM Software (Key Mouse Software) y, mucho más importante, que existen múltiples alternativas a Synergy que la superan.

Como comentaba en la entrada anterior, Synergy presentaba algunas limitaciones, como la imposibilidad de desbloquear un cliente sin usar su propio teclado, o los errores con los acentos, así que al conocer que existían otras opciones, he probado con Input Director, y el resultado ha sido fantástico.

En principio, la única limitación de Input Director es que sólo funciona con máquinas Windows, lo que para mí no es un problema, y en cambio ofrece grandes mejoras:

  • Posibilidad de desbloquear los clientes con una combinación de teclas alternativa al ctrl + alt + supr.
  • Todos los caracteres, incluidos acentos, funcionan sin errores.
  • Evita el cambio de foco en las esquinas de los equipos, que podía jugar malas pasadas cuando se querían cerrar ventanas.
  • Permite copiar y pegar archivos, además de texto, siempre que estos procedan de carpetas compartidas.
Y además, ofrece una gran cantidad de opciones. Parece que los desarrolladores de esta herramienta han pensado en todo y han completado un gran producto. La última versión hasta ahora es de febrero de 2010, lo que hace ver que el proyecto está muy vivo, y sin dudo se seguirán obteniendo mejoras.

De todas formas, para los amantes de Linux o Mac, existen muchas otras alternativas, incluido un proyecto hijo de Synergy, que ha sido denominado Synergy+, y que, según su Web, ha solventado muchos de los defectos de su predecesor.

Acabo de empezar con el Input Director, por lo que todavía es pronto para sacar conclusiones definitivas, y trataré de echar un vistazo también a Synergy+, así que veremos si estan herramientas todavía pueden sorprenderme un poco más.

domingo, 9 de mayo de 2010

"Metaconsultas" Oracle

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.

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.


Pues nada, espero que estas herramientas hagan vuestra vida más fácil.

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.