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

Sublime
Experimentos… ¿inútiles?
El expediente X que nadie pidió
eNigma
La cuadratura del píxel

Ú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

Habi dice: bah, ¿quien quiere conquistar el mundo habiendo recortables?

No me comes ná

Habi - 14/09/2006 16:12:00 - Paranoias

Modelos de restauración de cara al usuario.

Empezaré definiendo el modelo tradicional en todos sus pasos, y lo usaré como referencia; sus pasos son:

1) Sentarse.
2) Pedir la comida.
3) Esperar que la traigan.
4) Comer.
5) Pagar por la comida (y/o servicio si procede).

También definiré la relación "ser equivalente" entre dos modelos A y B como tener los pasos en el mismo orden (aunque puedan faltar algunos o tener alguno intermedio). Lo importante es que se conserve el orden, es decir, los predecesores de un paso en un modelo no pueden ser sucesores en el otro. Contamos además con las restricciónes semánticas de que 2 siempre irá delante de 3 y 4, y 3 lo hará de 4 (si es que existen). Tampoco pueden faltar los pasos 2, 4, ni el 5 (desgraciadamente).

Este modelo tradicional lo cumple, digamos, Casa Pepe.

Hay sutiles variaciones de esto, como un bar de sushi. En él, realmente no hace falta pedir la comida, sino seleccionarla de entre la que va pasando (pero sigue siendo el paso 2); además se ahorra el cliente el paso 3.

Ahora toca el modelo Rodilla. Aquí el orden es 2, 3, 5, 1 y 4. No pagas al final, sino cuando te dan tu comida. Sigue siendo lógico.

Este modelo Rodilla lo cumple, digamos, la Pastelería Miguelita (pensabais que diría Rodilla, eeeehh xD), aunque se salte el paso 1.

Una variación de esto es el autoservicio. Se salta el paso 3 porque ya está hecha, y el 2 es cogerla (o escogerla) uno mismo, pero el orden es el mismo.

Veamos el modelo de buffet libre. Pagas una tarifa plana por entrar, y una vez dentro te sirves lo que quieras y cuanto quieras. Después del paso 5, en este modelo pasa como el bar de sushi; el paso 2 se reduce a seleccionarla y el 3 desaparece. Después vendría el 1 y el 4. Tiene la ventaja de que 2 - 1 - 4 se pueden repetir. Pagas realmente por entrar, no por la comida, sigue siendo lógico.

Este modelo buffet libre lo cumple, digamos, el Restaurante (de carretera, y puticlub de 23:00 a 07:00) Manoli.

El último modelo a considerar sería el de la hamburguesería. El orden aquí es 2, 5, 3, 1 (llevando la comida uno mismo, como el buffet libre), 4. Pagas por algo que tienes que esperar a que te hagan, y mientras esperas de pie por segunda vez.

Este modelo hamburguesería lo cumple, digamos, el Kentucky Fried Chicken.

De cara al usuario, lo más cómodo es que el paso 1 sea cuanto antes, y si es posible que no haya paso 3.

Por lo tanto, el peor parado es el Kentucky; ¿Quién daría mejor servicio, Casa Pepe, Restaurante (y puticlub a tiempo parcial) Manoli o la Pastelería Miguelita?


¿A qué viene este post? Ni idea. Iba hacer uno sobre gramática de lenguajes con mi última paranoia, pero me ha salido esto del alma y tenía que decirlo.

3


Sympathy for the devil

Habi - 11/09/2006 16:26:00 - Paranoias

Increíble.

Resulta que, según esto, soy un satanista o_O.

http://www.personal.able.es/cm.perez/satan.htm

0


Ábrete sésamo

Habi - 10/09/2006 20:40:00 - Tecnoesoterismo

A ver, algo que me han pedido. Vamos a ver como piratear un programa. En este caso se trata del Cube Media Player, v2.05.0117.

Echando un vistazo por encima con un editor hexa (uso UltraEdit32, que vale para todo) vemos que es un exe sin empaquetar ni proteger. Perfecto, derechito al IDA Pro.

Se tira su ratito pensando y lo analiza bien. Veamos las cadenas... en 004725E8 hay una cadena "Software\CubeMediaPlayer", típica de acceso a registro. Pinchamos, le damos a la X (referencias cruzadas) y vemos que se le llama desde tres procedimientos, igual que las cadenas "User Name" y "Register Code" que están por encima. Sospechoso.

El primer procedimiento se dedica a leer del registro y guardarlo en un buffer. No es gran cosa. El último hace lo contrario, lo devuelve al registro junto con las preferencias del usuario. Tampoco gran cosa. Ahí identificamos el nombre y la clave (en 0047C760 y 0195FE30 respectivamente).

