Mostrando entradas con la etiqueta windows. Mostrar todas las entradas
Mostrando entradas con la etiqueta windows. Mostrar todas las entradas

jueves, 22 de mayo de 2014

La informática que nos rodea

Cuando alguien me dice que va a estudiar informática me da algo de miedo porque creo que esa persona no sabe dónde se está metiendo. Ni siquiera creo que sepan lo que significa ese término. Es un mundo de inmensas posibilidades y no se puede tomar a la ligera.

Por cierto, que la gente suele decirme estas cosas del mismo modo que me dicen que han dejado de fumar; como si yo fuera la policía de la salud o un experto en informática. Cosas que no me considero en absoluto.

No me considero informático aunque haya hecho trabajos propios de un informático. Y puede que tenga más conocimientos de algún tema que algunos profesionales. Pero cada día hay novedades y cambios en este mundo y no estoy puesto en ellos, ni me intereso activamente por informarme de todo. Al margen de que es inabarcable y está lleno de incertidumbre sobre qué métodos son mejores para hacer según qué cosas.

Pero ahora mismo, en este artículo, quiero explicar en qué consiste "esto de los ordenadores" desde mi punto de vista "apasionado del software". Porque es cierto que no debemos dar la espalda a la informática o su evolución que sería el mundo de Internet, la Aldea Global; o lo que llaman las I.T. (Tecnologías de la Información). Y que aunque tengamos cierta habilidad adquirida puede que nos abrume tanta posibilidad, o el simple hecho de desconocer esas posibilidades.

No prestar suficiente atención a esto te convierte ya, hoy día, en un analfabeto.

A mi me empezó a enganchar la informática con menos de 10 años. Y por entonces ya programé en Basic en un cuaderno en los recreos (sin ordenador), y poco después algunas chicas me preguntaban, también en los recreos, si leía la biblia, porque tenía un pequeño libro muy gordo... que en realidad era un diccionario de términos informáticos de bolsillo. jajaja.

El caso es que a mí la informática nunca me atrajo como una profesión sino como una herramienta para crear contenidos, comunicarme con ella, divertirme y como un cosmos de exploración infinito.

Como yo, otras personas vieron en su día algunas posibilidades de la informática que les permitió ganarse la vida gracias a que también les gustó algún aspecto de la tecnología o los sistemas informáticos; bien sea el hardware como evolución de la electrónica, la programación, edición de contenidos, análisis de datos científicos, o algún otro uso divulgativo, literario, artístico o del mundo del entretenimiento.

Así que hubo un tiempo en que era suficiente con saber decir "ordenador" para tener trabajo. Ya que las aplicaciones de "esta tontería" son casi ilimitadas.

Pero ¿qué es un ordenador?

Un ordenador no es más que una serie de circuitos integrados o micro-chips conectados a varios periféricos con un sistema que permite al usuario dar órdenes y recibir respuesta a ellas.

Gracias a los programas estas órdenes pueden ser automatizadas para evitar tareas que de otro modo serían tediosas y rutinarias.

Pero las cosas no son tan maravillosas y sencillas como parece.

Un procesador, CPU, (o Unidad Central de Procesado) es un micro-chip que, como otros micro-chips con distintas funciones en el ordenador, recibe datos binarios y devuelve respuestas correspondientes según lo recibido, siendo capaz de realizar millones de cálculos y operaciones por segundo.

Toda pieza de hardware tiene micro-chips que reciben y envían datos binarios; Unos y ceros.

Por ejemplo, un teclado recibe las señales de cada pulsación y envía el código correspondiente en un estándard establecido para que el ordenador interprete qué teclas se están pulsando.

Las tarjetas gráficas tienen procesadores que reciben datos con ordenes para ser convertidas en señales de vídeo que se representan en el monitor.

Una impresora tiene un procesador que recibe señales para hacer mover sus mecanismos e imprimir en papel lo envíado.

El código binario de las máquinas es algo más que complicado para que las personas corrientes podamos comunicarnos con ellas al nivel más directo (bajo nivel). Además, cada fabricante, en ocasiones, inventa su propio juego de órdenes binarias para sus aparatos que luego han de ser "estandarizadas" con pequeños programas que podríamos llamar drivers, o controladores.

