Wikipedia – www = CDPedia

Desde hace algún tiempo vengo rastreando algunas soluciones a la escasa/nula conectividad en las escuelas. Para que no se mal interprete: por buena que sea la conexión de internet del colegio,  el gran número de equipos informáticos con que cuentan hoy las escuelas secundarias de nuestro País reduce sustancialmente el aprovechamiento de este recurso.

Un recurso didáctico de gran utilización es la wikipedia, alternativa libre y soberana al famoso producto de MS: Encarta.

En esta entrada se analizan alternativas para utilizar la wikipedia sin necesidad de contar con una conexión de Internet.

CDPedia, el proyecto libre

Afortunadamente contamos el proyecto CDPedia, desarrollado por la comunidad Python. Este proyecto consiste en una aplicación que reúne el contenido de la wikipedia (al momento de escribir este artículo, la versión es la 0.8, contenido Diciembre 2012).

En adelante abordaremos algunas alternativas para su aprovechamiento, pero claro: se necesita descargar CDPedia desde el sitio, se puede elegir cualquiera de las opciones, yo opté por la más completa (11GB, 13GB si se descomprime).

Analizaremos las siguiente opciones:

  1. CDPedia en forma local
  2. CDPedia como servicio web
  3. CDPedia integrada con el servidor web

CDPedia en forma local

Una de las  opciones, la más simple por cierto, es la de aprovechar el recurso CDPedia en forma local… ¿QUé significa eso?, pues: que cada un@ de nuestr@s estudiantes posean el recurso CDPedia en su propia computadora y lo accedan como cualquier otra aplicación. Huayra ya integra esta opción entre su inmensa oferta de software provisto… pero la aplicación en si misma no esta incorporada, lo que se provee es la integración de esta aplicación y el escritorio.

Observemos el menú Huayra de Huayra/Linux (también se puede encontrar en el menú Eduación): podemos observar la opción CDPedia en el menú…

cdpediaMenu
menu para acceder a la cdPedia

Esta opción de menú (lanzador de CDPedia) apunta a un archivo: cdpedia-launcher (ubicado en /usr/bin). Este archivo intenta localizar un directorio cdpedia debajo de /usr/share (/usr/share/cdpedia).

Como pueden observar este directorio no existe por defecto (Huyara 1.1), y si lanza la aplicación, se indicará que debe ser descargada la CDPedia e instalada… Analicemos cómo:

En primer lugar, como ya se ha indicado, se descarga la versión de CDPedia que se crea conveniente, el archivo descargado se debe descomprimir, lo que genera un directorio: cdpedia-0.8.tarbig (depende de la CDPedia descargada) en el lugar de la descompresión.

El contenido de esta carpeta que se acaba de generar se puede observar en la siguiente imagen:

cdpediacontenidoEste conjunto de archivos debe estar ubicado en /usr/share/cdpedia (este directorio debe ser creado, ya que por defecto en la instalación no está creado). Para escribir en /usr/share se debe contar con permisos de administración… quedaría entonces del siguiente modo:

 usrsharecdpedia

Una vez que creamos el directorio /usr/suare/cdpedia y en él depositamos el contenido de la carpeta descomprimida podemos acceder a la cdpedia desde la opción de menú. Esta opción inicia el navegador web con la cdpedia funcionando (vea este error detectado).

Esto, si bien parece muy interesante y simple, no parece en si mismo la mejor alternativa para la escuela…. ¿Tod@s nuestros estudiantes deben contar en sus computadoras con los 13GB de información?

Si la respuesta a esta pregunta es: no parece conveniente, ni práctico, entonces podemos empezar a pensar que CDPedia funcione como servicio web… en un servidor (cualquiera) que, a partir de la LAN que provee el piso tecnológico del Programa Nacional Conectar Igualdad, permita ser accedido mediante un navegador web desde cualquiera de las computadoras.

CDPedia como servicio web

Inicialmente debemos comprender como funciona CDPedia… este proyecto, desarrollado sobre python, funciona como servicio web. Es decir: cuando lanzamos la aplicación CDPedia, se inicia un servicio web que atiende peticiones (exclusivamente por le momento) en localhost (el equipo local) y en el puerto 8000 (no en el 80 como cualquier servicio web convencional).

Con lo cual deberíamos indicar que el servicio web escuche peticiones desde la LAN (con una IP o un nombre de dominio que se pueda resolver dentro de la LAN), es decir de algún modo que otras computadoras (dispositivos en general) puedan resolver las rutas de acceso.

Para ello es suficiente con ubicarnos en el directorio donde se encuentra el archivo cdpedia.py (/usr/share/cdpedia en nuestro caso) y lanzar el siguiente comando:

./cdpedia.py --host=MiDireccionIP --port=8000 --daemon

Explicamos en detalle:

./cdpedia.py -> inicia el servicio, el archivo precedido de ./ significa que se encuentra en la ubicación actual, caso contrario debería ser indicado con su ruta completa: /usr/share/cdpedia.py

–host=MiDireccionIP -> –host es un parámetro y MiDireccionIP es “el equipo” al que se debe accederá.  Es muy importante este parámetro.

–daemon-> permite que atienda múltiples peticiones en simultáneo, además funciona en segundo plano (como demonio ¿qué es un demonio?).

Es necesario acompañar (tanto en esta instancia, como al momento de intentar acceder al servicio) el nombre de dominio con .local (sin esto el nombre no se resuelve convenientemente).

–port=8000 -> es el número de puerto en el que escucha el servicio.

