Anotaciones Técnicas.  
 
     
Buscador:
Digital ToTSoL Web
 
powered by FreeFind
Anotaciones

Nota 1Revisión de los problemas y soluciones en el desarrollo de animaciones gráficas en Java

Nota 2Licencias del software abierto.

Nota 3Modelos de aplicaciones web independientes de la plataforma

Nota 4Lista de la seguridad en aplicaciones Web.

Nota 5Anotaciones sobre mi primer proyecto basado en XML y XSL.

Nota 6Como proteger las Aplicaciones Web de los ataques del exterior.

Nota 7Recolectores de Noticias sobre Java, XML.

Nota 8Relájate y disfruta... con Applets Java

Nota 9Entorno de desarrollo basado en XML/XSL para crear y mantener Aplicaciones Web

Nota 10Presentación del entorno de desarrollo de esta Web.

 
Digital ToTSoL un proyecto personal de Ferrán Casasús Rodó

Presentación del entorno de desarrollo de esta Web.

Nota 10: actualizada el 13/09/2001
Anotación: En una nota anterior [nota5] expliqué que las anotaciones técnicas están contenidas en documentos XML y mediante el lenguaje XSL son transformadas a formato HTML. Pero ello es sólo es una parte del diseño de esta Web. Si has estado navegado por ella verás que todas las secciones siguen un mismo estilo y que mantienen elementos comunes como la barra de menús principales o la columna con el índice de los temas

Como conseguir que todas las páginas tengan el mismo estilo

La solución más simple al crear una página nueva es copiar todo el código HTML de otra página similar y pegarlo en la nueva, evidentemente cuando queramos hacer un cambio que afecte a partes comunes en varias páginas, deberemos de retocar cada una de ellas, mostrándose ser un método inviable cuando la web tenga más de 2 páginas.

La otra solución es la de trocear la página en componentes, es decir la barra de menús principales estará en un fichero independiente, la columna con los índices en otro y así con todo, después cuando se solicite la página, los diferentes componentes son montados y el documento resultante se muestra al usuario.

Es una solución que los programadores web conocen bien, y existe un amplio abanico de herramientas que permiten aplicarla: Active Server Pages para Microsoft, Java Server Pages para Java, Server Side Includes para Apache, PHP: Hypertext Preprocessor también para Apache y mediante la interfaz "Comun Gateway Interface" la podemos implantar con lenguajes de programación genéricos como C, Perl, Python, etc.

Como ejemplo mostraré el formato de la página que estas leyendo utilizando el Server Side Includes por tener una sintaxis simple y fácil de interpretar [ssi]
<html>
<head>
   <!-- #include virtual="/ssi/autoHead.html" -->
	<style type="text/css" > 
   <!-- #include virtual="/ssi/autoEstilo.html" -->
   </style>
</head>
<body>
   <!-- Inicio de la barra de menus -->
      <!-- #include virtual="/ssi/autoCabecera.html" -->
   <!-- Fin de la barra de menus -->
   <table width="100%" id="indice">
      <tr>
         <td>
         <!-- #include virtual="/ssi/Indice.shtml" -->
         </td>
         <td>
         <!-- #include virtual="/ssi/contenido_nota10.html" -->
        <!-- contenido_nota10.html será el 
               resultado de transformar el documento XML -->
         </td>
      </tr>
   </table>
   <!-- Inicio del pie de página -->
      <!-- #include virtual="/ssi/autoPie.html" -->
   <!-- Fin del pie de página -->
</body>
</html>
 
Cuando se pide la nota10.shtml al servidor Apache, se examina el fichero y donde encuentra el comentario con #include incluye el contenido del fichero con el nombre que se indica en virtual.

Las ventajas de este sistema son evidentes, podemos modificar uno de los componentes (por ejemplo los colores de la barra de menú) y toda la web se ve afectada.

Herramientas Web

Las herramientas del anterior apartado no sólo sirven para incluir componentes, sino que son auténticos lenguajes de programación que permiten la definición bucles; la ejecución condicional de código ya sea de programación como de HTML; el acceso tanto a bases de datos, como a otros módulos/programas, como a otros servidores.

Dichas herramientas caen en 2 grandes grupos: Las que se ejecutan mediante la "Comun Gateway Interface" conjuntamente con un lenguaje de programación genérico y las que están incrustadas en el servidor Web. Estas últimas ofrecen un más alto rendimiento que las que se basan en el CGI, por contra suelen ser exclusivas de un servidor Web determinado a diferencia de las basadas en CGI que funcionan en cualquier servidor.

Entorno de desarrollo de la Web de Digital ToTSoL

Hemos visto las ventajas del diseño por componentes que por supuesto es una de las soluciones que aplico en el desarrollo de la Web Digital ToTSoL, la otra es que el montaje de la página no se realice en el servidor Web o dicho de otro modo: en el directorio del servidor Web solo ha de estar la página ya montada.

Me explicaré... si miramos el contenido de las páginas de esta Web vemos que constituyen un conjunto de notas técnicas, presentación de productos y relación de enlaces, Osea, está formada por información que no cambia a cada petición del usuario, no es una web que muestre la situación de los stocks de una empresa en línea (en directo), ni tampoco muestra las noticias de última hora. Las páginas no cambian cada día, ni siquiera en una semana, en definitiva son unos contenidos con una baja volatilidad. Entonces, porqué habria que montar los componentes en cada petición, no sería mejor realizar el montaje una sola vez.

Pero no es el único argumento, también están las limitaciones de mi servidor Web que no admite herramientas que optimicen el montaje mediante componer la página sólo en su primera petición y guardarla. Así, en las sucesivas peticiones y mientras la página no cambie devuelven el documento guardado .

Siendo así los condicionantes, la solución que he adoptado es montar las páginas antes de colgarlas en el Servidor Web.

Para ello he creado un entorno de trabajo formado por 2 directorios principales:
  1. "in" o Zona de Componentes, como su nombre indica están todos los componentes que forman la Web de Digital ToTSoL
  2. "out" o la Zona Espejo, la palabra espejo es por ser un reflejo exacto de lo que existirá en el servidor Web y estarán las páginas ya montadas.


Para montar los documentos HTML utilizo el entorno de desarrollo Web en Perl llamado HTML::Mason (sí es masón pero en inglés, ósea sin acento) que utiliza los componentes de la Zona de Componentes

Para traspasar de la Zona de Componentes a la Zona Espejo hace falta una herramienta que sepa que páginas ha de montar el HTML::Mason, pedirselas y decidir si las páginas resultantes han de ser traspasadas a la Zona Espejo.

Finalmente, es necesario un conjunto de herramientas encargadas de sincronizar el directorio del servidor Web de Digital ToTSoL con la Zona Espejo. Han de realizar la transferencia de los nuevos documentos HTML y de los ficheros gráficos al directorio del servidor Web y el borre de los ficheros obsoletos.

Veamos cada una de ellas.

HTML::Mason como solución para el montaje.

En el lenguaje Perl, (aunque, yo más que un lenguaje de programación veo en el Perl un entorno de programación) existen múltiples soluciones de sistemas de montaje de componentes como son el Embperl, el Apache::ASP, HTML::Templete y HTML::Mason. Todas ellas sacan provecho de un modulo del servidor Apache llamado mod_perl que permite ejecutar en el mismo proceso del Apache programas en Perl. Esto conlleva a una considerable rapidez en la ejecución de los programas Perl.

De todos ellos elegí HTML::Mason [mason] porque es un entorno muy potente y versátil que permite el desarrollo de aplicaciones Web basadas en componentes, con características de la programación de objetos (como la sobrecarga de componentes y definición de métodos), con una envoltura sobre los parámetros de las peticiones GET/POST, con código Perl embebido en el código HTML y la inclusión de métodos que son aplicados antes, durante, después de la interpretación del documento HTML -En una próxima nota explicaré más ampliamente cada uno de los puntos-

Pero, además está diseñado para funcionar tanto en Apache/mod_perl, como con la Interfaz CGI, como en un entorno donde no exista un servidor Web y es basándome en la última característica con la que he desarrollo mi aplicación Web.

Desarrollo del agente peticionario de páginas Web