Y todo el hardware debe controlarse con programas. Pero hay tantas formas de programar como granos de arena en una playa, o modelos de iPhone.

Programación a Bajo Nivel:
La programación a bajo nivel está reservada a mentes superdotadas. No digo que haga falta ser un genio, pero podemos sacar de este grupo a políticos o tertulianos de TV y el mundo del "famoseo".

Programar a bajo nivel significa que das las instrucciones, no al sistema operativo (que se instala en un ordenador) sino directamente a los micro-chips que controlan el ordenador (o dispositivo).

El código máquina son órdenes en lenguaje que el procesador puede entender directamente sin necesidad de aplicaciones que hagan de interprete para hacer su tarea. De modo que las aplicaciones hechas a este nivel o en ensamblador, lenguaje (también de bajo nivel) un poco más "humano" que el código máquina pero igual de complicado, funcionan con más eficiencia y velocidad que otras aplicaciones hechas a otros niveles.

Lenguajes compilados:
Entre medio hay diversos lenguajes de programación, con distintos tipos de estructura, que pueden ser compilados, generando un programa similar a los que genera el ensamblador, para que el ordenador haga lo que se le pida. La mayoría de aplicaciones profesionales se hacen en estos lenguajes; usando C, C++, Java (aunque este lenguaje es una excepción, dentro de la categoría, ya que emplea un intérprete creando una máquina virtual que se comunica con el procesador, de modo que no es tan eficiente), etc.

Lenguajes de alto nivel / scripting:
Aunque se llamen de alto nivel, no son los lenguajes con los que puedas presumir de tener un "nivel alto" en informática; Aunque desde luego programar está muy por encima de eso que ponen algunos en su currículum de "Conocimientos medio-alto de informática a nivel usuario".

Para presumir aprende código máquina de varios tipos de procesador comunes en smartphones, tablets y aparatos raros que nadie entiende y entonces estaríamos hablando de un erudito. jejeje.

Estos lenguajes de programación usan un intérprete intermedio que adapta las órdendes para realizar las tareas ordenadas por el programa. Tiene la ventaja de que la sintaxis es más fácil de entender; al no estar compilado puedes ver cómo están hechos otros programas y aprender más fácilmente.

Además ofrecen una facilidad muy grande para interactuar con otros programas y por tanto crear aplicaciones más útiles y complejas.


Este es el tipo de lenguaje que conozco un poco. Y es también de los más utilizados para hacer algunas aplicaciones, incluso algunas bastante potentes. En ocasiones puede llegar a compilarse para no requerir intérprete pero nunca llegarán a funcionar tan bien como las programadas en lenguajes compilados o a bajo nivel.

En esta categoría están lenguajes como Python, Perl, PHP, REXX, ARexx, AppleScript, VBScript, Ruby, Lua, etc.

Conocer las peculiaridades de cada lenguaje se queda a vuestra curiosidad.

A mayor curiosidad mejor. Aunque podéis caer en un pozo sin fin. Porque, a menos que seais muy disciplinados, el tiempo que os puede robar la "informática" pueden ser eones.

No se deben despreciar tampoco los conocimientos en lenguajes de consulta de bases de datos como SQL y derivados. Puesto que en muchas ocasiones lo único que se hace en un ordenador es almacenar, crear, modificar y eliminar datos; Cosa que se hace muy eficientemente desde muchos de estos lenguajes de programación y pueden ahorrar reescribir aplicaciones que hacen las mismas cosas pero usan contenidos diferentes.
Temible
Código Máquina
/ Ensamblador
de ZX Spectrum

Esto es algo que aprendí gracias a PHP y pelearme con sistemas de contenido web que emplean bases de datos para todo.

Si quieres aprender a hacer páginas web, lo tienes muy sencillo y bien estructurado en lugares como http://www.w3schools.com/

Ahora bien, no le debes tener miedo al inglés. ¡Al menos no es código máquina! Eso sí que da miedo.

Scripting:
Abrir una consola y teclear órdenes en vez de hacer click en el icono de un complaciente entorno gráfico del sistema operativo (que probablemte abra un script ya programado) es también un modo más directo de hacer algunas cosas en el ordenador. Se puede programar una serie de órdenes mediante scripts que permiten automatizar todo tipo de tareas. En PCs con Windows se emplea DOS o cosas más avanzadas como Windows Powershell, mientras que en sistemas Linux o Mac lo suyo es el Bash scripting.

