miércoles, 20 de octubre de 2010

La Plegaria de un Padre

Recientemente, gracias a un comentario de un ex-alumno del Liceo Naval Almirante Guillermo Brown, me entere de este poema atribuido al General Douglas MacArthur, y realmente me encata ya que expresa gran parte de lo que siento y deseo.

Espero que les guste tanto como a mi:

Plegaria de un Padre

Dame, oh Señor, un hijo que sea lo bastante fuerte para saber cuando es debil, y lo bastante valeroso para enfrentarse consigo mismo cuando sienta miedo;un hijo que sea orgulloso e inflexible en la derrota honrada, y humilde y magnanimo en la victoria.

Dame un hijo que nunca doble la espalda cuando debe erguir el pecho;un hijo que sepa conocerte a Ti...y conocerse a si mismo,que es la piedra fundamental de todo conocimiento.

Conducelo, te lo ruego,no por el camino comodo y facil sino por el camino aspero,aguijoneado por las dificultades y los retos. Alli dejale aprender a sostenerse firme en la tempestad y a sentir compasion por los que fallan.

Dame un hijo cuyo corazon sea claro,cuyos ideales sean altos; un hijo que se domine a si mismo antes que pretenda dominar a los demas;un hijo que aprenda a reir pero que tambien sepa llorar,un hijo que avance hacia el futuro pero que nunca olvide el pasado.

Y despues que le hayas dado todo eso, agregale,te suplico, suficiente sentido del buen humor, de modo que pueda ser siempre serio pero que no se tome a si mismo demasiado en serio.Dale humildad para que pueda recordar siempre la sencillez de la verdadera grandeza,la imparcialidadde la verdadera sabiduria,la mansedumbre de la verdadera fuerza.

Entonces yo,su padre, me atrevere a murmurar: "No he vivido en vano".


Esta version traducida se la robe a otro Ex-liceista, Leandro Brito Peret, espero que no le moleste.

domingo, 22 de agosto de 2010

Un 4 de Julio muy especial

Estoy escribiendo esta entrada en el parque "Washington rock", en Greenbrook, NJ . Estoy aquí viendo el final de los fuegos artificiales del 4 de julio 2010, para mí este es un 4 de julio muy especial.





Esta no es la primera vez que veo fuegos artificiales para el día de la independencia de EE.UU. La primera fue en 1990, cuando Stella (qepd) llevó a sus hijas más chicas, Melissa, Jennifer y Pamela a un Picnic del 4 de Julio, en un parque en las afueras de Chicago. No estoy seguro si ella me invitó a mí o si me autoinvite :-), la cosa es que yo fui con ellas.



Todavía me acuerdo de los cientos de personas, las innumerables mantas sobre la hierba, la banda en vivo, los carritos de comida (sí, me gusta la comida), y los puestos de venta luces químicas, varitas parpadeantes, banderas estadounidenses y distintivos.



Esta fue también la primera vez que vi un espectáculo de fuegos artificiales coordinados con música en vivo. Ciertamente, algo que nunca olvidaré.





Miro a mi alrededor esta noche y puedo ver Nueva York, Staten Island y una docena de municipios de NJ y la mayoría de ellos estan tirando fuegos artificiales, y aunque algunos están bastante lejos, la vista es impresionante.Pero, ciertamente, este no es el mas impactante show de fuegos artificiales que he visto.



Creo que el mejor fue en el año 2005, cuando nosotros (Nahuel, Nicolla, Paola, y yo) manejamos 9 horas de ida y otras tantas de vuelta para pasar el fin de semana de la independencia en las cataratas del Niágara.



Esa noche fue increíble, el número de fuegos artificiales, la música en los altavoces (música grabada, pero sonaba muy bien), y la iluminación "coloreando" las aguas, fue realmente impresionante. Acostado allí, observando el espectáculo con amigos a mi lado, y una copa en la mano, fue muy bueno.





Recuerdo muchas otras celebraciones del 4 de julio, comiendo hamburguesas con los amigos, viendo fuegos artificiales ilegales, bebiendo cerveza en el porche, etc





Sin embargo, el de hoy es aun más especial, porque es la primera vez que lo veo como un ciudadano de EE.UU., hoy estoy celebrando el cumpleaños de mi pais adoptivo.





