Libertonia
Portada · Todo · Software Libre · Desarrolladores · Comunidad · Internet · Tecnología · Meta · Diarios
OpenLaszlo

Programación
Por jamarier
departamento Programando para la web , Sección Internet
Puesto a las Sun Apr 9th, 2006 at 10:53:13 PM CET

Estamos inmersos en la llamada segunda generación de páginas web. Donde se rompe el esquema clásico de interacción consistente en solicitar páginas al servidor que se las suministra. Recientemente nos han enseñado que es posible más. El DHTML (html dinámico), el javascript, y técnicas como AJAX, nos abre los ojos ante las nuevas posibilidades.

Recientemente he descubierto openlaszlo y me ha causado una fuerte impresión. Quizás no sea la plataforma o herramienta definitiva, pero creo que puede apropiarse de un nicho muy interesante.

 


Qué es OpenLaszlo

Se autodefinen como «Plataforma XML de código abierto para el desarrollo de aplicaciones valiosas por internet». Es decir, nos proporciona herramientas para poder realizar páginas webs interactivas y en principio con el mínimo esfuerzo por nuestra parte.

Cómo funciona

Primero necesitamos nuestro fichero fuente. Este es un XML que describe los elementos visuales, enlaza dichos elementos con los eventos que vamos a manejar. El lenguaje descriptivo es de bastante alto nivel (orientado a objeto) y dispone de muchos elementos comunes ya predefinidos. Lo que nos permite hacer tareas sin necesidad real de programar (sistemas de arrastrado de elementos, creación de botones o ventanas, reproducción de animaciones, peliculas o sonidos, acceso a bases de datos...). Aun así, en caso de necesitar mayor control, se puede programar usando javascript.

Con dicho fichero fuente se puede trabajar en dos modos: «SOLO» y Servidor. En el modelo SOLO, lo que se hace es compilar nuestra aplicación antes de subirla al servidor web. En la segunda opción, tenemos instalado un interprete de OpenLaszlo en nuestro servidor web y cuando alguien solicita una de estas aplicaciones la sirve según se va solicitando (al igual que ocurre con perl, php o asp).

He hablado de compilar... ¿a qué? ¿a un exe ;-)? No, la plataforma fue construida para que el fichero destino pudiese ser elegible. La primera opción e implementada desde la primera versión es generar una aplicación en flash, que puede ejecutarse directamente o incrustarse en una página estática. La novedad, y que fue lo que me hizo interesarme (el flash no me atrae nada) es que anuncian que ya tienen el generador de DHTML (HTML + Javascript).

Ejemplo

Ya sabeis que me gusta poner un poco de código en este tipo de entradas: "show me the code!!!". En esta ocasión, voy a poner un ejemplo muy sencillo. Quien quiera saltarselo, aviso que al final incluyo un enlace a una demostración más interesante que esto. Id hasta el final y dedicarle unos minutos...

Hace algún tiempo implementé una versión en perl con cgi de la bola 8. Dado que no se programar en javascript, pero este programa tiene la lógica de ejecución muy sencilla, pensé que era un buen candidato para implementar.

<canvas debug="false" fontsize="30">

El elemento principal de todo programa lzx (el lenguaje de descripción de OpenLaszlo) es canvas. No he encontrado ningun elemento que requiera de atributos obligatorios, todos tienen un valor por defecto. Mientras que he estado programando, el valor de debug ha estado en "true", esto ha abierto una ventana de depuración que me permite ver los mensajes que yo mismo me he dejado para mí, modificar durante la ejecución el valor de los atributos, y otras funcionalidades. Al terminar, en vez de borrarlo, pues lo he desactivado, para recordarme que tengo insertado mensajes de debug. El fontsize, que supongo que no es necesario explicar para que sirve se hereda en los elementos hijo. De forma que no tenga que repetir el dato en los demás elementos. Ah, el compiladornecesita fuentes en utf8 o los caracteres acentuados se perderán en el limbo de los bits.

  <simplelayout axis="y" spacing="10" />

Para simplificar, usamos una disposición en el que cada elemento está a continuación de otro y dejando un espacio vacio de 10 pixels. Tambien se pueden usar coordenadas y otros sistemas de empaquetamiento.

<text name="instrucciones" width="400" multiline="true">
   Haz tu pregunta de forma que la respuesta pueda darse como
   un sí o un no.<br/>

  <font size="15">
    (En caso de repetir una pregunta, se considerará que solicitas una 
    respuesta que analice más datos de los empleados en la respuesta 
    anterior y eso significa que la respuesta seguramente será distinta).
  </font>
 </text>

Los elementos text soportan etiquetado html. En este caso, he definido un nombre identificador que me permitiría modificar en tiempo de ejecución dicho texto (al final no lo he usado en ninguna parte).

  <edittext id="pregunta" height="50" width="400">
    Formula tu pregunta aquí
  </edittext>