En móviles Android he visto que existe alguna implementación de Lua, Luarida. Que puede ser interesante para hacer cierta automatización de tareas. Y tímidos intentos de portar otros lenguajes de script. Y es posible acceder a la consola y usar Bash con algunas limitaciones, ya que es un sistema Linux con una máquina virtual integrada, a'lla Java.

Cualquiera de estos lenguajes no sirve para nada sin una cabeza abierta para la lógica, razonamiento, algunos cálculos matemáticos, bastante intuición o capacidad de concentración, y un montón de imaginación para hacer realidad cualquier cosa que te propongas.

Más en wikipedia:
Historia de la computación
Timeline of computing

Esto es muy largo. Si hay algún error o imprecisión o quieres comentar algo... cuéntamelo en un comentario (abajo).

jueves, 4 de julio de 2013

A saco con los kanji

Prólogo:

Anki es un famoso programa que ayuda a memorizar cualquier materia con una técnica de repaso espaciado. Básicamente ayuda a memorizar cosas más deprisa que medios convencionales. Ya que se gana tiempo al repasar más a menudo sólo aquellas cosas que olvidas con más frecuencia, dejando para más tarde lo que olvidas menos.

La memoria funciona de tal forma que cuando aprendes algo empiezas a olvidarlo; pero si justo antes de olvidarlo del todo lo vuelves a repasar tarda más en olvidarse, y si antes de olvidarlo de nuevo lo repasas y vuelves a repasar con este sistema, como unas 10 veces, es muy probable que ya no lo olvides nunca.

Actualmente tras un curso de octubre a junio, con clases semanales casi particulares de japonés con el libro de texto みんなの日本語, estoy de "vacaciones" y toca repasar lo aprendido. Además tras varias "paradas técnicas" estoy siguiendo con constancia el libro del Dr. Heisig, Marc Bernabé y Verónica Calafell "Kanji para Recordar 1" donde se puede lograr perder el miedo a los kanji y se aprende a reconocerlos de forma imaginativa.

Desde mayo llevo un buen ritmo el aprendizaje de los temidos jōyō kanji, o letras chinas de uso general en japonés, incluyendo el suplemento. Cada día aprendo 10 nuevos kanji y los agrego(¿cómo? más abajo lo explico.) a mi mazo de repaso en Anki.

Hay 2 formas de usar Anki para aprender idiomas: Lo que llaman el modo "Reconocimiento" y el modo "Producción".

El Reconocimiento consiste en ver algo en el idioma que estás aprendiendo, tratar de adivinar la traducción a tu idioma y ver si has acertado en el reverso de la nota (carta o flashcard) que se genera con Anki.

Heisig recomienda la segunda forma de usar Anki, que quizás es más dura al comienzo pero doy fe de que es mucho mejor. Aunque combinar un poco ambas técnicas no puede hacer daño cuando ya has madurado bastante el repaso.

El modo Producción con "Kanji para recordar", consiste en adivinar como es el dibujo del kanji viendo primero la "palabra clave" en tu idioma. Ya que lo que se aprende con Kpr1 no son exactamente traducciones a tu idioma sino una interpretación del significado más común para un kanji (que puede tener varios significados) o incluso algo totalmente inventado, que no tenga que ver con su significado habitual, y que puede venir bien para recordarlo y asociarlo como componente en otros kanji. Al tiempo que aprendes a dibujarlo con tu propia mano en el orden correcto de los trazos lo que también te ayuda a recordarlo con otro tipo de memoria; que no sea un simple reconoce, repite, y repasa.

ANKI:

Con el tiempo he ido aprendiendo de las muchas ventajas que tiene Anki. Aunque aún habrá cosas que no controlo.

Su principal ventaja es que puedes usarlo en el smartphone, tablet, el ordenador en cualquier sitio con acceso a la web ankiweb. Y sincronizar tu progreso en los distintos dispositivos.

Poco a poco le he ido sacando bastante partido.

Lo ideal para aprender algo con Anki es hacerse uno mismo el mazo conforme va aprendiendo lo que sea. Aquí tenéis un vídeo tutorial básico que hice sobre cómo hacer y actualizar un mazo.



