1.9.08

Horror ancestral javascriptoso microsoftero

Estoy modificando un site para un laburo y en el codigo me encuentro con esto:

<script language="JavaScript1.2" fptype="dynamicanimation" src="file:///C:/Archivos%20de%20programa/Microsoft%20Office/Office10/fpclass/animate.js">
</script>

JASHKAJFHVSDQWDPOCXZXMVCNALuhGHTTT!!!

Cabe aclarar que el site es muy viejo y hecho "a la antigua" con FrontPage (que debe ser el causante de esa linea que se ve tan mal).

29.7.08

Como reducir el tiempo de compilacion en Flex usando fcsh bajo linux

Hace muy poco comenze a ver Flex como una manera de agregar algunos chiches a Webs usando linux. Empece a hacer unos experimentos en mi maquina, luego lo pase a un servidor chico (Pentium 4 de 1.6GHz) que usamos para desarrollar y los tiempos de compilacion se fueron de 8 a 20 segundos.

Hoy estuve probando fcsh para achicar los tiempos de compilacion y funciona. Evitando cargar la JVM cada vez que compilamos y guardando informacion que le es util en memoria fsch nos ahorra preciado tiempo a hora de compilar desde la terminal. Despues de decir un par de "que bueno!" con bastante emocion, paso directamente a hacer una prueba y poner los resultados a continuacion.

Creamos un archivo mxml con un reducidisimo "Hola Mundo!" en nuestro directorio "bin" de Flex. Vamos a ponerle testfcsh.mxml:

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" width="300" height="300">
<mx:Panel title="Mi prueba">
<mx:Label text="Hooooooooooooooooooooooola!"/>
</mx:Panel>
</mx:Application>

Ahora lo compilamos usando "mxmlc" con la opcion '-benchmark', mi copia de Flex esta en mi home dentro de los directorios ~/dev/flex/ y, tanto el compilador como fcsh, se encuentran en el directorio 'bin' dentro del de Flex:
caco@square05 ~/dev/flex/bin $ ./mxmlc -benchmark=true testfcsh.mxml 
Loading configuration file /home/caco/dev/flex/frameworks/flex-config.xml
Initial setup: 327ms
Loaded 8 SWCs: 838ms
Files: 327 Time: 3893ms
Linking... 107ms
Optimizing... 409ms
SWF Encoding... 81ms
/home/caco/dev/flex/bin/testfcsh.swf (158538 bytes)
Total time: 5679ms
Peak memory usage: 52 MB (Heap: 28, Non-Heap: 24)

Vemos que en total tardo 5.6 segundos, ahora probemos con fcsh. Primero ejecutamos fcsh:
caco@square05 ~/dev/flex/bin $ ./fcsh                
Adobe Flex Compiler SHell (fcsh)
Version 3.0.0 build 477
Copyright (c) 2004-2007 Adobe Systems, Inc. All rights reserved.

(fcsh)

En el prompt (fcsh) vamos a escribir el mismo comando que usamos para compilar con el mxmlc:

(fcsh) mxmlc -benchmark=true testfcsh.mxml
fcsh: Assigned 1 as the compile target id
Loading configuration file /home/caco/dev/flex/frameworks/flex-config.xml
Initial setup: 324ms
Loaded 8 SWCs: 788ms
Files: 327 Time: 3649ms
Linking... 57ms
Optimizing... 399ms
SWF Encoding... 97ms
/home/caco/dev/flex/bin/testfcsh.swf (158537 bytes)
Total time: 5324ms
Peak memory usage: 54 MB (Heap: 30, Non-Heap: 24)

El tiempo de compilacion es casi igual pero ahora, cada vez que recompilemos, vamos a estar haciendo uso recursos que ya estan en memoria y veremos como acortan los tiempos de compilacion. Para compilar nuevamente la misma aplicacion podemos enviarle a fsch el comando "compile" utilizando el id "1" que se le asigno a nuestro testfcsh.mxml cuando enviamos el primer comando. Voy a cambiar el string "Hooooooola mundo!" que uso en el ejemplo (fcsh detecta si no cambio ningun archivo, y nosotros queremos recompilarlo) y compilamos:

(fcsh) compile 1
Loading configuration file /home/caco/dev/flex/frameworks/flex-config.xml
Initial setup: 12ms
Loaded 8 SWCs: 17ms
Recompile: /home/caco/dev/flex/bin/testfcsh.mxml
Reason: The source file or one of the included files has been updated.
Files changed: 1 Files affected: 0
Files: 327 Time: 423ms
Total time: 453ms
Peak memory usage: 58 MB (Heap: 34, Non-Heap: 24)
Linking... 12ms
Optimizing... 171ms
SWF Encoding... 64ms
/home/caco/dev/flex/bin/testfcsh.swf (158546 bytes)
Total time: 250ms
Peak memory usage: 52 MB (Heap: 28, Non-Heap: 24)

