07 mayo 2010

Twiteando desde el MSX



Una de las cosas buenas de programar para maquinitas obsoletas es la satisfacción que se obtiene al conseguir hacer algo supuestamente sólo al alcance de los ordenadores modernos. MSX trivial tweeter es el nombre de la nueva criatura que sorprende a propios y extraños por igual.

Hacía tiempo que me rondaba por la CPU la idea de hacer un cliente de Twitter para MSX (aunque sólo fuera para enviar mensajes), y aprovechando que he redactado una especificación UNAPI para pilas TCP/IP y he convertido InterNestor Lite al nuevo estándar, pensé que sería una buena oportunidad para liarme la manta a la cabeza y hacer el algo usando la nueva especificación. Así el cambio del viejo InterNestor al nuevo será más atractivo y emocionante (¡oh, ah!).

Eso sí, me he encontrado con un "pequeño" problema. A partir del próximo mes de julio, Twitter sólo soportará OAuth como método de autenticación. Este es un método muy seguro y moderno y bla bla, pero para un MSX es como una patada en los webs, porque requiere el cálculo de firmas con SHA1 y la navegación vía web a los servidores de Twitter para la autorización inicial.

Así pues, ¿cómo he hecho el algo? En primer lugar, programando en C, usando el compilador SDCC (no lo he hecho en ensamblador para tenerlo terminado antes de la próxima glaciación). Para el cálculo de firmas SHA he usado librerías a tal efecto que he encontrado en los internetes (concretamente aquí y aquí), convenientemente adaptadas al entorno SDCCeico-zetaochéntico. ¿Y el OAuth?

Pues para muestra un par de botones. La secuencia que vais a ver la he hecho con un emulador, pero como veis en la foto del principio, lo "cool" y molón es usar un MSX real.

Antes de poder usar MSX trivial tweeter para twitear hay que realizar el proceso de autorización. Esto se hace tal que así:


Pues sí, para completar el proceso hay que irse a un PC o similar y abrir un navegador web a una dirección rarísima que es imposible de memorizar. Es un soberano engorro, pero no hay otra manera.

Una vez en la pecera, se pide el nombre de usuario y contraseña del usuario obsoleto tal que así (el icono de la aplicación es cortesía de el putoso):



Una vez tenemos el PIN en la mano (por suerte esta vez sólo son siete numerillos), se lo decimos al MSX...


...y ya está. Se ha creado un archivo de configuración con el nombre del usuario y las claves que permiten a la aplicación twitear en su nombre (censurado por motivos obvios, o no):


A partir de ese momento, twitear es lo más fácil del mundo. Instalamos nuestra implementación TCP/IP favorita (InterNestor o cualquier otra hipotética que exista) y:



Sí, se pueden usar acentos, eñes y algunos caracteres raros. Para conseguir tal cosa uso un fichero de mapeo de los caracteres MSXeros no estándar a UTF8, que es la codificación que Twitter espera. Me he montado un fichero al uso para la codificación CP850, que es la europea occidental, pero se pueden hacer otros ficheros para otras codificaciones. Eso sí, no se puede hacer tal cosa para el japochino, porque el Shift-JIS usa caracteres de dos bytes y eso ya no se resuelve con un simple fichero de medio kilobyte (según mis cálculos harían falta 128K para almacenar toda la tabla de conversión Shift-JIS a UTF8). Ya veremos qué se puede hacer al respective.

Nota: Para subir el nuevo InterNestor y el MSXtt a mi web lo único que estoy esperando es que alguien me pruebe la versión RS232 del INL, como ya he dicho en el MSX resource center y en Hispamsx.

Nota 2: Por supuesto, no os vais a escapar sin unas pocas fotos familiares.


- ¿Por qué tenemos que pasar la tarde del domingo en casa de tus padres? ¡Además me estoy perdiendo el fútbol!
- La semana pasada fuiste "media horita al bar" y volviste de madrugada y borracho perdido, así que te aguantas.


- ¡Eh, colega! He engontrado una wotella en casa de mi awelo que pone "Chivas" o algo ashí, y... y... tío, es gomo la leche de mamá pero dewe tener más bitaminash o algo, porque vaya subidonnnn que pega, ¡hips!


- ¡Anda mira, los del Nachonal Geografic! ¡Holaaa!
- No te emociones, que sólo es el calvo con su cutrecámara.


- Ahora sólo tienes que subirte por las paredes y salvar gente. ¡Seremos ricos y famosos!
- Papá, por favor, deja de hacer el burro y límpiame la cara.

14 comentarios:

SaveR dijo...

Ya veus! ya veus! ya veeeeuuuus!!!!

//.arce dijo...

