HOWTO

1. Philosophie générale

Le module GLOP (INF202, INF203, INF302 et INF303) peut être vu sous plusieurs angles : la vue enseignant, la vue élève, la vue administration.

1.1. La vue enseignant

L'équipe pédagogique travaille avec un seul outil : un site "SVN" (https://svn.enstb.org/ens/tc/glop/). Il s'agit d'un système de gestion de versions de documents qui doit être utilisé par les enseignants qui rédigent et modifient les sujets et autres documents du module. On y trouve donc les sources des différents documents, et deux versions PDF différentes des documents finaux. Une version est destinée à être imprimée (version avec deux ou quatre pages par feuille) et l'autre est destinée à être affichée à l'écran (version avec une page par feuille).

En général les sources des documents GLOP sont en LaTeX (quelques exceptions existent notamment pour les transparents de cours d'Antoine et de Mayte). Vous trouverez plus d'informations sur ces sources dans le paragraphe 2.

1.2. La vue élèves

Les documents destinés aux élèves sont déposés sur "Moodle" (http://formations.enst-bretagne.fr/fad/). Moodle est la plate-forme officielle choisie par la DE pour échanger avec les élèves. Par conséquent on évite d'utiliser les autres moyens d'échanges (fichiers par émail, dépôts sur BSCW, ou autre). Notez que pour l'organisateur du module, cela implique de la recopie de fichiers entre le SVN et Moodle.

Une autre source d'informations pour les élèves est ~lib-src. Il s'agit d'un compte utilisateur Unix un peu spécial sur lequel sont déposés notamment des sources Java utilisées pour certains TP. Ce compte est là pour des raisons historiques, mais ce fonctionnement n'est plus dans la philosophie de l'école. Cependant, cela reste bien pratique, et en attendant de trouver aussi simple on continue à l'utiliser. Par exemple, les fichiers qu'il contient sont déposés sur Moodle pour la séance de TP correspondante... mais c'est aussi bien qu'ils soient accessibles dans l'espace de fichiers Unix.

1.3. La vue administration

Les fiches pédagogiques du module sont déposées sur « AUSSI » (http://aussi.enst-bretagne.fr). De plus, pour les organisateurs des modules (majeure et mineure) il existe un ensemble d'outils qui ont été mis en place pour faciliter la génération des documents. Vous trouverez plus d'informations sur ces outils dans le paragraphe « Outils pour les organisateurs des modules ».

2. Outils pour les enseignants

Dans ce paragraphe, nous décrivons la manière dont les différents outils doivent être utilisés aussi bien par les enseignants participant au module que par les organisateurs du semestre.

2.1. SVN (Subversion)

Dans le site SVN , à l'adresse https://svn.enstb.org/ens/tc/glop/, sont stockés tous les documents du module. Trois types de documents s'y trouvent : les documents relatifs à l'organisation des modules, les documents concernés par les séances et les documents relatifs aux devoirs (pour l'instant uniquement le contrôle du semestre). L'arborescence de répertoires contenant ces documents est la suivante :

  1. adm : répertoire contenant les documents pour l'organisation des modules.

  2. devoir : contient les sujets d'exament notamment.

  3. cours, filrouge, gl, java : répertoires avec les documents concernant les cours, le fil rouge, les travaux pratiques et petites classes de la partie génie logiciel et les travaux pratiques et petites classes de la partie Java, respectivement.

La plupart des enseignants intervenant dans GLOP seront amenés à accéder aux quatre derniers répertoires. Chacun de ceux-ci contient deux sous répertoires :

2.1.2. Création d'un compte dans le SVN

Puisque toutes les informations sont sur le SVN, il faut bien que toutes les personnes qui participent au module aient un compte sur celui-ci. Il faut donc demander à un administrateur du SVN (Guillaume ou Ronan) l'apperture d'un compte. Le plus simple pour eux est de vous mettre le même accès que sous Unix. Par conséquent, lorsque vous leur enverrez un mail pour demmander l'ouverture de votre compte, recopiez le résultat de la commande Unix 'ypmatch $LOGNAME passwd'.

2.1.3. Pour les enseignants qui ne modifient pas les documents

Une fois que vous avez votre compte, l'interface Web du SVN vous suffit pour visualiser les documents. De plus, dans le répertoire adm, vous trouverez pour la majeure et la mineure le fichier planning.html qui donne pour chaque séance le nom des enseignants concernés ainsi qu'un lien vers les documents impliqués dans la séance (il s'agit simplement de pointeurs au bon endroit dans l'arborescence du SVN).

2.1.4. Pour les enseignants qui modifient les documents

Si vous voulez modifier des documents, vous devez utiliser l'interface en ligne de commande du SVN qui gérera les problèmes de modifications concurrentes et les versions. De plus, il est intéressant de vous abonner aux listes de diffusion pour être informés des modifications qui font les autres. Pour s'abonner à ces listes, il suffit de faire la demande à l'administrateur du SVN (Guillaume).

a) Installation du SVN

Sous Debian il suffit d'exécuter la commande 'apt-get install subversion'. (Pour les autres systèmes, je ne sais pas. :-)

b) Utilisation du SVN