Lo hizo en menos de un segundo, unas siete veces mas rapido que con el primer metodo! Estas pruebas las hice en un Pentium 4 HT de 2.80GHz, hago a pedido las mismas pruebas en una maquina mas lenta pero no ahora.

Tener abierta la terminal fcsh me esta consumiendo aproximadamente 65MB de memoria. Cabe aclarar, tambien, que quienes usan Flex Builder ya hacen uso de fcsh. En caso de no tener el fcsh, pueden bajarlo de la pagina de Adobe y para mas informacion visiten la documentacion de fcsh.

22.7.08

Mensajeria Memorable (no tanto)

Dump pre-eliminacion de emisiones varias desde y hacia mi persona. Para que no se esfumen los momentos volatiles que se sostienen a rayos en miniatura:

(Nicko) Loco no me anda la placa wailer

(Nicko) La placa wailer loco!

(Nessie) Estoy nuclear en ramos

(Machunga) No pasa el subte. Retroceda 5 casilleros.

(Nessie) Hay un dibujo animado peronista. Los peques se llama

(Caco_Patane) Caverna Sambayon!

(+813) Personal le informa que ha detectado un error en su domicilio de facturacion declarado Por favor comuniquese al *111 s/cargo para actualizar el mismo Gracias

(Nessie) E goacheen awante la keius majjjiiii!

(Caco_Patane) Hay una locavudu gritandole al jesus de al lado

. volatilvolatilvolatil .

1.7.08

Milanesa vencida

Betty! Esos muniequitos que dejaste atendiendo tu fiambreria me encajaron un sanguche de milanesa muy caduco. Me rendi en la mitad de la batalla. Que vuelva la ternura al paladar, las mandibulas quieren mantecas!

16.6.08

La cerveza artesanal Gilbert no esta buena

Esto forma parte de una nota mental que encontre hace un rato. El mensaje es simple, la cerveza Gilbert no tiene casi nada de lo rico que tienen las cervezas artesanales. No esta buena. Si la ven ahi, y se quieren tomar un vasito... bien, pero no se hagan ilusiones. Yo me las hice y lo amargo no fue solo la cerveza. Me gusta muchisimo mas la cerveza artesanal de Cossab y no tengo que irme hasta el sur para tomarla.

9.6.08

Si a los carriles exclusivos

No a los taxis que te encierran y despues te putean amparandose en "estoy laburando, pibe". Que frenan en la bicisenda y cuando les decis que no pueden estacionar ahi te ignoran, que andan a 5km/h y despues te matan a bocinazos por mas que estes llendo a 40km/h prendido fuego con la bici.

Hagan paro, va a ser apreciable un dia sin tanto ruido y humo. Los taxis NO SON transportes eficientes, economicos, sanos ni ecologicos. Puede ser un dia feliz.

2.6.08

Generando ID unicos (UUID) en MySQL

La funcion UUID() de MySQL nos devuelve un Identificador Unico Universal que podemos utilizar como ID unico en nuestras aplicaciones.

Podemos probarlo ejecutando la siguiente consulta:

select uuid() as uid;

El resultado esta compuesto por 5 grupos de caracteres hexadecimales separados por un guion:


+--------------------------------------+
| uid |
+--------------------------------------+
| 107782ca-8250-102b-bae9-001a92ba7031 |
+--------------------------------------+


Si estan usando PHP pueden validar el UUID con la funcion ValidateMySqlUid();

Validando UUID de MySQL en PHP

Funcion de PHP para validar (regexp de fede) los IDs unicos generados por MySQL:
function ValidateMySqlUid($string) {
if (strlen($string) == 36) {
if (preg_match('/[0-9a-f]{8,8}-([0-9a-f]{4,4}-){3}[0-9a-f]{12,12}/', $string)) {
return true;
}
}
return false;
}

31.5.08

"Ketchup Hot" es puro Marketing


Cientificos de nuestros laboratorios nos informan que el llamado "Ketchup Hot" fabricado por "La Campagnola" es mentira y no tiene nada de hot. Y todo esto, no fue solo validado por la ciencia: religiosos del picante estan uniendose para dar conferencias sobre el fraude desestabilizador que este producto mentiroso esta causando al universo del picor.

Si quieren comer algo parecido al "Ketchup Hot", de igual gusto, calidad (baja) y sabor pero picante, pueden agregar el "Aji Picante" (Adhereso a base de aji picante) de Knorr. Una solucion menos groncha seria conseguir algun picante decente.

27.5.08

Eliminar directorios (y sus contenidos) en PHP

