Habi Hablóg
Declaro:
XML válidoXHTML válido800x600 +
RSS válidoCSS válidoNavegador digno
  Blog   Archivo   Contacto   Administración  

Acerca de

Matemático, informático, aficionado a la electrónica, friki... y otras cosas que no vienen a cuento ni pasan los filtros de palabras.

¿Queríais un blog? Ahí va.

Red antisocial

¡Me van a volver loca! 2.0
La Fragata Portuguesa

Z
¡Me van a volver loca!

Últimos posts

El expediente X que nadie pidió
eNigma
La cuadratura del píxel
Portando desde Spectrum
Inexorable

Últimos comentarios

Habi
NoSupoResolverLaFuncion
Edu
Habi
EnriqueGG

Calendario

No hay fechas.

Categorías

Chorradas
Paranoias
Posts lúcidos
Tecnoesoterismo
Yuyus

Cenas de Abj

Abj debe 7 cenas.

Frase célebre

Zarith dice: yo puedo tragármelas todas

Croquetón convergente

Habi - 28/12/2006 0:10:14 - Yuyus

33 34 20 33 31 20 32 30 20 33 33 20 33 31 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 34 20 32 30 20 33 33 20 33 38 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 36 20 32 30 20 33 33 20 33 31 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 37 20 32 30 20 33 33 20 33 33 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 32 20 32 30 20 33 33 20 33 30 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 37 20 32 30 20 33 33 20 33 30 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 36 20 32 30 20 33 33 20 33 39 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 36 20 32 30 20 33 33 20 33 33 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 36 20 32 30 20 33 33 20 33 31 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 36 20 32 30 20 33 33 20 33 34 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 36 20 32 30 20 33 34 20 33 36 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 32 20 32 30 20 33 33 20 33 31 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 32 20 32 30 20 33 33 20 33 30 20 32 30 20 33 32 20 33 30 20 32 30 20
33 34 20 33 31 20 32 30 20 33 33 20 33 31 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 34 20 32 30 20 33 33 20 33 39 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 36 20 32 30 20 33 34 20 33 35 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 36 20 32 30 20 33 34 20 33 36 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 36 20 32 30 20 33 33 20 33 33 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 36 20 32 30 20 33 33 20 33 35 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 36 20 32 30 20 33 34 20 33 35 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 37 20 32 30 20 33 33 20 33 34 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 36 20 32 30 20 33 33 20 33 35 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 32 20 32 30 20 33 33 20 33 31 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 30 20 32 30 20 33 34 20 33 34 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 30 20 32 30 20 33 34 20 33 31 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 30 20 32 30 20 33 34 20 33 34 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 30 20 32 30 20 33 34 20 33 31 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 35 20 32 30 20 33 33 20 33 33 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 36 20 32 30 20 33 33 20 33 39 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 36 20 32 30 20 33 33 20 33 37 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 37 20 32 30 20 33 33 20 33 35 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 36 20 32 30 20 33 33 20 33 35 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 32 20 32 30 20 33 33 20 33 30 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 36 20 32 30 20 33 33 20 33 32 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 37 20 32 30 20 33 33 20 33 35 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 37 20 32 30 20 33 33 20 33 33 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 36 20 32 30 20 33 33 20 33 33 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 36 20 32 30 20 33 33 20 33 31 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 36 20 32 30 20 33 34 20 33 35 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 36 20 32 30 20 33 33 20 33 34 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 36 20 32 30 20 33 34 20 33 36 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 32 20 32 30 20 33 34 20 33 33 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 32 20 32 30 20 33 33 20 33 30 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 36 20 32 30 20 33 33 20 33 38 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 36 20 32 30 20 33 33 20 33 31 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 37 20 32 30 20 33 33 20 33 39 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 32 20 32 30 20 33 33 20 33 30 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 36 20 32 30 20 33 34 20 33 34 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 36 20 32 30 20 33 33 20 33 39 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 36 20 32 30 20 33 34 20 33 33 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 36 20 32 30 20 33 33 20 33 35 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 37 20 32 30 20 33 33 20 33 33 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 32 20 32 30 20 33 33 20 33 30 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 36 20 32 30 20 33 33 20 33 34 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 36 20 32 30 20 33 33 20 33 35 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 32 20 32 30 20 33 33 20 33 30 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 37 20 32 30 20 33 33 20 33 30 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 37 20 32 30 20 33 33 20 33 32 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 36 20 32 30 20 33 33 20 33 35 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 36 20 32 30 20 33 34 20 33 34 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 36 20 32 30 20 33 33 20 33 39 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 36 20 32 30 20 33 34 20 33 36 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 37 20 32 30 20 33 33 20 33 33 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 32 20 32 30 20 33 33 20 33 30 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 33 20 32 30 20 33 34 20 33 31 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 37 20 32 30 20 33 33 20 33 30 20 32 30 20 33 32 20 33 30 20 32 30 20
33 33 20 33 32 20 32 30 20 33 34 20 33 35

