Algún día tenía que migrar...

Tuesday, September 25. 2007

El jueves antepasado noté que mi sitio web dedicado a Fernando Pessoa estaba teniendo problemas. Como estaba pendiente de terminar el material para mi charla en las Jornadas del Lugfi no le di mucha pelota y me olvidé del tema. El martes noté que todo mi hosting estaba bloqueado. Mail para la gente que me cede el espacio (de onda y desde hace años)... aún sin respuesta.

El jueves, viendo que tal vez la cosa iba para largo; me puse a hacer la dolorosa migración que había estado evitando por largos años... el sitio lo escribí hace mucho mucho, en ese momento no conocía más que ASP y Access.

Hace casi un año empecé a escribir una nueva versión del sitio usando PHP como lenguaje base... pero entre idas y vueltas, todavía el proyecto está bastante verde como para que fuera viable aprontarlo en un par de días. Así que la migración fue por el lado más asqueroso; reescribir PHP sobre el source ASP, uno a uno.

Un par de noches traduciendo y debugueando; el domingo completo gastado en migrar (y unificar, después de años diciendo que en algún momento tenía que juntar toooodos los .mbds que tenía tirados) bases de datos de poesías, libros, medio millón de registros de visitas a la página, etc.; desarrollo hecho en el plazo que dio la espera a que NIC actualizara la delegación del dominio.

Finalmente, hace un ratito, justo antes de empezar a escribir este post, terminé de ajustar un par de cosas que surgieron cuando el dominio empezó a resolver, y migré el libro de visitas que había pateado por cansancio el fin de semana. Y ya; mi sitio andando sobre PHP y con MySQL, practicamente con la misma funcionalidad que antes.

Todavía no sé qué va a pasar con mi hosting, así que preventivamente estoy emulando las extensiones .asp con modRewrite; pero creo que esto ya es definitivo.

Ahora a seguir en background con el desarrollo que empecé hace un año; pero por suerte, el haber ya migrado y unificado las bases de datos, y el haberme sacado de encima a Access es un paso importantísimo, y me saca de encima la dependencia de necesitar un Windows y un IIS para rescatar la información.

Llevaba años dilatando esto; nunca pensé que lo iba a despachar en menos de 3 días.

(Ya puedo irme a dormir. Es hora.)

PageOnPage

Tuesday, August 7. 2007

En esta semana, seguramente como producto de las no-ganas de preparar finales, me puse a jugar en una cosa media bizarra (y que, supongo, alguien ya debe haber implementado muy-mucho mejor hace años... pero que no encontré en una primera búsqueda).

La cosa surge así: Estaba viendo de poder instalar una aplicación con base de datos en Aleph (especificamente este blog) y probé un par de cosas, todas sin éxito. La idea siguiente fue la de ver si era razonable y sencillo hacer una página que funcionara como repetidora de otra página, dando la impresión de ser local... y así empecé a tirar un par de líneas de código.

Anoche estaba aburrido y me puse a pulir el par de líneas iniciales que había tirado la semana pasada. El resultado de la trasnochada es este paquete; y la demostración del PageOnPage andando puede verse en este lugar, enmascarando el sitio web de FIUBA.

La aplicación es bastante sencilla, apenas unas 100 líneas en PHP. Básicamente tiene dos partes; una, un .htaccess con una reglita de mod_rewrite que redirije todo a la otra, el script _popwrapper.php. Este script conoce el host y el path en el que está corriendo el mod_rewrite y conoce el host y path de la pagina que debe enmascarar; con esos datos, la URI, el POST, el method y los headers del request, arma la URI de la página destino y un pedido que le envía al proxy web (no publiqué otra versión, que obvia el proxy). En base a lo que devuelve el proxy, se arma el request, reemplazando los enlaces absolutos del sitio y los dominios en las cookies. El resultado, navegar una pagina remota adentro de otra.

El codigo es desprolijo y tiene bastantes cosas sin hacer... a saber, no todos los headers se están reenviando, así que en el ida y vuelta se pierden cosas como referrers, archivos, headers de caché o fechas de modificación, etc.. El conjunto no es más que un mero juguete... pero implementa un par de features copadas. Por supuesto, todo muy bonitamente hardcodeado y bien bien poco genérico.

Cuando pude entrar a un foro, navegarlo, loguearme y dejar un par de mensajitos, consideré que era hora de irme a dormir, con la inquietud que me llevó a escribirlo ya satisfecha.