La funcion rmdir() de PHP solo elimina directorios que se encuentren vacios, lo cual hace un poco denso eliminar estructuras de directorios grandes y complejas. En el manual de PHP hay un comentario que contiene una funcion para eliminar directorios y sus contenidos de forma recursiva:

function rm_recursive($filepath) {
if (is_dir($filepath) && !is_link($filepath)) {
if ($dh = opendir($filepath)) {
while (($sf = readdir($dh)) !== false) {
if ($sf == '.' || $sf == '..') {
continue;
}
if (!rm_recursive($filepath.'/'.$sf)) {
throw new Exception($filepath.'/'.$sf.' could not be deleted.');
}
}
closedir($dh);
}
return rmdir($filepath);
}
return unlink($filepath);
}

La entrada de rmdir() en el manual de PHP tiene otras recetas similares a la que use anteriormente. Otros ejemplos usan glob() pero, al parecer, tarda mucho en soltar los archivos y esto puede generar problemas aleatorios con los permisos de los archivos. El comentario correspondiente a la funcion tambien expone que utilizar opendir() es mas rapido que glob().

26.5.08

Un spam de Michael Ellis

De las series comicas de television que consumo, Monty Python (Monty Python's Flying Circus) es la que mas me gusta. Para aquellos que no conocen la serie, suelo explicarla (desporlijamente) como un Cha Cha Cha (la de Casero, vamos) de Inglaterra de los años 70. El excelentisimo capitulo 41, titulado "Michael Ellis", gira alrededor de un personaje que tiene el mismo nombre que el capitulo y del cual no se sabe nada mas que su nombre... que se repite constantemente en diferentes momentos mientras vuelve loco al protagonista ("Chris", en este capitulo).

Los parlantes de un shopping gritan mientras Chris sale de una tienda de mascotas despues de comprar una hormiga:

Will Mr Michael Ellis please go straight to the manager's office... I'll repeat that... (Chris mira para todos lados y escucha con atención) Will Mr Nigel Mellish please go straight to the manager's office.

Y un dia paso algo RARO, maravilla, asombro, mirada estupefacta contra el vidrio emisor. Spam de Michael Ellis, comienzo a reirme:



El no poder compartir una coincidencia asi con nadie compenso con la agudeza del mensaje, fue el Spam que mas certero senti hasta el momento. Y eso que, algunas veces, puedo pasar varias horas leyendo a ver de que van.

29.4.08

El Verdadero Curanto Patagonico (receta)

Comida de nuestra tierras patagonicas, a piedra y fuego. Mucho se habla, pero no todo el mundo esta al tanto de como se prepara el curanto. A pesar de que el tiempo pasa y transforma las recetas, lo mas escencial de esta receta y su preparacion permanece firme, solido.

Para comenzar se debe hacer un aujero en la tierra de 13 centimetros de produndidad en donde se colocaran rocas y se calentaran con todo el fuego posible elevando su temperatura al limite. Luego las piedras deben ser cubiertas con una capa de hojas de nalca o maqui. Sobre esta capa se colocan ingredientes: carne de vaca, de cordero, de cerdo, pollos, chorizos, papas, batatas, manzanas y zapallos ahuecados rellenos con queso, crema y arvejas.

Se procede, a continuacion, a formar una nueva capa de hojas por sobre la comida, cubrir esta capa con telas humedas y tapar nuevamente con tierra. Para finalizar esta sobrosa y tradicional comida, los cocineros orinan la superficie caliente, algunas veces invitando a sus mascotas a hacer lo mismo. El sabor, aroma y las particulas distintivas del orin no llegan a la comida pero esta se cocina con sus vapores formando una olla a presion natural. A pesar de que este ultimo paso pueda disgustar a algunas personas, sigue siendo parte de la tradicion y debemos tomarlo como parte de este delicioso y unico festin de nuestras tierras.

23.4.08

El Gobierno de la Ciudad hace Spam

Hoy me llego un mail a mi casilla personal promocionando unos cursos de capacitacion gratuita. Llego con mi nombre, segundo nombre y apellido. Me gustaria saber de donde sacaron estos datos y salir de esa lista (como de cualquier lista de correo masivo en la que este).


El envio lo hicieron a travez de "FromDoppler.com" asi que ahora una organizacion privada tiene mis datos (y los de vaya-uno-a-saber cuantos mas!) a su disposicion. Por mas que me desuscribi al envio, dudo que FromDoppler tenga la lista original, con lo cual se hace muchisimo mas dificil de conseguir salir de la misma.

Macri tendra estas cosas? Alguien haga algo!

20.4.08

IdleRPG en Freeenode (irc)

Hace un par de dias un amigo me invito a entrar al canal #idlerpg en el servidor de Freenode (irc.freenode.net) donde nos juntamos frecuentemente -por no decir "todo el dia"-. Dentro de este canal se juega a IdleRPG, un juego de rol en donde se sube de nivel sin hacer nada. Es mas, hacer cualquier tipo de accion tiene penalizaciones. Cuanto mas tiempo estes en el canal idleando, mas poderoso va a ser tu personaje. Ciertas acciones como encontrar objetos y atacar a otros personajes se hacen de manera automatica.

Puede que resulte un tanto estatico si no se esta acostumbrado a estar incontables horas en IRC, pero les aseguro que es practico y poco invasivo. Uno puede, tranquilamente, salir a dar una vuelta, ver una pelicula o desatender completamente el canal del juego y todo va a seguir su curso.

En http://idlerpg.numist.net/newdlebot/ se encuentran las instrucciones para comenzar a jugar. Nos vemos ahi (quizas).

13.4.08

La cultura como organismo burocratico del sentir

Enfoque en el cual, el conjunto de informacion cultural junto con sus patrones de comportamiento y desarrollo, aplica normas y procedimientos excesivos afectando al SENTIR de manera que ocurra una desestabilizcion por la cual nuestra energia se utiliza de manera ineficiente. La cultura, como entidad-una, posee ciertos mecanismos en el individuo que se comportan de manera egoista, solo colaborando en la obtencion de ciertos objetivos para la organizacion (cultura). Los recursos utilizados por estos mecanimos alejan al individuo de sus capas mas basicas dejandolo dando vueltas en juegos ilusorios que lo alejan de sus objetivos existenciales-primarios (cuales sean). Ademas, se implantan objetivos secundarios disfrazados que disparan preguntas sobre lo preguntado, correcciones de rumbos ya elegidos y dudas respecto al sentir. El sentir carece de dudas: los conflictos en el, no son mas persecusiones de todo lo que lo rodea.

5.4.08

Google dona US$18.000 para el desarrollo de Freenet

Ayer anunciaron en la pagina de Freenet que el equipo Open Source de Google realizo una donacion 18.000 dolares a Freenet. Las donaciones sirven, principalmente, para emplear a Matthew Toseland: el programador full-time que trabaja para el proyecto.

3.4.08

Desparramado por mi escritorio

Corchos, perinola, posa vasos, vaso, cenicero, porta lapices, dados, leds, potes, pilas, colgantes, cepillo, pantita de cania en botellita de agua, cilindros, anteojos, labial de cacao, destornilladores, fichas caducas de casino, aceite, micro-machines, pins, papeles, parlante, velas, muniecos, juguetes, voodoo de rambo protector, tachitos, tornillos, anotadores, propaganda cristiana, stickys, pomada china y mucho... muchisimo tiempo.

Lanzan el Release Candidate 1 de Freenet 0.7.0

El lunes pasado se lanzo el release candidate 1 de Freenet, la aplicacion P2P anonima y descentralizada. Freenet esta diseñada para permitir a sus usuarios transmitir informacion a travez de la red P2P de manera segura y anonima. La procedencia del contenido que se publica y se descarga no puede ser determinada, esto ofrece cierta seguridad frente a las recientes acciones legales que tomaron algunas discograficas y grupos dedicados a combatir la pirateria.

Si bien el fin de Freenet no es la pirateria, resulta ser un ambiente comodisimo para estas actividades. Actualmente, no hay mucho material pirata si lo comparamos con BitTorrent e eDonkey. El espiritu por detras de este software es garantizar la libertad de expresion apoyandose en el concepto del anonimato, permitir que los usuarios intercambien informacion, publicaciones, mensajes y naveguen paginas sin posibilidad de censura o represion.

Hasta ahora, la red viene funcionando muy bien y cumpliendo con los objetivos propuestos, pero queda mucho por hacer. El unico bache que le encuentro es que no mucha gente la usa, lo cual hace reducido el material que se puede encontrar dentro. Es un espacio, podria decirse, virgen: ideal para comenzar cosas-dentro.

19.3.08

Firebug en Firefox 3

Al fin, el Firebug era lo que me impedia moverme de Firefox2 al Firefox3. La version del Firebug 1.2.0a, todavia en estado alfa, se encuentra disponible en la seccion releases de la pagina de Firebug.

Para los que no conocen esta extension, les permite hacer Debug intensivo de paginas web monitoreando requests, modificando HTML y valores de CSS sobre la marcha (del lado del navegador), hacer debug de JavaScript y ejecutar JavaScript en una consola. Una vez que se lo comienza a usar se vuelve indispensable al punto que uno llega a decir que no puede trabajar sin el.

23.1.08

Hawking sobre el destino (cita)

"I have noticed even people who claim everything is predestined, and that we can do nothing to change it, look before they cross the road." -Stephen Hawking