Para los Kanji se pueden encontrar mazos compartidos de muchos métodos diferentes. Incluyendo el de Kanji para Recordar. Pero, como ya he dicho, es mejor hacerse uno el mazo conforme va aprendiendo, en el caso de este es más importante porque con el método de Heisig deben aprenderse en cierto orden y Anki sólo debe usarse para repasar los aprendidos.

Los mazos que he encontrado en castellano no incluyen los 196 nuevos kanji que le faltan a KpR1 desde la reforma de los jōyō kanji de 2010.

Me lié la manta a la cabeza y los adapté con ayuda del proyecto diccionario Kanjidic2 que es un texto en forma de "base de datos" XML que incluye kanjis, traducciones en distintos idiomas, número de trazos y distintos códigos de indices incluyendo los Heisig.

También requerí algún mazo en inglés y los fui adaptando más o menos.

Encontré algún término cambiado que se había corregido en KpR como "castigar" por "reprimenda" así que los arreglé. Pero puede haber alguna incosistencia más respecto al libro y suplemento.

Aún así la última edición a la venta todavía tiene alguna errata y seguramente cambiará el índice respecto a la futura edición que incluya el suplemento.

Un problema que me encuentro a menudo es que algunos kanji de los recientemente aprobados han cambiado de forma y casi siempre usan el mismo código Unicode lo que hace que no se vean como deben verse.

Por ahora el tipo de letra que yo conozco que más se acerca a tener todos bien es una fuente ttf llamada "Hiragino Mincho Pro" (enlaces abajo).

Para repasar el orden de los trazos es muy importante disponer del tipo de letra KanjiStrokeOrder (abajo enlace).

Sin embargo para que funcione en el móvil (uso Android, con Ankidroid) el archivo debe introducirse en la aplicación de escritorio (Windows, Linux, Mac) en la carpeta del usuario en la raiz de la carpeta de archivos multimedia compartida conocida como "collection.media/" (~/Anki/Usuario/collection.media/_KanjiStrokeOrders.ttf en linux, o algo parecido)

Además, según la plataforma es posible que haya que poner un guión bajo delante y corregir la plantilla de las tarjetas para que haga referencia a esa fuente para mostrar los kanji. Tal que así, en el apartado Estilo de los "Tipos de Tarjeta":

@font-face {
font-family: MiKanjiStrokeOrders;
font-style: normal;
font-weight: normal;
src: url('_KanjiStrokeOrders.ttf') format('truetype');
}

.jp {
font-family: miKanjiStrokeOrders;
}


.mobile .jp {
font-family: miKanjiStrokeOrders;
}

.mac .jp {
font-family: KanjiStrokeOrders;
}

.win .jp {
font-family: KanjiStrokeOrders;
}

.linux .jp {
font-family: KanjiStrokeOrders;
}




De este modo al sincronizar el contenido multimedia en el móvil se puede ver el tipo de letra con la fuente mostrando el orden de los trazos. Aunque ojo con el wifi/3G porque lo font ocupa unos 18MB.

En ocasiones me ha fallado al principio no mostrándose el kanji con la nueva font en el móvil. Pero se soluciona dándole a editar una nota y al grabarla o cancelar se ven todas ya.

El problema con los kanji que han cambiado de forma tiene más difícil solución. Este por ejemplo ahora tiene un trazo más:


Sólo cabe esperar a ver si se actualiza en más sitios y el autor de la fuente KanjiStrokeOrders lo actualiza también.


Hasta hace bien poco además de Anki usaba la web Kanji Koohii, donde hay una nutrida comunidad de usuarios que siguen alguna de las versiones de Kanji para Recordar en español, inglés, alemán, italiano... y comparten historias imaginativas para ayudar a la mnemotecnia. Pero existe un plugin para Anki (escritorio, mac, win, linux) que te permite importar tu progreso de la web de Kanji Koohii y hacer lo mismo que haces en esa web en el Anki, simplificando un poco el proceso cuando usas varios mazos de aprendizaje.