Con esto ya está, desde cualquier equipo conectado a la LAN se utiliza un navegador web y en la barra de direcciones se escribe la siguiente URL, en mi caso:

http://MiDireccionIP:8000

Puedes verlo en esta captura:

cdpediaFuncionando

CDPedia integrada en un servidor web

Huayra/Linux incorpora un servidor web: lighttpd, es un servidor web más “liviano” que el conocido apache web server (en muchos casos las escuelas ya aprovechan este recurso y sobre el servidor han instalado Moodle, WordPress, etc).

Este servidor escucha las peticiones en el puerto 80 y “sirve” el contenido de la carpeta /var/www. Cabe destacar la excelente idea que han puesto en práctica los creadores de Huayra: enlazar la carpeta www con Compartir Web ubicada en el home del usuario principal, logrando así que solo con copiar (o enlazar) archivos en la carpeta del usuario estos son compartidos mediante el servicio web.

La idea es la de integrar este servidor web (o cualquier otro) con el servicio CDPedia (para que el servicio que brinda un solo equipo pueda ser aprovechado por muchos otros integrados a una LAN escolar).

No es muy natural y fácil de explicar que, para acceder a la CDPedia, se debe utilizar el puerto 8000…. creo yo (es decir: explicar a profesores y estudiantes que para usar CDPedia deben escribir algo como esto: http://MiDireccionIP:8000 desde sus navegadores WEB), agrega un elemento de dificultad, algo “poco natural”… sería mejor contar con la posibilidad de utilizar una URL más “humana” del tipo:

http://nombre-servidorOdireccionIP/cdpedia

A ello nos encaminamos….

Inicialmente debemos lanzar el servicio CDPedia, esto ya lo hemos hecho. Esta tarea se debe realizar en cada inicio (si la computadora inicia automáticamente la sesión de usuario es recomendable hacerlo como una aplicación al inicio)… luego analizaremos como automatizarla:

./cdpedia.py --host=miNombreDeEquipoOdireccionIP --port=8000 --daemon

MUY IMPORTANTE el parámetro host.

Ahora debemos crear una carpeta cdpedia debajo de /var/www. Para ello necesitamos iniciar un terminal y contar con permisos de administrador:

sudo mkdir /var/www/cdpedia

Ya podemos probar que el directorio es accesible con un navegador web, escribimos en la barra de direcciones:

http://miNombreDeEquipoOdireccionIP/cdpedia

lo que podemos observar es una carpeta vacía, ya que el navegador web esta configurado de modo que si no hay un archivo index.html o index.php lista el contenido del directorio…

Recordemos que a esta altura la computadora esta corriendo dos servicios web:

  • lighttpd escuchando en el puerto 80 y sirviendo el contenido de /var/www
  • CDPedia, que escucha en el puerto 8000 y sirve el contenido de la CDPedia (este servicio es el mismísimo python corriendo la cdpedia)

Decíamos que este directorio creado debajo de www serviría a los fines de invocar a la CDPedia que esta escuchando pedidos (en un puerto muy raro).

Lo que haremos es una especia de “trampita”, vamos a crear un archivo index.html (que impedirá la navegación del directorio y se ofrecerá por defecto cuando se acceda a la dirección http://miNombreDeEquipoOdireccionIP/cdpedia)… ¿dónde esta la tramapa?, pues que al ser solicitado redirija a otra petición, en el servicio web pero en el puerto 8000. El archivo tendrá el siguiente contenido:

<meta http-equiv="refresh" content="0; url=http://miNombreDeEquipoOdireccionIP:8000">

Cuando lighttpd reciba la petición de servid el index.html que acabamos de crear, en lugar de entregar una página, interpreta la etiqueta de redirección.

Con esto ya esta funcionando!!!

¿Cómo lo probamos ?… desde cualquier equipo conectado a la LAN escribimos:

http://miNombreDeEquipoOdireccionIP/cdpedia

Y podemos advertir como funciona nuestro servicio!!!

¿Automatizamos el servicio?

Pero no podemos a cada arranque iniciar manualmente el servicio CDPedia, bueno si, como poder podemos, pero no parece muy acertado. En lugar de ello debemos programar la tarea para cada inicio de sesión:

Vamos al menú Sistema -> Preferencias -> Aplicaciones al inicio

aplicacionesAlInicio

Una vez elegida la opción nos muestra una ventana con todas las aplicaciones programadas al inicio de sesión. Debemos crear una nueva entrada con el botón agregar:

 aplicacionesAlInicio2

Nombre: es opcional

Comando: es la linea de comando para iniciar el servicio… OJO: con la ruta completa al archivo:

/usr/share/cdpedia.py --host=miNombreDeEquipoOdireccionIP --port=8000 --daemon

Y con esto tenemos un servicio CDPedia vinculado con el servidor web funcionando cada vez que iniciamos la sesión de usuario con Huayra/Linux.

CDPedia con proxireverso

Queda para analizar en próxima etapa hacer proxi reverso con el  servidor web lighttpd

2 comentarios en “Wikipedia – www = CDPedia

  1. Felicitaciones por lo desarrollado, es excelente. Me intereso mucho la idea de poder compartir en una lan cdpedia, había estado investigando pero no había encontrado mucho.
    Mi intención es trabajar con esta alternativa en nivel primario en un sistema operativo (versión adaptada de huayra para nivel primario e incial) llamado Aviones de Papel para las aula digitales móviles.
    http://www.huellasfrescas.com.ar/index.php/aviones-de-papel
    Saludos.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *