<< Anterior  |  Siguiente >>

Página 5 de 8 

5. Una implementación de herramientas para la construcción y visualización de libros digitales

En función de lo descripto hasta aquí, comenzamos en febrero de 1998 la construcción de dos aplicaciones. Una de ellas llamada ITB Reader (ITB: Interactive Teaching Book), encargada de proveer la funcionalidad de lectura de LEI, y la otra llamada ITB Builder, con la funcionalidad requerida para la construcción de estos libros.

Para el desarrollo de estas aplicaciones se eligieron como herramientas de trajo el lenguaje C++, la librería Microsoft Fundation Classes 4.2 y el compilador Microsoft Visual C++ 5.0 [12].

A continuación se presenta un esquema de interacción entre las aplicaciones ITB Reader e ITB Builder con la una biblioteca ITB Library mediante redes TCP/IP.

Esquema de interacción

 

Ambas aplicaciones corren bajo los entornos Windows 95, Windows 98 y Windows NT. También desarrollamos una versión del ITB Reader que corre bajo Windows CE [7]. Esta versión es ligeramente diferente a su contraparte de escritorio debido a que debe funcionar en un dispositivo sin disco rígido y con un tamaño de pantalla reducido.

 

Pantalla de la version para Windows CE de la aplicación ITB reader.

 

Al implementar los conceptos desarrollados en forma teórica nos vimos obligados a tomar una serie de decisiones del tipo técnicas y de diseño de interfaz. A continuación describimos las principales.

5.1. La visualización y edición del texto en formato HTML

Al incorporar el módulo de visualización del texto nos encontramos con el inconveniente de que los objetos visualizadores de HTML de libre distribución no permiten realizar varias de las características propuestas, como por ejemplo que un usuario resalte las porciones del texto que desea. Para solucionar este y otros temas decidimos desarrollar nuestro propio objeto visualizador HTML. Este objeto esta compuesto por un parser HTML y un objeto de visualización basado en el resultado del parsing.

Por otra parte, la aplicación ITB Builder debe brindar la posibilidad de que el usuario escriba el texto del libro. Debido a que este tipo de usuario no necesariamente es conocedor del lenguaje HTML, resulta necesario contar con un editor HTML que le brinde al usuario una interfaz similar a un procesador de textos. Dado que un editor es una versión con mayor cantidad de funciones que un visualizador, desarrollamos este editor como una clase derivada de la clase visualizador HTML.

5.2. El control de acceso a la información del usuario

Una característica importante de un LEI es que permite al usuario lector agregar notas y resaltar texto. Estas modificaciones son personales de cada usuario y se almacenan en la biblioteca, por lo que requieren algún sistema que las proteja del acceso por parte de otros usuarios. Debido a que el protocolo TCP no es orientado a la conexión, no brinda ningún método para identificar al usuario que envía solicitudes al servidor (la biblioteca).

Para solucionar este problema, decidimos que los requerimientos del tipo GET y POST relacionados con solicitudes dependientes del usuario, envíen encriptados el nombre y la contraseña del usuario. Por ejemplo, una solicitud de una nota relacionada con la figura 3 de la página 10, en un LEI, es expresada por el ITB Reader en la siguiente forma:

GET /ITBLibrary.dll/GetNote?Book=booknumber&Page=10&
Username=name&Password=psw&Picture=3

5.3 El formato de los archivos LEI

Un LEI puede estar almacenado en una biblioteca digital sobre una red TCP/IP o en algún medio de almacenamiento como por ejemplo un disco compacto u óptico. Cuando se almacena en la biblioteca, es responsabilidad de los diseñadores de esta decidir la forma en que realizarán esta tarea. En cambio, cuando el LEI se encuentra en un medio de almacenamiento diferente, debe tener un formato definido para permitir que pueda ser accedido directamente.

Para conseguir esto, decidimos utilizar el formato de archivo de base de datos Microsoft DAO similar al utilizado por el Microsoft Access. De esta forma un archivo ".itb" es internamente un conjunto de tablas relacionas que almacenan el contenido del libro y las modificaciones propias de cada lector. La elección de este formato se baso fundamentalmente en que el motor de base de datos DAO está implementado en un conjunto de archivos Dinamic Link Library (dll) de libre distribución.

5.4. La interfaz

Para disminuir la necesidad de desplazamiento vertical en las páginas del libro, se opto por incluir una versión reducida de las imágenes o videos referenciados en una página a la derecha de la misma como se muestra en la siguiente figura.

 

Pantalla principal de la aplicación ITB Builder en modo lectura, mostrando
un cuadro de dialogo para la busqueda palabras dentro del libro.

Al hacer clic sobre estas imágenes se accede a su versión de tamaño y calidad máximos. Con esta estrategia se reduce tanto la necesidad de desplazamiento vertical como el tiempo de descarga requerido para recuperar todas las imágenes de una página.

5.5. Utilización de estándares

Las páginas de los libros se almacenan en formato HTML. La comunicación cliente-servidor sigue las convenciones RFC 822 y Commond Gateway Interface (CGI).

Esta utilización de estandares permite que las aplicaciones utilizadas para navegar Internet puedan acceder a los contenidos de los libros LEI. De esta forma se puede utilizar un navegador para recorrer una biblioteca LEI y a su vez descargar el programa ITBReader con el objetivo de aprovechar completamente las capacidades de la misma.

5.6. Programación Multithreading

La recepción y procesamiento del texto y las imágenes se realizan en threads independiente. Esto permite que el usuario se mueva a través del libro sin ser demorado por las descargas en curso.

La inclusión de esta característica aumento en gran medida la complejidad de desarrollo de la aplicación, debido a la necesidad de sincronización de los multiples hilos de ejecución en un determinado momento. Sin embargo, consideramos que era un precio que debiamos pagar para conseguir una aplicación de aspecto y funcionalidad profesional.

<< Anterior  |  Siguiente >>