Chapeau por el MSXtt y descojonante los comentarios de las fotos de tus criaturitas xDD.

Y ahora una sugerencia de esas que siempre se pasan los programadores por el forro: ¿No se podría usar un acortador de URLs para la dirección que hay que copiar del MSX al PC? Estaría wonder.

Konamiman dijo...

¡Hala hala, ya estais pidiendo! Pero bueno, os contaré un secretillo: es posible la autenticación twitera sin tener que navegar a ningún sitio, si se usa xAuth. Peeeero, hace falta conectarse usando HTTPS. Así que, si algún valiente hace una libreria HTTPS para la TCP/IP UNAPI, implementaré xAuth en MSXtt. ¡Venga, que se note!

Alejandro Cremades Rocamora dijo...

¡La leche!
Pero también podrías mandarte esa URL por mail.

SaveR dijo...

Ya puestos podrías colgar en tu servidor un programita que devuelva la cadena recibida en formato UTF. De manera que el Trivial podría opcionalmente pasar la cadena del usuario por ese conversor y twittear el resultado ya UTFeado

makinavaja dijo...

señor nestor.
A partir de la semana que viene, que estoy mas libre de tiempo, si quiere le pruebo la aplicacion con rs232 u obsonet si hace falta. También podria hacerlo con modem, pero ya es más jodido, pues necesiaría un isp, y de esos ya quedan pocos, muy pocos.
Para cuando un cliente de correo?
Para cuando el señor sd-snatcher hará una versión más chula de su cliente irc, que a día de hoy sigo usando a menudo? ains, si es que solo sabemos pedir....
Y un fudebrowser-dos? o un pseudo lynxs?

Konamiman dijo...

@makinavaja:

Sabía yo que la estrategia "Mirad qué cosas más chulas hago, qué lástima que no podais usarlas porque no me ayudais a probar el INL" iba a dar resultado. X-D

Sea como fuere, refréscame la memoria como si fuera un vulgar Z80 y dime tu sirección emiliesca (o escríbeme y ya te replieo).

Landoq dijo...

Todo un logro hacer que una vieja plataforma disfrute de los avances actuales. enhorabuena. Por cierto, me gustaría saber si me tienes manía o el no contestar mis correos es algún tipo de nueva moda de Internete

:-)

makinavaja dijo...

Buenas
Pues aquí tienes mi dirección:
spunky_n "aquí iría una algarroba" hotmail.com

Anónimo dijo...

Vaya un put0 estas hecho, hablando en Cristiano...¿Tienes en mente acabar estos programas para que algun dia se empiecen a vender la obsontet,Alejandro Dumas o Isabel Pantoja?

Otra cosa, sera posible poder ocnectarse por ejemplo a Eyeof beholder desde MSX directamente?

¿Crearas algun protocolo, programa cutre para que se pudieran crear juegos sencillos estilo pong,o mas complicados y pudiera jugarse online desde MSX?

Que es lo que hay relamente hecho y tiene algun futuro mas que las 4, 5 unidades que teneis los programadores?

Quien os ha visto y quien os ve, estais acabados, ya no venis nunca a Barna, no sirve la excusa barata de las familias y blablabla...Por eso os montai rus en Mallorca XD , desde que cerraron el Chino de la muerte y el Mozart os habeis hundido XD. No dire quien soy pero os dejo una pista.

P.L.A.D.U.R

PD:Kaito ya esta enorme, saludos a Kyoko.

mvac7 dijo...

Hola Nestor!
Si algún día te animas a hacer un cliente de twitter, que permita mostrar twitts (en C64 hay uno: http://hackaday.com/2009/06/15/c64-twitter-client/) y necesitas una GUI chula, yo me presto voluntario! :)
Trabajo con SDCC y tengo cosas hechas en el modo sc2 con tiles, y control de ratón: http://psged.blogspot.com/2011/01/trabajando-en-la-v2.html

Raul Calvo dijo...

Hola,
no entiendo muy bien como se comunica el msx y a lo mejor digo uan barbaridad, pero si dices que tienes implementadas las pilas TCP/IP... porqué no pones en el pc un apache con php y un pequeño programilla en php que haga lo que tienes que hacer a mano en el pc, parsee el resultado y devuelva el numerito que te hace falta?

mis disculpas si por desconocimiento he dicho una barbaridad...

Konamiman dijo...

@Raul:

Porque entonces haría falta un PC, y lo que mola es que lo haga todo el MSX por sí mismo. Si no, ya puestos, ¿por qué no twitear directamente desde el PC? :-)

Raul Calvo dijo...

pero... ya hace falta un pc, si no he entendido mal... lo único que proponía era una manera de automatizarlo.
:-P