<body>

Sitios web relacionados: PingBlog | Fotos

lunes, enero 30, 2006

Amigos de Mazinger Z: ¡Información por parte de los Bloggers!



Amigos blogueros: Tengo un pequeño proyecto relacionado con el iconico Mazinger Z y me pregunto si ustedes saben en donde puedo conseguir más información acerca de Go Nagai y sobre todo, pero sobre todo, noticias de las últimas noticias de este personaje, particularmente sobre Mazinger AD 1901, (hecho por Yasushi Nirasawa, el cual según este sitio web es una versión de el robot creada en el año 1901, 13 años después de la primera guerra mundial, lo cual no me cuadra mucho). Hay mucho en Internet pero nada actualizado (por cierto, este sitio con modelos 3D y un juego en Flash de Mazinger es realmente interesante).

Por cierto, el webmaster de el sitio de Mazinger Z falleció hace tiempo. Mi italiano es pesimo, así que con ayuda de el traductor de Google:
After to have fought against a long disease, webmaster the Koji, has leaves to us you in order to go far away, in a bloomed garden where the pain of the life is not neanche a memory and where all desires are always come true. The last time that I have chatted with he, has asked to excuse to me to me with all for the little modernizations of the situated one and to take to its place the role of webmaster. I do not know if of I will be to the height but they are sure that trovero in you of the good collaborators and the beloveds friends.

Se agradece todo tipo de envios y sugerencias.

Actualización:
Alguien me enlazó, con información sobre Mazinger. ¡Muy bueno!

Buscar en Technorati:

domingo, enero 29, 2006

Memorias de un Gochito y un Turmerinense en su visita a Caracas (II): Banana Republic

Barman en Wiskeybar
Callendonos a palos en el Wiskeybar, en el San Ignacio. No todo fué trabajo


Tomado de Wikipedia:
Banana republic is a pejorative term for a small, often Latin American or Caribbean country, politically unstable, dependent on limited agriculture, and ruled by a small, wealthy and corrupt clique. Coined by O. Henry, American humorist and short story writer in reference to Honduras. "Republic" in his time was often a euphemism for a dictatorship, while "banana" implied an easy reliance on basic agriculture and backwardness in the development of modern industrial technology.

No sé si este va a ser un escrito divertido o lleno de amargura, a si que como me vayan viniendo las ideas a la cabeza vamos viendo. Pero si les garantizo que no se van a aburrir con mis aventuras en Banana Republic (Venezuela)... La historia se desenvuelve, después de los eventos ocurridos y descritos anteriormente.

¿Le parecen ofensivo mi comentario? Siga leyendo.

Después de hacer las diligencias que tenia que hacer en Caracas, disfrutar de la compañia de mi familia y la familia de mi esposa (todos ellos me consintieron como el hijo retardado que nunca tuvieron :)), y comer (oh Dios, Arepas, jugo de parchita, papelon, carne, ... ¿mencione las Arepas en las Mercedes?) me toco hacer un toque con la realidad para preparar el viaje de regreso. Llamé a American Airlines y mientras la voz sensual de una chica me atendia, em enteré que el gobierno Venezolano habia elevado las unidades tributarias desde que yo habia comprado mi pasaje un mes atrás, por lo que tenia que pagar la diferencia de Bs. 14000 (Unos $7 aproximadamente). No hay problema señorita, lo cancelo el día de el abordaje.

¿Un presagio de lo que venia? En fin, lo siguiente era conseguir un taxi, ya que en mi opinión:
  • No me arresgaba a que un autobus de los que sale de Caracas se accidente y pierda el avión
  • El autobus sale en cuanto se llene. Exacto, ¿cuanto hay que esperar antes de que se llene?
Pal coño (fuck it), me bajo de la mula con el taxista. Empiezo a llamar a las lineas de taxis que conozco (TaxiVen, etc) en Caracas y el rango de precios va entre 150K Bs ($70). a 250K Bs ($117). Están aguevoniadisimos pienso yo, pero ni modo si quiero darmelas de fino yendo sólo al aeropuerto además de llegar a tiempo esto es lo que hay que hacer. Antes de contactar al tipo estimo que debo estar 3 horas antes en el aeropuerto, así que las 9:00 AM es el limite ya que el vuelo sale a las 11:00 AM.

Rumbo a Maiquetia
En el taxi, 6:30 AM


Mi hora de salida será a las 4:00 AM, lo cual según mi plan maestro me dá suficiente tiempo para reaccionar a cualquier problema, o así decia yo para mis adentros.

En fin, después de dar algunas vueltas consigo a mi taxista: Se llama David, tiene un automovil que aunque no es de último modelo no es el auto de Dracula (como muchos de sus compañeros de trabajo) y se ve serio. Lo mejor es que aunque no es barato (250K Bs.) al menos se conoce la ruta y un par de rutas alternativas.

El resto de el día pasó con tranquilidad, decidí quedarme en casa acomodando la maleta ya que mi suegra y amigas de mi esposa gentilmente decidieron que yo podía transportar un gato de Botero (extremadamente fragil y delicado) y otros regalos (gracias Dios por los favores concedidos).

Total y llegó el día 0. Me levanto a las 3:00 AM, me doy un baño, afeito (no quiero que mi esposa me vea como el Neardental que he sido en los últimos 3 días) y al terminar de vestirme llamo a David a su celular, 3:40 AM:
Yo:Buenos días, me comunica con David por favor
David: Mshhhh...., ¿alo?
Yo: Buenos días David, lo llamo para confirmar si usted está listo para buscarme a las 4, detrás de el Macaracuay plaza como acordamos
David (Verga, este cabezaehuevo no podía llamar más temprano...): Si vale, en 25 minutos estoy allá. Aunque no hay apuro, porque me dijeron que la carretera de bajada la abrian a las 7:00 AM y no antes
Yo (molesto porque por esa razón quería salir antes): Esa es la idea, si algo pasa nos podemos ir por otro lado. Lo espero como habiamos acordado.
David (que huev...): Chevere, te busco a las 4.
David llegó a las 4:10 AM, 10 minutos tarde pero eso no me importó demasiado, ya que aún sentia que teniamos tiempo de sobra. Me despido de quienes me acompañan y prometo llamarlos al llegar al apartamento. David comienza a manejar y pone un poco de musica llanera mientras pisa el acelerador en una Caracas sin tráfico, con gente saliendo de las discotecas (recuerden que esto ocurrió un Sabado 28).

Yo mientras tanto pensaba en lo mucho que me hace falta otro café.

Total y que llegamos al punto inicial de entrada a la carretera; Aún venian gandolas (camiones) y vehiculos particulares, pero el sentido de bajada hacia el aeropuerto internacional estaba cerrado. Nos dicen que el trayecto usando la carretera vieja a esta hora (y dado que sólo teniamos 25 autos por delante) sería de 2 horas, quizas 3. El CD de David ya no escupe más música y el sale a hablar paja con otros conductores, mientras yo me quedo en el carro, abrazando mis documentos y cayendo en un sueño intranquilo, lleno de imagenes incoherentes.

Me desperté de pronto, por el ruido de bocinas y gente protestando. Salgo y veo que detrás de nosotros hay una cola de no menos de 200 automoviles, todos esperando. A lo lejos viene David corriendo, con cara de pocos amigos:
Yo: David, ¿que coño está pasando?
David: Nada, una gandola se acaba de accidentar y la carretera va a estar cerrada al menos hasta el mediodia...
Yo (tratando de controlar el nivel de estress en la voz): OK, tu me mencionaste un barrio por el cual nos podemos meter, Carapita, pintaguita,...
David: Carayaca. Entramos por la Vega (otro barrio) luego seguimos por allí
La decisión es mía. En Carayaca no hay guardias nacionales cuidando, como en el barrio el Limón. Y la Vega es peligrosa también. Por otro lado recuerdo mis buenos tiempos cuando salida de el periodico e iba a la Vega a las 3:00 AM a dejar periodistas allá, barrio adentro, por lo cual ya no me impresionan (pero aún respeto).

Yo: David, pal coño. Vamonos por Carayaca y ¡rápido!
David: Bueno papa, eso es dandole...
David empieza a manejar. Comienza a caer un palo de agua de pelicula, mezclado con neblina. David maneja como conductor de formula 1, pero eso no es suficiente para esquivar los huecos de la carretera, el lodo y los automoviles que tenemos por delante en una carretera que a veces no soporta más de 1 vehiculo en ambas direcciones. En el trayecto, mientras el barrio se levanta inmenso a ambos lados David cambia la música llanera por un CD de la orquesta Billos Caracas Boys, mientras me dice que ahora los carajitos no escuchan música sino Regetón y que eso es una mierda. Yo no le paro, sino que me vacilo las letras de Billos las cuales hablan de una negra que tiene un buen tumbao.

El trayecto comienza a alargarse y David (como buen taxista) comienza a hablar de politica (Chavez es una mierda dice él, regalandole plata a otros paises mientras habria al pueblo), de su familia (su señora y sus hijos) y que como casi se le mueren por intoxicación porque un automovil que el compró 15 años atrás tenia una fuga de monoxido de carbono en el tubo de escape, de sus aventuras sexuales (con clientas que le pistoneaban y que según el le pedían que las castigara). Yo disfrutaba de los relatos y me reia siendo su complice, mientras una parte de mi cerebro aún tenia la cuenta regresiva para la cola de el aeropuerto.

El tiempo pasó y se hicieron las 10:00 AM. Ya a esta hora solamente un milagro podría salvarme. Un camión delante se accidentó y nos robó 10 preciosos minutos. Otros 5 minutos porque el limpiaparabrisas de el auto se jodió y David lo remendó colocandole un lazo de tela para que no se saliera. Ya a estas alturas no hay Billos sino silencio tenso, el cual David rompe de vez en cuando para decir que la carrera debería ser en 300K Bs. Yo lo ignoro.

Total y llegamos a el aeropuerto. Le pago a David, le doy las gracias y prometo llamarlo algún día para otra carrera. Corro por el aeropuerto mientras la gente me mira extrañada. Llego al mostrador y mientras alguien busca mi boleto le explico a la señorita que mi vuelo sale a las 11:16 AM y que son las 10:40 Am y que si aún hay tiempo.

El vuelo fué cerrado. Y como tengo equipaje es imposible que pueda abordar.

Empiezo a ver rojo, pensado como la linea aere seguro sobrevendió los boletos, de como el avión está parado aún allí y de que tendría que contactar a Veronica y a la familia para explicar lo sucedido. Después de mi fase inicial de negación viene la de resignación (no es culpa de la aerolinea digo yo, al final yo fuí quien llegó tarde) y ya más calmado le pido a la chica que me monte en cualquier avión que vaya para New York este mismo día. De leche me consiguen un vuelo a las 3:00 PM que vara para San Juan de Puerto Rico y de allí para New York.

¡Escape de Banana Republic!
¡Escape de Banana Republic!
¡Escape de Banana Republic!
¡Escape de Banana Republic!

Mi mente no deja de repetir eso mientras pienso en el desastre de el puto viaducto, de el coñazo de dinero que he tenido que gastar sólo para visitar a mi familia, de la arrechera de pensar que los toches que van para el foro social en Caracas si tienen un salvo conducto para ir por el barrio el Limón pero particulares no (además de $1 para comida al día).

Coño de las mil madres.

Paso por seguridad y allí me toman el pelo gracias al famoso gato de Botero. Cansado de tanta vaina les digo que si les parece tan sospechoso se lo pueden quedar, es un una escultura para invocar al espiritu de el Che y al Negro primero.

Nadie se rie de mi chiste y me dejan pasar.

Para relajarme decido caerme a palos. En el lado de el aeropuerto internacional solamente veo turistas acaudalados, sifrinas mostrando sus tetas operadas y trajes bellamente adornados. Yo me miro y veo mi franela y pantalones llenos de barro (ya que cuando nos accidentamos en Carayaca me bajé a ver que pasaba y un carro nos baño con agua de carretera) y pienso que necesito vacaciones de estas vacaciones. Me rio sólo cual pendejo y continuo tomando mi ya segunda cerveza.

Rumbo a Maiquetia
Cervezas y politica en Maiquetia


