But the future refuse to changePero 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:

logo

14 year ago, the game that has fascinated me throughout life, was released. And despite having 2 ports, for PlayStation and recently in Nintendo DS, on both platforms is essentially the same as it was in his mother platform: Super Nintendo.

In between, a group of fans did what many of us (fans) thought that Squaresoft (SquareEnix) had to do: rebuild the game in a 3D environment, in keeping with the times. Unfortunately, like an irony, the story so far has been the same as the evil monster Lavos said at the end of the game, when players beat: «BUT THE FUTURE REFUSED TO CHANGE».

SquareEnix argued legal issues, for which the group had to cancel Chrono Trigger Resurrection project. A pity, because it was being precious:

Seguir leyendo But the future refuse to changePero 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 as a sysadmin toolVirtualbox como herramienta para administradores

Besides the port fordwarding, VirtualBox has another very useful feature for system administrators: running a virtual machine WITHOUT graphical interface.

We suppose this situation: we have a virtualized server (it doesn’t matter if it’s linux, Windows, Solaris,…), must run every time you start the system and must also consume less resources as possible.

The solution seems simple. VirtualBox brings commands: vboxsdl and vboxheadless. Both allow to run a virtual machine without open virtual machines manager.

vboxsdl run the virtualized system in a window graphical interface, in fact is the same as running the system from the virtual machines manager, but if we call it directly, we avoid having to resort to this.

vboxsdl -startvm "VM_NAME"

vboxheadless run virtualised system, but without raising any graphical interface, making it possible to boot only with the console. This is especially useful for servers that dispenses with the Xserver.

vboxheadless -startvm "VM_NAME"

If we can not see the virtual machine, how would you control?

Here I have a couple of tips used in Windows XP as host, Windows 2000 Server as guest, but the same should be applied in a Linux and other systems.

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 as a sysadmin toolVirtualbox como herramienta para administradores

VirtualBox! You save my dayVirtualBox! Me salvaste el día

My first deployment attempt with my fingerprint reader application was not very good.

First, I was informed late about the version that ran the server: SQL Server 7. Moreover, it is difficult to go any time to make room for any evidence, even worse to sit quiet coding. The first thing we tried long ago, was to make a backup of the entire database. Assuming Microsoft Management Studio would be enough to connect to the database and create new tables, has been the first thing I thought to do that day.

But as Murphy’s law is always, I found an uncomfortable message, saying Unable to connect to an earlier version of SQL Server lower to 2000 (ie, version 8). Because Management Studio is based on. NET, I doubted that my .NET application could connect. Later, I discovered that I was wrong, but at the time I had no alternative other than to evaluate more solutions.

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! You save my dayVirtualBox! Me salvaste el día

When a comment changes the meaningCuando un comentario cambia el significado

Looking at foreign source code for the first time, is like an archaeologist finding a lost civilization.

Unless we have on a rosseta stone (or better still, we know the language lost), the unique form to decode it is «test and error».

Recent days, had an unusual fail in my application fingerprint reader. Sometimes saving the template of the fingerprint in the database, I wanted to save a second or third reading, but still kept the first. In addition, I identified only 1 fingerprint of all saved.

Reviewing the original example from development kit, I found the reason of the error and my confusion.

While I was developing C# code of fingerprint reader, I found a method interacting with the database, but declared in an illegal place. A few months ago, the first thing I did was to move that portion of code to another file that corresponds to my «Model» layer. The line that caused my confusion was as follows:

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

    // More code...
}

At the head of the method was a comment that said something like «compare the reader’s template against all the templates obtained from the database». Therefore, I assumed that «TTemplate tptRef» meant «Fingerprint of reference». I do not know what concept of «measure of reference» was the programmer’s example, but for me, a rule or a weight is a unit of reference. Ie «My template is compared with yours».

However, the programmer for example, «Footprint of reference» mean «each of the templates in the database». That is to say: «My template in each turn of the cycle is the same in the database and compared with your reading».

That simple change of meaning, ruined the code. Now, after long having made these changes, I got to understand how this method works only reading the source code, but I would have been forced to investigate more thoroughly «where the fingerprint reading was clogged».

I learned how important it is to look at all the interpretations that may have documents or comments. If we are the ones that document, then avoid a breakdown that could change the meaning.

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.

Juggling with 900MB SQL DatabaseMalabareando 900MB de Bases de datos SQL

And the weight, wan’t the joke.

Following the delayed «fingerprint reader for access control» project , I ran into a problem of those …

The present application of access control works with SQL Server 7 on Windows 2000, a bad living relic. The tool of handling of the data base (SQL Management) associated to that version, is a true mystery in functionalities. For some reason, «Generate SQL querys» from a data base, it only generates the models of the tables, but no record. Finally I could not recover this data, because generating a full backup or dumping to a flat text file, threw a pretty «unknown error».

Not who did it, but today I received a DVD with 900MB of tables and records of those bases. The file was a backup respaldo.bkp.

The first thing I did was try to play with him :p :

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 .

Seguir leyendo Juggling with 900MB SQL DatabaseMalabareando 900MB de Bases de datos SQL

Migration FAIL! (and a wordpress critique #1)Problemas de migración (y crítica a wordpress #1)

I have not yet fully completed the migration of this blog, but while I have had every experience …

Among the most serious, the worst was having deleted the previous blog at WordPress.com

I do that to avoid the content duplication. Unfortunately, forget the little detail about my URL, which was used as an Openid address. I was 3 feeds pointing to twitter accounts through twitterfeed. But now I can’t log on twitterfeed, it only uses openid. As I was using the WordPress.com account as openid and now I can’t use it, can’t go to administer the accounts in twitterfeed. EPIC OWNED :retard: .

At least, the only solution I have is to change the password to the twitter accounts

I moved!¡Me cambié!

If someone has added my address in your feeds, links, blogroll, bookmarks, first THANK YOU! I never expected to be as far as read. It was never my goal to be as read (much less referenced). My new space will be in:

http://blog.gon.cl/

It is time to leave WordPress.com, which is the first of several steps to have a 100% independent blog, which continue to publish some other valuable information, worth remembering. And perhaps, most people find it useful.

At last I can do my «English exercise» because now I can install all the plugins that I want: D.

See you 😀

PS: I did the trick at least maintain the same URL into feedburner, therefore, when this post will automatically be sent to twitter, you should see the link to the new blog: whistle:.

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: .

English ExerciseEjercicio 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»