2


Carta

Habi - 27/12/2006 23:26:43 - Chorradas

Queridos Reyes Magos:

Este año me he portado relativamente bien. Y ese es el problema. Quiero que para este año me concedáis un único deseo: quiero ser un cabronazo.

Me explicaré: aprovechando este final de año para reflexionar, me he dado cuenta de que en la mayoría de los casos he sido bueno con los demás pero algunas veces los demás no lo han sido conmigo. He transigido, he hecho deberes que no eran míos, he esperado y en general ayudado a la gente, pero no al revés. Hace cinco años estaría pensando como ahorcarles con sus propias tripas, pero ahora me dan pena.

Y ese es el problema, me dan pena. Me estoy convirtiendo en una puta nenaza como Jesús (ya se que tampoco os cae muy bien, sólo le regalasteis cosas una vez y encima de todo a 100; salvo los 2g de oro, que no daban ni para pipas, por otro lado). Es por eso que quiero ser un cabronazo egoísta, y si puede ser también me pido ser misógino e hipócrita, que son dos palabras que me gustan como suenan.

Felices fies... digo... ¡que os jodan! (tengo que ir practicando).

P(t): El grabador ese de PICs tan majo ya me lo compro yo, que en cosas tecnológicas no soléis atinar; aunque aun guardo con cariño ese Navy Moves para Spectrum.

2


Y yo me iré...

Habi - 03/11/2006 21:17:00 - Posts lúcidos

Me apunto a la moda de blogs chapados por tiempo indefinido.

3


Otoño

Habi - 30/10/2006 21:45:00 - Yuyus

Teorema: Finde de mierda.

Demostración:

Viernes: Se acabó lo que se daba. :(

Sábado : Cumpleaños familiar en Seseña... si no fuese por la propia cumpleañera P, me hubiese abierto las venas con un langostino. :6

Domingo y Lunes: Sutto *Y* muette. Con su velatorio, funeral y trabajo a tiempo parcial de Call-Center. :S

Moraleja: Cervicales jodías... again...

3


Espejo roto

Habi - 25/10/2006 23:13:00 - Chorradas

Merlín se preparó para salir. Se lo tomó con calma; el tiempo no significa lo mismo para alguien que puede manipularlo a su antojo. Se puso finalmente su capa de crin de unicornio y el amuleto de Kr´noor. Podría haber ido a su destino atajando por otros planos o creando un portal, pero decidió ir andando. Eso sí, a la velocidad de la oscuridad, que como todo mago sabe, es más rápida que la de la luz; en cuanto la luz se va la oscuridad YA está.

-

Despertó, como cada noche, con los ojos abiertos; hacía rato que el sol se había escondido. Se levantó, como cada noche, y como cada noche se dio su baño con agua hirviendo, con esencias y con perfumes. Se vistió impecablemente, y sin apenas esfuerzo dio de un salto de algo más de tres metros que le situó en la ventana de arriba de su loft, situado en el ático. Desde ahí arriba se veía toda la ciudad. Quizás se alimentase un poco de sangre fresca antes de acudir a su cita. Como cada noche.

-

"Mierda, no llego", dijo Roger. "Puta mierda de basura Klingon... Debería haberme comprado cuando pude aquel X-Wing de segunda mano..." volvió a decir mientras manipulaba los mandos para trasladar la energía de los escudos hacia los motores. "Aguantarán," pensó, "y cuando esté lo suficientemente cerca la gravedad y el rayo tractor harán el resto". Fijó el rumbo en el ordenador de a bordo, saltó al hiperespacio y se fue a dormir un rato hasta que llegase a la reunión.

-

Allí estaban todos: El hada, el mago, el vampiro, el astronauta, el hombre lobo, el científico loco, el superhéroe, el periodista, el cultista loco, el detective, la momia y los demás.

Todos acudieron a su cita, nadie quería faltar a su partida mensual de rol. Jugaban a que estaban en un mundo sin magia, pero con una "ciencia" muy básica. Jugaban a ser consultores, informáticos, seguratas, señoras de la limpieza... Pero esta vez el master les guardaba una sorpresa.

"El jefe os reúne a todos," dijo, "y os dice que vuestra empresa ha sido comprada por Microsoft, y que habrá un reajuste de plantilla...", y con estas palabras empezó la más difícil de todas la crónicas...

2


H

Habi - 25/10/2006 15:07:00 - Paranoias

Cuando H no es de Habi, proclamo: ¡he vuelto!

1


Post ajeno

Habi - 22/10/2006 13:11:00 - Chorradas

- Friki -
 
Friki, frik o freaki (que en la forma, y no necesariamente en el significado, procede del inglés freak, que significa raro, extravagante, estrafalario o fanático), es un término usado en el idioma español para referirse a la persona interesada u obsesionada al menos con un tema, afición, o hobby en concreto. El interés que presenta el friki puede llegar en varios casos a que sea tachado de extravagante, o el integrar parte de una comunidad específica, como este blog.
Hay distintos niveles de "frikismo", siendo el más extremo el llevar su afición o interés, hasta el punto de convertirlo en una forma de vida, en éste caso trabajando de ello.

Normalmente se ha relacionado al friki con la informática, las matemáticas, los cómics, el anime, las películas y series de ciencia ficción, fantasía, manga y/o anime y rol, pero el término puede extenderse a cualquier interés o gusto específico o desmesurado. La palabra se usó para referirse también a las personas que se catalogaban de extravagantes, producto de tener por lo menos una obsesión extrema o extraña con un tema en concreto; en el cual normalmente eran especialistas. Producto de un interés común que se presentaba entre un número de personas, muchos de los denominados freak empezaron a reunirse en grupos específicos.
(Véase Raro)
 
- Raro/a -

1 Que es poco común o frecuente. Es muy raro verlo sin camisa y pantalón de vestir.
2 Que es escaso en su clase o especie: Es muy raro encontrar a alguien con una oveja hinchable.
3 Adjetivo / nombre masculino y femenino
[persona] Que tiene un comportamiento extravagante o sorprendente, o poco común para lo que se considera habitual, natural o normal: En Villaverde puedes encontrar algunos raros individuos que pasean al perro con zapatos de vestir y escuchando a Germanui.
 
Otros sinónimos: Desacostumbrado, inusual, anormal, Habi, extravagante, estrambótico, maniático, matemático, excéntrico, estrafalario.
 
 
 
                                                                                                          By: TinTi *46

10


Algo

Habi - 20/10/2006 12:08:00 - Yuyus

Nació porque no tenía otra cosa que hacer, fue feliz mientras el tiempo y las autoridades lo permitieron.

Y se vistió de todo lo malo; sueños rotos, el ropaje de los ángeles caídos.

Pero renació, cual tamagotchi de sus propios excrementos. Sintió lo bueno, y la luz.

Y la luz le daba señales y calor.

Entendió sin comprender. Era lo que era.

Y así fue por siempre.

-

0


Últimos hackeos

Habi - 18/10/2006 17:20:00 - Tecnoesoterismo

Se ha vuelto demasiado simple (será por el IDA, que es la caña para código muerto). No mencionaré el Cube Media Player porque hablé de él hace poco en su propio post.

Así que diré que hace algún tiempo encontré en The Underdogs el Knight Time. Es un juego antiguo y raro, de Titus. Uno de los dos primeros juegos para PC que tuve y el primero con gráficos decentes (aunque mi ordenador era XT tenía SVGA).

El juego eran dos discos de 5 1/4; por lo incómodo de cambiar entre ellos y de su propio tamaño, puse ambos en uno de 3 1/2, pero como estaba protegido siempre miraban al principio en la unidad de 5 1/4 para buscar la protección.

Por aquel entonces no fui capaz de desprotegerlo. Usaba trucos como desviar las interrupciones 1 y 3 y las usaba para sus propias rutinas, con lo que no había nada que hacer con el Debug o el D86 (que nadie diga nada del Soft-Ice, eso es para 386 mínimo). Tampoco funcionaban los desprotectores de la época, sería que tenía una versión distinta, en cualquier caso era la que estaba en Underdogs.

Con más años de experiencia, mejores herramientas y un morbo rozando lo frikiesco (o un frikismo rozando lo morboso, según se mire) lo abrí. Y fue relativamente simple, pues una vez hacía todas las comprobaciones de protección la decisión de si había o no protección se tomaba en un solo punto. Cambié el salto condicional y funcionó, menos de 15 minutos. Además determiné que estaba programado con un compilador de C raro (ni MSC ni TC o BC) con rutinas en Asm. Localicé las de teclado, gráficas, joystick, etc.

Otro ejemplo, el Marranos en Guerra, juego antiguo que no instala en núcleos de NT, pero que me gusta; después de engañar al instalador para que lo instalase en XP el juego funciona, pero al salir inutiliza el teclado y el ratón en las ventanas que hubiese abiertas antes que él, incluyendo el escritorio.

Menos de dos minutos (el record hasta ahora): veo en importaciones EnableWindow y EnumerateWindows, hago referencias cruzadas y veo que desde la misma función, la cual se encarga de quitar o devolver input a todas las ventanas menos ella misma (supongo que para no molestar, pues casca el juego si sale de pantalla completa). Parcheo el salto condicional de esa función para minimizar los cambios (sólo cambian 6 bits en un byte) y el juego va perfecto. Se ve que al final no la llama por alguna razón (casque silencioso).

El último ha sido un juego de DOS que adquirí hace poco en su versión registrada y que me encantaba de crío, el Moraff’s World. Volví a jugar a él y todo iba bien, hasta que fui a enfrentarme con el enemigo especial del nivel 16. No aparecía por ninguna parte, y en el mapa me decía que fuera al este cuando estaba ya en el borde este de la mazmorra.

Este caso fue bastante más complejo, pues he estado dos días con el IDA. He localizado como va todo el tema gráfico, la magia, la forma de las estructuras de datos usadas en el programa, los enemigos, el mapa,... hasta que al final he visto como es el formato de los juegos grabados, a imagen y semejanza de las estructuras en memoria.

Así que en el juego grabado en ese nivel, archivo 40.dun (4 por el personaje, 0 porque es el nivel por defecto; los 1-7 son las mazmorras en sí mismas, 32 niveles por cada uno), y saltando los 3 primeros bytes se encuentran los descriptores de enemigos de ese nivel, 6 bytes por cada uno, siendo el primero el del enemigo que buscaba, ese Shadow Dragon King. Y en efecto, el primer byte, la coordenada X era 88 cuando la mazmorra tenía 78 como máximo; parcheé a 76, y al cargar estaba a dos casillas al oeste de mí, así que pude enfrentarme, vencerle y obtener la bonificación +25 para mi Long Sword.

Además descubrí analizando todo el juego ¡que se pueden hacer trampas! Si se pulsa Alt.gr. + 1 te da 10 de vida por la patilla, si lo dejas pulsado no para de subir, aun por encima de la vida máxima del personaje.

1


Peñazo post

Habi - 17/10/2006 12:34:00 - Tecnoesoterismo

¡Atención! Este post contiene material de teoría de compiladores explícito. Si no se considera preparado, no lo lea (o sí, y suelte algunas de estas frases en sus reuniones de amigos y quede como un... friki).

Hoy voy a hablar del lenguaje ese que inventé y el cual tengo a medio implementar.

Lo primero que tengo que decir es que el código está organizado lógicamente en espacios de nombres anidados. El código fuente viene en archivos, los cuales no tienen necesariamente una correspondencia con esos espacios de nombres. Cada módulo puede tener varios (obligatoriamente debe contener al menos uno), y un mismo módulo puede estar definido en varios archivos (basta con usar el mismo nombre del espacio de nombres, el contenido se mezcla).

El compilador incluye también un intérprete pues, bajo ciertas condiciones, una función puede ser marcada para ser ejecutada en tiempo de compilación, y de esa manera generar código para ser compilado utilizando la potencia expresiva del propio lenguaje, y haciendo obsoleto el concepto de procesador de macros.

Cualquier convención de llamada de funciones, uso de registros, inclusión inline, y en general directivas de compilación no se pondrán como pragmas de preprocesadores, casos especiales de comentarios o palabras reservadas del lenguaje. Sencillamente serán etiquetas con valores dentro del propio código, como si las propias funciones fueran objetos en un lenguaje de objetos sin herencia.

El lenguaje es en sí mismo imperativo, pero con notación funcional y considerando como funciones todos los elementos sintácticos (lo cual es MUY útil en el caso de los IF para el tema de asignaciones). Permite anidar funciones, y tiene orientación a objetos con herencia simple e interfaces (ortogonales entre sí, claro). El nivel semántico queda definido por el sangrado (libre) del código, así no se necesitan delimitadores sintácticos a la { } o palabras reservadas del tipo Begin - End.

Tiene un sistema de tipos estricto y fuerte, con

La sintaxis a nivel externo es muy simple y matemática:

NameSpace Fulanito

Suma: Integer * Integer -> Integer
Suma(x, y)=
    Resultado: Integer
    Resultado = x + y
    Return Resultado

Por ejemplo; para desambiguar una variable que contenga una función de una declaración de función, hacemos un tipo único agrupado: (Integer * Integer -> Integer) en vez de la declaración de Suma. De igual manera, (Integer * Integer) -> Integer nos define una función que sólo tiene un parámetro, una tupla de dos valores enteros.

La compilación se hace en dos pasadas, pues se pueden usar variables y funciones definidas fuera de orden; el compilador mantiene todo en su base de datos de memoria, eliminando la necesidad de código objeto. Las librerías estáticas se enlazan en su forma de código intermedio, para así poder aplicar optimizaciones avanzadas al programa en conjunto (y de nuevo, no requerir código objeto propiamente dicho, sino una base de datos de espacios de nombres nativa al compilador).

De acuerdo, esto usa bastante memoria y enlentece el compilado, pero genera aplicaciones mucho más eficientes.

Finalmente, después de hacer las optimizaciones buenas, se traduce a la plataforma y se hacen las típicas optimizaciones de registros y mirilla típicas de la plataforma y a correr.

Si alguien ha entendido algo, ¿algún comentario?

3


Reglas del 10:
10 últimos   10 después   10 antes   10 primeros