Llega el avión, retrazado 20 minutos. Tengo conexión en San Juan y según mis calculos voy a perder esta conexión también. Me doy cuenta que la gente corre desesperada hacia la entrada y que todos se empujan para entrar en el avión:
Yo: Disculpe señorita (mientras le dirijo la mirada a una de las asistentes de AA en el mostrador). ¿La entrada a el avión no es por grupos? (el mio irnicamente es el #1)
Senorita: Hay no, aqui no le paramos a eso..

¡Escape de Banana Republic!
¡Escape de Banana Republic!
¡Escape de Banana Republic!
¡Escape de Banana Republic!

Como odio eso canción, ahora latiendo constantemente en mi cabeza. Me logro montar y ya adentro cierro los ojos. Es un trayecto de sólo una hora y en ese tiempo termino de llenar las plantillas de inmigración. Hablo con una azafata Americana y amablemente me dice que quizas lo logre. Se que ella miente.

Rumbo a Maiquetia
La espera en el Aeropuerto


Salgo corriendo a inmigración, aún bajo los efectos de las cervezas y por supuesto aún arrecho por todo el peo:
Yo: Buenas tardes (le digo al agente obviamente hispano)
Agente: (.... sin respuesta .....)
Agente (después de ver que vengo de Venezuela): ¿Como se preparan para la invasión? Chavez y que le está regalando más dinero a Bolivia
Yo: Bueno, mientras ustedes esten solamente en recibir nuestro petroleo creo que el permanecerá en el poder el tiempo que el y quienes lo eligieron consideren conveniente.
Agente: JEJEJE. Puedes continuar, feliz viaje.
En seguridad me vuelven a escanear. Me detienen de nuevo por el Gato de Botero. Les ofrezco regalarselos, pero nadie lo quiere.

Rumbo a Maiquetia
Tip de viajero: Un par de cervezas alivian cualquier arrechera...


Al final llego a recibir mis maletas en la banda transportadora. Pasan 10 minutos y aún no aparece. Veo el reloj y según mi ticket ya están abordando. Y aún no he pasado a declarar por aduana (y yo traigo unas galletas y licor que tengo que declarar). Desde el Blackberry le mando a Veronica un correo diciendole que no salga de la casa rumbo a el aeropuerto ya que lo más seguro es que no lo logre. Ella me dice que esperara y que mientras tanto me calme.

La maleta aparece. Paso rápido por aduana y corro como loco por los pasillos. Logro poner mi maleta en la banda que enviará mi maleta a New York y luego corro hacia el terminal... veo el boleto y no sé en que terminal tengo que montarme, sólo tengo el número de vuelo. Buscando los terminales de AA veo el mio y corro hacia este:
Yo: Hi, do you know if this flight goes to NYC? Flight # 12345?
Azafata: Yes, this is the right gate!
A partir de ese momento supe que no me quedaría barado en Puerto Rico. Supe que estaría listo para ir a trabajar el Lunes. Una vez en el avión escuche las historias de otros Venezolanos que habian pasado por lo mismo, los cuentos de las azafatas hablando de cancelaciones, todo un espectaculo. El resto de el viaje dormí, no sin antes mandarle otro correo a Vero diciendole que al menos que el avión explotara el en aire todo estaría bien :)

En fin, les doy la bienvenida al periodo Banana Republic de mi país, en donde NADIE asume responsabilidad por las cosas malas que ocurren dia a dia. Eso cambiara SOLAMENTE en el momento en el que nosotros empecemos a exigir lo que nos corresponde por derecho.

Buscar en Technorati: , , , ,

Java y el decreto 3390: ¿Una resolución al fin?



Leyendo este articulo en la Cara Obscura de el Software pareciera que se hubiera encontrado al fin una resolución al problema de Java y el decreto 3390.

¿Pasos en la dirección correcta?

Buscar en Technorati:

jueves, enero 26, 2006

Memorias de un Gochito y un Turmerinense en su visita a Caracas (I)

El viaje para hacer diligencias comenzó como cualquier otro: Bajarse de la mula con un pasaje maldito ($$$), llegar tarde a la cola de seguridad porque se pensó que el vuelo era una hora después (y lograr montarse de leche).

Yo ya tenia resuelto el peo de la estadía en Maiquetia; En un acto de suerte divino (y de persistencia por parte de mi papá) logró conseguir un cuarto en el Hotel Eurobuilding. Realmente para alguien que no conoce la zona, con la carretera cerrada a las 9:00 PM y dada la falta de opciones esa era la única salida (o tratar de dormir en el aeropuerto, con las consabidas protestas de los fasmiliares).

Logró pasar la primera parte de el viaje, ningún incidente. Duermo cual bebe, roncando y soltandole baba a la vecina de al lado, la cual por una no muy misteriosa razón refunfuño en Inglés al menos la mitad de el viaje.

Estos aviones de American Airlines son como lata de Sardinas, pienso yo...

Llego a la conexión a Miami. Voy al baño, como un sandwich y justo cuando camino hacia mi terminal me me consigo a este pana de Turmero, a quien llamaremos "Marx" el cual se peló el avión que tenia que tomar por andar comiendo con la jeva.

Total y le pregunto si tiene en donde quedarse en Maiquetia y me dice que no, así que le ofrezco compartir la habitación, y por supuesto la cuenta. El me dice que suena bien. Tenemos un plan.

Los pasos de siempre en el avión, ahora volando finalmente hacia Caracas: Comer la cena diminuta en el avión, ver la pelicula horrible que pasan a 3 metros de donde estoy sentado en un monitor que es más pequeño que la pantalla de celular, dormir, leer una revista, volver a dormir...

Llegamos a Caracas. El cambio de temperatura no se hace esperar y el cuerpo ya acostumbrado a -3C expuesto de pronto a 32C mas una humedad de 99% simplemente empieza a sudar cual cochino en horno. Después de llenar 3 nuevas planillas en inmigración y de recoger las maletas buscamos el autobus que nos llevará al hotel.

Llegamos en un momentico. El hotel luce desierto, solamente se ven rostros caucasicos de los pilotos "Gringos" de las aerolineas. Yo al fin caigo en cuenta que los precios de este hotel (con agua sucia en la piscina) esta en dolares, cobrando tan caro como uno de los mejores hoteles de Manhattan. Resignados, pedimos la habitación con una cama extra y hacemos planes para bajar temprano a Caracas al día siguiente...

Llega el momento de darse un baño, y es en ese momento en que nos damos cuenta de lo "sugerente" de el baño. Totalmente adecuado para una parejita, pero ni el pana o yo estabamos preparados mentalmente para ciertos recuerdos que sólo podrían ser borrados con la ayuda de un psicologo y mucha, mucha terapia...

