Un caso real de integración de blogs en la docencia

Un blog se trata de un sitio que se actualiza más o menos periódicamente y que se compone de una serie de publicaciones que tratan sobre uno o varios temas y que pueden ser comentadas por otros usuarios.

Independientemente del uso de campus virtuales o plataformas de formación en línea, los blogs son una de las herramientas que se pueden incorporar a la docencia.

En el caso que se plantea, los blogs se incorporaron en la asignatura de Ingeniería del Software I del Grado de Ingeniería Informática para guiar la evaluación continua durante el desarrollo de toda la asignatura.

¿Qué utilizamos?

Configuración

En primer lugar, creamos grupos formados por 3/4 estudiantes. En nuestro caso les permitimos que configuren los grupos como ellos prefieran. Para cada grupo de estudiantes se crea un blog con una única cuenta de usuario por cada blog.

Luego se crea un blog de la asignatura en el cual se configure el plugin FeedWordPress para que recolecte las publicaciones de los blogs de los grupos.

Finalmente, todos los blogs se configuran como privados, es decir, únicamente los usuarios con cuenta en el blog pueden ver los blogs de los grupos y el blog de la asignatura. De esta forma solo pueden ver las aportaciones de los/as compañeros/as aquellos/as estudiantes que participen en la evaluación continua con el uso de los blogs; los/as estudiantes que no asisten a clase, y por tanto no formaban parte de ningún grupo, no pueden beneficiarse de los análisis y el trabajo de sus compañeros/as.

Desarrollo

Durante el desarrollo de la clase el/la docente plantea cuestiones y temas que se debaten durante la clase. Posteriormente, cada grupo debe publicar en su blog el resultado del debate con las respuestas y conclusiones correspondientes.

El objetivo de esta actividad es que durante la clase se pueda profundizar en los contenidos y que los estudiantes utilicen los blogs para asentar dichos contenidos.

El blog de la asignatura tiene dos fines. Por un lado, facilitar al docente la lectura de las reflexiones como elemento de evaluación continua, sin necesidad de visitar cada uno de los blogs de los grupos. Por otro lado, los/as estudiantes pueden consultar las reflexiones de otros compañeros y de esta forma mejorar sus conocimientos relativos a la asignatura.

Integración de Solr y Drupal 7.x

Antes de comenzar la instalación es necesario asegurarse que se tiene instalado Java 5 o superior y como mínimo PHP 5.2.4. Para este caso se ha utilizado un servidor con las siguientes versiones:

  • Ubuntu Server 12.04
  • PHP 5.3.10
  • Apache/2.2.22
  • Java 6