Busqué en la red una aplicación en Perl que fuese un descargador de Webs completas al disco duro. Encontré el software WWW::Robot un ingenio configurable para recorrer sedes Web (para crear robots web y agentes) de [canon] , útil para descargar sedes web a local, como su licencia de uso lo permite, modifiqué y amplié el código para que pudiera descargar y recorrer tanto desde la estructura de directorios, como realizar una petición al entorno HTML::Mason,. Añadí nuevos módulos para facilitar el cambio del "path" de los enlaces, aumentar la lista de los recursos a recuperar (como en el caso de applets o instrucciones open en javascript) e implementar un sistema de control para detectar si la página ha sufrido cambios con respeto al último pase.

El sistema que sincroniza el Servidor Web

Para sincronizar el Servidor Web con la Zona Espejo creé un conjunto de herramientas en Perl que utilizan los módulos FTP y las potentes instrucciones de navegación por directorios del Perl.

Con ello consigo traspasar al Servidor Web solo los elementos modificados, ya sean documentos HTML, ficheros gráficos, applets Java o recursos como ficheros javascript, hojas de estilo, etc. Además controlo que elementos de la web son obsoletos y entonces borrarlos.
Relacion de enlaces:

nota5: Anotaciones sobre mi primer proyecto basado en XML y XSL.
./nt5.html
Una breve introducción del XML /XSL y mis primeros pasos.

ssi: NCSA HTTPd Tutorial: Server Side Includes (SSI)
http://hoohoo.ncsa.uiuc.edu/docs/tutorials/includes.html
Fecha del documento / revisión enlace: 09/95

mason: Página principal de Mason y lista de correo
http://www.masonhq.com/
http://www.masonhq.com/maillist.html

perlmonth: Programming with HTML::Mason
http://www.perlmonth.com/features/mason/mason.html?issue=9
Firmado por: Jonathan Swartz
Fecha del documento / revisión enlace: 02/2000
Durante 3 números del 9 (Feb) al 11(Apr) de PerlMonth el autor de HTML::Mason presenta las caracteristicas más sobresalientes sobre Mason, con ejemplos . Es casi una guia del tipo paso a paso.

lerner: At the Forge archive: Building sites with Mason
http://www.lerner.co.il/atf/archive.html
Firmado por: Reuven M. Lerner
Fecha del documento / revisión enlace: 06/2000
El columnista del LinuxJournal tiene varios artículos sobre HTML::Mason el primero de ellos se titula "Building sites with Mason" después siguen: "Press releases with Mason", "Session management with Mason", "Content Management with Mason", "Three-tiered design" y "More with Three-Tiered Design"

cnet: Simplify CGI with HTML::Mason; Advanced site building with HTML::Mason
http://builder.cnet.com/webbuilding/0-7704-8-5381388-1.html
http://builder.cnet.com/webbuilding/0-7704-8-6121940-1.html
http://builder.cnet.com/webbuilding/0-7704.html?tag=st.bl.7704.head7704
Firmado por: James Scheinblum
Fecha del documento / revisión enlace: 06/2001
Artículos de la sección Perl Diving de CNet, el primero explica su instalación y realiza una introducción, en el segundo presenta un desarrollo de una Web basada en HTML::Mason donde incluye una explicación de los componentes especiales "dhandler" para crear paginas dinámicas y del filtrado del resultado. También atiende someramente a la generación de una versión XML de los documentos Web y al sistema de almacenamiento cache para ganar velocidad.

canon: Canon Research Centre Europe and Perl
http://www.cre.canon.co.uk/perl/
http://www.cre.canon.co.uk/perl/modules/www_robot/index.html
Firmado por: Ave Wrigley
Desarrolladores del WWW::Robot un ingenio configurable para recorrer sedes Web (para crear robots web y agentes)


Ferrán Casasús Rodó a: 13/09/2001



Subir

Por favor, da tu opinión?

Genial! Bien No está mal Pse! Chorrada!


Digital ToTSoL Home | Negocios en Red | Desarrollos | Anotaciones Técnicas | Vinclateca
Copyright © (2000-2001) Ferrán Casasús Rodó Digital ToTSoL