Baño en el Eurobuilding
El baño en el Eurobuilding que queda cerca de el Aeropuerto de Maiquetia. Noten el detalle de la silueta de la pobre alma que está dandose un baño


¿Como mantener la amistad y la higiene al mismo tiempo?

Baño en el Eurobuilding
Las sopresas de el baño no terminan allí. Con el toque de un botón, se podía ver todo adentro. Bello...

Así que freneticamente comencé a jugar con juegos de luces y combinaciones hasta que al fin me dí cuenta que con sólo dejar de presionar uno de los botones, el baño erotico quedaba reducido al típico baño de hotel. Peo resuelto, a dormir, esperando la llamada de la recepción a las 5:00 AM para ir de vuelta a el Aeropuerto.

Nos levantamos. No hay café ni tiempo, pagamos la cuenta de el hotel y salimos como alma en pena a el aeropuerto. All legar allí nos dirigimos a donde deberían estar los autobuses que te llevan a Caracas por 20 mill Bolivares (a diferencia de los 200 mil que hay que pagarle a un taxista particular). Pero tal cual Unicornio los Autobuses no aparecieron.

¿Que hacer?

Luke, usa la fuerza. En este caso la viveza criolla. A lo lejos vemos un grupo de camionetas que traen turistas a el aeropuerto. Los dejan y luego se quedan allí, estacionadas sin hacer nada. Los conductores hablan paja y es entonces cuando decido hacer una prueba:

  • Yo: Buenos días jefe, miré, ¿usted sabe cuando pasan los Autobuses que van a Caracas?
  • Conductor #1: Nooooo mi pana, esos no pasan hoy.
  • Conductores (se miran entre ellos divertidos, pensando que hace este huevón tan temprano en el aeropuerto)
  • Conductor #2: Mira pana, pero ¿A donde tienes que ir?
  • Yo: Dejame en parque del Este y estoy resuelto. Allí tomo el metro o un taxi...
  • Yo: Ustedes no nos pueden llevar, ¿20 mil bolos por cabeza? Estoy yo, un pana y otras dos personas allá (señalando con el dedo en la dirección en donde ellos se encontraban, unos 50 metros más allá)
  • Conductor #3: Chamo, el problema es que nosotros sólo traemos gente de categoría, tu sabes, turistas y eso no está permitido...
  • Yo (ya arrecho porque me dijeron bañaperro en la cara): Pero igual ustedes van a bajar vacios a Caracas, ¿no es así? Un desperdicio de gasolina
  • Conductor #1: Mira pana, vamos a hacer una cosa: Tu te ves depinga y si te vienes bajo perfil, nos vamos todos. No le digas nada a nadie, es más tu eres primo mio.
  • Yo (pensando si alguna enfermedad genetica corre en mi familia para tener un familiar así): OK, depinga, vamonos. Y dado que somos primos, saca unas cervezas.

Total que el trayecto fué tranquilo. Nos metimos en el barrio el Limón, subimos por un pedazo de la carretera vieja y luego bajamos, todo en 1 hora. La suerte fué salir tan temprano, además de que quizas las lluvias habian asustado a todo el mundo.

Una vez en Parque Central tomamos un taxi a casa de mi suegra, pero esa es ya otra historia (to be continued)

Buscar en Technorati:

lunes, enero 23, 2006

KodeGeek en Caracas, Venezuela

cola en el whitestone bridge
Si señores, estoy por una semana en Caracas


Asi que si quieren reunirse conmigo en algun sitio como el Sambil o el San Ignacio escriban un comentario. La idea seria hacerlo mañana despues de las 6:00 PM.

No ofrezco invitar las cervezas pero si podemos hablar tonterias por un rato :)


Buscar en Technorati:

sábado, enero 21, 2006

Opinión de pelicula: Underworld Evolution



Hoy logramos ver la pelicula Underworld Evolution. No es una pelicula de terror, ni de ciencia ficción, así que es dificil definirla.

Como siempre, no les quiero arruinar la sopresa contandoles acerca de la trama, excepto que es fácil verla aún si no logró o se acuerda de la primera. Los efectos especiales están increiblemente bien logrados, la trama es consistente, las actuaciones son buenas (sobre todo los villanos) pero lo mejor de todo son las escenas de acción: La pelicula es un bombardeo constante de situaciones, pero a diferencia de otras peliculas está es consistente.

La pelicula es más sangrienta que la anterior y mucho más violenta, pero no por eso se deja de disfrutar el universo fantastico en donde hombres lobos y vampiros combaten hasta... ¿la muerte?

En fin, la recomiendo ampliamente, es una muy buena pelicula de el genero.

Buscar en Technorati:

jueves, enero 19, 2006

Mazinger Salva a Venezuela: ¡Corriendolo bajo Linux! (y otras ociosidades)

Mazinger Salva A Venezuela
Mazinger Salva a Venezuela. Ahora puedo jugarlo en mi laptop (Fedora Core 4), gracias a Wine


Es simplemente trivial correrlo. No hace falta ser root tampoco, solamente monte el cdrom (normalmente /dev/cdrom) y luego corralo así:
wine ./autorun.exe (para instalarlo)
wine ./wine/drive_c/MZSV/fscommand/MZSV.EXE (para correrlo)
Mazinger Salva A Venezuela
El menú de el juego. Note el detalle de el menú de GTK arriba, puro Linux :)


Debo admitir que el juego no es tan fácil como parece. Vamos a ver como me termina de ir, los dejo ya que aún estoy trancado en el nivel del parque Altamira....

Como nota curiosa (y dado que ya empecé a escribir sobre Mazinger), miren quien tiene el dominio en DNS:
Domain name: MAZINGER.COM
Created on: 2002-07-15
Updated on: 2004-12-05
Expires on: 2006-10-19
Registrant Name: FORTEZZA DELLE SCIENZE
Contact: Fortezza delle scienze
Registrant Address: Strada per Longera 310/1
Registrant City: Trieste
Registrant Postal Code: 34149
Registrant Country: IT
Administrative Contact Organization: Max Maver
Administrative Contact Name: Max Maver
Administrative Contact Address: Strada per Longera 310/1
Administrative Contact City: Trieste
Administrative Contact Postal Code: 34149
Administrative Contact Country: IT
Administrative Contact Email: koji@mazinger.com

Obviamente Coji Kabuto es el contacto técnico ;)

