Pero el futuro se niega a cambiar

logo

14 años han pasado desde que se publicó el juego que me ha apasionado toda la vida, y a pesar de tener 2 reediciones, en PlayStation y recientemente en Nintendo DS, en ambas plataformas sigue siendo básicamente el mismo que fué en su plataforma madre: Super Nintendo.

Entremedio, un grupo de aficionados hizo lo que muchos de nosotros (los fanáticos) creímos que Squaresoft (SquareEnix) debió hacer: Reconstruir el juego en un entorno 3D, acorde a los nuevos tiempos. Lamentablemente, como si fuera una ironía, la historia hasta ahora a sido la misma que el perverso monstruo Lavos dice en el final del juego, cuando derrota a los protagonistas: “BUT THE FUTURE REFUSE TO CHANGE” (“Pero el futuro se niega a cambiar”).

SquareEnix argumentó problemas legales, de tal modo que el grupo tras Chrono Trigger Resurrection debió cancelar el proyecto. Una lástima, porque estaba quedando precioso:

Seguir leyendo Pero el futuro se niega a cambiar

Virtualbox como herramienta de redes

Me enteré que alguien se dedicó a traducir toda la sección de redes, del manual de ayuda de Virtualbox.

Una máquina virtual maneja puertos, direcciones ip, túneles y cualquier cosa relacionada con redes, tal como un PC conectado a un switch (en modo NAT por supuesto, los otros modos de red tienen otras utilidades).

Por eso, es posible instalar servicios, hacer redirecciones y en general, hacer pruebas de red de todo tipo, incluso sniffing.

Especialmente útil para hacer pruebas sin afectar a otros equipos, o cuando no tenemos más de un PC y requerimos probar algo entre varios, o cuando no disponemos de una red o internet en la casa.

Para obtener el manual, véase la fuente.

Virtualbox como herramienta para administradores

Además de la redirección de puertos, hay otra característica de Virtualbox muy útil para administradores: correr una máquina virtual SIN interfaz gráfica.

Supongamos esta situación: Tenemos un servidor virtualizado (da lo mismo si es linux, windows, solaris, …), debemos ejecutarlo cada vez que parta el sistema y además debe consumir los menos recursos que sea posible.

La solución pareciera ser muy sencilla. Virtualbox trae los comandos: vboxsdl y vboxheadless. Ambos permiten correr una máquina virtual sin abrir el administrador de máquinas virtuales.

vboxsdl ejecuta el sistema virtualizado en una ventana de interfaz gráfica, de hecho es lo mismo que correr el sistema desde el administrador de máquinas virtuales, pero si lo llamamos directamente, nos evitamos tener que recurrir a este.

vboxsdl -startvm "NOMBRE_DE_LA_MAQUINA_VIRTUAL"

vboxheadless ejecuta el sistema virtualizado, pero sin levantar interfaz gráfica alguna, por lo cual es posible arrancar una máquina virtual solo con la consola. Esto es especialmente útil para servidores que prescinden del Xserver.

vboxheadless -startvm "NOMBRE_DE_LA_MAQUINA_VIRTUAL"

Ahora, hay un pequeño problema. Si no podemos ver la máquina virtual ¿cómo la controlamos?

Tengo acá un par de consejos que he aplicado en windows xp virtualizando windows 2000 server, pero debiera poder aplicarse lo mismo en un host con Linux u otros sistemas.
Seguir leyendo Virtualbox como herramienta para administradores

VirtualBox! Me salvaste el día

El primer intento de implantación de la aplicación de lectura de huellas no fue muy bueno. Antes de continuar, conozco un documental (minuto 28) que tiene mucho que ver con este caso.

En primer lugar, me enteré a destiempo que el servidor corría la versión 7 de SQL Server. Además, es difícil ir cualquier momento al lugar para hacer cualquier prueba, menos para estar sentado tranquilo codeando. Lo primero que intentamos hace un tiempo, fue hacer una copia de seguridad de la base de datos completa. Suponiendo que Microsoft Management Studio sería suficiente para conectarme a la base y crear las tablas nuevas, fue lo primero que pensé hacer ese día.

Pero como la Ley de Murphy está presente siempre, me salió un incómodo mensaje diciéndome que No se puede conectar a una versión anterior de SQL Server menor 2000 (es decir, versión 8). Ya que Management Studio esta basado en .NET, dude que mi aplicación en .NET pudiera conectarse. Más tarde, descubrí que estaba equivocado, pero en el momento no tuve alternativa más que evaluar otras soluciones.

Seguir leyendo VirtualBox! Me salvaste el día

Cuando un comentario cambia el significado

Mirar código ajeno por primera vez, es como un arqueólogo encontrando una civilización perdida.

A menos que contemos con una piedra rosseta (o mejor aún, conozcamos el lenguaje perdido), la única forma de decodificarlo es “al tanteo”.

Los últimos días, había experimentado una falla inusual en mi aplicación lectora de huellas. A veces guardando el “template” de la huella en la base de datos, quería guardar una segunda o tercera lectura, pero se seguía guardando el primero. Además, solo me identificaba 1 huella de todas las guardadas.

Volviendo al ejemplo que venía junto al kit de desarrollo, encontré el motivo, tanto del fallo como de mi confusión.

Mientras desarrollaba el código del lector de huellas en C#, encontré un método trabajaba con la base de datos, pero en un lugar donde no debía. Lo primero que hice hace meses, fue separar esa porción de código a otro archivo qu corresponde a mi capa de “Modelo”. La linea de la discordia fue la siguiente:

