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í.



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



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