Nota del autor

Si la entrada que estás leyendo carece de imágenes, no se ve el vídeo que teóricamente lleva incrustado o el código fuente mostrado aparece sin formato, podéis conocer los motivos aquí. Poco a poco iré restableciendo la normalidad en el blog.
Este blog es un archivo de los artículos situados previamente en Lobosoft.es y ha dejado de ser actualizado. Las nuevas entradas pueden encontrarse en www.lobosoft.es. Un saludo,
Lobosoft.

lunes, 30 de marzo de 2009

¿Por qué escribimos en blogs?

Una pregunta que suelen hacerme aquellos que conocen la existencia de este blog es: ¿por qué escribes? ¿Qué ganas con ello? Posiblemente a muchos de los que leáis Lobosoft de forma continuada os pregunten lo mismo. Me consta que muchos de vosotros también tenéis blogs, preferentemente tecnológicos y, de hecho, suelo leeros habitualmente cuando conozco vuestra web. La respuesta es tan simple como compleja: mezcla un poco de diversión, una pizca de apoyo a la memoria (quienes no lo tienen no pueden hacerse a la idea de cómo Google busca en mis recuerdos tecnológicos con un simple site:lobosoft.es, jejeje), y muchas ganas de compartir lo poquito que se sabe y va uno aprendiendo, y tendrás los alicientes principales de todo blogger. Luego están, claro, el reconocimiento público, las pequeñas alegrías de las cifras de visitas crecientes y, sobre todo, recurrentes, en algunos casos los míseros dólares que pueden reunirse con algo de publicidad de AdSense y similares… Pero básicamente, como digo, en mi caso escribo por diversión.


Aunque Lobosoft no es mi primer ni último blog, ni tan siquiera la primera web (la recuperación durante el aniversario de Google de su base de datos de 2001 me permitió recordar qué fue de mi primera web personal), y posiblemente si no escribiera entradas en el blog seguiría haciéndolo como antaño: diversos artículos y relatos que, en su mayoría, quedaron en el baúl de los recuerdos y, una ínfima minoría, repartidos por la web y diversos medios.


Pero a lo que iba que, como siempre de forma irremediable, termino divagando. He encontrado una interesantísima entrada (que, a su vez, referencia a la original), en la que Andrew Sullivan reflexiona sobre el acto de la escritura en los blogs, y posiblemente saca a relucir qué aspectos entrañan esta particular revolución de la escritura. Una entrada interesante, creo, para todos aquellos que poseen su blog, han pensado en crearlo, o nunca nos entendieron a quienes escribimos en uno (o en varios, que de todo hay en la vida, jejeje).


Por cierto, la entrada (y la referencia, que para algo es extensa, y así podrá ocupar la ociosidad obligada en la que posiblemente se encuentre sumido), va especialmente dedicada a un compañero blogger que anda recuperándose con su brazo inmovilizado, y por desgracia nos tendrá unos días sin poder disfrutar con sus entradas. Para nuestro amigo Lonifasiko, que andará en estos momentos recluido en su txoko, le deseamos desde aquí una pronta recuperación.

jueves, 26 de marzo de 2009

La Hora del Planeta 2009


Aviso: Esta entrada podría parecer un poco fuera de lugar (off-topic, que le llaman), aunque piensa por un momento qué es tu ordenador sin electricidad: un cacharro inútil, ¿verdad? Ahora, si te place, comienza a leer…


Mañana, 28 de marzo, se llevará a cabo la acción La Hora del Planeta, promovida por el Fondo Mundial de la Naturaleza (WWF), y que pretende llamar la atención sobre el dramático impacto que ejerce el ser humano sobre el planeta en el que vive. La hora del planeta conmina a la ciudadanía mundial a secundar un apagón global que, sin hacer demasiado, dirá mucho.


La huella ecológica que imprimimos con fuertes pisadas sobre la faz de la Tierra está mermando la biodiversidad, dañando irremisiblemente los recursos naturales que, recordemos, pueden ser más o menos numerosos según el caso, pero siempre ilimitados. El consumo energético se ha disparado en las últimas décadas (en el último par de siglos más bien, aunque con particular virulencia en aquellas), y parece que no somos conscientes que, tras el acto de encender una bombilla o el ordenador con el que lees estas líneas o yo las estoy escribiendo, hay implícitas una serie de repercusiones sobre el medio ambiente.


Decía que esta hora no hará demasiado, si no la interiorizamos y, haciéndola nuestra, la llevamos a cabo diariamente: apagando luces innecesarias, sustituyendo luminarias por otras equivalentes de bajo consumo, apagando el ordenador cuando no lo vayamos a seguir utilizando, pese a que perdamos puestos en la cola de nuestro P2P favorito… Y dirá mucho, si es secundada de forma mundial y, aunque sólo sea por una hora, somos capaces de ver, allá donde ya sea de noche, algunas estrellas más.


Porque el consumo energético, la iluminación desmedida de nuestros hogares y ciudades, provoca muchísimos daños que podríamos llamar colaterales: contaminación lumínica, despilfarro energético, incremento de las infraestructuras, dependencia energética, insostenibilidad de nuestro territorio, desigualdad social…


Aprovechemos esa hora, mañana, 28 de marzo, de 20:30 a 21:30, para reflexionar un poco. Apaguemos luces, ordenadores, televisiones y radios. Que no nos tienten con programas especiales para el seguimiento del apagón, que rompen precisamente con la idea que se está intentando ofrecer. No basta con apagar una bombilla: apaguemos todo lo que no sea necesario en ese momento. Ya nos enteraremos a posteriori, una hora más tarde, de lo que ha ocurrido en el resto del mundo. No entres en esta web, ni en ninguna otra. Reflexiona y busca dentro de ti la respuesta a esta pregunta: ¿qué puedo hacer para salvar el planeta?


Para saber más:



Cierre la puerta al salir

Hay ocasiones en las que es necesario impedir que un ordenador sea reiniciado o apagado de forma involuntaria,  sin llevar a cabo una serie de tareas, generalmente de mantenimiento o de seguridad (copias de respaldo, "limpieza" con herramientas del tipo de CCleaner). Puede ocurrir, simplemente, que deseemos programar estas tareas para que se ejecuten al final del uso diario de nuestros equipos, o bien prevenir posibles olvidos por nuestra parte.



Ante casos así, podemos echar mano de los scripts de Windows (Windows Script File .WSF, para Windows Script Host). Estos ficheros, muchos los conoceréis, albergan un script en algún lenguaje común (VBScript, JScript, Perl…), y permiten automatizar diversas tareas dentro de entornos Windows. Hasta cierto punto, guardan diversas similitudes con los scripts de NAnt y similares, que vimos en días pasados, aunque el uso que podemos dar a los mismos es ciertamente distinto.

Un script muy básico, que ejecutaría el shutdown.exe –a, podría ser el siguiente:



[?XML version="1.0"?]
[?job error="true" debug="true"?]
[job id="StopShutdown"]
[script language="VBScript"]
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run("%windir%\system32\shutdown.exe -a")
[/script]
[/job]

Se trata de un XML al que he cambiado por [ y ], para que se visualice correctamente en el blog. Para utilizarlo basta con volver a reemplazar estos signos por los originales, y guardar el archivo con extensión .WSF. Para ejecutarlo bastaría hacer doble click sobre el mismo. Con un script de este tipo conseguiríamos lo mismo que con un acceso directo a dicha herramienta, con el mencionado parámetro: detener el reinicio de nuestro sistema, cuando se ha ejecutado un shutdown, o se ha procedido a iniciar un reinicio de sistema (siempre que lleguemos a tiempo, claro está).