Para terminar, otros enlaces:
¿Se me olvidó algo :)? Los invito a que compartan cualquier cosa que tengan sobre este clásico de el Manga.

Buscar en Technorati:

miércoles, enero 18, 2006

Echando código: Cuando Perl no puede (o no lo dejan): Perl + Bash



Que ladilla. Mi proveedor de ISP se empeña en no dejarme
Can't locate Date/Manip.pm in @INC (@INC contains:
/usr/lib/perl5/5.8.6/i686-linux /usr/lib/perl5/5.8.6
/usr/lib/perl5/site_perl/5.8.6/i686-linux /usr/lib/perl5/site_perl/5.8.6 /usr/lib/perl5/site_perl/5.8.0
/usr/lib/perl5/site_perl .) at /home/kodeg2/bin/visitor_geo_map_generator.pl
line 5.
BEGIN failed--compilation aborted at
/home/kodeg2/bin/visitor_geo_map_generator.pl line 5.
Probé usando eval {} para detectar si el modulo existía, pero por alguna estupida razón Perl compilaba todo el código y me daba un error, así que me tocó hacer un parche:

#!/bin/bash
export MONTH=`date +%b`
export YEAR=`date +%Y`
exec /usr/bin/perl -x $0 $*
#!/usr/bin/perl
use strict;
use LWP::UserAgent;
use constant LOG_FILE =>
"$ENV{HOME}/logs/kodegeek.com-" .
"$ENV{MONTH}" .
"-" .
"$ENV{YEAR}" .
".gz";
Así que que más, no me queda otra....

Buscar en Technorati: ,

La confusión de el decreto 3390: ¡Como Java no va para el baile!



Esto me lo mandó una persona que trabaja para una compañia de el estado. Les voy a colocar la pregunta sin alteraciones para que la lean y luego mi respuesta. Debo admitir que el correo me resultó muy confuso ya que los requerimientos son muy amplios, además de que hay desinformación, como explicaré más adelante.

Hola Buenas Tardes,

He estado navegando por la web desde hace aproximadamente una semana, y es quiero encontrar la forma de añadir el plugin de PERL PYTHON C# y PHP a ECLIPSE 3.1, dado que en mi sitio de trabajo estamos evaluando los lenguajes PERL PYTHON C# y PHP, para la migración de aplicaciones a Software Libre, de conformidad con lo establecido el en Decreto 3390 del 24-12-2004. En este sentido agradezco tu ayuda en cuanto a:
Requerimientos y configuración de mi PC para que corran aplicaciones elaboradas en estos lenguajes:
  1. Tales como: Añadir variables de sistema.
  2. Copiar alguna directiva Requerimientos de Interpretes adicionales que deba descargar.
  3. Donde puedo obtener las ultimas versiones disponibles de estos lenguajes Requerimientos y configuraciones de Eclipse adicionales para añadir los plugin que ya yo los tengo
  4. Y todos los tips adicionales que tengas a bien enviarme y que creas que puedan servir para estos lenguajes.

Agradeciendo su atención y oportuna respuesta, se despide, XXXX Analista de Sistema de Información TSU Informatica

PD.: Me enorgullese que sea venezolano...


Bueno, primero que nada a mi también me enorgullese ser Venezolano :). Lo otro es que creo que estás un poco confundida en cuanto a que software debes utilizar en tu compañia y me parece que alguien te pasó la lista sin poner mucha atención. Por ejemplo, C# aunque es un estandar abierto sólo cuenta con dos implementaciones, La de Microsoft y la de Mono. Mono está creciendo a pasos agigantados pero no me atrevería a catalogarlo como "completamente libre" ya que la sombra de Microsoft sobre el lenguaje es muy grande, y la versión gratuita (Mono) es bastante joven.

No veo tampoco a Java por ningún lado en tu lista de lenguajes. Java cuenta con máquinas virtuales gratuitas (Kafee, GNU Classpath), así como miles de librerías de código abierto (en licencias como GNU GPL, Apache, BSD).

Pero lo más ironico de tu correo es que ustedes quieren utilizar Eclipse 3.1 el cual es una aplicación escrita en Java (¡sorpresa!). Lo otro que me preocupa son los lenguajes que no Veo: C++, Ruby, entre otros.

OK, suficiente charla. Voy a tratar de responder lo mejor posible tus preguntas:
  1. Eclipse te permite correr un programa paso a paso, de hecho su depurador es muy completo. Lo otro es que todos estos lenguajes (por lo menos Perl) tienen su depurador incorporado.
  2. No entiendo que es lo que quieres decir. Consulta la página de Eclipse para ver los requerimientos de instalación y ejecución.
  3. Al principio de este articulo te indique todos los URL que necesitas. Te recomiendo que los visites. Adicionalmente, Perl tiene un interprete bajo Windows y Python puede correr desde Java, usando Jython.
  4. Google y los libros son tus amigos...
¿Alguien más se anima a darle un consejo a nuestra desarrolladora?

Enlaces relacionados
Buscar en Technorati:

martes, enero 17, 2006

¿Como ver peliculas y DVD en Linux?: Usando vlc

Tux
Particularmente es una ladilla bajo Linux, ya que muchos de los manejadores no tienen licencia GPL y por lo tanto no son distribuidos con el sistema operativo.

Asi que, ¿que hacer?. Bueno, antes yo estaba acostumbrado a utilizar Mplayer, pero es una ladilla. Yo (como otros usuarios) simplemente quiero instalar mi aplicación y que esta corra sin mucho problema, así de simple.

VLC player, running under Fedora Core 4
VLC corriendo bajo Fedora Core 4. Para capturar imagenes, hay que correrlo con 'vlc -V x11'


