Archive for January, 2009

Mi primera vez (python)

January 31st, 2009

Hace tiempo que habia visto a python, me llamo la atención por sus características poco usuales, como que los espacios tenga un valor semántico a diferencia de uno puramente visual, donde la identación en el código crea los bloques de codigos que en otros lenguajes se crean con “begin y end”, “{ y }”, etc.

Desgraciadamente no habia tenido oportunidad de usarlo para un requerimiento real de mi trabajo, pero eso cambio el día de hoy.

Hoy fue mi primera vez.

El siguiente script fue mi primero con python, toma dos parámetros de la linea de comando, el primero es un archivo con una lista de nombres de usuarios, como el que se obtiene con el siguiente comando:

1
awk -F : '{print $1}' /etc/passwd > userDatabase.txt

El segundo parámetro es un archivo que contiene una lista de usuario{Tabulador}password como por ejemplo:

1
2
3
panchito	pancho123
albertein	paparazi
dariamox	password

Lo que hace es imprimir el usuario y contraseña (separado por “:”) del segundo archivo cuando el usuario se encuentre listado en el primer archivo. Un formato idóneo para usarlo junto con chpasswd (utilería que cambia las contraseñas del sistema en modo batch).

1
python passwordFormatter.py systemUsers passwordDatabase | chpasswd

El dichoso script, es este:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import sys
 
file = open (sys.argv [1], 'r')
userList = file.read ().split ('\n')
file.close ()
 
file = open (sys.argv [2], 'r')
 
for line in file:
       userData = line.split ('\t')
       username = userData [0]
       password = userData [1]
       if username in userList:
               print username + ':' + password,
 
file.close ()

El cero, los nullables y la voidad.

January 29th, 2009

Fire_tony hizo una propuesta en su blog invitando a completar cualquiera de las seis historias que el presenta, cada una con un tema en especial, veré si puedo completar mas de una historia en el corto plazo de Fire_tony, así que aquí viene la numero cero:

El cero, los nullables y la voidad

Cero pesos traía Fire_tony en la bolsa cuando se dio cuenta de la desesperada necesidad de comprar una playera con un gran círculo en ella. «Es un cero,» dijo una comerciante. «Sólo tiene que darme una buena historia por ella. Cuesta cero pesos». La situación no pudo haber sido más horrible, Fire_tony tenía cero imaginación en ese momento, para su suerte apareció AlbertEin a la vuelta de la esquina.

Jamas lo había visto en persona, pero lo reconoció al instante, su aspecto era inconfundible. Aun así dudo un instante, «¡¿Que pedo?!, ¿el AlbertEin?, no pude ser posible, ¿o sí?, que hace aquí?». Y tenia justas razones para dudar, demasiadas razones, AlbertEin vivía cientos de kilómetros alejado de la capital, además, estaba en una ciudad grande, ¿que probabilidad habría de que se encontrara con alguien de fuera que de casualidad estuviera en la ciudad en ese preciso instante, en esa precisa calle y aparte de todo apareciera en un momento de necesidad?. Estas y mas cavilaciones invadieron al instante la mente de Fire_tony de una manera tan violenta que fue obvio para el vendedor el estado poco común de su posible cliente.

-¡He!, chico, cierra la boca y deja de tirar baba que estropeas la mercancía, dime, ¿tendré mi historia?, no tengo todo el tiempo del mundo, ¿sabes? – Mintió el vendedor, lo cierto es que que tenia todo el tiempo del mundo, hacia cientos de años que se había aburrido de otras ocupaciones, y había decidido que la mejor manera de pasar el tiempo era buscar historias curiosas e inverosímiles, como la suya propia, la cual ciertamente merece otro relato.

-¡Espera un momento, por favor! – rogó Fire_tony, y acto seguido hizo de señas a AlbertEin mientras gritaba – ¡Cabrón!, ¡AlbertEin!, ¡Por acá w, soy Fire_tony!.

AlbertEin no pareció sorprendido por el encuentro, muy al contrario parecía esperar ese momento con determinación, se limito a asentir y caminar apresuradamente hacia él, casi se podría decir que iba corriendo.

- Wey, no tengo tiempo para explicaciones, estoy buscando un objeto de gran poder y al parecer solo tú puedes ayudarme – dijo con urgencia AlbertEin – Es un objeto con cero valor, pero de un poder inmenso, pero terrible. Pose el poder de la nulidad, el vacío y el infinito, el sabio me dijo que solo tu sabrías a que me refiero.