Feliz cumpleaños EE.UU. !!!!!

viernes, 19 de febrero de 2010

Convertir archivos REG en ADMX

Muchas veces necesitamos aplicar archivos .reg con determinados seteos en las registry de nuestros numerosos sistemas (1400+), y la verdad que es un verdadero dolor de cabeza ... especialmente que no nos gusta usar nada que no sea GPO.

Cuando son unos pocos valores los agregamos a las políticas en forma manual y listo, pero cuando una aplicación nos requiere aplicar un enorme .REG las cosas se complican bastante y empezamos a improvisar como hacerlo de manera tal de que se aplique a todas las máquinas, que nos queda una constancia de ellos y no volvernos locos ...
Y para peor, al poco tiempo volvemos a la GPO y nos rascamos la cabeza tratando de entender que son todos valores que se están configurando en diferente registry keys. Lo dicho, un verdadero dolor de cabeza

Hace un tiempo había intentado crear un archivo de políticas ADM file que nos permitiera aplicar por GPO los valores de un par de archivos .REG que usualmente nos dan trabajo, pero la complejidad de los ADM que encontré, sumado a la falta de documentación, me hicieron abandonar la idea.

El fin de semana pasado me puse a pensar en esto nuevamente y decidí intentarlo nuevamente. Claro que no quería ponerme a trabajar con estándares viejos, así que me puse a investigar los ADMX/ADML.
Cuando abrí los distintos archivos ADMX que tenía a mano me di cuenta de que son bastante simple de entender, así que me baje el paquete de ejemplos ADMX y la definición del esquema y sintaxis de ADMX del sitio de MS.

Por suerte, la sintaxis de los ADMX es realmente simple, están basado en XML, y el poco rato me di cuenta de que no solo podía crear el archivo ADMX que necesitaba, sino qué también podía crear una utilidad para que leyera cualquier .REG y creara el ADMX correspondiente.

Me llevo todo el fin de semana, pero para las 2 de la Mañana del Lunes tenía la aplicación funcionando (y debugueada).

Como no tenía ninguna herramienta de desarrollo instalada, decidí escribir la utilidad en el viejo y querido VBScript. Esto tiene el beneficio adicional de que cualquiera lo puede leer y modificar sin necesitar ningún compilador o ambiente de desarrollo.

Que hace
Lee un archivo de registry (.reg) y crea los archivos ADMX y ADML correspondientes para permitir configurar esos mismos valores por medio de GPO.

Debido a que es necesario definir los objetos del GUI (usados para la edición de políticas en el GPMC), la herramienta asume ciertas cosas:
a) el "nombre" del valor también es usado como etiqueta para la interfaces.
b) a todos los valores tipo dword se les asigna un textbox numérico para el ingreso de datos
c) Cualquier otro tipo de valor es tratado como una cadena (strings) y se le asigna un textbox para el ingreso de datos.

Problemas
@ o (Default)
Esta herramienta no maneja correctamente el "@" (es decir el valor Default de un KEY). Este es el valor que en el editor de registro es mostrado como (Default).
La causa de esto es que no he logrado encontrar la sintaxis correcta para definir este type de valores en el ADMX/L.

PARCHE: POR AHORA, la aplicación asigna el nombre de valor "(Default)", pero (como verán en los ejemplos que siguen) Windows no reconoce este "(Default)" como el verdadero "(Default)".
Para poder solucionar esto necesito encontrar algún ADMX que configure esta clase de valores, entonces podría leer el XML para entender como se hace. A menos que alguien me diga donde estoy equivocado.

Hex, Hex(0) ...
Este es otro caso de cosas que encuentro en archivos .REG pero no encuentro ningún ADMX que configure valores de este tipo.
Nosotros tenemos varios .REG que asignan un valor compuesto de varios pares de valores hexadecimales. Como dije, no he encontrado ninguna política que haga esto.
PARCHE: Por ahora, y hasta que aprenda como hacerlo correctamente, la herramienta trata este tipo de valores como una string y le asigna un textbox para editarlo.
Para poder solucionar esto necesito encontrar algún ADMX que configure esta clase de valores, entonces podría leer el XML para entender como se hace. A menos que alguien me diga donde estoy equivocado.


Uso:
CSCRIPT REG_2_ADMXL.vbs Archivo-Reg lenguaje [nombre]