Conozcan a VLC; Es OpenSource, corre bajo varios sistemas operativos y lo mejor es que su instalación es trivial. Sólo siga las instrucciones de como configurar Yum y luego continue con la instalación como sigue:
[root@localhost ~]# yum install vlc mozilla-vlc
...
Transaction Summary
=============================================================================
Install 26 Package(s)
Update 0 Package(s)
Remove 0 Package(s)
Total download size: 11 M
Is this ok [y/N]: y
Downloading Packages:
(1/26): libdvdread-0.9.4- 100% |=========================| 56 kB 00:00
(2/26): faad2-2.0-0.lvn.5 100% |=========================| 378 kB 00:01
(3/26): a52dec-0.7.4-0.lv 100% |=========================| 46 kB 00:00
(4/26): mpeg2dec-0.4.0-0. 100% |=========================| 94 kB 00:00
(5/26): fribidi-0.10.4-8. 100% |=========================| 48 kB 00:01
(6/26): libebml-0.7.6-1.f 100% |=========================| 69 kB 00:00
(7/26): libcdio-0.76-1.fc 100% |=========================| 234 kB 00:00
(8/26): libdvdnav-0.1.10- 100% |=========================| 85 kB 00:00
(9/26): libdvdcss-1.2.9-0 100% |=========================| 29 kB 00:00
(10/26): faac-1.24-0.lvn. 100% |=========================| 77 kB 00:00
(11/26): imlib2-1.2.1-1.f 100% |=========================| 562 kB 00:01
(12/26): ffmpeg-0.4.9-0.l 100% |=========================| 1.3 MB 00:05
(13/26): xosd-2.2.14-3.i3 100% |=========================| 46 kB 00:00
(14/26): gsm-1.0.10-0.lvn 100% |=========================| 39 kB 00:00
(15/26): mozilla-vlc-0.8. 100% |=========================| 678 kB 00:01
(16/26): vcdimager-0.7.23 100% |=========================| 645 kB 00:02
(17/26): wxGTK2-2.4.2-12. 100% |=========================| 1.5 MB 00:03
(18/26): libdvbpsi-0.1.5- 100% |=========================| 38 kB 00:00
(19/26): xvidcore-1.0.3-0 100% |=========================| 249 kB 00:01
(20/26): lirc-0.7.2-1.1.f 100% |=========================| 342 kB 00:01
(21/26): portaudio-18.1-5 100% |=========================| 88 kB 00:00
(22/26): vlc-0.8.2-0.lvn. 100% |=========================| 3.5 MB 00:19
(23/26): libmatroska-0.8. 100% |=========================| 194 kB 00:00
(24/26): wxGTK-common-2.4 100% |=========================| 515 kB 00:01
(25/26): libmodplug-0.7-3 100% |=========================| 114 kB 00:00
(26/26): aalib-1.4.0-0.rc 100% |=========================| 69 kB 00:00
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing: libebml ####################### [ 1/26]
Installing: faad2 ####################### [ 2/26]
Installing: libmatroska ####################### [ 3/26]
Installing: libdvbpsi ####################### [ 4/26]
Installing: libcdio ####################### [ 5/26]
Installing: a52dec ####################### [ 6/26]
Installing: vcdimager ####################### [ 7/26]
Installing: faac ####################### [ 8/26]
Installing: aalib ####################### [ 9/26]
Installing: libmodplug ####################### [10/26]
Installing: wxGTK-common ####################### [11/26]
Installing: wxGTK2 ####################### [12/26]
Installing: portaudio ####################### [13/26]
Installing: lirc ####################### [14/26]
Installing: xvidcore ####################### [15/26]
Installing: gsm ####################### [16/26]
Installing: xosd ####################### [17/26]
Installing: imlib2 ####################### [18/26]
Installing: ffmpeg ####################### [19/26]
Installing: libdvdcss ####################### [20/26]
Installing: libdvdread ####################### [21/26]
Installing: libdvdnav ####################### [22/26]
Installing: fribidi ####################### [23/26]
Installing: mpeg2dec ####################### [24/26]
Installing: vlc ####################### [25/26]
Installing: mozilla-vlc ####################### [26/26]

Installed: mozilla-vlc.i386 0:0.8.2-0.lvn.5.4 vlc.i386 0:0.8.2-0.lvn.5.4
Dependency Installed: a52dec.i386 0:0.7.4-0.lvn.7.4 aalib.i386 0:1.4.0-0.rc5.4 faac.i386 0:1.24-0.lvn.3.4 faad2.i386 0:2.0-0.lvn.5.4 ffmpeg.i386 0:0.4.9-0.lvn.0.20.20050801.4 fribidi.i386 0:0.10.4-8 gsm.i386 0:1.0.10-0.lvn.9.4 imlib2.i386 0:1.2.1-1.fc4 libcdio.i386 0:0.76-1.fc4 libdvbpsi.i386 0:0.1.5-0.lvn.1.4 libdvdcss.i386 0:1.2.9-0.lvn.1.4 libdvdnav.i386 0:0.1.10-0.lvn.1.4 libdvdread.i386 0:0.9.4-0.lvn.1.4 libebml.i386 0:0.7.6-1.fc4 libmatroska.i386 0:0.8.0-1.fc4 libmodplug.i386 1:0.7-3.fc4 lirc.i386 0:0.7.2-1.1.fc4 mpeg2dec.i386 0:0.4.0-0.lvn.4.b.4 portaudio.i386 0:18.1-5 vcdimager.i386 0:0.7.23-0.lvn.1.4 wxGTK-common.i386 0:2.4.2-12 wxGTK2.i386 0:2.4.2-12 xosd.i386 0:2.2.14-3 xvidcore.i386 0:1.0.3-0.lvn.1.4
Complete!
Luego simplemente escriba 'vlc' y con eso ya esta listo para ver sus DVD preferidos bajo Linux..

Buscar en Technorati: ,

lunes, enero 16, 2006

Opinión de libro: Java Puzzlers



Recientemente me topé con este libro, Java Puzzlers (de Joshua Bloch y Neal Gafter). Está escrito en el mismo estilo de otro libro que considero uno de los mejores, Effective Java (de Joshua Bloch, mismo autor) excepto que aquí la idea es entretener además de provocar con errores y peculariades de el lenguaje de programación Java.

¿Vale la pena? ¿no es un "Aprenda Java en 24 horas"?

El libro es una recopilación de rompcabezas recogidos a lo largo de los años, en muchas exposiciones, charlas e Internet por los autores. Los que he leido hasta ahora son dificiles y el libro (además de ser realmente adictivo) le dejará con una sensación de haber aprendido mucho en poco tiempo. En pocas palabras, vale la pena porque lo va a poner a pensar.

Yo soy de los que piensa que las herramientas hay que aprenderlas a usar lo mejor posible; Este libro lo ayudará a alcanzar ese cometido, mientras lo entretiene y lo obliga a pensar.

Bueno, los dejo porque hay un rompecabezas que me está llamando :)

Buscar en Technorati: , ,