Ahora bien, ¿cómo conseguimos que nuestro script “abortareinicios” se ejecute al apagar el ordenador? Basta, simplemente, con incluir el script dentro de la lista de scripts de inicio y finalización del sistema, en las políticas de grupo, para este usuario. Así, ejecutamos gpedit.msc desde Inicio->Ejecutar, y tendremos ante nosotros el cuadro de diálogo Group Policy (Directiva de Equipo Local). Dentro de User Configuration, Windows Settings, Scripts (Logon/Logoff), hacemos doble clic en Logoff, e incluimos el script que acabamos de crear. Guardamos los cambios y probamos a reiniciar el equipo. A ver qué pasa ;) .




Pues, ciertamente, que el ordenador se apaga. Sin embargo, si os decidís a probarlo (este, u otro script cualquiera), observaréis cómo Windows procede, durante el apagado o el reinicio, a llevar a cabo una nueva fase de ejecución de scripts de cierre. Cuando ha llegado a esta fase, me temo, ya no es posible dar marcha atrás al proceso de apagado, pero sí podemos usar los scripts para llevar a cabo otras tareas de finalización.


Ahora bien, ya por curiosidad malsana, ¿se os ocurre algún modo de impedir el reinicio indebido del sistema por parte de los usuarios?


Para saber más:




viernes, 20 de marzo de 2009

WMI Code Creator


Unas de las entradas más populares del blog son, dejando de lado aquellas que cuentan la falacia de intentar descubrir quiénes nos han excluido de su lista de amigos en el Messenger, las que creé intentando explicar el modo de conseguir el número de serie “físico” de una unidad USB, o del disco duro del equipo. Fundamentalmente, el uso que le vienen dando a este código los visitantes que llegan al blog es la protección de nuestro software frente a la piratería. Bien distribuyendo el software con una asociación a un dispositivo USB, bien vinculándolo en su instalación a una determinada máquina, obteniendo de ella información difícilmente sustituible (como el número de serie del disco duro donde se instaló, o el de la placa base o el procesador). Sin ser métodos del todo fiables para proteger el software, sí que pueden servir para evitar una copia masiva del mismo, especialmente entre usuarios poco avanzados, y en tanto no sea tan popular como para que surja un crack o un método de romper nuestra protección de forma masiva.


Recientemente, otro lector del blog me consultaba sobre este aspecto, así que he querido subrayar los dos artículos mencionados con el uso de WMI (Windows Management Instrumentation) para conseguir información del sistema, de una forma clara y sencilla. Pero como no quiero profundizar en el conocimiento de las librerías WMI más allá de lo que ya explica de por sí la MSDN de una forma bastante más profunda de la que podemos tratar aquí, sí que me gustaría dejaros con una herramienta, cortesía de Microsoft, que permite automatizar la creación de código para el manejo de estos dispositivos. Se trata de WMI Code Creator, y consiste en un simple formulario que nos permite examinar la jerarquía de objetos, clases y métodos que podemos consultar mediante WMI, podemos llegar a ejecutar consultas y, para mayor gloria suya, nos genera código de forma automática en tres lenguajes: C#, VB.NET y VBScript. Una gozada con la que os dejo jugando durante el fin de semana.


¡Feliz descanso!

jueves, 19 de marzo de 2009

Integrando NAnt en Visual Studio

La automatización de los procesos es un objetivo a alcanzar por cualquier equipo de desarrollo, ya que por todos es conocido que los procesos manuales son susceptibles de error (el factor humano). Sin duda, los procesos repetitivos son, con mucho, los más propicios a sufrir la automatización, ya que por sus propias características permiten que se lleve a cabo de una forma sencilla, y por su propia naturaleza son aquellos que más posibilidad de error albergan por parte nuestra, ya que si bien quedan bastante claros por repetirse habitualmente, también llevan al hastío y a que nos relajemos a la hora de llevarlos a cabo.