Un campo de texto, con un valor previamente definido.

  <button onclick="generaRespuesta();">
  	Consultar la respuesta
  </button>
  <text name="respuesta" width="400" multiline="true"/>

Dos elementos más, un botón, que en vez de poner el código directamente que ejecuta el evento prefiero definirlo aparte y así queda más claro la estructura de los elementos. Hay un campo de texto vacío ya preparado, donde irá nuestra respuesta.

  <script>
    var respuestas = new Array (20);
    respuestas[0] = "Es mejor que no te lo diga ahora.";
    respuestas[1] = "Los augurios no son muy buenos.";
    respuestas[2] = "Sin duda.";
    respuestas[3] = "Es una certeza.";
    respuestas[4] = "Tal y como lo veo, si.";
    respuestas[5] = "Definitivamente, Si.";
    respuestas[6] = "Si.";
    respuestas[7] = "Los signos apuntan que si.";
    respuestas[8] = "Está decidido así.";
    respuestas[9] = "Mi respuesta es no.";
    respuestas[10]= "No puedo predecir ahora.";
    respuestas[11]= "Mis fuentes dicen no.";
    respuestas[12]= "Yo no contaría con eso.";
    respuestas[13]= "Concentrate y pregunta de nuevo.";
    respuestas[14]= "Puedes confiar en ello.";
    respuestas[15]= "Buenos augurios.";
    respuestas[16]= "Pregunta otra vez más tarde."; 
    respuestas[17]= "Es bastante probable.";
    respuestas[18]= "Muy dudosamente.";
    respuestas[19]= "La respuesta está borrosa, intentalo de nuevo.";

    function generaRespuesta() {
      var pregunta_hecha=pregunta.getText();
      if (pregunta_hecha=="" || pregunta_hecha=="Formula tu pregunta aquí")
      {
        respuesta.setText("Por favor, formula una pregunta");
	pregunta.setText("Formula tu pregunta aquí");
      }
      else 
      {
        var respuesta_num=Math.round(Math.random()*20 -0.5 );
      	respuesta.setText(respuestas[respuesta_num]);
      }
    }
  </script>
</canvas>

Y aquí está el javascript del programa. Un Array con las respuestas posibles, una función matemática de redondeo y otra de azar (para que haga truncamiento y no redondeo ha sido necesario restarle el 0.5).

Y se acabó. He colgado en una página con el flash incrustado.

Para aquellos que quieren ver algo más espectacular de OpenLaszlo, además de un par de demos que se acceden desde la página principal, les recomiendo que visiten el tutorial Laszlo en 10 minutos. Hecho en Laszlo (en este caso interpretado en el servidor) donde se muestran ejemplos muy interesantes, sencillos y te permite tocar el código de los ejemplos y ejecutar tus modificaciones.

Iba a poner una encuesta como comparativa de OpenLaszlo con otras tecnologías de uso similar. Pero la verdad es que no conozco casi nada (quizás prototype). Así que si alguien quiere comentar este prototype u otros frameworks, mejor que mejor.

< Terminología de ordenadores (14 comments) | Linksys WRT54GL (3 comments) >
Enlaces Relacionados
· openlaszlo
· bola 8
· una página con el flash incrustado
· Laszlo en 10 minutos
· prototype
· More on Programación
· Also by jamarier

Menu
· crear cuenta
· FAQ
· búsqueda
· Fuentes de Noticias

Login
Nueva cuenta
Usuario:
Contraseña:

Ver: Modo: Orden:
OpenLaszlo | 5 comentarios (5 temáticos, editoriales, 0 ocultos)
No sé yo... (none / 0) (#1)
por jorginius ("jorginius" en Google Mail) a las Mon Apr 3rd, 2006 at 12:15:18 AM CET
(Información Usuario) http://www.rodriguezmoreno.com

Algunos de los ejemplos de Flash están bien pero claro: en Flash se puede conseguir eso, con más o menos esfuerzo, y cosas muchísimo mejores.

De la parte de DHTML sólo tienen una demo, la de LZPix y aquello ni es demasiado vistoso (bueno, tal y como está el patio con eso de la WEB 2.0 :-)) ni funciona demasiado bien. Me ha desaparecido el carrusel inferior de los thumbnails un par de veces,con Firefox 1.5.0.1.

No sé, para hacer cosas virgueras quizás siga siendo mejor opción script.aculo.us/prototype. Por la parte de debug, que parece lo más interesantes, ya hay frameworks que te dan herramientas así.

La integración con eclipse tiene una pinta estupenda, eso sí.