Todo esto no tiene ningún sentido si no sigues el libro de KpR1 pues los índices Heisig no tienen nada que ver con el orden en que están estructurados los exámenes y frecuencia de uso de los kanji. Heisig propone aprenderlos todos sin excepción. Saltándose la tediosa labor de aprender su lectura y los compuestos en principio, pero sirviendo de magníficos cimientos para enfrentarse a ello después.

Los mazos que se encuentran por Anki incluyen los kanji de los libros Kanji para Recordar 1 y "Remember the Kanji 3". Que parece ser, este tercer libro no saldrá en España, puesto que con la técnica de KpR se pueden aprender los casi 1000 de RtK3 y los cerca de 47.000 más de los kanji japoneses no tan habituales. (Por si alguien se lo pregunta aún, el libro "Kanji para Recordar II" enseña las lecturas y los compuestos de los jōyō.)


Así pues, me programé una serie de scripts que sirven para consultar las tablas de kanji jōyō y la que tiene los añadidos en 2010 y los ordena como deberían ser estudiados en el orden que propone Heisig según el suplemento.

De modo que, cuando aprendo 10 kanji, le digo el número de índice Heisig que va primero y se generan 10 (o los que quiera) en un archivo .csv que importó fácil y rápidamente en el mazo que tengo para los kanji recien aprendidos. Y que llegará a tener 2199 kanji allá por noviembre, si nada se tuerce.

Además como a partir de cierta lección los kanji sólo se ven en su forma de imprenta y a veces me confunde respecto a la forma manuscrita, para dibujarlos bien creé otro script que genera el número de hojas de 10 kanji que le pida, para tener para varios días  (con la fuente KanjiStokeOrders). Aunque por ejemplo la última lección del libro, he visto por anticipado que es preferible no disponer de esa forma para que seas tú mismo quien averigüe la forma manuscrita.


Para consultas puntuales me creé tres scripts accesibles mediante un atajo de teclado como las teclas F6, F7 y Shift+F7. Que muestran el kanji (y lo copian al clipboard para pegarlo donde quiera; muy útil para mirar un diccionario o hacer búsquedas) al que le corresponde un índice Heisig. O lo contrario, con F7, meto un kanji y me dice el índice Heisig. Y más divertido aún, personalizado y complejo, el script que arranco cuando pulso Shift-F7 me pregunta el kanji y me dice cuándo me toca estudiarlo, su palabra clave, número de trazos y una cantidad extra de información útil.



Además del mazo "Kanji Koohii" y el de mis clases basadas en Minna no nihongo, tengo un tercer mazo donde metía los que olvidaba cuando usaba la web de Kanji Koohii, porque en esa web me resultaba problemático que llegasen a acumularse kanji para reaprenderlos y nunca pulsaba que me habían resultado "olvidados / mal 1" sino que evitaba poner que habían sido "fáciles 3 (o 4 en Anki)", dejando como poco en "bien 2".


Los demás mazos los he descargado de la sección Shared Decks de Anki y sólo les hago algo de caso si tengo mucho tiempo libre. (casi nunca) Están para probar.

La versión de escritorio es necesaria para hacer labores de sincronización, estadísticas, etc más fácil. Aunque sería posible actualizar mazos y añadir flashcards (notas) desde la app móvil. Pero siempre es más fácil de automatizar todo con la versión de ordenador.


Enlaces:

Si alguien quiere importarse el mazo de 2199 kanji aquí va en formato .csv, incluyendo los campos separados por tabulación: 'kanji', 'palabra clave', 'historia' (campo vacío para añadir una historia mnemotécnica), 'número de trazos', e 'índice heisig'.


Puede haber imprecisiones, y alguna modificación mía, por ejemplo en el kanji de índice Heisig 940A pone la vieja forma del kanji en la 'palabra clave', cuya nueva forma es un código unicode diferente; tal que así: 'artículos de papelería (viejo: 箋)'.


Pero como lo ideal es crearse el mazo poco a poco: Aquí va mi script para crear un archivo CSV personalizado (casi me quedo sin cenar por adaptarlo para la Web ;))


  • Tipo de letra con kanji de estilo manuscrito con indicación del orden de los trazos: KanjiStokeOrders (última versión conocida v3.000 - 9MB comprimida en zip)
  • Tipo de letra con kanji de imprenta bastante completa. He convertido la que encontré a formato TTF que la hace compatible con Libreoffice y otros programas: Hiragino-mincho-pro-w3