Como decía, en desarrollo de software es deseable automatizar los procesos, uno de los factores que influyen en la calidad de nuestro software (el que entregamos para su prueba o directamente al cliente), y permanece muy vinculado al proceso de integración continua. Dentro de estas automatizaciones posibles, se encuentra el proceso de compilación y generación de componentes a partir de nuestro código fuente. Si bien los motores de integración continua (CruiseControl, TeamCity, Visual Studio TFS…) incorporan funcionalidades adecuadas para automatizar la construcción de nuestros componentes, no es menos cierto que podemos hilar muy fino si utilizamos alguna herramienta de automatización, que permita mediante la definición de una serie de pasos (un script) diseñar de forma clara el proceso que deseamos cumplir. Entre estas herramientas, MSBuild en entornos .NET o Ant para Java, Oracle… (y su equivalente para .NET, NAnt), destacan con luz propia.



En el caso de NAnt, es posible crear un script que compile nuestro código en lugar del fichero de solución de Visual Studio, y usarlo en conjunción con los motores de integración continua para realizar builds nocturnos, por ejemplo. Es más, podríamos usarlo para llevar a cabo compilaciones locales en nuestra máquina, check-ins y check-outs automáticos en el control de versiones, compilaciones remotas en servidores de desarrollo…



Hoy quería centrarme en la integración en Visual Studio de los proyectos de NAnt (los archivos de build), ya que aunque se tratan simplemente de archivos XML con las tareas a realizar, y es posible editarlos con cualquier editor de texto, XML o algunos editores especializados como Editor4NAnt, siempre es más práctico utilizar el IntelliSense de Visual Studio para crear o modificar un archivo de este tipo.



Para integrarlos en Visual Studio, al igual que ocurriría con cualquier otro XML del que dispusiésemos de su esquema, basta con copiar el archivo XSD incluido en la distribución de NAnt (nant.xsd) entre los esquemas XML disponibles para Visual Studio, en C:\Program Files\Microsoft Visual Studio 9.0\Xml\Schemas (o en la ruta de Visual Studio que utilicemos, en general dentro de %VSINSTALLDIR%\Xml\Schemas).



Hecho esto, incluimos un archivo de build de NAnt en nuestra solución de Visual Studio (o creamos uno nuevo, con extensión .build).



Pulsamos sobre él con el botón derecho del ratón para abrir el menú contextual y marcamos a opción de “Abrir con…” para seleccionar el editor XML como el programa que abre estos archivos de forma predeterminada para Visual Studio.




Se abrirá el editor, y podemos empezar a escribir nuestro script NAnt. Veremos cómo el IntelliSense funciona a la perfección, y podemos completar nuestro archivo en un momento (al menos, este nuestro de “Hola mundo”, como bienvenida de NAnt a nuestro IDE preferido).




Hecho esto, podemos lanzar el script con NAnt.exe, y comprobar que la compilación se produce con éxito.


viernes, 13 de marzo de 2009

Huy, mi ejecutable ha crecido

I turn to you oh my precious Jerusalem
Deny your prophets their passion
and treat them like fools
I turn to you oh my poor old Jerusalem
Deny my love but you can't change fate

Nada mejor que este fragmento de la canción Precious Jerusalem, de los teutones Blind Guardian, para recordarnos la efemérides que celebramos hoy (y, de paso, también el pasado mes de febrero, aunque no tuve tiempo de dedicarle una entrada y, ante la expectativa de poder hacerlo en este mes, coincidiendo con otro evento geek y retro como es la Retromadrid, preferí dejarlo estar hasta hoy). Es posible que muchos ya sepáis de qué estoy hablando. Efectivamente, Jerusalem era el otro nombre de uno de los virus más longevos, mediáticos y “queridos” de la historia de la informática: el temido VIERNES 13 (leedlo con voz de ultratumba, ¿a que da miedito y todo? ;) ).


