Runner Xbase (RX)
Y llegó Runner Xbase !, (RX para los amigos). Cuando monté un runner pensé que seria una manera sencilla de probar rutinas y cosillas directamente y sin mucho lio, sin necesidad de montar servidores, ni grandes historias.
Pero luego pensé que quizás era momento de montar un programa hecho con UT y así experimentar su comportamiento real, si se adaptaba al objetivo inicial y si al final cumplía con ese deseo de poder programar para la web.
Pues nada, solo se había de programar con UT un sistema que te permitiría no solo hacer runners de pequeños trozos de código, sino que te permitiría guardarlos, juntarlos como piezas de puzle, crear sus rutas, meter sus certificados, y que saliera una aplicación andando.
Teniendo en mente que el sistema es realmente un server y podríamos manejarlo y programarlo desde cualquier navegador desde la otra parte del mundo, se entiende lo que se persigue, no? Mamma mia…
Pues debíamos mezclar todo el conocimiento desde que iniciamos el mod con sus preprocesados, sus ejecuciones con cargas de código y compilarlo al vuelo, …y mirar como encajar todas esta piezas.
Y salió… y realmente el sistema funciona. Solo debemos entender como funciona pero creo que es lo que quería. En resumen podemos crear 2 tipos de código: HTML / PRG.
HTML: Vendría a ser un símil a la manera de trabajar php. Podemos escribir nuestro html y lenguajes asociados e inyectar mediante etiquetas <?prg … ?> nuestro código en harbour.
PRG: Nuestras funciones en harbour, a manera de biblioteca, para poderlas usar desde cualquier punto de nuestro programa.
A partir de aquí este concepto es fácil de entender, creamos nuestras funciones y nuestras parte de html para juntarlas y crear un módulo. Una vez probadas las enrutamos en otra parte del sistema y esto es todo.
El problema inicial salió cuando p.e. en un código html inyectábamos un <?prg ... ?> y dentro de ella hacíamos referencia a alguna función definida en otro módulo de tipo PRG. Era necesario carga antes este módulo para usarlo en el primero.
Y que ocurría si en lugar de una función teníamos de hacer referencia a otras mas de otros módulos ? Era necesario tener la capacidad de cargarlos/descargarlos en memoria al vuelo para poderlos usar.
Y cuando parece que lo tenias todo claro vino otro reto mas. Si yo tenia un módulo que tenia la función A() y esta cargaba una función B() de otro módulo, no podía compilar A() porque el sistema claramente decía que no existía el símbolo B de manera correcta. Esto implicaba que debías compilar y cargar B() en memoria, para luego poder usarlo y compilar A().
Claro que si ha esta cadena de enlaces la exageramos un poco mas: A() usa B(), y B() usa C() que puede usar D()…. Otro lio ha resolver. Lo que hacíamos inicialmente de una manera manual, se había de automatizar de alguna manera para poder tener un sistema ágil.
Finalmente creo que lo hemos conseguido y parece que la base de todo el sistema esta bien encajada, ahora solo falta probarla un poco a fondo….
Como dije en el anterior post, tenemos ahora 3 capas de trabajo para que cada uno se adapte a la que mejor le vaya: mod-harbour-->UT-->RunnerXbase
Creo que ya no podemos exprimir mas el tema si el objetivo es encontrar un sistema para crear aplicaciones web sin tener apenas conocimientos de nada, tan solo de harbour. Espero que esta herramienta por fin ayude a mas de uno con este tipo de perfil.
Quizás la guinda final es crear un modulito a modo de ejemplo para confirmar que el sistema funciona realmente. Hay todo el sistema, toda la teoría, ejemplo de como usarla, pero la mejor ayuda siempre digo que es un buen ejemplo.
Vamos a intentarlo, pero necesito ahora un poco de aire…
Comentarios
Publicar un comentario