apuntes+santiggd+28-4-08

En esta parte vamos a ver como crear script cgi que se ejecute en un servidor web y nos devuelva la información relevante a la petición realizada. Para esto vamos a utilizar el servidor web apache que nos va a permitir esta funcionalidad.
 * Scripts CGI**

En primer lugar vamos a ver un ejemplo realizado en perl. Comenzamos viendo que significa la primera línea del programa, use CGI... donde vamos a cargar e importar la librería correspondiente a CGI. El comando use nos permite realizar las dos operaciones al mismo tiempo. Además podemos especificar que modulos queremos cargar, en este caso :standard significa que queremos cargar todos los identificadores referentes a html2,html3, html4, cgi y otros. Esto podemos verlo si accedemos desde un explorador web a nuestra propia maquina al puerto 8020, donde tenemos una descripcion de todas las funciones de perl.

La siguiente instrucción del ejemplo indica el tipo de contenido que vamos a enviar, que va a ser lo que luego va a interpretar el navegador que reciba la información. Una vez hecho esto solo hay que imprimir lo que queremos enviar al navegador, lo cual se puede hacer directamente usando la opcion print.

Una vez que hemos comprobado que podemos servir un script cgi vamos a pasar a servir otras cosas, como en este caso un rss. Lo que vamos a hacer es cargar un documento rss, en concreto de un blog, y con ello vamos a analizarlo y presentar solamente algunos de los datos. Para ello vamos a utilizar algunas de las librerías de Perl, en concreto las de RSS. DEl rss de entrada vamos a generar un rss de salida, que será un resumen del de entrada. Además el programa de ejemplo recibe un parámetro a través del interfaz REST en la llamada al cgi, lo que corresponde a la llamada get, y se obtiene mediante la funcion param. Existen otras dos formas de poder pasar parámetros al script cgi, que son a través de la entrada estándar para lo que se usaría post, y utilizando las variables de entorno, que son variables que se definen en linux y que nos dan distintos datos. Estas variables de entorno podemos verlas y definirlas desde linux utilizando el comando export.

Los filtros sax se trata de otra forma de trabajar con los documentos html. Este tipo de procesamiento consiste en tratar el documento como un flujo de datos, de forma que lo vamos leyendo secuencialmente. Se definen unos filtros de forma que cuando encuentran una etiqueta determinada se ejecuta una funcion correspondiente a lo que queremos hacer. Vemos el ejemplo en ruby, donde además aprendemos como se definen clases en ruby. Definimos una clase que contiene una serie de métodos pertenecientes a una librería y que se ejecutaran según vayamos leyendo el documento. Cuando llegamos al inicio de una etiqueta comprobamos si coincide con la que estamos buscando, en cuyo caso activamos una variable escribe a true. De esta forma, cada vez que recibimos texto, si la variable esta activada sabemos que se encuentra dentro de la etiqueta que buscamos y la mostramos por pantalla. Cuando recibimos un final de etiqueta ponemos la variable escribe a false para que el resto del texto no siga escribiendose. Los métodos se ejecutan siempre que hay un evento de cada tipo, pero solo realizan su función cuando encontramos un elemento de los que buscamos.
 * Filtros SAX**

Este tipo de programas resulta bastante mas rápido ya que va analizando el fichero según lo va leyendo y no necesita cargarlo entero y mantenerlo en memoria, sin embargo, cuando lo que buscamos es complejo puede resultar mas simple usar el modelo de objetos que hemos estado utilizando. Para hacer algo complejo se necesitaría utilizar máquinas de estados finitos de forma que sepamos en cada momento donde nos encontramos hasta llegar al dato que queremos.