Y eso es todo. Espero que sea de utilidad.
Cualquier duda preguntar e iré aclarando.

martes, 23 de diciembre de 2008

Informe Vista

Todo el mundo odia Windows. Pero casi todo el mundo lo usa.
Yo uso Windows en mi ordenador principal porque mi PDA usa Windows. La lógica me decía que lo más práctico sería eso. También tengo algún que otro juego solo para Windows a los que cada vez juego menos pero me gusta tener la opción.

Hay aplicaciones para controlar Activesync de las PDA con Windows Mobile para controlarlas en Linux pero creo que no me gusta complicarme más de lo necesario.

Ya he mencionado por el blog que soy convergente en el sentido de que no importa el entorno sino la interoperabilidad de los datos.
Un vídeo, una aplicación java, o un texto tiene que poderse abrir en cualquier sistema, sea cual sea.

Los límites deberían venir dados por el hardware y la envergadura de los datos a manejar.

Sin embargo Windows e Intel, siempre de la mano (y si no esperar a que el año que viene no pare de sonar Windows 7 y el nuevo Intel 7... ¿Quién no querrá ponerse un par de 7 en casa? -El número de la suerte!), se empeñan en cambiar el diseño para multiplicar la frustración y el gasto en periféricos injustificadamente. Bueno... por motivos puramente intelectuales. Por dinero.

Microsoft Windows creó un formato de imagen que ocupa lo máximo posible y más para que los discos duros se quedasen pequeños pronto y el procesador que los manejase también requiriese ser ampliado.


Hoy día la tecnología es tan potente que parece difícil inventar algo para devaluar sus prestaciones.

Ahora mismo tengo dos discos SATA de 500 GB formando un volumen de 1000 GB en Raid 0.
Con 2 GB de RAM... -Antes con 64 MB en Amiga PPC hacía maravillas.
Y en Vista, 2000 MB se quedan pequeños!


Tratando de optimizar un poquito el uso de Windows Vista se me ha ocurrido usar el "Liberador de espacio en disco"

No pensaba que pudiera ahorrar mucho espacio porque no suelo hacer uso de la Papelera del sistema y los archivos temporales que las aplicaciones generen si no son borrados podría ser difícil localizarlos por otra aplicación.

Mi partición de 300 GB del sistema ha estado un rato pensando, a ver qué podía liberar, y ha dicho que puede borrar 760 MB. 
Una minucia en comparación con 300 GB...
Pero eso sin tener en cuenta otras opciones totalmente prescindibles, que me he quedado de piedra con la de espacio que se me esta comiendo, hasta 49,8 GB liberables, y yo ya pensaba que necesitaba disco nuevo:

* Archivos de programa descargados (explorer): 11,4 MB
* Archivos temporales de Internet (explorer): 681 KB
( ) Páginas web sin conexión: 1,12 KB
( ) Debug Dump Files 259 MB
( ) Instalaciones anteriores de Windows: 47,6 GB !!! (ALA!)
( ) Papelera de reciclaje: 0 bytes
( ) Setup Log Files: 37,6 KB
( ) Archivos de volcado de memoria de errores del sistema: 263 MB
( ) Archivos de minivolcado de errores del sistema: 263 KB
( ) Archivos temporales: 309 MB
* Miniaturas: 747 MB
( ) Archivos de Informes de error de Wind...: 1,97 MB
( ) Archivos de Informes de error de Wind...: 316 MB
( ) Archivos de Informes de error de Wind...: 563 KB
( ) Archivos de Informes de error de Wind...: 318 MB
( ) El porno y las canciones: 96 KB

Así que he multiplicado por seis el espacio libre de la partición con una herramienta que me parecía poco útil.

Por si eso fuera poco he ganado como 1,5 GB más de espacio simplemente ejecutando esto:
> vsp1cln.exe
Que borra archivos temporales del Service Pack 1 de Windows Vista haciendo que no se pueda desinstalar posteriormente.

Esto con Linux no pasa. Conforme usas el sistema no se hace más grande y pesado sin tu aprobación.

Pronto saldrán versiones definitivas del Android de Google con base Linux para PDAs o dispositivos móviles y puede que merezca la pena pasarse sobre todo si se crean aplicaciones GPS serias y sistemas eficientes de manejo de datos y aplicaciones. Con suerte no tendré que cambiar de PDA para probarlo.