ni yo... (none / 0) (#2)
por jamarier a las Mon Apr 3rd, 2006 at 10:14:41 AM CET
(Información Usuario) http://barbacana.net/blog/

He estado echando un vistazo a prototype y la conclusión a la que llego es la misma que hace cierto tiempo: la misión de prototype es corregir los fallos de diseño de javascript. Proporciona atajos a elementos muy utilizados, da una capa de compatibilidad de forma que reduce la creación de funciones específicas de cada navegador e introduce alguna función para facilitar el uso de ajax. Por su parte, scriptaculous es una caja de «efectos especiales». Te proporciona mecanismos para que, a partir de prototype, se puedan hacer efectos tipo arrastrar, animaciones, persianas...

Pero aquí se acaba la cosa. Para mi tiene dos inconvenientes: primero no te elimina la necesidad de dominar javascript, con OpenLaszlo y un pequeño subconjunto de javascript se pueden hacer cosas interesantes; segundo es de bastante bajo nivel, OpenLaszo proporciona elementos <windows> predefinidos que gestionan ventanas arrastables y ajustables en tamaño. Esto con scriptaculous se me plantea bastante más complicado. Además, de las ventanas, ya trae prediseñados todos los elementos comunes que se emplean en programación visual: botones, check-button, radio-button, deslizadores, combos, reproductores multimedia (audio y video) y otro sinfín de elementos que te permite hacer un prototipado visual muy rápido de lo que quieres obtener.

Por supuesto todo tiene un precio. Flash no me gusta, para mi es un limitador (como comenté pronto será solucionado), y el runtime de OpenLaszo es más costoso en memoria y espacio. Este ejemplo de la bola8 ocupa 68k teniendo en cuenta que fácilmente se podría haber implementado solo en javascript en una cantidad de código no superior al lzx original tendríamos una página de 2,2k (al crecer el tamaño del fuente la diferencia es cada vez menos importante). Por último, en la última versión del CVS he leido que implementarán CSS (supongo que relacionado con DHTML).

Por eso decía que no encontraba otros frameworks a nivel parecido a este.

-----
Opinión expresada por alguien que puede que no sea yo.
[ Padre ]



Hace falta saber JavaScript, o no (none / 0) (#3)
por jorginius ("jorginius" en Google Mail) a las Mon Apr 3rd, 2006 at 11:56:38 AM CET
(Información Usuario) http://www.rodriguezmoreno.com

Para mi [script.aculo.us] tiene dos inconvenientes: primero no te elimina la necesidad de dominar javascript

Bueno, es como todo: en realidad podrías pasar no sabiendo más que dos o tres cosillas, posiblemente menos de lo que te pide OpenLaszlo. En los efectos de script.aculo.us puedes enganchar callbacks de PHP o Ruby, entre otros.

Ten en cuenta que script.aculo.us está integrado en RoR así como en otro saco de frameworks. Normalmente esos frameworks te aislan del JavaScript.

¿Qué lo mismo se podría hacer con OpenLaszlo?. Pues sí, se podría añadir una capa más y construir un framework PHP que generase código Laszlo y que, con JSON o similar se comunicase con él. Quizás ya haya algo de eso. O podría ser que el "compilador" a DHTML utilizase internamente prototype.

[OpenLaszlo] es de bastante bajo nivel, OpenLaszo proporciona elementos <windows> predefinidos que gestionan ventanas arrastables y ajustables en tamaño.

Como Prototype Javascript Windows, supongo.

reproductores multimedia (audio y video)

Eso ya no parece DHTML :-)

[ Padre ]


 
bofh de guardia! (none / 0) (#5)
por man ls a las Mon May 15th, 2006 at 06:34:03 PM CET
(Información Usuario)

Un spammer se ha colado por aquí. Convendría mirar a ver si hay más (aparte de mis entradas de diario :D



Sí, un chino (none / 0) (#6)
por jorginius ("jorginius" en Google Mail) a las Mon May 15th, 2006 at 10:33:36 PM CET
(Información Usuario) http://www.rodriguezmoreno.com

Convendría mirar a ver si hay más [spammers]

Hay un spammer chino que ha colgado dos mensajes en portada. Encontrarlo se deja como ejercicio al lector/bofh aburrido.

Aparte de eso, este bot ha colgado un mensaje más (que yo haya visto). Es curioso cómo se dan de alta estos bots para luego poder postear. ¿Usan un método genérico (buscan algo que parezca un formulario de login o algo así) o métodos concretos para cada tipo de cms/blog/lo que sea?

[ Padre ]


 
OpenLaszlo | 5 comentarios (5 temáticos, editoriales, 0 ocultos)
Ver: Modo: Orden:

ecol Logo Powered by Scoop
Todas las Marcas Registradas y copyrights de esta página son propiedad de sus respectivos dueños.
Los comentarios son propiedad del que los escribe.
Los iconos de las noticias y el logotipo son propiedad de Javier Malonda.
El Resto © 2002 Escomposlinux.org y aledaños.

Puedes sindicar los contenidos de libertonia en formato RSS 1.0 y RDF 0.9. También se puede sindicar la cola de envíos pendientes de moderación.

El proyecto escomposlinux.org está dedicado a la memoria de tas

crear cuenta | faq | búsqueda