¿Aún sigue la lucha entre Java vs. Ruby vs. Perl?


Lunes. Aquí es día feriado y voy a aprovecharlo haciendo algunas diligencias, y por supuesto escribiendo un par de cosas en el blog.

Es algo que nunca he entendido, que un programador diga que un lenguaje es mejor que otro echandole tierra. Por ello estos últimos meses han sido bastante fuertes y han dado mucho de que hablar en la blogosfera acerca de estos 3 lenguajes. Es bueno que los hiper fanaticos se vayan a otro lado, después de todo nunca contribuyeron mucho ;)

Yo ya empecé a jugar más en serio y aún estoy algo indeciso si Groovy o Jython son las siguientes en mi lista de cosas por aprender.

Lo único que me quita el sueño es que aún Perl 6 no ha salido; Las cosas nuevas que promete se ven muy interesantes, y sobre todo su máquina virtual está dando mucho de que hablar.

Que carajo, necesito café, es muy temprano aún :)

Buscar en Technorati:

domingo, enero 15, 2006

Echando código: ¿Como ver geográficamente con quienes visitan el Blog?: El API de Google MAPS

Google Maps KodeGeek
Usando Google Maps para mostrar quienes visitan a KodeGeek.com


Desde hace tiempo que había querido jugar con el API de Yahoo para hacer mapas; No sólo no te ponen la restricción estupida de cuantas veces lo puedes llamar (como Google Maps), sino que también es muy fácil de usar. La idea es mostrar en un mapa de Yahoo en donde está la gente que visita este blog. Sin embargo ni Google ni Yahoo Maps soportan mapas de las calles fuera de los Estados Unidos o Inglaterra, mientras que Google Maps si soporta una vista satelital. Así que al final vamos a trabajar con Google Maps.

Si la vida te da limones, te sale hacer limonada (o en pocas palabras, suck it up!)

Ya hablando en serio, para hacer un mapa en Google maps usted necesita hacer lo siguiente:
  • Obtener una clave para poder usar el servicio de Google Maps. Es grátis.
  • Obtener la lista de direcciones IP a colocar en el mapa. Esas las saco yo de mi bitacora de Apache
  • Hacer el mapa entre direcciones IP y Pais con Latitud y Longitud. Más de eso adelante, este paso es crítico.
  • Escribir las coordenadas en un formato XML que el parser de AJAX de Google maps pueda entender.
  • Crear el mapa con Google maps y bajarse las coordenadas utilizando XML-RPC. De esa manera no tocamos el código, solamente necesitamos actualizar los "marcadores" (markers) de Google Maps cada vez que queramos mostrar los datos. Es obligatorio que se lea como usar el API de Google Maps, no es nada complicado.
  • ¡Exito!
La cosa se complica aquí, ya que la correspondencia entre una dirección IP y un par de coordenadas (latitud, longitud) y el país no es fácil de conseguir. Sin embargo, un aproximado debería servir, así que:
  • Utilizando NetNeo, de la gente de el proyecto CAIDA me consigo la longitud y latitud de los sistemas autonomos.
  • La base de datos de paises y direcciones IP de el proyecto LUDOS me da la otra parte de el rompecabezas.
  • Tengo que bajarme ambos archivos, y también tengo que preprocesar los archivos antes de tratar de meterlos en la base de datos en sus respectivas tablas.
  • Luego tengo que importar la bitacora de Apache en la base de datos. Hay preprocesamiento.
Sin embargo la información de LUDOS no es muy completa, ya que no tengo los códigos de las ciudades, lo cual es una ladilla. Sería genial poder decir que alguien me visita de alguna ciudad en particular, como Mérida en Venezuela.

Las buenas noticias es que si se puede, para ello nos olvidamos de LUDO y CAIDA y en vez de eso utilizamos el servicio gratuito de HostIP.info. Ellos te permiten bajarte la base de datos para que tu hagas tu propio procesamiento, pero dado que son pocas (menos de 10000) diferentes direcciones IP que vamos a procesar entonces utilizamos su API por HTTP. Les recomiendo que los visiten y que contribuyan para que así la base de datos siga creciendo.

El código que utilizamos para generar los marcadores en formato XML (Direcciones IP únicas, con todos los datos) es el siguiente:
   1:#!/usr/bin/perl
