Álvaro González Sotillo

Cómo publico materiales para clase

La rutina de muchos profesores suele ser la siguiente:

Este flujo de trabajo se complica porque la creación y los cambios se pueden hacer desde diferentes ordenadores (departamento, aula, ordenador personal). Además, durante el proceso es necesario hacer copias de seguridad. Y de vez en cuando uno se equivoca y hay que volver a alguna versión anterior. Y, lamentablemente, el acceso a Internet sigue sin estar garantizado al 100% en las aulas de los institutos

En esta entrada describo qué solución utilizo, que combina repositorios Git, tecnología offline y servicios gratuitos de Internet.

/assets/blog/mi-publicacion-de-materiales-para-clase/materiales-para-clase.svg

Figura 1: Diagrama de los soportes de información utilizados

Copias de seguridad

Utilizo tres sistemas de copias de seguridad para el directorio con los ficheros de clase:

  • MegaSync sincroniza continuamente los cambios, siempre que haya acceso Internet
  • FreeFileSync sincroniza los ficheros bajo demanda con una memoria USB.
  • GitHub contiene los ficheros públicos, y BitBucket contiene también los privados.

Publicación de contenidos

Moodle ha mejorado bastante la publicación de ficheros desde la versión anterior, ya que ahora basta arrastrar y soltar para que aparezcan en el curso. De todas formas, sigue siendo engorroso realizar manualmente las actualizaciones, sobre todo si son varias a la vez.

Mi opción es utilizar un servidor intermedio, GitHub Pages. Los contenidos se sirven desde GitHub, y en Moodle sólo hay enlaces a dichos contenidos.

Repositorios y ramas Git

Utilizo un solo repositorio para todas las asignaturas (en el pasado tenía uno por asignatura, pero era demasiado farragoso). El repositorio tiene dos ramas

  • gh-pages: contenidos públicos
    • Apuntes, enunciados de prácticas, documentos, presentaciones, imágenes...
  • profesor: contenidos privados
    • Exámenes y su corrección
    • Prácticas entregadas
    • Notas de los alumnos

El repositorio tiene dos remote

  • Uno público en github, con la rama gh-pages, donde se publican mediate Github Pages
  • Uno privado en bitbucket, con las ramas gh-pages y profesor, como copia de seguridad

URL de los contenidos

Una vez publicados en Github Pages, basta con utilizar la URL del recurso en Moodle para enlazarlo. Para facilitar la tarea, utilizo un script que imprime las URL de los ficheros pasados como párametro. Suelo utilizarlo desde dentro de Emacs con C-U M-! ghpages *.

#!/bin/bash

# DIRECTORIO ABSOLUTO DEL REPOSITORIO ACTUAL
git_repo(){
    git rev-parse --show-toplevel
}

# DIRECTORIO DEL REPOSITORIO ACTUAL
git_repo_name(){
    basename $(git_repo)
}

# RUTA ABSOLUTA A PARTIR DE RUTA RELATIVA
absolute_filename(){
    local F=$1
    readlink -f $F
}

# RUTA RELATIVA DE UN FICHERO EN EL REPOSITORIO
filename_relative_to_git_repo(){
    local F=$(absolute_filename $1)
    local REPO=$(git_repo)
    local LENGTHR=${#REPO}
    local RET=${F:$LENGTHR}
    echo $RET
}

for FILENAME in $*
do
    echo https://alvarogonzalezsotillo.github.io/$(git_repo_name)$( filename_relative_to_git_repo $FILENAME)
done

Creación de los materiales

Para disfrutar de las ventajas que git ofrece, utilizo ficheros de texto. Mi opción es el formato org-mode, que me permite sin salir de Emacs:

  • Generar presentaciones, con org-reveal
  • Generar una versión pdf de las presentaciones, que los alumnos pueden imprimir
  • Generar apuntes tanto en pdf como en html
  • Si necesito afinar en el formato o la apariencia (prácticas, exámenes) recurro a Latex. Por ejemplo, utilizo esta plantilla para exámenes.

De todas formas, aún mantengo algunos ficheros binarios

  • Ficheros docx como plantillas de trabajo para los alumnos
  • Ficheros xlsx para el cálculo de notas