Guillaume à écrit une petite documentation avec les commandes de base. Vous trouverez cette doc ici. Et sinon il y a un livre en ligne plus complet ici. Et on donne ici un extrait de ce que Guillaume explique dans sa doc :

  1. Première utilisation (« check out ») : placez vous dans votre répertoire de travail et exécutez la commande 'svn co https://svn.enstb.org/ens/tc/glop'. Avec cette commande SVN va vous créer un répertoire '« répertoire_de_travail »/glop' qui contiendra tout ce qui concerne GLOP y inclus les répertoires tags. Cela fait quand même pas mal de données ... Si vous ne voulez pas avoir tout sur votre disque dur, il suffit de vous mettre dans le répertoire que vous voulez recupérer et écrire la commande. Par exemple, si vous voulez avoir uniquement la dernière version des cours de la majeure GLOP, placez vous dans le répertoire '« répertoire_de_travail »/cours/' et exécutez la commande 'svn co https://svn.enstb.org/ens/tc/glop/cours/trunk'. Une fois que vous avez fait le check out, vous pouvez travailler sur la copie locale, faire des mofications. Note : si vous avez demandé une sauvegarde de votre répertoire de travail, il serait bon d'exclure votre copie local du SVN de cette sauvegarde...

  2. Une fois que vous avez fait le « check out » d'une partie ou de toute l'arborescence, vous pouvez faire des modifications sur la copie de travail locale. Lorsque vous avez finit ces modifications (ou vous n'avez plus le temps de continuer mais que vous avez peur de perdre les modifications :)), il faut les déposer dans le SVN. Pour ce faire, si vous avez créé des nouveaux fichiers et/ou répertoires, faites un/des 'svn add', un par élément créé. Ensuite, avec la commande 'svn commit' vous validez toutes les modifications que vous avez fait en locale sur le serveur (on vous demande de rédiger un petit commentaire sur la nouvelle version que vous déposez, ne racontez pas votre vie, mais soyez explicite). Pratique : pour éviter l'utilisation de l'éditeur par défaut, vous pouvez utiliser l'option -m suivie du commentaire associé à la nouvelle version. Si vous voulez commiter seulement une partie des modifications, suivez le mot commit par le nom des fichiers/répertoires que vous voulez commiter.

  3. Lorsqu'une autre fois, à un autre moment vous voulez continuer votre travail, pensez à récupérer la dernière version des documents qui sont sur le SVN. Pour ceci, placez vous dans le sous-répertoire SVN pour lequel vous voulez récupérer la dernière version et tapez 'svn update'. Ceci vous évitera des conflits possibles ...

  4. Une commande pratique est 'svn status' qui vous donne l'état des modifications locales par rapport à la dernière version que vous avez recupéré du serveur SVN.

2.2. LaTeX

Les sujets et pratiquement tous les documents sont écrits en LaTeX. Fabien à fait créer une feuille de style dédiée à cela (la classe 'enstb.cls' qui se trouve dans https://svn.enstb.org/ens/utils/styles/trunk/). Il existe une documentation de cette classe ici.

2.2.1. Installation de l'environnement

Pour faire fonctionner la feuille de style, vous avez besoin de toute une série de choses (nous donnons ici comment faire l'installation de toutes ces choses pour linux Debian) :

  1. Distribution LaTeX, et Perl : exécutez la commande 'apt-get install perl tetex-base tetex-bin tetex-doc tetex-extra lmodern latex-beamer pgf ps2eps'.

  2. Paquetage LaTeX « newfile.sty ». Récupérez le fichier 'newfile.zip' à l'adresse http://texcatalogue.sarovar.org/entries/newfile.html. Vous pouvez également faire une recherche sur le site « ctan.org » (http://www.ctan.org/search.html) ou dans le site « texcatalogue.sarovar.org » (http://texcatalogue.sarovar.org/brief.html). Ensuite, installez ce zip par exemple dans '/usr/local/share/texmf/tex/latex'. Dans le répertoire 'newfile' créé lors du dézipage, exécutez la commande 'latex newfile.ins; latex newfile.dtx; latex newfile.dtx'. Ensuite exécutez la commande 'texhash' pour qu'il soit pris en compte automatiquement lors des compilations LaTeX.

  3. Pour les dessins de diagrammes UML, Fabien utilise le paquetage LaTeX « pst-uml » (http://www.ctan.org/tex-archive/graphics/pstricks/contrib/pst-uml/) Récupérez donc également ce paquetage sur votre miroir CTAN préféré et installez-le comme précédemment.

  4. Récupérez l'outil 'latexmk' à l'adresse http://texcatalogue.sarovar.org/entries/latexmk.html ou depuis votre miroir CTAN préféré. Copiez le fichier 'latexmk.pl' par exemple dans '/usr/local/bin' et créez un lien symbolique dessus (ou renomez-le) avec le nom 'latexmk' (i.e. l'extension '.pl' a disparue). Copiez également 'latexmk.1' dans '/usr/local/man/man1' (ça peut servir).

  5. Fabien a tendance à utiliser les toutes dernières versions de beamer et pgf. Si votre paquetage Debian n'est pas assez up-to-date, le mieux est de récupérer les dernières version sur le CVS de sourceforge :

mkdir -p /usr/local/share/texmf/tex/latex
cd /usr/local/share/texmf/tex/latex
cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/latex-beamer login (le mot de passe est vide, tapez ENTREE)
cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/latex-beamer co -P latex-beamer
cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/pgf login (sans mot de passe)
cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/pgf co -P pgf
cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/pgf co -P fig2pgf
texhash
cd fig2pgf; make install
 

Attention : si vous faites ça (récupérer 'pgf' depuis Sourceforge) vous aurez certainement besoin d'installer le paquetage LaTeX 'xkeyval' (http://www.ctan.org/tex-archive/macros/latex/contrib/xkeyval/). Installez-le dans '/usr/local/share/texmf/tex/latex' par exemple, et faites 'texhash'.

2.2.2. Compilation des sources LaTeX

Vous avez deux options pour la compilation des sources LaTeX de vos cours et PCs/TPs : soit vous utilisez la commande latex directement soit vous utilisez l'outil makeDoc.pl fait par Fabien.

a) Compilation avec des commandes LaTeX directement

Une chose bonne à savoir est que l'environnement 'herepscode' de la classe 'enstb.cls' (qui fait des jolies boîtes roses à coins ronds) utilise une petite astuce LaTeX : exécuter une commande Unix en cours de compilation LaTeX. Dans le cas présent, cet environnement génère un fichier d'instructions spéciales et appelle un script Perl dessus qui génère à son tour un fichier LaTeX et un fichier PDF qui sont insérés dans le document LaTeX en cours de compilation... Vous avez bien suivi ? Bref, tout ceci est possible grâce à la commande LaTeX '\write18{}' qui permet de lancer une commande shell en cours de compilation. Cependant, par défaut et pour des raisons de sécurité, cette fonctionnalité est désactivée dans LaTeX. Il faut alors, soit lancer la commande latex avec l'option '-shell-escape' ou '-enable-write18', ou bien modifier la configuration de LaTeX sur votre système. (Sur ma distribution Debian, dans le fichier '/etc/texmf/texmf.cnf', on peut changer 'shell_escape = f' en 'shell_escape = t'.) Si vous ne faites pas ça vous aurez des erreurs du style 'LaTeX Error: File herediag1 not found.' Par contre, cette erreur peut aussi venir du fait que vous avez oublié d'installer l'outil 'epstopdf', ou que vous avez installé 'ps2epsi' à la place de 'ps2eps'...

b) Outil 'makeDoc.pl'

Il s'agit d'un script Perl qui lance la compilation LaTeX du document passé en ligne de commande (la plupart des cas ce document est appelé 'main.tex'). Un des avantages d'utiliser ce script pour la compilation est qu'il lance les commandes latex avec les bonnes options pour que tout se passe bien. Donc, en principe vous ne devez pas avoir l'erreur que j'ai cité dans le paragraphe précédent, ou alors vous avez des problèmes d'installation mais pas d'option latex...

Installation. Le script se trouve dans le SVN à l'adresse 'ens/utils/scripts'. Facilitez vous la vie et ajoutez à votre variable PATH le chemin au script... De plus, il faut disposer

Compilation. Il n'existe pas de documentation à jour du script. Je décris donc ici les principales options en fonction de ma lecture des sources. Fabien doit relire ce document pour vérifier qu'il n'y a pas trop d'erreurs ... Options disponibles :

Exemples typiques de compilation

2.2.3. Choses intéressantes à savoir lorsqu'on écrit une source LaTeX

a) Inclure un document html dans le fichier source LaTeX

Si le document tient en une page ou moins, on peut produire une version PS en exécutant la commande 'ps2html < inputfilename.html -o outputfilename.ps'. Si le document s'étale sur plusieurs pages, il faut générer un PS pour chaque page. On pourra utiliser pour faire cela un navigateur Web en imprimant chaque page dans un 'fichier-pi.ps'. Il faut ensuite générer la version EPS et PDF de chaque fichier, le PDF n'étant utile que si l'on souhaite produire le doc en PDF avec « pdflatex ». Pour générer la version EPS exécutez la commande 'ps2eps fichier-pi.ps; epstopdf fichier-pi.eps'. Attention : l'utilisation de la commande 'ps2pdf' est déconseillée si l'on veut préserver les hyperliens dans le PDF final. Pour insérer le ou les fichiers résultants dans les sources LaTeX, on pourra utiliser l'extension graphics ainsi :

\begin{figure}
\includegraphics[height=\textheight]{path/filename-pi} 
\end{figure} 



Il convient de ne pas ajouter de suffixe au nom du fichier, ainsi l'outil utilisé (latex, pdflatex) trouvera le fichier qui lui convient. L'option [height=\textheight] permet éventuellement de mettre le contenu de la page importé à l'échelle de la page du document produit (si c'est la largeur qui est excédentaire, on remplacera 'height' par 'width').