2:
3:use strict;
4:use LWP::UserAgent;
5:use Date::Manip;
6:
7:# For example: $HOME/logs/kodegeek.com-Jan-2006.gz
8:use constant LOG_FILE =>
9: "$ENV{HOME}/logs/kodegeek.com-" .
10: &UnixDate("today", "%b") .
11: "-" .
12: &UnixDate("today", "%Y") .
13: ".gz";
14:
15:my $MARKER_FILE =
16: "$ENV{HOME}/public_html/kodegeek_marker.xml";
17:
18:my %ips = &parseLogFile(LOG_FILE);
19:
20:# Get the latitude and longitude information
21:# and construct the map information.
22:#
23:# Make a backup
24:if ( -f "${MARKER_FILE}") {
25: system("mv ${MARKER_FILE} ${MARKER_FILE}.old");
26:}
27:open(OUT_XML, ">${MARKER_FILE}") || die "$!, $MARKER_FILE";
28:print OUT_XML "<markers description=\"kodegeek access log markers\">\n";
29:my $total=0.0;
30:my $used=0.0;
31:foreach my $ip (values %ips) {
32: $total++;
33: &getIpGeoData($ip);
34: if ( ($ip->getLatitude() != "")
35: && ($ip->getLongitude() != "")) {
36: $used++;
37: printf "[INFO]: Adding ip=%s, country=%s, city=%s,
latitude
=%s, longitude=%s\n",
38: $ip->getIp(),
39: $ip->getCountry(),
40: $ip->getCity(),
41: $ip->getLatitude(),
42: $ip->getLongitude();
43: print OUT_XML "<marker ip=\"" .
44: $ip->getIp() .
45: "\" country=\"" .
46: $ip->getCountry() .
47: "\" city=\"" .
48: $ip->getCity() .
49: "\" lat=\"" .
50: $ip->getLatitude() .
51: "\" lng=\"" .
52: $ip->getLongitude() .
53: "\"/>\n";
54: }
55:}
56:print OUT_XML "</markers>\n";
57:close(OUT_XML);
58:
59:if (($used < $total) && ($total > 0)) {
60: printf "[WARNING]: %s of the IP addresses were
rejected
due insufficient data\n",
61: ($used / $total);
62:}
63:
64:# Download the file from the desired URL
65:# using the free service at http://www.hostip.info
66:#
67:sub getIpGeoData {
68: my ($ip) = $_[0];
69:
70: my $ua = LWP::UserAgent->new(
71: agent => "kodeGeek/visitor_geo_map_generator.pl 1.0",
72: from => 'josevnz@kodegeek.com'
73: );
74: my $response = $ua->get("http://api.hostip.info/get_html.php?ip=" .
75: $ip->getIp() ."&position=true");
76: if ($response->is_success) {
77: my($country, $city, $latitude, $longitude) =
78: split("\n", $response->content);
79: $ip->setCountry((split("\:", $country))[1]);
80: $ip->setCity((split("\:", $city))[1]);
81: $ip->setLatitude((split("\:", $latitude))[1]);
82: $ip->setLongitude((split("\:", $longitude))[1]);
83: } else {
84: die $response->status_line;
85: }
86: return $response->status_line;
87:}
88:
89:# Parse the GeoFile
90:# @param The file to parse
91:# @return An hastable with the unique IP addresses and
92:# the number of ocurrences
93:sub parseLogFile {
94: my %IpMap = ();
95: my $file = $_[0];
96: printf "[INFO]: Parsing LogFile %s\n", $file;
97: open(INPUT_FILE, "/bin/zcat $file |") || die "$!";
98: # Not portable, but who cares!
99: while(<INPUT_FILE>) {
100: chomp($_);
101: my @tokens = split('\s', $_);
102: my $ip = undef;
103: if (! defined $IpMap{$tokens[0]}) {
104: $ip = IpInfo::new($tokens[0]);
105: $IpMap{$tokens[0]}=$ip;
106: } else {
107: $ip = $IpMap{$tokens[0]};
108: }
109: $ip->addVisit();
110:
111: }
112: close(INPUT_FILE);
113: return %IpMap;
114:}
115:
116:# Models an Ip address information
117:package IpInfo;
118:
119:sub new {
120: if (!defined $_[0]) {
121: die "[ERROR]: Please pass an IP address.";
122: }
123: my $ref = {};
124: $ref->{ip}=$_[0];
125: bless $ref;
126:}
127:
128:sub addVisit {
129: my $ref = shift;
130: $ref->{count}++;
131:}
132:
133:sub getVisits {
134: my $ref = shift;
135: return $ref->{count};
136:}
137:
138:sub getIp {
139: my $ref = shift;
140: return $ref->{ip};
141:}
142:
143:sub getLatitude {
144: my $ref = shift;
145: return $ref->{latidude};
146:}
147:
148:sub getLongitude {
149: my $ref = shift;
150: return $ref->{longitude};
151:}
152:
153:sub getCountry {
154: my $ref = shift;
155: return $ref->{country};
156:}
157:
158:sub getCity {
159: my $ref = shift;
160: return $ref->{city};
161:}
162:
163:sub setLatitude {
164: my $ref = shift;
165: $_[0] =~ s/^\s|$\s//;
166: $ref->{latidude}=$_[0];
167:}
168:
169:sub setLongitude {
170: my $ref = shift;
171: $_[0] =~ s/^\s|$\s//;
172: $ref->{longitude}=$_[0];
173:}
174:
175:sub setCountry {
176: my $ref = shift;
177: $_[0] =~ s/^\s|$\s//;
178: $ref->{country}=$_[0];
179:}
180:
181:sub setCity {
182: my $ref = shift;
183: $_[0] =~ s/^\s|$\s//;
184: $ref->{city}=$_[0];
185:}
186:
187:1;
188:
189:__END__
190:=head1 NAME
191:visitor_geo_map_generator.pl - Create a map with the location of the visitors
192:to the KodeGeek weblog.
193:
194:=head1 DESCRIPTION
195:
196:The script downloads and prepares for import data from several free sources.
197:
198:=head1 LICENSE
199:
200:GPL
201:
202:=head1 AUTHOR
203:
204:Jose Vicente Nunez Zuleta (josevnz@kodegeek.com)
205:
206:=cut
El programa cuando corre se ve así:
[josevnz@localhost bin]$ ./visitor_geo_map_generator.pl
[INFO]: Parsing LogFile /home/josevnz/logs/kodegeek.com-Jan-2006.gz
[INFO]: Adding ip=66.249.71.50, country=UNITED STATES (US), city=Manassas, VA, latitude=38.7474, longitude=-77.4854
[INFO]: Adding ip=201.243.240.170, country=NETHERLANDS (NL), city=The Hague, latitude=52.0833, longitude=4.3
[INFO]: Adding ip=64.76.62.58, country=UNITED STATES (US), city=Miami, FL, latitude=25.7757, longitude=-80.2108
[INFO]: Adding ip=66.142.40.220, country=UNITED STATES (US), city=Olivette, MO, latitude=38.6723, longitude=-90.3772
[INFO]: Adding ip=84.121.72.243, country=SPAIN (ES), city=Murcia, latitude=37.9833, longitude=-1.11667
[INFO]: Adding ip=207.46.98.80, country=UNITED STATES (US), city=CALEDONIA, MI, latitude=42.7939, longitude=-85.5132
[INFO]: Adding ip=206.48.96.113, country=VENEZUELA (VE), city=Caracas, latitude=10.4667, longitude=-67.0333
[INFO]: Adding ip=82.51.190.12, country=ITALY (IT), city=Salerno, latitude=39.3667, longitude=16.4
[INFO]: Adding ip=68.142.249.86, country=UNITED STATES (US), city=Sunnyvale, CA, latitude=37.3857, longitude=-122.026
[INFO]: Adding ip=66.196.91.121, country=UNITED STATES (US), city=MAYSVILLE, KY, latitude=38.6295, longitude=-83.7801
[WARNING]: 0.334332833583208 of the IP addresses were rejected due insufficient data
%77 de efectividad traduciendo las direcciones, todo por grátis. Bastante aceptable en mi opinión.

El XML generado se ve similar a esto:
   1:<markers description="kodegeek access log markers">
2:<marker ip="66.249.71.50" country="UNITED STATES (US)"
city="Manassas, VA" lat="38.7474" lng="-77.4854"/>
3:<marker ip="201.243.240.170" country=