- ¿Sabio?, ¿Poder de la nulidad?, ¡¿De cual fumaste pendejo?!, hay cero cosas de cero valor, todo cuesta, a excepcion de esta playera, pero aun así no es gratis, el señor desea una gran historia a cambio.

- Jajajajajaja – río estrepitosamente AlbertEin – Si algo tengo es una historia que contar, y esa que parece una playera normal es el gran artefacto de la nulidad. Vaya que tenemos suerte, y vaya que el sabio tenia razón, aun que no lo creas tony has salvado al mundo. Deje relato mi historia vendedor para que pueda juzgar si vale por el cambio de esa playera. Si mi historia no le parece interesante, ninguna otra lo hará.

- ¡Pero la playera es mía!, ¡yo la vi primero! – exclamó Fire_tony – No es justo que llegues aquí con una historia de vaqueros y te la lleves.

-Paciencia tony, escucha mi relato y si al final aun deseas conservarla y el vendedor queda satisfecho te podrás quedar con ella, pero si en cambio crees que yo la necesito con mas urgencia yo la conservare, ¿te parece justo?.

- De acuerdo, tenemos un trato.

Y de esta manera AlbertEin conto su relato:

Esta es antigua, realmente antigua, tan antigua como el universo mismo. Todo comenzó hace tanto tiempo que no es fácil expresarlo en años, digamos que ocurrió un instante después del gran inicio. El alfa de los tiempos.

En aquél entonces junto con toda la materia y energía del universo se crearon de la nada los primeros seres adimensionales, entidades abstractas de gran poder donde las comunes leyes del universo no región del todo sobre ellos, al menos no como las conocemos.

Estos seres, los nullables, maestros de la voidad, los cero grandes del gran cero, como se les ha llamado hoy en día, en un espacio de tiempo inconmensurable descubrieron los grandes poderes que connotaba el cero, poderes grandes y peligrosos.

Ellos descubrieron que nada era mas rápido que la luz, que nada era mas grande que el universo, que nada era mas pequeño que un quark, que nada era mas grandioso que la creación entre otras muchas cosas.

Y fue así como decidieron abrir la fabrica misma del espacio-tiempo y destilaron nada, no fue un trabajo sencillo, fue algo sucio y desagradable que incluía la resolución de un problema fundamental, la división por cero. La nada, también se conocía como la voidad ó la nulidad, y brindaba un poder inmenso, con ella se podía viajar mas rápido que la luz, pues nada era mas rápido que ella. Con ella se podía obtener energía infinita, pues nada produce energía indefinidamente, con ella se podían lograr todas las cosas que antes habían parecido inimaginables, incluso se podía obtener velocidades mayores incluso al infinito, pues nada era mas rápido que la nada, y esto inducía un ciclo infinito que rompía todos los limites imaginables, al nada ser mas rápido que la nada, la nada se hacía mas rápida aun y forzaba una nueva iteración en ese ciclo infernal.

Así, los nullables alcanzaron tal poder que había cero cosas que no pudieran lograr, cero cosas que los pudieran frenar, o eso creyeron ellos. Olvidaron algo importante, nada los podía frenar y nada los podía destruir, y fue la nada misma la que destruyo su poder y casi los dejo en el olvido.

Ocurrió una guerra de poder entre ellos, una guerra que ningún humano podría entender, totalmente fuera de los limites de nuestra imaginación, donde grandes poderes se enfrentaron, cuando uno de los bandos estuvo a punto de desgarrar el tejido mismo del universo, de estar a punto de destruir la fabrica del espacio-tiempo las hostilidades cesaron.

Los pocos sobrevivientes decidieron reunir las fuerzas restantes para sellar la nada en un objeto dimensional, y así fue como se creo el artefacto de la nulidad.

Después de eso nada se sabe de ellos, se desvanecieron, pero de alguna manera lograron conservar sus conciencias y recuerdos en el universo mismo, si sabes que buscar puedes escuchar la historia en el amanecer, en medio de una tormenta o mirando al cielo estrellado.

El artefacto a estado perdido desde ese entonces, nadie quería realmente buscarlo por que existen cosas que no deben ser encontradas, pero últimamente los tiempos han cambio y un enemigo poderoso ha empezado a tratar de apoderarse del artefacto. Afortunadamente el sabio lo previo antes y por eso me ha enviado a buscarlo, si el mal llegase a apoderarse de el, el universo entero correría peligro

Y esa, a grandes rasgos es la historia.

- De verdad que esa es una gran historia – replico el vendedor – Si esa historia no es merecedora de la playera, ninguna otra lo será, toma es tuya.

AlbertEin tomo la playera y junto con Fire_tony abandono el local rápidamente.

- ¡Que loco!, ¡gracias por la playera w, te la rifaste con el cuento! – dijo Fire_tony en cuanto se habían alejado un par de calles del vendedor.

- No tan rápido tony, no es ningún cuento, es una historia verdadera, temo que ocupo la playera y también necesitare tu ayuda

- Pero …

- Tranquilo, confía en mi, te explicare en el camino

- No iré contigo a ningún lado, ¡estas loco!

- Lo siento tony, no quería tener que llegar a hacer esto – dijo al mismo tiempo que asestaba un rápido golpe a la nuca que tomó a Fire_tony por sorpresa y le hizo perder el conocimiento.

AlbertEin tomo el flacido cuerpo de Fire_tony y continuo caminando, «Lo siento amigo, mas tarde comprenderás». AlbertEin caminó y caminó, incluso mucho tiempo después de la puesta del sol. «Cero remordimiento, cero culpa, cero fracaso». Se dijo, y continuo caminando.

¡Brisingr!

January 22nd, 2009
Brisingr, tercera parte de El Legado

Brisingr, tercera parte de El Legado

Termine de leer Brisingr, lo que creía yo era el ultimo libro de la trilogía “El legado” (Junto con Eragon y Eldest) de Cristopher Paolini, pero fue expendido para conformarse de un total de cuatro libros.

En varios aspectos se puede notar como aumenta la madures de Paolini como escritor, Roran, el hermano de Eragon continua tomando fuerza como personaje central en la historia, partiendo la historia y dedicando capítulos a cada uno de ellos alternativamente.

En algunas partes sin embargo, llegas a tener la sensación que el libro es alargado sin muy buena causa, tal ves causado por los cabos sin atar dejados por las primeras entregas, tal es el caso de el destino de Sloan y en general la lucha contra los Ra’zac.

A pesar de todo, disfrute en gran medida este libro, y espero con ansias la cuarta (y con suerte ultima) entrega de la serie, donde seguramente se vera como Eragon busca encontrar la fuente del poder de Gallbatorix (la cual se explica en el tercer libro) para poder derrotarlo, tal como ocurrio con la sexta y septima entrega de Harry Potter respectivamente.

Buena suerte a Paolini con su ultima entrega y ¡ojala se apresure!

Completa la secuencia

January 16th, 2009

Me llego a mi correo electrónico un mensaje poco usual, el cual te invita a completar la secuencia:

1, 2, 6, 42, 1806, X

Junto con esto, incluye una hoja de calculo de excel protegida con contraseña, la contraseña es el sexto elemento de la secuencia, y contiene el nombre de personas que han resuelto el (sencillo) problema.

La idea es que abras el adjunto de excel, introduzcas tu nombre y lo reenvíes a tus amigos para pararte el cuello y darles la oportunidad de que ellos hagan lo mismo.

Yo no reenvíe el correo, pero igual les dejo la secuencia por si a alguien le interesa.

Como dato curioso, la persona que me lo envió comentaba que se le hacia curioso que solo había un puñado de personas que lo habían resuelto, con una lista de 171 personas.

¿En realidad tan pocas personas lo pudieron resolver?

No

Si borro la lista, pongo mi nombre y envió el correo a diez amigos, esto lo resuelven y lo envían a otros diez amigos cada uno los cuales lo resuelven y ponen su nombre habría un total de ciento un personas que han resuelto el problema, pero cada copia tan solo contendría un total de tres personas listadas.

Lo que el archivo nos muestra no es la cantidad de personas que resolvieron el problema, si no tan solo la profundidad de la rama del árbol de amigos que enviaron el mensaje en el que te encuentras actualmente.

Por lo que el experimento se vuelve fútil, termina habiendo miles de copias del mismo mensaje con distintos nombres en cada mensaje y además, ¿a mi que me importa que una persona desconocida de río de janeiro resolvió el problema hace algunas semanas?

La maldición de los juegos inconclusos

January 13th, 2009

El post de Kid acerca llamada “Mis juegos pendientes” (No los mios, los de el), me recordó la pila de juegos que e iniciado y por alguna razón no termine, también están los que termine pero no e conseguido sacarle todo lo que tenia planeado. Sin más, la lista de juegos, donde me quede y una patética escusa por mi comportamiento.


Super Mario GalaxyMario Galaxy lo habia terminado con Mario y estaba en camino de tomar todas las estrellas con Luigi cuando betito se hecho al plato mi savefile. Algunos meses después de haber superado mi trauma continúe jugando con la firme determinación de sacar todas las malditas estrellas de ese hijo de puta. Lamentablemente el hijo de puta fue mas listo que yo, y a escondidas mientras yo dormía el disco salio de su caja y se empeño a frotarse contra todo objeto punzo cortante que tenia alrededor. ¿El resultado?, cuando vencí a Bowser como Mario el juego se trabo por que no podía continuar leyendo el disco, desde entonces no lo he llevado a pulir y mi venganza sigue pendiente.



Super Paper MarioCuando había conseguido a Peach, Bowser y Mario en mi team y solo faltaba conseguir al maldito desertor de Luigi mas haya de la mitad del juego, Super Paper Mario se unió con Mario Galaxy en su orgía con tijeras, grava y todo aquello rasposo y punzo cortante. Sigue esperanto junto con Mario Galaxy el día que me decida a llevarlo a la juvenil para que pulan los estragos causados por esa noche de pasiones desatadas.






No More Heroes
Ahh!!, No More Heroes, una extraña relación de amor y odio. Si tan solo travis no me obligara a rejuntar cocos para seguir pateando traseros todo seria ideal. Iniciamos en el Rank 11 y paso paso avanzamos de la mano hasta ser los numero 4 (+/- 1). Deje de jugarlo en ese momento por que el modo de juego en la ciudad me canso. El juego lo preste a Meteorixxx y estoy esperando tener un poco de tiempo para volver a jugarlo para terminarlo una ves que me haya desintoxicado del hastió causado por los minijuegos necesarios para conseguir dinero.




Prince of Percia Rival Swords
Este juego apenas si cuenta, llego con el visir, y estuve a punto de derrotarlo, escale las rocas suspendidas en el aire y salte hacia el para darle el golpe final, pero por alguna estúpida razón salte chueco y caí al suelo en ves de clavar mi daga en su corazón. Tan cerca y tan lejos, deje de jugarlo por que llego la nueva oleada de juegos, después tendré que derrotar al visir.






The Simpsons Game
Con este juego no ocupo ni excusarme, los de EA se aseguraron de que este juego no lo soportes por mas de dos horas seguidas, mi avance en el juego es pasmoso.









The House of the Dead 2 & 3 Return
Solo lo e jugado ocasionalmente, no lo suficiente para tener avances significativos. Tendrá que esperar a mejores días.










Mario Kart Wii
Solo me faltaban sacar el oro en un par de copas, cuando el disco se rayo y no lo e mandado a pulir.










Y tu, ¿que juegos tienes abandonados?

Problemas de Programación I

January 12th, 2009

Aunque pocas personas leen este blog, y mas pocas aun saben de programación voy a experimentar poner pequeños problemas de programación para que los resuelvan en los comentarios y así ganen la infame gloria en el dulce cáliz de la victoria.

Las respuestas pueden ser en cualquier lenguaje o pseudocodigo a excepción de los casos donde se indiquen, tratare de empezar con problemas sencillos y tal ves aumentar la dificultad en el futuro. Algunos problemas incluso podrían ser resueltos por personas que no sepan programar si describen los procesos paso a paso en español.

Los problemas tendrán dos características:

  1. Las respuestas requerirán de ingenio o pensar en otra forma de resolver problemas comunes
  2. En algunas ocasiones se requerirá que se preste especial atención en la formulación del problema, una palabra puede cambiar muchas cosas.

Sin mas por el momento les dejo los problemas iniciales:

  1. Define una función para multiplicación de dos números enteros mayores a cero sin utilizar el operador * (multiplicación)
  2. Define la función anterior sin utilizar ciclos dentro de la función (No for, while, do until, goto, etc.)
  3. Define una función similar a la anterior pero que realice divisiones (resultados enteros)

Meme whore

January 10th, 2009

Gnoblis me ha pasado un meme usando el meme de “no me gustan los memes pero aun así contesto un meme y lo rolo”.

Podría haber respondido usando el meme “Maldito, te odio por haberme enviado la plaga pero aun así contestare el meme y lo seguire esparciendo como langostas”.

En ves de eso haré algo que nadie tenia pensado que podía ser posible, algo audaz e inaudito, algo valeroso, toda una epopeya épica.

Me resistire al meme

Si, tu también puedes hacerlo, es difícil, claro, pero no imposible.

Para algunas personas un meme es una entrada fácil para su blog y les parecería inverosímil rechazar tan descarada oportunidad de engordar sus paginas sin sudor ni lágrimas de por medio. Dejen les cuento un secreto. “No ocupan esparcir al meme para escribir acerca de el”. ¿Ven?. Yo no estoy contestando el meme, tampoco estoy esparciendo la peste entre mis amigos mas cercanos o queridos y aun así, estoy escribiendo acerca de el. Una entrada no tan fácil como contestar un tonto meme, pero aun así puedes aprovechar el pretexto de inspiración y escribir unas lineas tan tontas como el meme, aun que con un poco mas de consistencia.

Otras personas ven este tipo de memes como una oportunidad de “conocerse” mejor, saber los gustos y disgustos de las personas con que se relacionan. ¿Me permiten contarles otro secreto?, “¡No sirve!, una persona no es las seis cosas que mas le agradan o las seis cosas que mas le molestan, yo no estoy definido por mis tres canciones favoritas o la película que mas me ha hecho llorar, no se puede esperar conocerme preguntando la lista de cuatro lugares que quisiera visitar o conocer mis inquitudes conociendo mi libro preferido y el que e aborrecido mas. ¿Quieres conocer a alguien?, invitalo a un café, vallan a cenar, vean una película juntos. ¿Son blogueros y viven a cientos de kilometros de distancia? una conversación de media hora te hace conocer mas a una persona que cinco docenas de memes. Una trivia no te hace conocer mejor a alguien.

Otras personas contestan los memes por no tener nada mejor que hacer y perder el tiempo, si lo que quieres es tener algo con que entretenerte puedes hacer una entrada quejándote de los memes y dando alternativas para satisfacer las necesidades viscerales que usualmente son saciadas con los memes, también puedes tomar el libro que hace tiempo habías olvidado, ver la película que te recomendaron y lleva meses arrumbada, o incluso puedes buscar en la wikipedia acerca de aquello que siempre te intereso pero nunca habias tenido oportunidad de ver como funcionaba o conocer mas acerca de ello.

Stop the meme, dí no al hermano menor de las cadenas.

SVG+Firefox me han fallado

January 8th, 2009

Recientemente me vi con la necesidad de crear una pagina web que visualizara gráficos dinámicos de acuerdo a ciertos datos recabados en tiempo real.

Debido a que ocupaba mostrar el gráfico tanto en una pantalla gigante como en dispositivos móviles pensé que la solución obvia era usar gráficos vectoriales. ¿Que tan difícil podía ser?.

Que ingenuo fui.

Innegablemente la clara solución era SVG (Scalable Vectors Graphics), sabia que me toparía con un par de problemas, principalmente con compatibilidad entre navegadores. Ninguna batalla que algún desarrollador web no haya luchado alguna vez. Un trabajo sucio pero alguien tiene que hacerlo.

IE no soporta SVG, a su vez usa un formato propietario VML (Vector Markup Language) el cual no tengo interés de aprender (ningún otro navegador lo soporta), pero afortunadamente Adobe ofrece un plugin que le da a IE la posibilidad de visualizar SVG, una pequeña molestia pero nada infranqueable.

Entre otras cosas lo que requería hacer era insertar varias instancias de una misma imagen SVG sobre otra imagen SVG base y manipularla a través de scripting para asignar su posicionamiento, mascara, etc. Pero al intentar insertar la imagen no aparecía nada.

WTF?!
Después de batallar, leer, moverle, etc. Se me ocurre insertar una imagen PNG a la vez de SVG y todo funciona correctamente. WHAT?. Resulta que Firefox solo soporta insertar imágenes rasterizadas (jpg, png) dentro de SVG, y no puedo insertar otras imágenes vectoriales dentro de imágenes vectoriales.

DAMN!
En ese instante quede aturdido, que sentido tiene usar SVG por ser escalable si no puedo insertar imágenes escalables (Ojo, es un bug de Firefox, la recomendación de SVG especifica que esto debe de ser permitido). No tenia sentido que siguiera con mi esfuerzo de implementarlo a golpe de SVG con javascript.

Por mucho que me doliera tuve que abandonar la solución que utilizaba estandares para usar formatos propietarios.

Una ves mas, Flash ha ganado la batalla.