En primer lugar se debe instalar el módulo de Drupal Apache Solr Search Integration (http://drupal.org/project/apachesolr). Se ha trabajado con la versión 7.x-1.2 del módulo.

Antes de activar el módulo es necesario realizar la instalación de Solr (http://lucene.apache.org/solr). A pesar de que existan paquetes para Solr en Debian y en Ubuntu, para que la integración funcione con Drupal se ha descargado la última versión de la página oficial (Solr 3.6.2 – http://www.apache.org/dyn/closer.cgi/lucene/solr/3.6.2).

Para instalar el servidor Solr se han seguido los siguientes pasos:

  1. Descomprimir apache-solr-3.6.2.zip en el directorio /opt siempre y cuando este no sea visible para el servidor web.
    cd /opt
    sudo unzip apache-solr-3.6.2.zip
  2. Los ficheros de configuración de Solr se encuentran en apache-solr-3.6.2/example/solr/conf. Se deben sustituir dichos ficheros por los que proporciona el módulo de Drupal:
    cd apache-solr-3.6.2/example/solr/conf
    sudo mv solrconfig.xml solrconfig.xml.bak
    sudo cp [DIR DRUPAL]/sites/all/modules/apachesolr/solr-conf/solr-3.x/solrconfig.xml .
    sudo mv schema.xml schema.xml.bak
    sudo cp [DIR DRUPAL]/sites/all/modules/apachesolr/solr-conf/solr-3.x/schema.xml .
    sudo mv protwords.txt protwords.txt.bak
    sudo cp [DIR DRUPAL]/sites/all/modules/apachesolr/solr-conf/solr-3.x/protwords.txt .
  3. El módulo de Drupal incluye además varios ficheros de configuración adicionales que se deben copiar dentro del directorio de configuración de Solr.
    cd apache-solr-3.6.2/example/solr/conf
    sudo cp [DIR DRUPAL]/sites/all/modules/apachesolr/solr-conf/solr-3.x/solrconf_extra.xml .
    sudo cp [DIR DRUPAL]/sites/all/modules/apachesolr/solr-conf/solr-3.x/solrcore.properties .
  4. Es recomendable incluir una lista de palabras vacías para optimizar la indexación de los contenidos. Se pueden encontrar listas de palabras vacías para una gran número de idiomas en http://code.google.com/p/stop-words/. Para este caso el contenido que se va a indexar está en español por lo que se ha descargado la lista de palabras vacías en español.
    sudo mv stopwords.txt stopwords.txt.bak
  5. Finalmente lanzamos Jetty con Solr.
    sudo java -jar /opt/apache-solr-3.6.2/example/start.jar

Para comprobar que el servidor Solr está funcionando correctamente se debe acceder a la siguiente url http://[TU DOMINIO]:8983/solr/admin. Asegúrate que el puerto 8983 es accesibles. En caso contrario puedes abrirlo o cambiar el puerto en el fichero de configuración de Jetty.

En /opt/apache-solr-3.6.2/example/etc/jetty.xml cambia el puerto por defecto 8983 por otro que no sea el 80:

<Call name="addConnector">
[...]
<Set name="port"><SystemProperty name="jetty.port" default="8983"/></Set>

Servidor Solr con autenticación HTTP

Para proteger la página de administración del servidor Solr mediante autenticación HTTP se han seguido las indicaciones que se encuentran en la siguiente página http://www.shayanderson.com/linux/how-to-password-protect-apache-solr-server-admin-pages.htm. En primer lugar, en el fichero /opt/apache-solr-6.3.2/example/etc/jetty.xml se debe descomentar el siguiente fragmento de código, asegurándose que se sustituye Test Realm por Solr Admin Auth.

[...]
<Set name="UserRealms">
<Array type="org.mortbay.jetty.security.UserRealm">
<Item>
<New>
<Set name="name">Solr Admin Auth</Set>
<Set name="config"><SystemProperty name="jetty.home" default="."/>/etc/realm.properties</Set>
<Set name="refreshInterval">0</Set>
</New>
</Item>
</Array>
</Set>
[...]

Después se edita /opt/apache-solr-6.3.2/example/etc/webdefault.xml y se añade al final del fichero el siguiente fragmento de código:

[...]
</locale-encoding-mapping-list>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>Solr Admin Auth</realm-name>
</login-config>
<security-constraint>
<web-resource-collection>
<web-resource-name>Solr Admin Auth</web-resource-name>
<url-pattern>/admin/*</url-pattern>
<url-pattern>/update/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
</web-app>

A continuación se crea el fichero realm.properties en /opt/apache-solr-6.3.2/example/etc en el que se debe indicar el nombre de usuario, la contraseña y el identificador (role-name) que en este caso es admin:

username: password, admin

Para que el módulo de Drupal funcione con autenticación HTTP se debe indicar el usuario y la contraseña en el campo de la URL del servidor Solr:

http://username:password@localhost:8983/solr

Script en init.d

Para terminar, creamos un script en init.d para iniciar y parar el servidor Solr:

#!/bin/sh -e

# Starts, stops, and restarts solr

SOLR_DIR="/opt/apache-solr-3.6.2/example"
JAVA_OPTIONS="-Xmx1024m -DSTOP.PORT=8079 -DSTOP.KEY=stopkey -jar start.jar"
LOG_FILE="/var/log/solr.log"
JAVA="/usr/bin/java"

case $1 in
start)
echo "Starting Solr"
cd $SOLR_DIR
$JAVA $JAVA_OPTIONS 2> $LOG_FILE &
;;
stop)
echo "Stopping Solr"
cd $SOLR_DIR
$JAVA $JAVA_OPTIONS --stop
;;
restart)
$0 stop
sleep 1
$0 start
;;
*)
echo "Usage: $0 {start|stop|restart}" >&2
exit 1
;;
esac

(fuente: http://lucene.472066.n3.nabble.com/solr-init-d-script-td1867519.html)

 

Nueva versión de Multisite Global Search

El proyecto, GRIAL 2.0, está entregado y defendido. Ahora es cuando viene lo divertido, seguir manteniéndolo y hacerlo crecer más.

Justo el día de la defensa del proyecto recibí la traducción al francés del plugin y ayer mismo tenía en mi correo la traducción al noruego. Visto que no he dado soporte al plugin de búsquedas en los dos últimos meses, decidí ponerme a implementar algunas mejoras sugeridas por los usuarios así como solventar algunos errores en su funcionamiento.

Cuando se utiliza WordPress como CMS más que como gestor de blogs, los usuarios pueden no entender la diferencia entre buscar en las publicaciones o post y buscar en las páginas estáticas, por ello, siguiendo el consejo de un par de usuarios, he añadido una opción tanto en la configuración del widget como en el uso del shortcode, que permite indicar que las búsquedas se hagan por defecto en posts y páginas y se oculta la opción  en el formulario de búsqueda.

Se ha resuelto un bug que impedía mostrar los posts privados en los resultados de búsqueda cuando estabas logueado en el sistema. Además, desde las primeras versiones, daba problemas con las instalaciones que habían migrado de un WPMU a WordPress 3.0 Multisite, se obtenía un error al activarlo que indicaba un fallo en la base de datos. Dicho bug ha sido resuelto en esta nueva versión.

Además de la funcionalidad, se ha reestructurado el plugin, separando la definición del widget en un fichero independiente y agrupando otra serie de funcionalidad como la definición de los shortcodes o el manejo de la base de datos en otros ficheros, de esta forma se facilita su mantenimiento. En versiones futuras se pasará a definir todo el plugin como un conjunto de clases que interactúan entre sí.

En definitiva, la nueva versión de Multisite Global Search, 1.2.5, con casi 3000 descargas, es más estable, está mejor estructurada e introduce pequeñas mejoras de usabilidad.

http://wordpress.org/extend/plugins/multisite-global-search/

Bubbl.us o cómo crear mapas conceptuales de forma sencilla

Realizando la presentación para la defensa de mi proyecto, ese del que habla todo este blog, tuve la necesidad de plasmar en una sola imagen toda la maraña de herramientas y aplicaciones que he utilizado a lo largo de casi un año para dar forma a toda la estructura tecnológica que ahora da servicio a GRIAL.

Opté por crear un mapa conceptual por lo que me puse a probar algunas de las herramientas que existen para dicho propósito. Tras catar MindMeister, CmapTools y FreeMind ninguna terminaba de convencerme, o los diagramas eran demasiado sobríos o había que emplear más tiempo en aprender a manejar la herramienta que en crear en mapa.

Entonces encontré Bubbl.us, una herramienta gratuita online desarrollada en Flash. Nada más acceder a su web puedes comenzar a crear mapas conceptuales sin necesidad de registrarte. Una vez tengas hecho tu mapa puedes imprimirlo y exportarlo a imagen o  código HTML para insertarlo en una web. Solo si quieres guardar los mapas o compartirlos con otros usuarios será necesario registrarte, pero hasta eso es sencillo, introduces un usuario, una contraseña, tu dirección de correo y listo, cuenta creada sin perder el mapa que estuvieras construyendo.

Crear un mapa con Bubbl.us es sumamente sencillo e intuitivo, con solo situar el ratón sobre el nodo inicial se muestran todas las operaciones disponibles: eliminar, mover, conectar con otro nodo, cambiar el color, cambiar el tamaño de fuente, añadir un nodo hijo o añadir un nodo hermano. Además se puede generar toda la estructura utilizando únicamente el teclado, (Cmd o Ctrl) + Enter para añadir nodos hijo y Tab para añadir nodos hermano.
.