public int identify(ref int score, ref AxGrFingerXLib.AxGrFingerXCtrl grfingerx)
{
    GRConstants result;
    int id;
    SqlDataReader rs;
    TTemplate tptRef; // <= EL FALLO ESTA ACA

    // Más código...
}

El encabezado del método tenía un comentario que decía algo así como "compara el template de la lectura con todos los templates obtenidos desde la base de datos". Por lo tanto, asumí que "TTemplate tptRef" significaba "Huella de referencia". No sé que concepto de "medida de referencia" tuvo el programador del ejemplo, pero para mí, una regla o un peso es una unidad de medida de referencia. Es decir "Mi template se compara con todos los tuyos".

Sin embargo, para el programador del ejemplo, "Huella de referencia" significaba "cada uno de los templates de la base de datos". Es decir, "Mi template en cada vuelta del ciclo, será el mismo de la base de datos y se comparará con tu lectura".

Ese simple cambio de significado, me echó a perder el código. Ahora después de mucho tiempo de haber hecho esos cambios, logré entender el funcionamiento de ese método solo leyendo el código, pero de no haber usado como "medida de referencia" el código del ejemplo sin modificar, me habría visto obligado a investigar a fondo "donde se quedaba pegado en la lectura de la huella".

La moraleja es entonces, fijarse en todas las interpretaciones que pueda tener la documentación o los comentarios. Si somos nosotros los que documentamos, debemos evitar que un detalle tan pequeño pueda cambiarle todo el sentido.

Malabareando 900MB de Bases de datos SQL

Y lo chistoso no fue el peso.

Continuando con el retrasado proyecto del lector de huellas para el control de acceso, me topé con un problema de aquellos…

La aplicación actual de control de acceso funciona con SQL Server 7 sobre Windows 2000, una reliquia mal viviente. La herramienta de manejo de la base de datos (SQL Management) asociada a esa versión, es un verdadero misterio en funcionalidades. Por alguna razón, “Generar consultas SQL” a una base de datos, solo genera los modelos de las tablas, pero ni rastro de los registros. Finalmente no logré sacar esos datos, porque desde generar una copia de seguridad hasta volcar todo a un archivo de texto plano, generaba un lindo “error desconocido”.

No se quien lo logró, pero hoy recibí un DVD con los 900MB de tablas y registros de esas bases. El archivo era un copia de seguridad respaldo.bkp.

Lo primero que hice, fue tratar de jugar con él :p .

¡Me cambié!

Si alguien me tiene por ahí en sus feeds, links, blogroll, bookmarks, primero ¡MUCHAS GRACIAS! nunca me esperé ser tan leído como ahora, dado que nunca fue mi meta llegar a ser tan leído (y mucho menos referenciado). Mi nuevo espacio estará en:

http://blog.gon.cl/

Ha llegado la hora de emigrar de wordpress.com, que es el primero de varios pasos para tener un blog 100% independiente, donde seguir alojando uno que otro dato valioso que merezca recordar y que tal vez a más personas les pueda servir.

Al fín podré hacer mi “ejercicio de inglés” debido a que ahora puedo instalar todos los plugins que se me de la regalada gana 😀 .

Nos vemos 😀

Salu2

PD: al menos hice el truco de mantener la misma dirección en feedburner, por ende, espero que cuando se auto-twitee este post, debería aparecer el link al blog nuevo :whistle: .

Ejercicio de inglés

Tal vez ya no tengo mucho problema para leer cualquier cosa en inglés. Por último, en el más extremo de los casos recurro a intentar entender el contexto y por último si ya me la gana, ocupo un diccionario o alguna herramienta online.

En general, me considero buen “lector” de inglés, pero aún me cuesta un poco escribirlo, más me cuesta escucharlo y pero aún, hablarlo.

Aún cuando el origen del idioma no es algo que comparta plenamente, no puedo pretender tapar el sol con un dedo y pensar en emplear otro idioma más universalizado que el inglés.

Prácticamente todas las máquinas digitales tienen el inglés como idioma base (las BIOS de computador por ejemplo), incluso hasta los electrodomésticos. Además, el software, la documentación, las listas de correo, los chats, etc… casi todo es inglés primero (y “localizado” después).

Me he dado cuenta, que muchos errores de novatos frente a un PC, en parte es por ignorancia del inglés. Es cierto que la mayoría ni lee los diálogos y le dan siguiente->siguiente->siguiente a todo, pero hay muchos otros recelosos que no instalan cualquier cosa o les da temor “condorearse”(*) el PC, menos cuando se topan con el dialogo en inglés, entonces hasta ahí quedan.

A veces las instrucciones más simples, desde archivos de ayuda (típico README, leame.txt, …) hasta complicados lenguajes de programación, pasando por lineas de comandos (y comandos de ayuda) son incomprensibles.

¿Porque tenemos este nivel de inglés en chile?

Francamente, creo que es reflejo de nuestro pobre sistema de educación. Aún cuando estudié en un colegio “Particular Subvencionado”, varios ex-compañeros con los que hablo a veces no entienden términos en inglés sumamente sencillos (ahi se nota quien puso atención en clase 😛 ), me piden ayuda hasta para registrarse en páginas web. Si no fuera porque Facebook se localizó en español, uff… o cuantas veces me han preguntado “¿Hago click en NEXT o en CANCEL?”, o cuantas minas pedían ayuda para “hacerse un fotolog”