- Llega un momento en que no sé si lo que acabo de leer/escuchar/decir era en alemán o en inglés. Al escribir no pasa. #
- Recomendado: Safari Reader http://bit.ly/9LSOPB #
- Para una vez que tengo ganas de escribir en mi blog, no se me ocurre de qué. #
- I NEED to go there: Miniatur Wunderland *** official corporate video *** largest model railw… http://youtu.be/PN_oDdGmKyA #
- Recomendado: Linux y la fragmentación: si, ocurre http://bit.ly/aZUmjx #
014.06.10 Tweets de esta semana (2010-06-14)
Tenía ganas de haber publicado algo sobre el Festival de Eurovisión 2010 este año cuando tocaba, que es hace dos semanas. Cuestiones varias me impidieron redactar esos pronósticos y comentarios que tan ansiados iban a ser por mis lectores. No pudo ser, será para el año que viene, o no.
La cosa es que comentar la jugada a día de hoy no deja de ser un ejercicio de Arqueología, esto de Eurovisión está caducado a los cinco días. Sin embargo, he mantenido un intercambio de mensajes muy simpático con Héctor Calvo sobre el asunto, que no deja de merecer su publicación en este blog. A continuación, y sin censura, la conversación entera:
Saúl: Para una vez que tengo ganas de escribir en mi blog, no se me ocurre de qué.
Héctor: http://www.youtube.com/watch?v=8QSgNM9yNjo
S: Ya casi para el año que viene. Yo también me he quedado con las ganas, pero chico, esa semana estaba bastante ocupado. Ahora ya me queda muy lejano, aunque sigo intentando aprenderme la canción de Israel de memoria.
H: Mientras no sea la de Serbia… No te veo yo con ese pelazo
S: Pues me la sé casi mejor que la de Israel, de tan agradablemente hortera y chorra que es: Liubiché, liubiché, yastroní. Es lo poco que quedó identificable con la Eurovisión de la década pasada. Ahora que el estilismo, pasando.
H: Y no me dirás que Armenia no se encontraba entre tus favoritas, jajajaja…
S: Por canción no, ¡por lo otro sí! Es que no me jodas, una canción que se llama “hueso de alberge” no puede estar bien.
S: Oye, a lo tonto ya tengo la mitad del artículo ya escrito. ¿Y si copio y pego esta conversación?
H: Te cedo los derechos
H: Pero tampoco te olvides de España dando la nota, aunque no sea novedad precisamente. ¿Has visto este vídeo? http://www.telecinco.es/elprogramadeanarosa/detail/detail23032.shtml
H: Yo he visto entero el discursito chapurreando inglés del homenaje a Elvis pero ahora no lo encuentro.
S: Paso de ver al tío ese, se me hierve la sangre. Cuando Uribarri dijo eso de “felizmente identificado y detenido”, me salió un “felizmente identificado y ejectuado” de una forma terriblemente natural.
S: ¿Algo más que añadir? Si no, lo publico como que ya.
H: Uribarri es otro, que sólo se alegraba cuando acertaba los puntos y cuando no lo hacía, parecía que le estaban haciendo una afrenta personal.
H: Publica, publica, creo que hemos resumido lo más relevante
S: ¡Poniendo en marcha la rotativa!
007.06.10 Tweets de esta semana (2010-06-07)
- MARXIMILIANO, el muñeco comunista ( MaXi BearZi 2007) http://youtu.be/DwGRPVrKvUw #
031.05.10 Tweets de esta semana (2010-05-31)
- Recomendado: Entrando y saliendo del simulador http://bit.ly/94MZV2 #
- Recomendado: ¿Cuántos matemáticos hacen falta para cambiar una bombilla? http://bit.ly/9yo86s #
- Recomendado: La prueba de Betchdel: las mujeres en las películas de cine http://bit.ly/9DUybB #
- Recomendado: El primer ser humano ‘infectado’ por un virus informático http://bit.ly/dsLUbK #
024.05.10 Tweets de esta semana (2010-05-24)
- Recomendado: Múnich (München) « LA LIBERTAD Y LA LEY http://bit.ly/cV2eFs #
- Recomendado: Hackeos memorables: Key2Audio, el primer sistema anticopia de Sony http://bit.ly/cvU5wx #
- Recomendado: Campfire http://xkcd.com/742/ #
- Tractor-fight from "Alluda Majaka" http://youtu.be/-E6q-m1tLn8 #
- Cherokee language in one word: ᏗᏘᏲᎯᎯ (pronounced "ditiyohihi") literally "he argues repeatedly and on purpose with a purpose" means "lawyer" #
- La Marcha Imperial con gaitas en Santiago de Compostela: Stormtrooper Parade 2010-05-21 http://youtu.be/XINBEQiArgQ #
- Bitter Sweet Symphony- The Verve (subtitulada) http://youtu.be/qzYwoKu619w #
010.05.10 Tweets de esta semana (2010-05-10)
- Recomendado: La primera beta de VirtualBox 3.2.0 ofrece la posibilidad de virtualizar Mac OS X http://bit.ly/d89tE5 #
- May the fourth be with you! #
- Recomendado: Redes sociales distribuidas con Diaspora http://bit.ly/9kt5fb #
- Recomendado: El paraguas musical http://bit.ly/cjpyfY #
004.05.10 Hash en Ruby
Uno, que tiende a aprenderse la teoría de cabo a rabo e intentando comprenderla, falla a veces en las cosas más inmediatas de ¡MTP2!. Pues resulta que estaba yo creando unos índices invertidos de una colección de documentos de texto plano de 115 KB en total para un motor de búsqueda muy sencillo en Ruby. A la hora de crear el diccionario para los términos no me rasqué mucho la cabeza y opté por un array. Así, para buscar la lista de documentos asociada a un término tenía que buscarlo y si no estaba, crearla, o si estaba, añadir el documento. Una cosa así:
def initialize @documents = Array.new @dict = Array.new end def storeDocument( document ) @documents.push(document) document.terms.each{ |t| pl = @dict.detect{ |pl| pl.term == t } if pl == nil pl = PostingList.new( t ) @dict.push( pl ) end pl.addPosting( Posting.new( document.id ) ) } end
Observemos primero la belleza del código en Ruby y su delicada e inmediata sencillez. Este lenguaje sólo lo pudo hacer un japonés, que a buen seguro sabe escribir haikus. Bien que falten excepciones y demás historietas, sólo quiero centrarme en el código “en el mundo de Yupi”.
Total, que ejecuto el programa principal, y le pido que añada mi directorio de ficheros de ejemplo. Vaaaaya, tarda un poquito para ser veintitantos ficheros: unos 70 segundos de media. Como tenga que indexar siquiera mi blog, vamos listos. Total, que empiezo a mirar código, descarto por aquí y descarto por allá, y llego a la conclusión que espero que el atento lector haya descubierto después de las pistas que le he dejado: la búsqueda del término en el array-diccionario es de orden O(n), esto es, una burda, ineficiente y costosísima búsqueda lineal.
¿Y qué hemos aprendido de aquel señor de lúcida cabeza, aquellos que hemos tenido el gran privilegio de atenderlo? Para buscar, cómprate un Hash. Ni corto ni perezoso, arreglo el perifostio anterior como así:
def initialize @documents = Array.new @dict = Hash.new end def storeDocument( document ) @documents.push(document) document.terms.each{ |t| pl = @dict[t] if pl == nil pl = PostingList.new( t ) @dict[t] = pl end pl.addPosting( Posting.new( document.id ) ) } end
Repito la prueba y el tiempo de indexado se reduce a menos de un segundo. ¿Magia? no, hashing.
003.05.10 Tweets de esta semana (2010-05-03)
- Recomendado: Comic for April 26, 2010 http://bit.ly/aw2rgl #
- Recomendado: Corrompe documentos a propósito con Document Corrupter http://bit.ly/b4BSSD #
- Recomendado: Soluciónalo con 3D http://bit.ly/9oAD25 #
- Recomendado: WeakHashMap y una posible solución de diseño http://bit.ly/9FVBwZ #
- Rolling Stones ft. Christina Aguilera – Live With Me [Live HQ] http://youtu.be/dM17IPIFxUs #
- Recomendado: Delfines inteligentes http://bit.ly/blZ5a0 #
026.04.10 Tweets de esta semana (2010-04-26)
- Recomendado: Los profesores http://bit.ly/dmLz1N #
- Recomendado: XAuth: nuevo intento del resto de redes sociales de luchar con Facebook http://bit.ly/9gC7Oj #
- Recomendado: CodeSOD: Don't Pass The Password http://bit.ly/bJ6TiU #
- Recomendado: El principio de Arquímedes, aplicado como báscula de baja tecnología http://bit.ly/bEqjoo #
- Recomendado: ¡Feliz Día del Libro! http://bit.ly/c51KGr #
019.04.10 Tweets de esta semana (2010-04-19)
- Recomendado: Seat Selection http://xkcd.com/726/ #
- Recomendado: En España los ebooks descargados de Internet tributarán al 16% de IVA http://bit.ly/dzss6S #
- Recomendado: Mankind, Humankind, and Gender http://bit.ly/9lAcB8 #
- Concierto de Aranjuez, Armik. http://youtu.be/tqZ1rXsOyVU #
- WTF? – Abraham Lincoln: Vampire Hunter http://youtu.be/X58RPS665V0 #