domingo, 7 de diciembre de 2008

Muérete Bug

Siguiendo con el Descubrimiento de mi anterior artículo, AutoHotKey, esta vez toca automatizar una solución para uno de los problemas más odiosos que tiene Windows Vista.



Resulta que las ventanas de exploración de carpetas de Windows Vista olvidan sus preajustes y se muestran como les da la gana, cuando has abierto y cerrado las suficientes.

Esto es debido a algún despiste de Microsoft que no hizo bien los deberes al actualizar el sistema entre XP y Vista.

El caso es que han pasado años con este BUG y aun no se ha resuelto de forma definitiva. Si Windows fuera de código abierto ya habría un parche definitivo.

Por ahora lo que tengo anotado en Regedit son estas direcciones para tocar y sanear de vez en cuando:

HKCU\Software\Microsoft\Windows\Shell
HKCU\Software\Classes\Local Settins\Software\Microsoft\Windows\Shell

Limpiando BagMRU, y no se qué más, por lo general las carpetas recuperan su función normal y vuelven a recordar el estado en que han sido cerradas.

Pero cuando llevas unos cuantos cientos o miles de ventanas cerradas, de nuevo pierden la memoria y aparecen mal.

Así que aquí esta AutoHotKey al rescate.

hotkeys.ahk

#F12::
If WinActive("ahk_class CabinetWClass") {
WinActivate
} else {
MsgBox, Escoja una ventana de exporación de carpetas!
return
}

;Mostrar por Detalles
Send !vs

;Llamar menu de detalles
Send !vg
IfWinExist Elegir detalles
{
WinActivate
}
else
{
WinWait Elegir detalles
WinActivate
}

; Asegurarse de desactivar columnas que se van a activar.
Send {Down}
Send !o
Send {Down}
Send !o
Send {Down}
Send !o
Send !a
Send {Tab}
Send {Enter}

Send !vg
IfWinExist Elegir detalles
{
WinActivate
}
else
{
WinWait Elegir detalles
WinActivate
}
Send !a450
Send {TAB 3}
Send {PgDn 10}
Send {Down 4}

;Mostrar Fecha y ajustar tamo
Send !m
Send !a110

Send {TAB 3}
Send {PgDn 9}
Send {Up}

;Mostrar Tipo y ajustar tamaño
Send !m
Send !a120

Send {TAB 3}
Send {PgUp 2}
Send {Down 8}

;Mostrar Tamaño y ajustar ancho
Send !m
Send !a80

Send {TAB}
Send {Enter}

Send !vg
IfWinExist Elegir detalles
{
WinActivate
}
else
{
WinWait Elegir detalles
WinActivate
}

;Escoger Fecha de modificación y bajar columnas
Send {Down}
Send !b
Send !b
Send !a
Send {TAB}
Send {Enter}
WinMove, A,, 70, 130, 985, 668
return



Tal como lo he programado está preparado para las dimensiones de mi primer monitor (1280x1024) anchando las columnas como a mí me gusta, mostrando la carpetas por detalles, incluyendo las columnas de tamaño, tipo y fecha. Finalmente coloca la ventana en unas coordenadas por defecto y le da un tamaño de 985x668.

Tal como está programado solo funcionará con Windows en castellano. Pero es fácil de internacionalizar.

Tiene en cuenta que al pulsar la tecla #F12 (Win+F12) la ventana activa sea una ventana de exploración de carpetas; En caso contrario un mensaje de aviso nos alertará de que no se puede ejecutar la rutina sin seleccionar una ventana apropiada.

La rutina desactiva hasta tres columnas (sin contar la de Nombre) que puedan estar activas inicialmente para dejarlas como queremos después. Si hay más columnas activas el script no funcionará correctamente.

Todo es mejorable. Por ejemplo AutoHotKey permite hacer llamadas a funciones de librerías DLL, pero como no tengo ni idea de eso lo hago así.

Si se te ocurre un modo mejor comenta, por fa.

viernes, 5 de diciembre de 2008

Potencia Macro

Si hay algo para lo que un ordenador debería servir es para ahorrarnos tareas tediosas y repetitivas.

AutoHotKey es el sucesor de un viejo conocido. Un programa que se llamaba ScriptIt y que permitía emular pulsaciones de teclas y movimientos de ratón; pero incorporando mayor potencia, con un lenguaje simple y funciones simples que combinadas permiten hacer cualquier cosa.

También sirve para sacarnos de algún apuro.

Por ejemplo, debido a algún bug de Windows o los drivers gráficos, cuando desactivo una pantalla de mi sistema de monitores dual, a veces sucede que algunas aplicaciones se abren fuera de la pantalla, en coordenadas horizontales negativas, y la única forma que tengo de mostrarlas es usando la opción maximizar pero al conmutar el tamaño de la ventana vuelve a quedarse fuera de alcance.

Así que he hecho un sencillo script.ahk:

#F2::
WinMove, A,, 0, 0, 1280, 1024
return
#F3::
WinMove, A,, 1280, 0, 1440, 900
return



De modo que al pulsar la combinación de teclas Win+F2, la ventana activa se mueve a mi monitor cuadrado (de aspecto 5:4) de 17" y se amplia a su máximo tamaño nativo, 1280 x 1024. (También puedo poner 994 pixels de alto para no ocultar la barra de tareas de windows o parte de la aplicación bajo ella)

La segunda parte del script macro permite con una sola pulsación de teclas (Win+F3) trasladar la ventana activa a todo el ancho y alto del monitor 16:10 de 19", a 1440x900.

Cualquiera de estas dos acciones, aun sin el bug, me ahorra mucho tiempo si quiero pasar una ventana a otro monitor. Ya que hay que pulsar, arrastrar, redimensionar... Y las coordenadas nunca son exactas a pulso.

Pero quiero ir más allá y no deseo que me redimensione todas las ventanas que traslade de monitor así que he cambiado el atajo de teclado (o hotkey) para llamarlos solo al pulsar las teclas combinadas con la tecla mayúsculas. cambiando #F2 y #F3 por +#F2 y +#F3.

Y he agregado este par de nuevas macros al script de AutoHotKey .ahk:

#F2::
SysGet, Mon1, Monitor, 1
SysGet, Mon2, Monitor, 2
WinGetPos, posX, posY, anchoX, altoY, A
if ( posX > Mon1Right ) {
Espa2 := Mon2Right - ( posX + anchoX )
Pos1 := Mon1Right - Espa2 - anchoX
WinMove, A,, Pos1, posY
}
return
#F3::
SysGet, Mon1, Monitor, 1
SysGet, Mon2, Monitor, 2
WinGetPos, posX, posY, anchoX, altoY, A
if ( posX < Mon2Left ) {
Espa2 := Mon1Right - ( posX + anchoX )
Pos1 := Mon2Right - Espa2 - anchoX
WinMove, A,, Pos1, posY
}
return



De este modo puedo mover cualquier ventana a otro monitor teniendo en cuenta la separación desde el margen derecho de cualquier ventana sin variar sus dimensiones.



Interesante, ¿no?

Y las posibilidades son ilimitadas...

Además permite crear GUIs o ventanas de botones y controladores para interactuar de forma más intuitiva.

Sirve por ejemplo para arrancar tus programas favoritos y seleccionar la opción que quieras con una sola pulsación, o abrir una serie de enlaces web con un solo atajo de teclado... Cualquier tarea que requiera más de una pulsación de teclas o movimiento de ratón puede simplificarse en tan solo una acción. Ahorrando cada vez más tiempo en tediosas tareas rutinarias informáticas.


Para un webmaster como yo, viene bien tener en el atajo de teclas "AltGr+h" el texto "http://" que aunque no sea necesario ponerlo en los navegadores, desde que en Chrome se pueden hacer búsquedas en lugar de visitar sitios, no viene mal anteceder el protocolo HTTP para evitar busquedas no deseadas.

<^>!h::
SendInput http://
return



Más sencillo imposible...

Si te interesa algo de ésto pero no te aclaras con la documentación en english, francés, italiano, ruso, japonés, griego, portugués, coreano o chino de AutoHotKey, quizás te pueda echar una mano.

Deja un comentario. Aunque si no te aclaras con el inglés igual tampoco te aclaras con mi forma de hablar. ;-)