El del medio (de los chichos) es distinto. Hace un montón de cuentas y al final entra en un bucle de comprobaciones, y sale o bien con un 0 o con un 1 (caso bueno) en EAX. *MUY SOSPECHOSO*. Para hacer la prueba, relleno desde 0040CD9E hasta 0040CDA5 con 0x90 (NOPs). Bingo, está registrado.

Hmmmm quizás haya sido un mal ejemplo, ha sido muy sencillo. :/

Nota: Todo son direcciones de memoria, no offsets de fichero (obviamente). Lo digo porque alguien es muy brutito... cheeky

0


Pascual

Habi - 08/09/2006 19:19:00 - Tecnoesoterismo

Llevo mucho tiempo sin visitas, como al principio... mola escribir cosas así, porque puedes escribir de lo que quieras sin pensar en nadie.

Centrémonos. Todavía recuerdo cuando aprendí Pascal en un PCW. Es un lenguaje que siempre me gustó. Sistema de tipos estricto, sintaxis limpia.

Así pues, hoy en día mi lenguaje por definición es el Delphi, que es un dialecto muy ampliado de Pascal con clases, esteroides y un IDE digno.

Viendo lo que ha sacado Borland (o DevCo, o como coño vaya a llamarse ahora esa parte de Borland), en TurboExplorer, me ha dado un yuyu. Y ese yuyu me ha hecho bajarme... ¡el Lazarus!.

¿Qué decir? Con la edad me he amariconado. En los tiempos del DOS habría vendido mi alma al diablo por un IDE así, pero teniendo el BDS 2006 sólo he podido pensar tres palabras: juguete, incómodo, feo. Bueno, también he pensado "palaustre" y "prukogi", pero no tienen nada que ver con esto (creo).

Es aparentemente como un Delphi 5 cutrosillo, y con menos controles. Se hechan de menos a los poderosos Indy. Ya lo probaré a fondo y os comentaré, pero de momento he decidido compilar la ventana por defecto, según se abre: ¡6 MB y pico! Aunque después del susto he visto que la mayoría era información de depuración, y pasando un strip se queda en mega y medio (aún así más que el Delphi 2006, con el último VCL). ¿Qué pasó con el SmartLink ese?

Pero soy raro, y hasta un poco masoca, así que voy a dedicarle algún tiempo. Tengo que probar las extensiones al lenguaje del FPC, ese modo OBJFPC de moda.

2


Chunta chunta

Habi - 06/09/2006 13:32:00 - Yuyus

 

 

Presupuestos listos: 3 de 7.

Y 7 limones y medio limón.

Anubis ampliado.

Todos sabemos que los palaustres quieren estar juntos.

Obras sacadas: 2 de 7.

Tirititú tata-tá tirititú...

Filtro de Spam implementado.

...when love and death embrace.

¡Curro! ¡Curro! ¡Curro!
¡Obra! ¡Obra! ¡Obra! - ¡Obraaaaaaaaa!

Abriré las aguas y todos pasarán.
Cerraré las aguas y los infieles morirán.

(Me gusta este curro frown

(Y sí, conector arreglado)

0


Navegando

Habi - 03/09/2006 22:17:00 - Tecnoesoterismo

Ya no hace falta ir a "Archivo" para mirar los posts antiguos (y encima uno a uno); acabo de ponerle unas opciones de navegación al final de la página para ir de 10 en 10 adelante y atrás, además de ir al principio y fin.

No, no ha sido nada trivial, y menos porque el mandato LIMIT para SQL no es estándar, y ni Access ni SQL Server lo admiten.

Si es que os quejáis de vicio...

0


El hecho es que...

Habi - 02/09/2006 0:29:00 - Chorradas

Pues iba a hacer un post sobre la suerte (buena en este caso), o contando que las vacaciones se me han hecho equitativas aunque me espera un mes de curro tremendo, o cualquier otra cosa; pero me ha dado el yuyu, así que toca un cuento para dormir tranquilito.


Había no muy lejos de aquí espaciotemporalmente hablando un helecho que todas las mañanas, al salir el sol, empezaba a hacer su fotosíntesis diaria, como cualquier otro helecho. En todo momento, drenaba nutrientes y agua de la tierra fresca y húmeda cerca del pequeño salto de agua del bosque, que era donde vivía; de nuevo, como cualquier otro helecho.

Este helecho era verde, como cualquier otro helecho o matemático, y se reproducía por esporas, en efecto como cualquier otro helecho. No tenía nombre, como la mayoría de los helechos, porque nadie se lo puso, algo que nunca pareció importarle.

Pero este helecho era diferente, porque en su figurado corazón anhelaba hacer un crucero por las islas Malvinas, a pesar de ser un helecho ucraniano.

Un buen día, algo pasó cerca de su bosque. Y es que a poca distancia, en Chernóbyl, explotó un reactor nuclear, bañando de ondas gamma, beta y algunas partículas alfa a nuestro helecho.

Y nuestro helecho mutó, y se transformó en persona.

Salió de allí, gano dinero traficando con armas y drogas (¿queda alguien que piense que la gente se hace rica trabajando?), y pudo por fín hacer su crucero. Después de eso se retiró a vivir el resto de sus días a Ibiza, todo el día de juerga con Pocholo.


Ahí tenéis un cuento que sigue la misma dinámica y estilo de los anteriores PERO termina bien, tal y como prometí. Y si me apuras, está basado en hel-hechos reales.

0


Hoy toca

Habi - 30/08/2006 0:33:00 - Chorradas

Hoy toca... ¡sesión de cine! Aunque de lo que realmente trata este artículo es también aplicable a la música, me reservo el derecho de un post futuro.

Y es que me gusta lo malo. Aunque no todo lo malo, por supuesto. Es dificil de explicar, así que intentaré contar mi teoría y poner ejemplos.

Sea f(x) la función que determina cuánto gusta una peli a una persona, donde x es su calidad. En una persona normal tenemos:

Lo cual es lógico. A mayor calidad, más le gusta, y viceversa, de forma lineal (con lo que se pueden aplicar reglas de tres). Sin embargo, en mi caso tenemos:

Lo cual es absurdo (¡lo cual es lógico!). Por un lado, vemos que la función es estrictamente positiva, con lo cual disfruto más en media que cualquier persona normal. Salvo con las de calidad nula, por supuesto, que me aburro.

Cuando nos metemos en las calidades negativas (serie B en adelante) empieza mi disfrute. Ahí encontramos superhéroes casposos como el "Vengador tóxico" (me he visto las 4 partes; la 4ª tiene calidad 0, no la recomiendo), invasiones de cartón-piedra como "El ataque de los tomates asesinos" o "Karate a muerte en Torremolinos", gores como "Comida sangrienta", etc.

A la gente que tengo cerca que no admite cosas de presupuesto tan bajo las intento corromper a base de Torrentes, Condemores (sí, hay más de una de ese finstro de la pradiraaaa) y similares. Y si se dejan, hasta un capítulo de "Pingu".

 

 

END OF LINE

1


Tres eran tres

Habi - 26/08/2006 13:21:00 - Yuyus

 ¿1?

Entonces callaré.

Siguen siendo dos pasos.

 ¡3!

....................

(Eso dicen todos)

 

4


Hmmm

Habi - 24/08/2006 21:18:00 - Tecnoesoterismo

Ayer estuve haciendo limpia entre todos los proyectos de Delphi que tengo empezados. La mitad de ellos eran analizadores sintácticos / semánticos y traductores en general; para Freud tendría algún significado.

¿Cómo debería ser el lenguaje ideal? No hay lenguaje ideal. Cada elección de diseño aporta ventajas e inconvenientes a partes iguales.

Un lenguaje interpretado es ideal para la depuración, para construcciones dinámicas y de alto nivel y para su integración en entornos cualesquiera. Pero al ser tan dinámico es bastante más lento que uno compilado, el cual ya tiene resueltos estáticamente los enlaces y traducción, y ha podido ser optimizado profundamente, amén de no requerir un entorno para integrarse con otros lenguajes.

Con los paradigmas es casi peor, porque aunque los lenguajes y la forma de programar en ellos sea radicalmente distinta, todos sirven para todo. Es un tema de comodidad, depende para lo que se lo vaya a usar.

Y luego está el tema del traductor, mi preferido. Un lenguaje como Pascal o C puede implementarse con LR (SLR, LALR) sin problemas, en el caso del Pascal basta con un LL un poco modificado (al fin y al cabo, el Pascal fue diseñado para compilar en un solo paso, sólo hay que desambiguar el IF).

Sin embargo, si quisiese un lenguaje compilado que pudiese definir sus propios operadores (no sobrecargar los existentes) teniendo en cuenta la asociatividad y precedencia de éstos no nos valdría un LR a secas, por usar tablas estáticas, con lo que no nos valdrían ninguno de los generadores automáticos que hay (mi solución a esto fue usar una técnica híbrida, con un LL modificado para toda la gramática que no fuesen expresiones y precedencia de operadores por funciones de precedencia para éstas, aunque esto es otra historia).

Me está quedando un post muy largo y no he entrado en detalles de ningún tipo. Divago. ¿Cómo debería ser un buen lenguaje para desarrollar aplicaciones eficientes tanto en tiempo de ejecución como de desarrollo? Aunque quizás de lo segundo, puede encargarse un entorno de desarrollo integrado, fijaos si no en el VB.

Por mi parte: compilado, imperativo / funcional, con macro-preprocesador, capacidad de inline, un sistema de tipos fuerte aunque con amoldamientos y una sintaxis clara y ortogonal. Y si tiene objetos (en algún sentido), herencia simple con interfaces añadidos.

1


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