Allá en los años 80, cuando a muchos no nos afectaba el pánico que se reproducía en los noticiarios porque aún andábamos jugueteando con nuestros queridos 8 bits, las empresas de medio mundo temblaban ante la posible aparición del odiado virus. No era el único, ni el más malo, pero sí el más popular. Una vez instalado en memoria, se apoderaba de las interrupciones 08h y 21h (la de reloj y la subrutina del sistema operativo, respectivamente), y se dedicaba a propagarse a discreción por los archivos .EXE y .COM del sistema infectado, y de paso los engordaba un poco (entre 1.808 y 1.822 bytes los .EXE, y 1.792 los .COM). Los días normales, afectaba también al ordenador, introduciendo un pequeño retardo en la interrupción 08h que ralentizaba el ordenador. Pero los viernes 13 sacaba a la luz su lado más siniestro, eliminando todas las aplicaciones que eran ejecutadas


Os dejo un pequeño bloque de su código fuente (bueno, de uno de tantos, ya que fue uno de los virus con más variantes de la (pre)historia de los virus y el malware), en concreto con la comprobación de la fecha del sistema:



mov ah,2Ah
int 21h
mov cs:friday_13,0
cmp cx,07C3h
je ejec_real
cmp al,5
jne add_new_8
cmp dl,0Dh
jne add_new_8
inc cs:friday_13
jmp ejec_real

Feliz viernes 13… ¡¡y mantened actualizado el antivirus!!

jueves, 12 de marzo de 2009

Retromadrid 2009

Para aquellos a los que al recordar el Manic Miner, el Comecocos o The Lords of Midnight, se nos escapa una lagrimilla emocionada que intentamos inútilmente ocultar...


Para quienes los 8 y sólo 8 bits eran lo más de lo más...



Para quienes nuestro primer "Hola mundo" fue algo así como:
10 CLS
20 INPUT "Introduce tu nombre: ", a$
30 PRINT "¡Hola "; a$;"!"
40 GO TO 20

(¡ay, sí, el incomprendido goto...! :) :D :) )

Por aquellos tiempos en los que la imaginación era más poderosa que las más avanzadas GPUs...


Para todos nosotros (podamos estar o, como me temo este año, lo estemos sólo con el corazón), el sábado 14 de marzo de 2009 se celebra la




¡Felices PEEKs y POKEs!

lunes, 9 de marzo de 2009

Juntos, pero no revueltos

La organización nos hace más eficientes. Esta afirmación no es baladí, y menos aún cuando hablamos de la organización física de la información de nuestros ordenadores. Es decir, de cómo se estructura la misma en los discos duros (cada vez más grandes, de capacidades insospechadas o, cuando menos, inimaginables hace sólo unos pocos años). Por esto, y porque el uso continuado de nuestros equipos termina por hacer que la misma se encuentre fragmentada a lo largo y ancho de los platos de nuestros discos, es conveniente utilizar de cuando en cuando un buen desfragmentador que optimice la forma en que se encuentran organizados los ficheros.


Obviamente, podemos hacer uso del desfragmentador que incorpora Windows, pero sé que os gustan las emociones fuertes y explorar nuevos caminos, así que voy a recomendar hoy una pequeña herramienta, cómo no, libre y gratuita, que lleva a cabo esta tarea de forma encomiable.



JkDefrag es una herramienta distribuida bajo licencias LGPL/GPL, que podemos descargar desde su sitio web y que, entre otras características cuenta con una opción que me ha parecido de lo más interesante: además de poder utilizarse como una herramienta independiente, que analiza y desfragmenta nuestras unidades de disco (bien a través de una interfaz Windows, bien desde la línea de comandos), incluye una opción “salvapantallas”, que podemos configurar para utilizar los tiempos muertos que pasa nuestro ordenador en espera (por ejemplo, cuando asistimos a una reunión, estamos desayunando o discutiendo con un compañero algún aspecto de la nueva aplicación que tenemos que desarrollar) y conseguir que nuestro equipo se encuentre siempre al 100% de sus capacidades.



Una herramienta que os recomiendo incluir dentro de  las “obligatorias” para el mantenimiento y optimización de nuestro ordenador.