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 sí 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.