3. Outils pour les organisateurs des modules (TODO)

Ici il faut documenter les différents Makefile qui existent avec les différentes options ...

Par ailleurs, dans chaque répertoire concernant un sujet de mineure (i.e. les sujets spécifiques à la mineure plus les sujets communs à la mineure et la majeure; pour les sujets spécifiques à la majeure, je laisse Fabien arbitrer), j'ai ajouté un fichier 'Makefile' pour encapsuler les appels aux scripts Perls avec leurs options spécifiques. C'est juste histoire d'avoir un *constructeur* standard. Ces Makefile ont plusieurs entrées : 'all', 'mineure', 'majeure', et 'clean'. Comme vous le devinez, il suffit de taper 'make mineure' pour regénérer les documents. Ceci est valable dans chaque sous répertoire de chaque sujet, mais c'est également valable dans le répertoire racine 'svn/ens/tc/glop' qui contient également un Makefile récursif.

**update-semestre.sh** est un petit script shell qui se propose de mettre à jour la macro '\date{}' des fichiers LaTeX. Si on le lance sans argument, il se contente d'afficher les dates qu'il trouve et vous en suggère une nouvelle. - **Gestion des fichiers** -

**fichiers_a_imprimer_mineure.sh** est un script shell qui récupère les documents de la mineure dans votre copie du svn et les place dans votre répertoire courant en les renommant sous la forme 'INF202-TP1.pdf', 'INF203-C1.pdf', etc. Bien évidemment ces noms sont fortement dépendant de la programmation du module ! Les documents ainsi collectés sont au format "à imprimer", c'est à dire en 2 pages par feuille. Il ne reste plus qu'à envoyer tout ces fichier à Valérie pour qu'elle les fasse imprimer et distribuer aux élèves. On gère généralement à part la première séance puisque les liste d'élève ne sont pas encore arrétées. Dans ce cas là on distribue nous même les documents en salle. -

**fichiers_pour_moodle_mineure.sh** fait un peu la même chose mais il collecte les documents "à afficher" (i.e. en 1 page par feuille). On en fait une archive zip que l'on dépose et dés-archive dans le répertoire "fichiers/documents":http://formations.enst-bretagne.fr/fad/files/index.php?id=19&wdir=%2Fdocuments de Moodle.


fdagnat

Last modified: Wed Nov 29 18:28:19 CET 2006