Kementeus Blog

Bienvenidos a kementulandia!

Friday, October 20, 2006

Me voy de blogger

Bueno, como a algunos les había comentado, me cambié hoy de blog provider, siento que aunque Blogger es suficiente para el usuario promedio de blogs (entiendase alguien como yo que escribe de vez en cuando) me decepcionó el hecho que por estar ahora en su versión “beta” ya me es imposible usar herramientas de posting como el Live Writer (luego escribiré mas de esto).

Aunque he encontrado varios shortcuts para poder migrar mis datos de Blogger Beta a Wordpress, ninguno de esos ha resultado como esperé, y luego de intentar volver a postear cada una de mis entradas (como no eran muchas dije que me arriesgaba a hacerlo) me decepcioné de mi falta de cultura de blogging, entonces me dije “nah, mejor con las dos ultimas que he hecho”. Y heme aquí en mi nuevo blogging.

Me ha sorprendido la facilidad de WordPress y el soporte increíble que tiene para plugins, de hecho hasta el momento estoy feliz con mi nuevo blog.

Espero verlos por mi nuevo blog http://kementeus.wordpress.com , saludos!

Thursday, October 19, 2006

Bugs Muere!!!

No se ustedes pero a mi me caian mal la mayoría de los "buenos" en las comicas de WB, siempre esperé que el coyote atrapara al correcaminos y nunca me explicaba como era posible que el coyote gastara tanto en instrumentos e inventos marca Acme y no pudiera comprar una pizza! Digo yo que eran las ganas de chingar y de no tener nada mas que hacer.

El otro caso era el del Conejo Bugs, me caía mal, especialmente cuando andaba por ahi vistiendose de mujer y besando a Elmer o a Sam. Además nunca entendí tampoco porque el cazador Elmer nunca pudo hacerle nada a Bugs a pesar que andaba con su escopeta de ahi para allá.

Bien, esos tiempos de espera y preguntas han terminado, aquí estan las respuestas a todas mis dudas de la relación de Bugs y Elmer. Sólo me toca esperar a ver si el coyote al fin hace lo suyo con el correcaminos.

Labels:

Wednesday, October 18, 2006

Regalo libros de .NET 1.1 y VB.net

Tengo las fotocopias o mejor dicho, lo que dan las malas empresuchas estas de training en Guatemala en VB.net en mi casa ocupando espacio. Es todo el ciclo de .NET y VB.net 1.1 por si alguien los quiere.

Si para la otra semana nadie pasa buscando los libros tendre que regalarselos al señor que recoge la basura.

Cualquier cosa ya saben como contactarme

Labels:

El misterio del Messenger User ID

Hace un tiempo mi novia me pregunto cómo hacer un backup de los emoticons en el messenger, dispuesto a averiguarlo decidí buscar en mi Windows donde guardaba los emoticons y datos similares.

Dando vueltas encontré la carpeta en cuestión (quizás en otra entrada les diga donde es) y revisé que efectivamente estan todos los datos de usuario en ese lugar. Me topé con la característica que hay un monton de carpetas o directorios con un número en específico. Interesante, como lo sospeche se trataba de un Hash numérico del nombre de passport del usuario, número el cual el Messenger utiliza para varios menesteres, entre esos el crear la carpeta para guardar emoticons, winks, fondos y similares.

Aunque encontre cual era la carpeta en mi computadora para mi usuario passport mi siguiente pregunta y reto era como transformar de un nombre passport a un Hash de usuario de Messenger (digo de esta manera y no al revés ya que quien está familiarizado con los Hashes como md5 sabran que se puede de una via, no de ambas; bueno, en realidad se puede con análisis numérico pero esos son otros veinte pesos).

Luego de mucho tiempo de estar buscando en internet y evitar las típicas páginas de idioteces como "baja tu emoticon" y foros de usuarios sin sentido llegue a un lugar donde explicaban en VC++ code como crear el hash, con editor en mano y mi Python 2.5 decidí crear la clase que se encargara de eso. Me topo con el primer inconveniente y la primera idiotes a mi parecer que tiene el algoritmo del que llamaré el "Hash de Messenger", el algoritmo usa y depende de overflow de los números. Para quien no está acostumbrado a cosas como estas es cuando por ejemplo trato de meter un número de punto flotante en un entero, como recordaran un entero usa menos espacio que un número de punto flotante por lo tanto en el entero solo entraran ciertos bits del número de punto flotante. En lenguajes como C/C++/C# es relativamente sencillo ya que se pueden hacer overflows de números de forma sencilla y el compilador se encarga de todo, el problema es q en lenguajes de scripting donde no son tipificados la variable automáticamente se adapta a la nueva longitud del valor.

Bueno, con esto en mano decidí crear una mi solución sencilla que quizás a alguien más le pueda servir en el caso de emular overflows de números en Python, Ruby o inclusive PHP y Java (en este último a pesar de ser fuertemente tipificado si se trata de hacer el overflow obtendremos una excepción).


def overflow(number) :
if number > 4294967296 :
return number % 4294967296
return long(number)

class UserID :
__passport = None
def __init__(self, passport) :
self.__passport = passport.lower()

def getHash(self) :
sum = long(0)
for item in self.__passport :
buffer = sum * 101
buffer += ord(item)
sum = overflow(buffer)
return sum

if __name__ == '__main__' :
passport = UserID('someuser@hotmail.com')
print passport.getHash()

Lastimosamente no he encontrado aun la forma en que blogger pueda crear bonitas entradas para código fuente con resaltado y similares a las que existe en pasteit (http://www.rafb.net/paste) o bueno, quizas un dia encuentre como hacerlo :P

Otro día les publico o explico como hacer el backup de los emoticons y similares, aun no decido si sigo haciendo mi programita en Python :P

Saludos

Labels: ,