Archivo-Reg: el nombre y el path del archivo .reg a convertir.
lenguaje: El lenguaje y la cultura que será usada para la creación del ADML, ejemplo: en-US, sp-AR, etc.
nombre: El nombre que será mostrado en GPO para esta política. Si se omite de usará "REG_2_ADMXL Generated Policy".


Los archivos de salida serán nombrados como el archivo .REG (si el archivo de entrada es myfile.reg, los archivos de salida se llamaran myfile.ADMX y myfile.ADML.
El archivo ADMX será creado en el mismo path que el archivo .REG, mientras que el archivo ADML será creado en un subdirectorio nombrado de acuerdo al lenguaje especificado.
Por ejemplo, si el archivo de entrada es C:\myapp\myfile.reg y el lenguaje es en-US, el archivo ADMX será C:\myAPP\myfile.ADMX y el archivo ADML será C:\myAPP\en-US\myfile.ADMX




EJEMPLO

Para convertir el siguiente archivo de registro
Windows Registry Editor Version 5.000

[HKEY_CURRENT_USER\Software\Marianok\Myapp]
@="default value of the key"
"MyAppName"="SuperApp123"
"MyAppServer"="SomeServer"

[HKEY_CURRENT_USER\Software\Marianok\Myapp\Config]
"bottom"=dword:00000000
"left"=dword:00000000
"right"=dword:00000000
"top"=dword:00000000
"color"="red"




Ejecute el siguiente comando:
CSCRIPT REG_2_ADMXL.vbs c:\temp\myregfile.reg en-us


(El último parámetro indica que uso cultura US y lenguaje Ingles)

La herramienta genero 2 archivos c:\temp\myregfile.ADMX y c:\temp\en-us\myregfile.ADML

Una vez que tenemos los archivos ADMX y ADML podemos usar el Group Policy Management Console para editar las GPOs más cómodamente.

Las siguientes 4 imágenes muestran la política de testeo creada en base al archivo .REG mostrado anteriormente


Note que las diferentes keys (el path en la registry) se convirtieron en nodos del árbol, y que el KEY "Config" esta correctamente subordinado al KEY "MyApp".

Noten también que, para ayudar a la gente que pueda estar editando estas políticas, la herramienta ha agregado una descripción a cada nodo, detallando que KEYs esto afecta.




Aquí se ha seleccionado uno de los valores para poder ver el detalle.
Note que el "@" del archivo .REG aparece aquí como (Default), pero este no es el (Default) de Windows :-(.
Noten también que la herramienta ha agregado en cada valor un comentario detallando que registry value modifica, el tipo de valor reportado en él .REG, y cuál era el valor que él .REG asignaba.


Vemos ahora el nodo MYAPP\CONFIG.
Note que hay 4 valores, pero solo 3 están habilitados (solo estos 3 serán aplicados a los usuarios/computadoras).


Aquí se ve la edición de uno de estos valores.
Una vez más, podemos ver la descripción / ayuda que la herramienta ha agregado, para facilitar la tarea del que edita los valores.
Note también que el valor del .REG es usado como valor por defecto para este seteo.

Este es el reporte generado por el Group Policy Management

Sin duda alguna esto es mucho más legible que la maraña de seteos la seccion CONFIG, esto se debe a que el cuarto valor continua deshabilitado en la GP.


Una vez que la GPO se aplicó a la computadora / usuario podemos ver la que el registro fue correctamente actualizado:


Aquí se puede observar el problema que mencione anteriormente respecto al @ / (Default). El primero de ellos, sin datos asignados, es el "Default" de Windows, el otro es el que fue creado por la GPO.
Si se hubiera importado él .reg en esta máquina, solo existiría un "(DEFAULT)", el de Windows, y tendría asignado el valor correspondiente ("default value of the key").


Aquí vemos el nodo de "Config", noten que el cuarto valor no se encuentra asignado, tal cual lo esperábamos.


WOW, que largo lo de hoy :-) ... les pido disculpas, pero sucede que estaba excitado por lo que logre hacer y quería compartirlo con ustedes.:-)

Si quieren probar la aplicación bájenla de mi sitio

Y por favor, si la usan mándenme un email o hagan un comentario aquí así me entero ...