Réglisse

Version 1

Répartitions équilibrées groupant les individus suivant des sélections en liberté

Manuel de l'utilisateur

Michel Billard Sirakawa

© 2011

GPL 3

Préface

Réglisse© est un descendant de Cohortes©, modeste essai de logiciel de répartition d'une population entre divers groupes, une po­pulation d'élèves du même ni­veau par exemple. On peut spécifier des incompatibilités entre individus. Les répartitions produites res­pectent autant que possible le ratio de la population globale entre éléments masculins et éléments féminins.

Il est sous licence GPL3.

Écrit en Php, il diffère de Cohortes© en ce qu'il ne requiert qu'un serveur HTTP, comme Apache, exécutant Php. Les bases de données y sont gérées par Sqlite 3, ce qui dispense de l'installation de Mysql.

Ce changement répond aux suggestions de certains testeurs qui, dépendant du bon vouloir de tel ou tel responsable pour l'installation de Mysql sur leur machine administrative, n'ont pu utiliser Cohortes© que sur leurs machines personnelles et ont souhaité une solution plus souple. D'autre part, cherchant un moyen simple de permettre à plusieurs personnes de travailler simultanément avec Co­hortes© sur des jeux de données différents, sans passer par un administrateur général qui eût créé les comptes et les bases de don­nées adap­tées en minimisant les risques d'incursions dans les données des autres, il m'est apparu que Sqlite 3 satisfaisait mes at­ten­tes.

Réglisse© n'est pas un simple portage de Cohortes©, car, devant adapter les requêtes SQL à ce que Sqlite accepte, ou, si l'on pré­fère, retirer des requêtes certains ajouts de Mysql qui, n'étant pas dans la norme Sql, sont inconnus de Sqlite, j'ai changé en plus d'un endroit la façon de procéder et, créant une erreur où il n'y en avait pas, l'ai résolue en changeant de méthode.

Un changement important est une modification du fichier de données d'origine qui doit, désormais, contenir une première ligne indi­quant le titre des colonnes, et une colonne deux comportant le prénom. L'adaptation éventuelle de ce fichier est traitée plus loin.

L'interface a été revu, essentiellement pour l'adapter à la possibilité de plusieurs utilisateurs, annexement en disposant les boutons de façon plus rationnelle à mes yeux.

Si le traitement des cas particuliers est toujours fait en premier sans souci du sexe pour s'assurer qu'il y ait de la place pour les loger, les autres cas sont traités différemment, ce qui accélère les répartitions et respecte mieux les ratios de sexes.

Ils sont traités suivant un ordre aléatoire, non plus par tirage au sort d'un identificateur d'élève jusqu'à ce qu'on en trouve un qui ne soit pas encore affecté, créant des temps d'attente parfois excessifs vers la fin du traitement, mais en en modifiant l'ordre avant tout traite­ment et en les affectant suivant cet ordre.

Les affinités négatives sont gérées au fur et à mesure, en cherchant, pour chaque élève la classe où se trouve le plus petit nombre de de ceux avec qui on doit éviter de le rapprocher.

Les affinités positives sont traitées à la fin : pour chaque élève, si des rapprochements sont souhaités, on déplace un élève, du même sexe si possible et qui peut être déplacé pour introduire celui qu'on désire rapprocher de lui.

Si la documentation de Réglisse© est inspirée de celle de Cohortes©, elle n'en est pas moins une réécriture.

J'espère qu'on comprendra que, sous le masque d'exemples peu probables, se cache une vraie réflexion sur les problèmes évoqués, et que les anecdotes personnelles que fait resurgir en moi tel ou tel évènement du développement ou de l'écriture de cette documenta­tion, véridiques et maintenues dans leurs dimensions originelles, ne lasseront pas trop celui qui sacrifie son temps à cette lecture.

Enfin, si le jecopiste a sûrement laissé passé nombre de coquilles, la majorité des graphies qui pourraient surprendre un lecteur atten­tif ne sont pas dues à mon ignorance mais à l'application des recommandations de la Déclaration précédant les listes du Dictionnaire de l'Académie française (9e édition en cours de publication) dans les fascicules du Journal officiel de la République française depuis le 22 mai 1993 que l'on peut trouver sur le site http://www.renouvo.org/index.php.

Un ultime point est que, autant que j'aie compris les textes de la CNIL, un fichier tel que le fichier des élèves de Réglisse est légal, car il ne comporte aucun renseignement ethnique, religieux, politique, mais doit faire l'objet d'une déclaration simplifiée par celui qui le crée.

Prérequis

Logiciels

Il faut disposer d'une machine exécutant un serveur Web, httpd, comme Apache qui a servi pour les tests, exécutant php.

En général, taper dans le navigateur l'adresse http://localhost, affiche une page indi­quant que le serveur est en fonction.

Racine des documents

Il faut savoir où se trouvent les fichiers HTML :

sous Fedora, et vraisemblablement les autres distributions de Linux, avec un Apache compilé par défaut, on peut utiliser cette commande :

cat/etc/httpd/conf/httpd.conf|grep DocumentRoot

dont le résultat devrait ressembler à ceci si le fichier de configuration se trouve à cet endroit :

# DocumentRoot: The directory out of which you will serve your...

DocumentRoot "/var/www/htdocs"

# This should be changed to whatever you set DocumentRoot to...

#DocumentRoot /www/docs/dummy-host.example.com

dont la ligne, soulignée par mes soins, qui ne commence pas par un #, indique la racine des documents du ser­veur WEB, c'est-à-dire le répertoire en-dessous duquel se trouvent tous les fichiers que ce serveur permet de consulter, d'après l'exemple :/var/www/htdocs

sinon cette commande :

ls -R |grep httpd.conf

indiquera où se trouve le fichier voulu ; on l'interrompra dès qu'elle aura donné une réponse pour en reporter la réponse dans la commande ci-dessus.

sous Windows ®, et sous Linux si vous utilisez XAMPP utilisez cette adresse dans votre navigateur :

localhost/xampp

cliquez	phpinfo()

et vous trouverez une ligne DocumentRoot vous indiquant la racine des documents du serveur WEB, c'est-à-dire le ré­pertoire en-des­sous duquel se trouvent tous les fichiers que ce serveur permet de consulter, sur la machine consultée :

À partir d'ici Racine_Documents désignera cet emplacement, et reglisse le sous-répertoire où est installé Réglisse :

si on a trouvé :

DocumentRoot "/var/www/htdocs"

Racine_Documents est /var/www/htdocs, et reglisse /var/www/htdocs/reglisse

Installation

Fichiers

Le seul fichier indispensable est reglisse.zip.

Le fichier eleves_exemple.ods, fichier source des exemples, eleves_exemple_deux.csv, eleves_exemple_point_virgule.csv, eleves_exemple_virgule.csv, sont à télécharger et à décompacter à part.

La documentation comprend : reglisse.odt et sa version pdf reglisse.pdf et la documentation technique reglisse.tech.zip

Décompactage

Décompacter dans votre répertoire personnel le fichier reglisse.zip.

On obtient un répertoire où se trouvent tous les fichiers utilisés par Réglisse:

bases	répertoire
controler.php	exécutables
choisir_fichier.php
identifier_separateur.php
importer.php
index.html	accueil
menu_general.php	exécutables
ordonner_contraintes.php
preciser_contraintes.php
reglisse_1.png	image de fond
reglisse.inc	fichier de constantes, variables et fonctions ;
repartir_avec_contraintes_croisees.php	exécutables
repartir_avec_contraintes_inverses.php
repartir_avec_contraintes_ordonnees.php
repartir_avec_contraintes.php
repartir_avec_particularites.php
repartition_libre.php
saisir_particularites_2.php
saisir_particularites.php
styles.cs	la feuille de styles.

Copie

Copier le dossier reglisse dans le répertoire racine du serveur web :

supposant que la racine des documents est /var/www/htdocs, on doit obtenir :/var/www/htdocs/reglisse.

Systèmes UNIX

Sur les systèmes UNIX, il faut modifier les permissions sur ce répertoire :

Il faut être root (cf p. 64)

suivant les distributions :

su, sudo...

Donner les droits (cf p. 59) comme ci-dessous ;

chmod -R 744 /var/www/htdocs/reglisse

(propriétaire : tous les droits, groupe : lecture, autres : lecture)

Attribuer le groupe (cf p. 60) de ce répertoire à Apache ou au compte qui exécute httpd qu'on peut connaitre sous UNIX :

ps -ef|grep httpd: (cf p. 62).

chgrp -R Apache /var/www/htdocs/reglisse.

Attribuer la propriété à soi-même, supposant que mon compte soit protal :

chown -R protal /var/www/htdocs/reglisse

Modifier les droits sur le répertoire bases où seront enregistrés les fichiers .csv (cf p. 59) de répartitions créés :

chmod -R 770 /var/www/htdocs/reglisse/bases

Préparation

Le fichier de données des cas

Nom chemin et droits

Son nom et son chemin sont demandés lors de l'exécution de Réglisse. Dans la suite de ce document, il est désigné par eleves.csv (cf p. 59), mais il va de soi que vous remplacez ce nom par celui que vous voulez.

Il doit être accessible en écriture à vous-mêmes et en lecture à Apache.

Le nom du fichier, son extension et son chemin ne doivent pas contenir d'espaces, contraire­ment au rituel Mes Documents de Windows®.

Sous Unix, il faut manipuler un peu plus ; il y a au moins trois solutions :

facile mais ouvrant à tous les vents

copier dans un répertoire le fichier à traiter, et le mettre en lecture pour tous

mettre son répertoire personnel en lecture pour tous

si mon répertoire personnel est /home/bilou :

chmod -R 744 /home/bilou/

plus paranoïaque :

mettre son répertoire personnel dans le groupe apache

chgrp -R apache /home/bilou

mettre son répertoire en lecture pour son groupe

chmod -R 740 /home/bilou/

très paranoïaque :

créer un répertoire dont on soit le propriétaire et qui soit dans le groupe apache (il faut être superutilisateur)

mkdir /home/reglisse

chgrp apache /home/reglisse

chown protal /home/reglisse

chown mon_id /home/reglisse

chmod 740 /home/reglisse

Fichier suffisant pour les répartitions par affinités et les répartitions aléatoires.

Les répartitions par affinités sont des répartitions regroupant des élèves qu'on a désignés et évitant d'affecter à la même classe des élèves qu'on a désignés (cf p. 34).

Les répartitions aléatoires tirent au hasard les élèves qui sont affectés à la même classe en respectant le ration m / total de la popula­tion globale (cf p. 33).

Format du fichier

Le fichier doit être un fichier au format csv (cf p. 59), dont les champs sont délimités par point-virgule ou virgule ou deux-points, et dont les zones de texte sont encadrées par des doubles quotes, des simples quotes ou rien, avec un individu par ligne.

Colonnes

Les colonnes sont, dans cet ordre :

nom de l'élève : nom sans limitation de longueur, accents autorisés

prénom de l'élève : nom sans limitation de longueur, les accents autorisés (cette colonne peut rester vide, mais doit exister)

Pour l'affichage correct des listes finales, il est mieux que le nom précède le nom.

sexe : utilisé pour équilibrer les répartitions ; il peut être M/F , m/f, 1/2, toute entrée d'une de ces valeurs étant comprise.

date de naissance : présente pour des raisons pratiques, elle ne sert que lors de l'édition des listes.

les colonnes signalées ici comme informatives peuvent rester vides.

les autres colonnes requises pour les répartitions sous contraintes ne sont pas utilisées, mais peuvent être présentes, même vides.

Lignes

La première ligne indique les titres de toutes les colonnes. Pour être certain de ne pas se tromper, il suffit d'utiliser le fichier en­tetes.csv.

Les lignes suivantes contiennent les renseignements décrivant chaque individu.

Production du fichier

Soit on crée le fichier à partir de rien avec un éditeur de textes en tapant ENTREE à la fin de chaque ligne sauf la dernière, soit on préfère se servir d'un tableur, beaucoup plus commode.

Avec le tableur, on charge entetes.csv, on remplit quatre colonnes, on Fichier/enregistrer sous au format du tableur, avec OpenOffice Calc, on obtient par exemple donnees.ods, ce qui facilitera d'éventuels traitements ultérieurs en-dehors de Réglisse, puis on enregistre au format csv par :

Fichier/Enregistrer sous, donnees.csv, confirmer si nécessaire, choisir ; comme délimiteur et double quote comme séparateur de texte

Si on est réfractaire au tableur, on peut utiliser OpenOffice Writer :

Insérer un tableau de la bonne dimension, le remplir, puis Tableau/convertir tableau en texte, point-virgule, et enregistrer au format texte (.txt)

Si le fichier existe déjà dans un format csv dont le délimiteur est connu, le mieux est de le charger dans un tableur, de vérifier que les colonnes sont dans le bon ordre ; de les déplacer si besoin...

Quand on est satisfait du résultat, enregistrer au format du tableur, puis au format csv comme ci-dessus.

Si on dispose déjà d'un tel fichier, auquel il manque seulement l'en-tête, On charge le fichier entetes.csv dans le tableur, et le fichier de données existant, donnees.??? dans un autre classeur. On modifie celui-ci autant qu'il le faut, essentiellement en or­donnant correctement les colonnes. Si on a des colonnes en trop, on peut les garder ou les supprimer. On sélectionne l'ensemble des données existantes et on les copie. On passe dans le classeur où se trouve entetes.csv, on se met en A2 et on fait un collage spécial en désactivant Tout insérer, et en désactivant formules.

Si les données existantes sont au format d'un tableur connu de celui qu'on utilise, il les convertira en son format propre, sinon, il fau­dra chercher les options d'importation (dans certains tableurs, tout est dans Fichier/ouvrir, dans d'autres il existe une fonction importer.)

Fichier nécessaire pour les répartitions sous contraintes

Les répartitions sous contraintes sont des répartitions tenant compte des choix des individus en matière de langues vivantes, d'ensei­gnement de détermination, d'options, jusqu'au nombre de dix ; quel que soit le terme au goût du jour pour désigner ces choix. (cf p. 40)

Format du fichier

Le fichier doit être un fichier au format csv (cf p. 59), dont les champs sont délimités par point-virgule ou virgule ou tabulation ou espace, et dont les zones de texte sont encadrées par des doubles quotes, un individu par ligne.

Colonnes

Les colonnes sont, dans cet ordre :

nom de l'élève : nom sans limitation de longueur, avec les accents autorisés

prénom de l'élève : nom sans limitation de longueur, avec les accents autorisés (cette colonne peut rester vide, mais doit exister)

Pour l'affichage correct des listes finales, il est mieux que le nom précède le nom.

sexe : utilisé pour équilibrer les répartitions, il peu-être M/F , m/f, 1/2, toute entrée d'une de ces valeurs étant comprise.

date de naissance : présente pour des raisons pratiques, elle ne sert que lors de l'édition des listes.

les colonnes informatif peuvent rester vides mais doivent exister.

la colonne filière sert si on met dans le même fichier des élèves qui sont orientés vers des filières différentes.

les dix colonnes de droite sont utilisées, et doivent être présentes, même vides.

Lignes

La première ligne indique les titres de toutes les colonnes. Pour être certain de ne pas se tromper, il suffit d'utiliser le fichier en­tetes.csv.

Les lignes suivantes contiennent les renseignements décrivant chaque individu.

Un tel fichier peut être créé avec n'importe quel éditeur de textes, ou avec un tableur, ce qui est de loin le plus simple et exporté au format CSV (cf p. 59), avec comme séparateur (cf p. 59) le ; (point-virgule) et comme séparateur de texte (cf p. 64) indifféremment la simple quote (') ou plutôt la double quote ("). Lors de l'importation, Réglisse, avec votre aide, identifiera les symboles utilisés.

Résoudre les erreurs d'importation

Tout message d'erreur pendant la lecture du fichier indique une erreur dans la forme du fichier.

Le message « Index inexistant... » indique une erreur sur le séparateur (ligne mal corrigée, séparateur oublié)

Le message : "Tartempion de sexe mal orthographié", indique que les champs ne sont pas tous encadrés par le même sé­parateur qui, en général, est la « quote », mais parfois l'apostrophe ou simple quote. Si c'est le cas et si certains noms contiennent une apostrophe, il faut éditer le texte, et le corriger prudemment.

Si les sexes sont mal identifiés et si les noms, par exemples sont affublés de quotes, comme ceci "Einstein" "Albert", il s'agit d'un oubli dans le choix du séparateur de textes lors de l'importation.

Modifications des fichiers

Nom et prénom

Toujours travailler après avoir enregistré le fichier au format du tableur utilisé. Les manipulations sont expliquées pour OpenOffi­ceCalc, mais sont analogues pour d'autres tableurs.

Si le nom et le prénom se trouvent dans la même cellule A2 pour l'exemple, le prénom en premier, cette manipulation résoudra la plupart des cas:

Insérer deux colonnes (qui s'intercalent entre A et B devenue E)

en C2 taper cette incantation =STXT(A2;CHERCHE(" ";A2;1); NBCAR(A2))

en D2 taper cette incantation =STXT(A2;1; CHERCHE(" ";A2;1))

Copier ces deux incantations ensemble et les coller sur autant de lignes que nécessaire

Sélectionner l'ensemble de la feuille (CTRL A), puis faire un Collage Spécial dans une feuille nouvelle en désactivant Tout coller, et en décochant Formules. (Dans d'autres tableurs, il ne faut coller que les valeurs...)

Supprimer les co­lonnes inutiles.

Sexe

Si le sexe est renseigné par M/F, m/f, ou 1/2, il n'y a pas de modifi­cation à faire. Dans les autres cas, il faut procéder ain­si :

insérer une colonne

et en B1 la formule :

=SI(C1="garçon";"M";"F")

Sélectionner l'ensemble de la feuille (CTRL A), puis faire un Collage Spécial dans une feuille nouvelle comme ci-dessus. Supprimer les co­lonnes inutiles.

Enregistrement final

Enregistrer par Enregistrer au format du tableur, puis par Enregistrer sous ,au format CSV en choisissant Jeu de caractères Unicode UTF-8 s'il existe, Séparateur de champ (cf p. 59) point-virgule, Séparateur de texte (cf p. 64) double quote.

Fichier reglisse.inc

Réglisse n'en exige aucune modification.

Toute cette partie de la documentation peut être ignorée sans dommage et sans risque.

On peut en modifier les constantes dé­finies avec un éditeur de textes, comme bloc_notes, gedit, Scite, Bluefish...

Composition du fichier

Le fichier comprend :

une partie de définition de constantes (version 2.0 et suivantes),

une partie de définition de fonctions (version 2.0 et suivantes) :

La seule partie qu'on puisse modifier est la partie de définition de constantes.

Les définitions de constantes.

/* ADAPTATION POSSIBLE======================================================*/

A partir de ce point, il s'agit de définitions de textes qui s'affichent lors de l'exécution de Réglisse, les noms commençant par T_ étant des textes, les noms commençant par B_ des textes de boutons qu'il vaut mieux ne pas trop rallonger, les noms commençant par I_ étant les textes de zones de saisie.

Composition

Ces définitions se composent de deux parties :

une partie de commentaire au format de doxygen©, destinée à la création d'une documentation technique :

/** étant le début du commentaire que doxygen© doit interpréter,

le reste jusqu'à */

étant le texte de ce commentaire sur une ou plusieurs lignes, que je commence par une étoile, certains lignes commençant par une incantation dans le langage de doxygen© commençant par \, \enum, \brief, \details le reste de la ligne étant un texte qui se veut explicatif du rôle de l'objet commenté...

la définition elle-même :

le mot Php define en minuscules obligatoirement

une expression entre parenthèses :

entre quotes le nom de la constante définie : ne pas modifier

une virgule

entre quotes la valeur modifiable de la constante de texte avec quelques incantations HTML

un point-virgule.

incantation	effet	paire ou isolé	modifiable
<br />	indique un retour à la ligne, alignement à gauche identique à la ligne précé­dente,	seul	remplaçable, supprimable.
<p>	indique un début de paragraphe, avec alinea si la feuille de style le prévoit
</p>	indique une fin de paragraphe, avec alinéa si la feuille de style le prévoit
<b>	début de texte en gras	paire
</b>	fin de texte en gras
<i>	début de texte en italique	paire
</i>	fin de texte en italique
<h1>	début de gros titre	paire	remplacement possible par <h2>..</h2> à <h5>...</h5> si un texte trop long perturbe l'affichage.
</h1>	fin de gros titre
<span class ='..'>	début d'application d'un style	paire	ne pas changer le contenu de ''
</span>	fin d'application d'un style
<dl>	début d'une liste	paires hiérarchisées	On peut supprimer ou ajouter : un élément <dt>texte</dt> un élément <dd>texte</dd>
<dt>	début d'un titre de cette liste
<dd>	début d'une définition de ce titre
<dd>	fin de définition
</dt>	fin de titre
</dl>	fin de liste
<table>	début de tableau	paires hiérarchisées	Il doit y avoir dans toutes les lignes le même nombre de <td>texte</td>
<tr>	début de ligne de tableau
<td>	début de cellule de ligne de tableau
</td>	fin de cellule de ligne de tableau
</tr>	fin de ligne de tableau
</table>	fin de tableau
<button...>	début d'un bouton	paire	intangible
</button>	fin d'un bouton

Certaines incantations sont signalées comme remplaçables ou supprimables, car elles ne changent que la présentation du résultat, celles qui sont notées intangibles affectent le fonctionnement de Réglisse et ne peuvent être modifiées. sans risques

Les textes peuvent être changés à volonté, en vérifiant simplement, surtout pour les textes des boutons, qu'ils ne sont pas trop longs pour être affichés sans perturber un affichage qui loge souvent d'extrême justesse.

Ils ne doivent pas contenir de doubles quotes, réservées à l'encadrement.

Les incantations modifiables peuvent, bien sûr, être modifiées.

Le seul risque est de supprimer par inadvertance une des doubles quotes

/** \enum T_CONSIGNE_ORDONNER */

define ( "T_CONSIGNE_ORDONNER", "<p>Sélectionnez la contrainte à utiliser à chaque emplacement ");

/**

* \enum B_RETOUR_MENU bouton de retour au menu

*/

define ("B_RETOUR_MENU",

"<button type = 'submit'>Retour au menu principal</button>");

/** \enum I_DD */

define ("I_DD", "<span class='item1'>seuil de dédoublement</span><input type ='text' size ='3' name = 'seuil'>");

D'autres définitions sont sous cette forme, dont le nom officiel est syntaxe Heredoc :

/**

* string

* utilisé dans identifier_separateur.php

*/

$t_consigne_delimiteur = <<<EOD

<p>Voici les solutions plausibles, dont une est sélectionnée par Reglisse.</p>

<p>Le bon choix sépare correctement les intitulés des colonnes, comme ceci <b>"Nom"||"Prénom"||</b> etc ou

<b>'Nom'||'Prénom'||</b></p>

<p>Sélectionnez la ligne correcte. Sinon ouvrez le fichier

avec un tableur, sauvegardez-le au format du tableur,

puis au format CSV, délimiteur virgule ou point-virgule ou deux-points , et séparateur de texte <b>&quot;</b>.</p>

EOD;

$t_consigne_delimiteur = <<<EOD

et

EOD;

doivent rester tels quels, la partie entre <p>Voici... et .</p> est libre.

Styles.css

Il s'agit de la feuille de styles CSS (cf p. 59) utilisée.

Il n'est pas nécessaire de modifier la feuille de styles.

Les styles sont définis de façon à loger toute l'information sur une seule page, et une modification sans conséquences désastreuses pour une page risque de perturber la présentation d'une autre.

Mais rien ne s'oppose aux initiatives des utilisateurs.

Dans ce cas, sauvegardez l'original en le changeant de nom, et travaillez sur styles.css en même temps que Réglisse fonctionne. Vous verrez ainsi aussitôt les résultats en actualisant ou rechargeant la page courante...

Exécution

Lancement

Connexion

Dans la barre de navigation du navigateur, lancer http://nom_du_serveur_web/reglisse/

et se laisser guider.

Anomalies pos­sibles

Forbidden

You don't have permission to ac­cess /cohortes/ on this server.

il faut mettre les droits au répertoire re­glisse.

Vous avez choisi d'ouvrir

Vous avez probable­ment lancé le fichier in­dex.html en le cliquant. Il faut lancer le navigateur et indiquer dans la barre de navigation : http://localhost/reglisse/index.html

Fonctionnement normal

Si vous êtes nouveau, ou que vous vouliez créer une nouvelle base de données, vous proposez un identifiant et vous activez conti­nuer situé sur la même ligne.

Si vous êtes déjà venu, et que vous vouliez utiliser une base de données existante, vous tapez votre identifiant et le mot de passe que vous vous étiez choisi, sachant que vous pourrez réutiliser les cas que vous aviez déjà incorporés ou en importer de nouveaux et vous activez continuer situé sur la même ligne.

Création du compte d'un nouveau

Vous recevez un identifiant dérivé de celui que vous avez proposé, orné d'un appendice numérique destiné à en garantir l'unicité, vous tapez un mot de passe de votre choix et vous activez le bouton parcourir pour retrouver votre fichier d'individus. Quand tout est prêt, vous activez continuer.

Il faut et il suffit que ce fichier soit lisible par Apache, ce qui, malheureusement, n'est pas visible lors de ce choix.

Fichier des individus

Fichier des individus absent

Si la copie du fichier des individus ne se passe pas bien, il s'agit vraisemblablement d'un problème de droits :

Apache peut-il lire le fichier désiré ? Pour cela, en ce cas, il faut et il suffit que le fichier appartienne à celui qui exécute réglisse, ou qu'il soit dans le groupe Apache ou qu'il soit lisible pour tous. (cf p. 10)

Apache a-t-il le droit d'écrire dans le répertoire /reglisse/bases ?

Fichier des individus correctement copié

Si le fichier des indivi­dus a été trouvé et peut être lu, il faut s'assurer du déli­miteur et du sé­pa­ra­teur utilisés.

Réglisse pro­po­se les solu­tions les plus vrai­sem­blables.

Sélectionnez la ligne qui présente correctement les intitulés et n'oubliez pas de choisir un séparateur avant d'activer continuer.

Pour les curieux, le fichier d'origine a été copié dans le répertoire bases de Réglisse avec le nom de la base de données et l’extension .csv.

Une fois qu'on a activé continuer, si tout se passe bien on aboutit au menu général.

Opérations principales

Répartitions par particularités

Passer directement aux répartitions par particularités (cf p. 34) est justifié car celles-ci ont pu être définies lors d'une session précédente qu'on n'a pas poursuivie jusqu'à la création de classes.

Préciser le nombre de classes souhaité.

Définir ou modifier les particularités de certains individus

Si on a déjà défini des particularités, celles-ci apparaitront et on pourra tout modifier. Sinon on en créera (cf p.36).

Répartitions par contraintes

Cette option (cf p. 40) n'a de sens que si le fichier d'individus donnait des indications sur leurs choix. Sinon, ces répartitions se feront sur le seul critère du sexe (cf p. 33).

Répartitions ne tenant compte que du sexe

Ces répartitions sont toujours disponibles et approchent le ratio masculin / total de la population (cf p. 33).

Répartitions sans tenir compte d'éventuelles affinités saisies.

Définition

Ce sont des listes pu­re­ment aléatoires, dont la distri­bution en­tre les sexes ap­pro­che au plus près celle de la po­pu­lation totale. Elles peu­vent sufire dans cer­tains cas, par exem­ple lors de réu­nions, pour créer des sous-grou­pes de dis­cus­sion arbitraires.

Procédé

On peut accéder à cette fonction dès que la liste des élèves a été importée avec succès ou par retour au menu général (cf p.32) où il faut préciser le nombre de classes souhaitées.

Le résultat de cette opération est affiché à l'écran et enregistré dans un fichier.

Les résultats sont enre­gistrés dans le fi­chier au format CSV dont le nom, affiché, est relativement fa­cile à re­tenir, comprenant une par­tie de la date et un numéro final unique. Il suffit de le cliquer pour ouvrir une boîte de dia­logue de chargement avec le tableur dispo­nible. Ce fi­chier ne sera pas recouvert par un autre fichier produit par Ré­glisse.

Répartitions par particularités

Principe

Il s'agit du point de Réglisse le plus original. On sait, surtout en milieu scolaire, qu'il y a des individus qu'il faut éviter de mettre dans le mê­me groupe sous peine de créer des situations explosives. À l'opposé, il existe des rapprochements bénéfiques. Le défi que devait re­le‑ver Réglisse était de répartir une population en groupes, en rapprochant ceux pour qui c'était souhaitable et en éloignant les uns des au­tres ceux qu'on souhaitait ne pas rapprocher.

De plus, dans la plupart des publics, il est des cas difficiles dont le regroupement serait une charge pédagogique lourde pour les en­sei­gnants et qu'il vaut mieux disperser. Ce n'est pas que tel et tel posent un problème par leur présence simultanée, comme un jeune coq sûr de son charme dans la même classe que sa dulcinée, à moitié pâmée dès qu'elle le voit, mais parce que leurs difficultés respec­ti­ves cumulées seront un poids pour le reste de la classe. On m'a proposé le cas d'une population comportant plusieurs dyslexiques que le responsable répartit le mieux qu'il peut entre les divers enseignants du niveau. J'ai eu, pour ma part, à enseigner la littéra­ture à des clas­ses majoritairement composées de quasi débutants en français, dociles et travailleurs ; et je me souviens de l'opération de traduction de Tartuffe en une langue compréhensible pour eux, totalement étrangers tant à la langue utilisée qu'aux considérations religieuses qui eus­sent éclairé ce texte, et d'une finale en apothéose face à leurs réactions devant la façon dont s'expriment les personnages de La cantatrice chauve « Mais, Monsieur, si je mets ça dans un devoir ? », et quand l'un avait fini, c'était l'autre qui ne connaissait pas un mot... Dire que les restituer à leur enseignant en titre, digne agrégé de Lettres classiques, bourré de certitudes et de mépris, me chagrina serait présenter une ver­sion vertueusement menteuse des faits.

Dans le même ordre d'idées, il peut se produire qu'une partie de population soit soumise à des contraintes identiques qu'elle ne maî­tri­se pas, fauteuil roulant imposant de fréquenter des salles de classe de plain pied ou accessibles par un ascenseur (parfois l'ascenseur exis­te, mais il donne sur une porte qui ne s'ouvre que de l'autre côté), élèves internes qui n'ont pas de moyen de transport collectif pour re­join­dre l'internat le dimanche soir, et dont le car du lundi matin arrive cinquante minutes après le début du premier cours. Ces élèves consti­tuent un groupe qu'il faut conserver.

Ces deux notions sont recouvertes par le terme de particularités.

Réglise permet pour tout élève de préciser s'il faut le grouper ou le disperser. Lors de la constitution des classes, les élèves à grou­per sont tous placés dans la même classe ou plus si besoin, et ceux à disperser dans les autres classes. Ce traitement est fait en premier sans se soucier de rapport entre masculins et féminins. Cette opération est impérative.

Réglisse permet de spécifier pour chaque individu jusqu'à cinq élèves de qui le rapprocher et jusqu'à cinq élèves de qui l'éloigner. Cette opération se fait dans la mesure du possible.

Fonctionnement

Lorsque les groupements et dispersions sont faits, Réglisse tire un individu au sort et l'affecte à la classe dont le rapport mascu­lin / to­tal est le plus fort si c'est un individu féminin et le plus faible si c'est un individu masculin. On affecte de façon définitive à d'autres classes ceux avec qui il est souhai­table qu'il ne se trouve pas. On ne fait ces affectations qu'au premier niveau pour éviter l'effet Condorcet : si Pierre va bien avec Paul et si Paul va bien avec Jacques, mais qu'il ne faille pas mettre Pierre en contact avec Jacques, que faire ? Les amis de mes amis ne sont pas tou­jours mes amis. C'est pour cette raison qu'il faut indiquer tous les mêmes groupes d'affinités pour tous les membres de ce groupe ; on ré­duit ainsi le risque de manquer des rapprochements ou des éloignements :

Pierre	Paul	Jacques	Alfred	Mégan
Paul	Jacques	Alfred	Mégan	Pierre
Jacques	Alfred	Mégan	Pierre	Paul
Alfred	Mégan	Pierre	Paul	Jacques
Mégan	Paul	Paul	Jacques	Alfred

Quand tous les élèves sont affectés, on procède aux rapprochements souhaités, en permutant des élèves, du même sexe si possible, en excluant de ce mouvement ceux qu'il fallait disperser, et ceux qu'on a éloignés.

Procédé

On part du menu principal (cf p. 32) où on ac­tive :

Saisir ou modifier des rapprochements à favori­ser et à éviter

Sélection des cas

Dans la fenêtre de droi­te, tous les indivi­dus à défiler avec l'as­cen­seur sans inter­venir dans la fenêtre si on ne veut pas tous les désé­lec­tionner.

Sélection et dé­sé­lec­tion d'iso­lés : CTRL CLIC.

Cas con­sé­cutifs et quel­ques cas isolés : Cliquer le pre­mier des consé­cu­tifs, Maj Clic le der­nier des consécu­tifs, CTRL Clic cha­cun des isolés.

Sans souris, les tou­ches de flèches jouent le même rôle :

série contigüe : aller sur le premier avec les flèches, tenir MAJ enfoncée en déplaçant la sélection avec la flèche ; arrivé au dernier, lâcher, puis tabulation pour accéder au bouton

série non contigüe : aller sur un avec les flèches, tenir CTRL enfoncée, et la barre d'espace sélectionne ou déselectionne.

Précisions

Dans la partie gauche, les cas à renseigner, une zone rappelant le nom et le prénom du cas, une zone avec pour les indivi­dus qu'il est souhai­table de mettre dans le mê­me groupe, une zone sans pour ceux qu'il faut éviter de mettre dans le même groupe, une zone Grouper / Disperser / Standard pour les indivi­dus qu'il faut grou­per ou disperser .

Dans la partie droite, les indivi­dus précédés d'un nombre à reco­pier dans une des cellules avec ou sans de la partie gauche, où la tou­che Tabulation passe de cellule à cellule et directement à Standard pré­sé­lectionné.

On relève dans la liste de droite les numéros que l'on reporte un par un dans chacune des cellules ap­pro­priées.

La limite de cinq de chaque sorte correspond à une notion de bon sens, car si un individu doit être associé à plus de cinq, on risque de créer une sorte de coterie dont il est la coqueluche, et s'il faut l'éloigner de plus de cinq autres, il doit s'apparenter à une terreur ; de plus elle est destinée à limiter un éventuel déséquilibrage du rapport masculins / féminins. Si on tient absolument à regrouper un nombre su­périeur, il faut se servir du bouton radio Grouper.

Le bouton radio Grouper permet de désigner des individus qui seront à coup sûr tous affectés au même groupe, ou répartis dans le nombre nécessaire de groupes s'ils sont plus nombreux que l'effectif maximal admissible d'un groupe.

Le bouton radio Disperser permet de désigner des individus qui seront affectés à des groupes différents en nombres équilibrés et diffé­rents de celui où ont été affectés les cas à grouper.

Le bouton radio Standard permet de désigner des individus qui seront affectés par la procédure commune aléatoire.

Si on s'aperçoit qu'on a sélectionné un cas en trop, il suffit de ne pas le renseigner, en laissant activé le bouton standard.

Si, après avoir renseigné plusieurs cas, on s'aperçoit qu'on a oublié d'en sélec­tionner certains dans la phase précédente, le plus simple est de continuer ce qu'on avait commencé, d'activer Enregistrer ces particularités et sur l'écran suivant d'activer Retour au menu principal, (cd p. 32) et de reprendre l'opération comme ci-dessus Sai­sir ou modifier des rapprochements à favori­ser et à éviter: ce qu'on avait spécifié apparaitra et on n'aura qu'à compléter.

Résultat

Les listes obtenues sont consultables direc­te­ment en activant le lien, si vous disposez d'un tableur et si votre na­vi­gateur est confi­gu­ré pour l'utiliser dans ce cas.

Dans les autres si­tua­tions, le fichier peut être ouvert avec un édi­teur de textes.

Dans les deux cas, s'il vous intéresse, en­re­gistrez ce fichier en un endroit où vous pour­rez le relire sans être connecté.

Vous pouvez faire autant de répartitions que vous le souhaitez, elles seront plus ou moins différentes, et l'équilibrage des sexes variera sans doute un peu. Les fichiers de résultats sont tous conservés.

Répartitions sous contraintes

Jargon

Il s'agit d'une forme de répartition qui tente de répondre à des besoins inspirés de ce que l'on observe en Lycée, où la multiplication des choix pour définir des parcours personnalisés conduit à des casse-têtes auprès desquels les mots croisés de Max Favallelli sont des jeux d'enfants.

On prendra l'exemple d'un club de jeu de paume dont les membres prennent obligatoirement des cours, soit de niveau débu­tant, soit de niveau confirmé auprès de deux formateurs différents, Sieyès, spécialiste des débutants, et Grégoire réservé aux confirmés. Le formé doit choisir une des deux formules à l'exclusion de l'autre, c'est ce que le jargon de Réglisse appelle des contraintes exclu­sives, le mot contrainte étant plus approprié qu'il semble, puisque ces choix imposent des contraintes au responsable de la ventilation des personnes en divers groupes. S'il y a deux terrains disponibles, en effet, les deux groupes peuvent avoir cours simultanément, mais s'il n'y en a qu'un, il faut les convoquer en alternance...

Compliquons un peu, en ajoutant qu'une partie du public ne parle que le creusois oriental, et l'autre que le gascon. Or seul Sieyès par­le gascon, et seul Grégoire parle creusois. Bien entendu les débutants aussi bien que les confirmés se partagent entre les deux idio­mes. Si la taille des groupes est illimitée, le problème n'est pas très compliqué, il l'est davantage si chacun des formateurs ne peut re­ce­voir simultanément que dix formés et que la population totale est supérieure à vingt, avec une répartition inégale des niveaux et des langues.

On est face à une contrainte exclusive unique à quatre valeurs possibles :

Débutant creusois, débutant gascon, confirmé creusois, confirmé gascon

Comme les responsables du club ne reculent devant rien pour se compliquer la vie, ils ont décidé de rendre bilingues tous les mem­bres en leur imposant un deuxième choix exclusif entre le lapon romanisé et le latin cyrillique, enseignements qui peuvent avoir lieu simul­tanément.

On aura reconnu le début de la situation d'un établissement scolaire.

Pour revenir à nos paumeurs, ils peuvent encore suivre une à trois options parmi : fabrication des éteufs, cordage des raquettes et confection des fleurs de courgettes farcies, ou n'en suivre aucune. Si je ne me trompe pas, on est face à dix combi­naisons possibles, sachant que le débutant creusois qui farcit les courgettes interdit aux autres débutants creusois de suivre un quel­conque cours pendant qu'il s'affaire aux fourneaux et à tout le monde de s'occuper ds éteufs ou du cordage pendant ce temps. Il s'agit là de ce que le jargon de Réglisse appelle des contraintes additives.

Dans la constitution du fichier, les choix exclusifs sont notés dans la même colonne et, surtout, de la même façon, texte complet, abré­viation, nombre en prenant garde aux espaces, aux majuscules que Réglisse ne peut1 Vous ne connaissiez donc pas l'addition entre mots : p(eut) + v(eut) ! pas contrôler et qui lui feront distinguer LV1 et Lv1, par exemple.

Sachant que les répartitions se font sur la base de la filière, une seule filière à la fois, on mettra en colonne 21 ou U la contrainte ex­clu­sive principale de la filière où l'élève est orienté, la langue vivante 1 par exemple. On fera de même avec les autres contraintes exclu­sives dans les colonnes suivantes.

Dans les colonnes suivantes, Z et les quatre suivantes, on mettra les choix additifs, un seul par colonne, toujours le même dans la même colonne, alternant avec une cellule vide si l'individu concerné n'a pas fait ce choix. Il faut autant de colonnes que l'on pro­pose d'options facultatives cumulables pour une filière donnée. Si les BTS force de vente peuvent suivre Anglais des Caraïbes, Création de pages Hypertextes, Opinions et changements d'opinions, Réflexologie plantaire et Confection de paquets cadeaux il faut cinq co­lonnes pour eux, mais elles sont entièrement libres pour les BTS secrétariat médical qui ont leurs propres options.

La disposition des choix influe sur la répartition sous contraintes croisées (cf p. 42) et celle sous contraintes inversées (cf p. 42)

Si vous êtes gêné, faites un fichier par filière...

Possibilités.

Répartition sous contraintes simples

Une première répartition automatique trie les individus suivant la contrainte 1, puis à l'intérieur de celle-ci, par la contrainte 2... C'est un choix de répartition qui tend à regrouper les choix exclusifs et à disperser les choix additifs qui se retrouvent avec d'autres qui n'ont pas fait les mêmes choix additifs qu'eux, mais dont les choix exclusifs sont en tout ou partie les mêmes que les leurs. Il est vraisemblable que ce type de répartition complique l'élaboration de l'emploi du temps.

Du fait de la conception de Réglisse, cette répartition donnera toujours le même résultat.

Si des particularités ont été saisies, elles sont satisfaites dans la mesure où on peut permuter deux élèves strictement équivalents du point de vue de leurs choix, équivalence calculée suivant une méthode dérivée de l'indice de Jaccard (cf p.61).

Répartition sous contraintes inversées

D'autres, dont au moins un proviseur de ma connaissance, pour qui, hors le latin et le grec, il n'est point de survie, préfèrent réunir et servir en premier les quelques individus qui ont fait ces choix. Cette répartition regroupe les pratiquants des choix additifs, dans l'ordre de leurs effectifs et semble la préférée des responsables concernés que j'ai pu contacter.

Du fait de la conception de Réglisse, cette répartition donnera toujours le même résultat.

Si des particularités ont été saisies, elles sont satisfaites dans la mesure où on peut permuter deux élèves strictement équivalents du point de vue de leurs choix, équivalence calculée suivant une méthode dérivée de l'indice de Jaccard (cf p. 61).

Répartition sous contraintes croisées

Il s'agit d'une combinaison des deux précédentes.

Si au moins une contrainte reste vide pour tous les éléments, les contraintes sont divisées en deux groupes, celles qui la précèdent suivant lesquelles un premier tri se fait, celles qui la suivent suivant lesquelles se fait un deuxième tri à partir de la moins fréquentée.

Si aucune contrainte ne reste vide, la limite est 5.

Cette méthode regroupe moins les pratiquants des choix additifs et les rapproche plus de ceux qui ont fait les mêmes choix exclusifs qu'eux.

Si des particularités ont été saisies, elles sont satisfaites dans la mesure où on peut permuter deux élèves strictement équivalents du point de vue de leurs choix, équivalence calculée suivant une méthode dérivée de l'indice de Jaccard (cf p. 61).

Répartition sous contraintes ordonnées

On pourrait dire que celui qui n'est pas satisfait par les résultats d'une des deux méthodes précédentes peut toujours reprendre ses fiches en bristol perforé, sa pince à tiercé et ses aiguilles à tricoter. Vous ne connaissez pas, moi si, ayant possédé une encyclopédie sur fiches papier perforées et dépouillé le recensement de tous les élèves des écoles privées de je ne sais plus quel diocèse, passant une aiguille dans le trou 26 pour voir tomber les fiches des garçons et conserver celles des filles, ou une dans le trou 26 et une autre dans le trou 32...

Loin de moi cette vilenie.

Réglisse propose de choisir soi-même les critères sur lesquels va s'opérer le tri, ce qui est une première différence, les deux mé­thodes automatiques utilisant tous les critères. On pourra ainsi décider qu'on ne se soucie pas du critère additif pétanque, car il a été choisi par trop peu de monde ou parce que l'organisation de l'emploi du temps de ces élèves ne posera aucun problème, les cours de pétanque ayant lieu quand il n'y a pas d'autres cours dans le lycée... Quant au prof de pétanque...

On doit aussi indiquer l'ordre dans lequel les critères doivent être appliqués, de 1 pour le premier à 10 pour le dernier, avec un mini­mum de 1.

Réglisse trie les individus et les affecte dans autant de classes qu'il en a défini à partir du seuil de dédoublement calculé.

Les esprits chagrins diront qu'on ne fait là rien de plus qu'avec un tableur ; c'est parfaitement vrai, mais quel tableur permet un tri sur dix colonnes, vous dit, sans aucune manipulation combien d'individus ont choisi chacun des choix possibles, répartit ses résultats en groupes dont il calcule les effectifs masculin et féminin ? Oui tout cela est possible...

Ça n'a rien à voir, mais calculez combien de tris différents vous pouvez faire sur 10 critères...

Procédure

Pour que ces répartitions aient un sens, il faut avoir importé un fichier comportant des critères à utiliser pour les répartitions (cf p. 17).

L'option du menu (cf p. 32) est toujours dispo­nible : il faut indi­quer le nombre de groupes souhaités .

On peut soit deman­der les répartitions suivant les méthodes automatiques, soit ordonner les contraintes

Dans tous les cas on passe par la vérification du fichier importé (cf p.44).

Vérification

Cet écran informatif per­met de vérifier que les intitulés des con­train­tes sont cor­rects et, si on en a la pa­tien­ce, que les ren­sei­gne­ments concer­nant la po­pu­lation ne com­por­tent pas d'er­reurs. Sinon , il faudrait réimporter le fichier de données ce qui ramèn­erait à l'identification du séparateur (cf p. 30).

Si tout va bien on précise le nombre de classes souhaitées et on choisit le type de répartition,

Quel que soit le type de répartition qu'on ait choisi, la présentation du résultat est la même : un affichage à l'écran doublé de la création d'un fichier au format .csv sur lequel est établi un lien.

Avec la population d'essai les hellénistes se retrouvent dans quatre classes différentes... les latinistes dans quatre classes différentes dont une où il n'y a pas d'hellénistes, ce qui veut dire que quand il y a cours de grec ou de latin il ne peut y avoir rien dans quatre classes, mais pas les mêmes.

Répartition sur contraintes ordonnées

On repasse par cet écran, qui permet de se remémorer les choix et les effectifs.

On sélectionne la fi­lière à traiter, on pré­cise le nombre de grou­pes à peupler, et on active Hiérarchiser les contraintes

.

On tape dans les cel­lules appropriées les nombres 1 à 10 indi­quant dans quel ordre les critères doivent être mis en œuvre ; les cel­lules laissées sans va­leur indiquent des cri­tères qui seront igno­rés.

Structure des tables

Définitions express

Le nom de la base de données est un nom unique sur la machine serveur construit à partir de l’identifiant de l'utilisateur, choisi par lui et rendu unique par l'adjonction d'un ou plusieurs chiffres.

Pour ceux qui ne sont pas familiers avec les bases de données et leur langage de définition de données, la base de données peut être vue comme un ensemble de tiroirs. Un amateur de musique aura ainsi un meuble dans le tiroir 1 duquel sont stockées les fiches de ses CD audios de musique wisigothe du moyen-âge, le tiroir 94, les fiches des enregistrements de musique des sphères réalisés par Py­thagore en personne... Le jargon appelle ces tiroirs des tables, car il faut se représenter l'information sous la forme de tableaux dont chaque ligne est la description d'un élément de la collection, et chaque colonne un des éléments de cette description. L'analogie avec le tiroir atteint ici ses limites, mais on peut se représenter un carnet de notes d'enseignant :

Chaque double page concernant une classe différente est une table

Chaque ligne de la page concernant un élève de la classe est une ligne de la table ou un enregistrement,

Chaque colonne contient les notes à un exercice particulier est un colonne de la table, ou une propriété.

Le carnet de notes est la base de données et chacune des doubles-pages est une table.

Si vous n'êtes pas encore victime d'une indigestion, vous pouvez tenter de gravir l'Himalaya des deux pages suivantes, surtout utiles à qui voudrait étendre ou modifier Réglisse.

Tables de Réglisse

Table eleves

`eleve_id` INTEGER NOT NULL	`eleve_nom` MEDIUMTEXT DEFAULT NULL	`eleve_prenom` MEDIUMTEXT DEFAULT NULL	`eleve_sexe` VARCHAR(1) DEFAULT NULL	`affecte` INTEGER DEFAULT NULL	`naissance` VARCHAR(20) DEFAULT NULL	`civilite_responsable` VARCHAR(3) DEFAULT NULL	`nom_responsable` MEDIUMTEXT DEFAULT NULL	`adresse_1_responsable` MEDIUMTEXT DEFAULT NULL	`adresse_2_responsable` MEDIUMTEXT DEFAULT NULL	`lieu_responsable` MEDIUMTEXT DEFAULT NULL	`code_ptt_responsable` VARCHAR(10) DEFAULT NULL	`bureau_responsable` MEDIUMTEXT DEFAULT NULL	`telephone_responsable` VARCHAR(15) DEFAULT NULL	`civilite_responsable_2` VARCHAR(3) DEFAULT NULL	`nom_responsable_2` MEDIUMTEXT DEFAULT NULL	`adresse_1_responsable_2` MEDIUMTEXT DEFAULT NULL	`adresse_2_responsable_2` MEDIUMTEXT DEFAULT NULL	`lieu_responsable_2` MEDIUMTEXT DEFAULT NULL	`code_ptt_responsable_2` VARCHAR(10) DEFAULT NULL	`bureau_responsable_2` MEDIUMTEXT DEFAULT NULL	`telephone_responsable_2` VARCHAR(15) DEFAULT NULL	`orientation` VARCHAR(20) DEFAULT NULL	`contrainte_1` VARCHAR(20) DEFAULT NULL	`contrainte_2` VARCHAR(20) DEFAULT NULL	`contrainte_3` VARCHAR(20) DEFAULT NULL	`contrainte_4` VARCHAR(20) DEFAULT NULL	`contrainte_5` VARCHAR(20) DEFAULT NULL	`contrainte_6` VARCHAR(20) DEFAULT NULL	`contrainte_7` VARCHAR(20) DEFAULT NULL	`contrainte_8` VARCHAR(20) DEFAULT NULL	`contrainte_9` VARCHAR(20) DEFAULT NULL	`contrainte_10` VARCHAR(20) DEFAULT NULL	PRIMARY KEY (`eleve_id`

Cette table contient leur description complète extraite du fichier eleves.csv ;

Pour les purs des bases de données, cette table devrait être fractionnée suivant les règles des formes normales ; mais, comme de telles tables sont d'un usage ponctuel et ne peuvent être modifiées sans modification du fichier qui sert à les remplir, les considérations de cohérence... sont de peu d'importance.

Table compatibles

où eleve_id_1 et eleve_id_2 sont des valeurs de eleve_id dans eleves

`id` INTEGER NOT NULL	`eleve_id_1` INTEGER DEFAULT NULL	`eleve_id_2` INTEGER DEFAULT NULL	PRIMARY KEY (`id`)

Cette table contient un enregistrement pour chaque élève avec qui un rapprochement avec un autre est souhaité : si on souhaite rap­procher Pierre, de eleve_id 3, de Paul, de eleve_id 1, et ce même Pierre de Noémie, eleve_id 312, elle contiendra,

automatique	eleve_id_1	eleve_id_2
1	3	1
3	3	312

Table incompatibles

où eleve_id_1 et eleve_id_2 sont des valeurs de eleve_id dans eleves

`id` INTEGER NOT NULL	`eleve_id_1` INTEGER DEFAULT NULL	`eleve_id_2` INTEGER DEFAULT NULL	PRIMARY KEY (`id`)

Cette table, de conception identique à compatibles, contient un enregistrement pour chaque élève avec qui un rapprochement avec un autre est à éviter.

Table particuliers

eleve_id : valeur de eleve_id dans eleves, eleve_cas un indicateur de son cas : 0, s'il ne présente aucun cas particulier, 1 s'il fait partie des individus à grouper, 2 s'il fait partie des individus à disperser.

`id` INTEGER NOT NULL	`eleve_id` INTEGER DEFAULT NULL	`eleve_cas` INTEGER DEFAULT NULL	PRIMARY KEY (`id`)

Table affectes

où eleve_id est une valeur de eleve_id dans eleves, classe_id un numéro de classe

`eleve_id` INTEGER DEFAULT NULL	`classe_id` INTEGER DEFAULT NULL	`mobile` varchar(1) DEFAULT 'T'

Quelques réponses aux questions que vous ne posez pas

Pourquoi avoir nommé Réglisse votre bidouillage ?

Il ne s'agit pas d'un bidouillage.

Admettons, mais pourquoi Réglisse ?

La première mouture de la chose de nommait Cohortes ; lorsque je décidai d'en produire une version multi-utilisateurs simple, je cogi­tai une version 2.1 avec MySql, mais devoir recourir aux bons soins d'un administrateur général me semblait une tare rédhibi­toi­re. Lors de mes aventures dans Php, j'avais déjà rencontré SQLITE, mais, routinier, je m'en étais tenu à MySql. Des essais pour ada­pter Cohortes à d'autres implémentations de Sql montrèrent que l'adaptation à Postgresql était sinon triviale, du moins assez sim­ple. En revanche SQLITE3, qui réagissait aux commandes qu'on lui envoyait, semblait offrir la possibilité que j'attendais de pos­sé­der chacun sa base de données privée sans passer par un administrateur hypothétique.

La bête se nomma d'abord cohortes_sqlite ; puis, les modifications résultant du choix de Sqlite3 me donnant l'occasion de repenser l'en­sem­ble, il s'imposa de le rebaptiser. Panaché me plaisait beaucoup, évoquant clairement les opérations réalisées , mais je restai incapable de traduire cet acronyme. REG s'imposa vite comme Répartition En Groupes ; mais REG est la chasse gardée des expressions régulières, ou expressions rationnelles, qui font les délices des programmeurs et un terrain idéal pour les publications. Une recherche dans les dictionnaires de l’artel montra vite Réglisse, qu'il ne restait plus qu'à traduire, opération largement plus simple que le portage vers SQLITE3.

À	ce propos, qu'on n'en déduise pas de la difficulté à manipuler SQLITE3. Bien au contraire ; simplement l'absence de diverses facilités offertes par Myste et absentes de la norme oblige à de nombreuses modifications. Si, au contraire, j'étais passé de Sqlite3 à Myste, le portage aurait été quasi instantané...

Comment fonctionne votre bidule ?

Par miracle, bien sûr, avec beaucoup de Beaujolais très ancien, d'huile de coude, et un brin d’incongruité.

Plus sérieusement, les répartitions avec particularités reposent sur une véritable recherche d'une place appropriée pour chaque individu, et, partant d'un ordonnancement aléatoire de la population, donnent des résultats qui ne sont pas toujours identiques.

En revanche, les méthodes sous contraintes reposent sur le tri de la population suivant des ordres différents suivant la méthode et donnent toujours le même résultat pour la même méthode.

Qui êtes-vous ?

Question bien indiscrète qui mérite une réponse à sa hauteur.

Ayant, dans un passé obscurci par les nues de l'oubli, passé avec succès le CAPES de Lettres Modernes, je me retrouvai dans un Lycée équipé, oh luxe, de deux Logabax et d'un clone du TRS 80. Depuis longtemps fasciné par ce monde dont les articles de Berloquin m'avaient entrouvert la porte, je m'approchai, client d'un programme d'évolution du latin au français qu'écrirait un de mes collègues. Nous parvînmes à accentuer correctement un mot latin, condition essentielle, pendant que le collègue déployait tous ses efforts pour me faire passer du statut de client à celui de concepteur. Il fut muté, je continuai sur la lancée, et l'opportunité d'un stage d'un an s'offrit.

Après ce stage, je passai de nombreuses années dans un rôle que décrivent fort bien les premiers mots de Jean-Louis quand il me téléphonait : « Allo, docteur.. » ; Quand il restait du temps, je développais de petits utilitaires ; essentiellement pour adapter au réseau pédagogique des logiciels conçus en monoposte, ou je corrigeais le spaghetti basic de certains produits de la Valise IPT, le listing étalé par terre, et divers marqueurs pour en pister la séquence.

Divers avatars me firent retourner à l'enseignement des Lettres, et, la retraite aidant, j'ai pu enfin me consacrer à mes dadas, massacrer ma flûte à bec, étudier la morphologie française, et produire des logiciels qui puissent être utiles en milieu éducatif.

Où avez-vous (ap)pris l'orthographe que vous pratiquez ?

À	Marseille, avec une collection de puristes plus agrégés les uns que les autres. Je l'ai inoculée à plusieurs générations de victimes, déplorant ses complications et ses incohérences, sachant que, les diverses tentatives officielles de simplification ou de tolérance étant restées lettre morte, on ne pouvait faire courir aux élèves le risque d'être sanctionnés pour n'avoir, par exemple, pas distingué un mur de briques d'un mur de brique. Libéré aujourd'hui de ces contraintes j'applique avec joie, même si j'en déplore la mollesse, les recommandations publiées au Journal officiel de la République française le 6 décembre 1990.

On voudrait un affinement évitant la présence d'homonymes dans la même classe.

C'est en route.

On voudrait une version sans PHP.

Offrez-moi un manuel de programmation en QT.

Table des matières

Préface	2

Prérequis	4

Logiciels	5

Racine des documents	5

Installation	7

Fichiers	8

Décompactage	8

Copie	9

Systèmes UNIX	9

Préparation	10

Le fichier de données des cas	12

Nom chemin et droits	12

Fichier suffisant pour les répartitions par affinités et les répartitions aléatoires.	13

Format du fichier	13

Colonnes	13

Lignes	14

Production du fichier	14

Fichier nécessaire pour les répartitions sous contraintes	15

Format du fichier	15

Colonnes	15

Lignes	16

Résoudre les erreurs d'importation	16

Modifications des fichiers	16

Nom et prénom	16

Sexe	17

Enregistrement final	17

Fichier reglisse.inc	18

Composition du fichier	18

Les définitions de constantes.	18

Composition	18

Styles.css	22

Exécution	23

Lancement	24

Connexion	24

Anomalies pos­sibles	24

Forbidden	24

Vous avez choisi d'ouvrir	24

Fonctionnement normal	25

Création du compte d'un nouveau	26

Fichier des individus	27

Fichier des individus absent	27

Fichier des individus correctement copié	27

Opérations principales	28

Répartitions par particularités	29

Définir ou modifier les particularités de certains individus	29

Répartitions par contraintes	29

Répartitions ne tenant compte que du sexe	29

Répartitions sans tenir compte d'éventuelles affinités saisies.	30

Définition	30

Procédé	30

Répartitions par particularités	31

Principe	31

Fonctionnement	32

Procédé	33

Sélection des cas	33

Précisions	34

Résultat	36

Répartitions sous contraintes	37

Jargon	37

Possibilités.	38

Répartition sous contraintes simples	38

Répartition sous contraintes inversées	39

Répartition sous contraintes croisées	39

Répartition sous contraintes ordonnées	39

Procédure	40

Vérification	41

Répartition sur contraintes ordonnées	43

Structure des tables	45

Définitions express	45

Tables de Réglisse	46

Table eleves	46

Table incompatibles	47

Table particuliers	47

Table affectes	47

Quelques réponses aux questions que vous ne posez pas	48

Glossommaire	54

Glossommaire

Affinités

Raccourci outrancier désignant aussi bien des individus qu'on aimerait voir affectés au même groupe que des individus qu'on aimerait voir affectés à des groupes différents.

Avec

Dans les menus, désigne les individus avec qui il serait souhaitable de placer un individu donné. N'est pas contraignant ; est traité après Grouper et Disperser. N'est pas traité transitivement.

chgrp

Délicieuse incantation unix permettant de préciser le groupe auquel sont attribués les droits (cf p. 59) de groupe (cf p. 60) sur un fichier ou un répertoire.

Parmi son lot d'options -R indique que le changement appliqué à un répertoire l'est aussi à son contenu et à ses sous-répertoires.

chmod

Délicieuse incantation unix permettant de changer les droits (cf p.59) sur un répertoire ou un dossier.

Parmi son lot d'options -R indique que le changement appliqué à un répertoire l'est aussi à son contenu et à ses sous-répertoires.

chown

Délicieuse incantation unix permettant de préciser le compte auquel sont attribués les droits (cf p. 59) de propriétaire (cf p. 62) sur un fichier ou un répertoire.

Parmi son lot d'options -R indique que le changement appliqué à un répertoire l'est aussi à son contenu et à ses sous-répertoires.

Classe

Ce mot désigne ici toute forme de groupement des individus d'une population. Il est entièrement confondu avec le mot groupe ou sous-groupe, mais il pourrait aussi bien désigner dans un autre contexte la patrouille, la troupe, le sous-ensemble.

Contrainte

Souvent confondu par Réglisse avec critère, recouvre en milieu scolaire des notions comme les langues vivantes, les enseignements de spéciali­tés, les enseignements optionnels. Dans la répartition des curistes d'un établissement thermal, pourrait correspondre à la pathologie, aux sources fréquentées, à la période de la cure, l'ancienneté du client... Souvent certains de ces critères sont exclusifs l'un de l'autre, et il est mieux de les indiquer en début de la liste des critères (débutant / confirmé, francophone / bilingue..). En effet les répartitions sous contraintes croisées et inversées traitent différemment les cinq premières contraintes et les cinq dernières.

CSS

Cascaded Style Sheet, feuilles de styles en cascade. Il s'agit de la définition de règles de présentation des différents éléments d'une page HTML, permettant l'application simultanée de plusieurs feuilles de styles sur la même page ou de plusieurs styles sur le même objet.

CSV

Format de fichier que tous les tableurs savent lire, et qui ne contient que des valeurs sans aucun codage ni aucune for­mule. Ce format que tous les tableurs savent lire, et qui est assez facile à produire, permet aux tableurs de communiquer entre eux, et à une application indépendante de produire des fichiers de résultats que son utilisateur peut exploiter quel que soit le tableur qu'il possède, voire même sans tableur s'il n'en possède pas (éditeur de textes, lateχ ..).

Voyez aussi dans ce glossaire ; Délimiteur, Séparateur.

Délimiteur

Le délimiteur est le moyen par lequel on identifie les colonnes d'un fichier CSV. Il est aussi nommé Séparateur, mais est différent du séparateur de texte (cf p. 64).

Disperser

Désigne ici le fait de devoir mettre dans des groupes-classes différents des individus désignés, par exemple en raison d'une difficulté pédagogique pour éviter de surcharger un même enseignant.

droits

Dans le monde Unix, un répertoire ou un fichier a des attributs qui en précisent l'utilisation :

les droits notés soit par des lettres soit par des chiffres :

lire un fichier ou accéder au contenu d'un répertoire (r ou 4),

écrire dans un fichier ou un répertoire (w ou 2),

exécuter un fichier (x ou 1) ;

les catégories d'utilisateurs :

le propriétaire du dossier ou du fichier qui a ses propres droits,

un groupe d'utilisateurs qui ont leurs propres droits,

les autres utilisateurs qui ont leurs propres droits.

de sorte qu'un fichier dont le propriétaire est thenardier et le groupe miserables

dont les droits sont 700 donne tous les droits à thenardier,

dont les droits sont 740 donne tous les droits à thenardier et permet aux membres du groupe miserables de lire ce fichier,

dont les droits sont 750 donne tous les droits à thenardier et permet aux membres du groupe miserables de lire et d'exécuter ce fichier,

dont les droits sont 760 donne tous les droits à thenardier et permet aux membres du groupe miserables de lire ce fichier et d'en enregistrer des modifications,

dont les droits sont 704 donne tous les droits à thenardier,ne permet rien aux membres du groupe miserables et permet à tout le monde de le lire...

Ces droits peuvent s'appliquer à un répertoire et aux fichiers et sous-répertoires qu'il contient, mais chaque élément du répertoire peut se voir attribuer son propre jeu de droits.

On peut en changer par la commande chmod.

Filière

Réglistiquement parlant, il s'agit de la section, L, ES, S, Connaissance Historique des Sciences et Techniques Agricoles du Gatinais Septentrional...

Groupe :

désigne la même chose que classe quand on ne parle pas des groupes unix.

groupe unix

Dans le monde Unix, les utilisateurs appartiennent à des groupes, ce qui assouplit quelque peu la gestion des droits sur les fichiers et les répertoires. On peut en changer par la commande chgrp.

Grouper

Désigne ici le fait de devoir mettre dans le même groupe-classe des individus désignés, par exemple des individus ayant les mêmes contraintes physiques : même train, fauteuil roulant.

Indice de Jaccard

L'indice de Jaccard au sens strict diffère sensiblement de ce que j'en ai fait.

Soit deux séquences A et B, chacune avec n attributs binaires. Chaque attribut peut être à 0 ou 1. On a ainsi :

On définit plusieurs quantités qui caractérisent les deux ensembles :

représente le nombre d'attributs qui valent 1 dans A et dans B

représente le nombre d'attributs qui valent 0 dans A et 1 dans B

représente le nombre d'attributs qui valent 1 dans A et 0 dans B

représente le nombre d'attributs qui valent 0 dans A et dans B

Chaque paire d'attributs doit nécessairement appartenir à l'une des quatre catégories, de telle sorte que :

.

L'indice de Jaccard devient :

L'indice que j'utilise attribue 1 aux contraintes de même rang qui sont égales, 0 à celles qui diffèrent.

Individu

Un élément d'un ensemble cohérent stockés dans un fichier. Les timbres d'un collectionneur peuvent devenir des individus en ce sens.

Linux

Linux est le nom générique d'un Unix libre, initialement issu de Minix, système d'exploitation minimal semblable à Unix, développé par Andrew Stuart Tanenbaum à des fins pédagogiques, et dont le code était d'une clarté éblouissante, que d'innombrables groupes ont adopté ou adapté, y intégrant tel ou tel interface graphique, telle ou telle version du noyau compilé avec des options différentes, tel ou tel groupe de programmes, engendrant ainsi le babel des « distributions », où, entre autres, le mode d'installation d'un logiciel utilise un outil différent et des fichiers d'installation spécifiques : Ubuntu, Fedora, Debian, Suse...

Particularités

Regroupe la notion réglissesque d'affinités (cf p. 58) de groupement (cf p. 61) et de dispersion (cf p. 59).

propriétaire

Tout fichier ou répertoire unix a un propriétaire qui a ses propres droits (cf. p. 59) sur lui. On peut en changer par la commande chown.

ps

Délicieuse incantation Unix permettant de savoir quels sont les processus actifs. Parmi ses multiples options, e permet d'avoir la liste de tous les processus quel qu'en soit le propriétaire et f d'avoir le nom complet du propriétaire.

Population

L'ensemble des individus recensés dans un fichier et qu'on va tenter de répartir. Les arbres de la forêt peuvent devenir une population en ce sens.

Réglissesque

Novlangue débrouillardise désignant ce qui a trait à Réglisse comme dantesque désigne ce qui a des caractères semblables à ceux de l'univers de Dante, et non comme grotesque, sans rapport, de plus ; avec grotte. Similairement réglissistique...

Répartition sous contraintes croisées

Répartition classant les élèves suivant l'ordre inversé des contraintes en partant pour les contraintes 5 à 10 de la moins choisie qui tend à rapprocher ceux qui ont fait les choix 5 à 10 qui correspondent dans la pratique courante aux options facultatives cumulables. De ce fait, les groupements obtenus peuvent de simplifier la mise sur pied de l'emploi du temps.

Une option permet de regrouper les affinités positives (cf p. 58) et d'éloigner les affinités négatives (cf p. 64) dans la mesure où chacun des élèves concernés possède un équivalent au sens où l'indice de Jacquard (cf p. 61) des deux permutables est supérieur à un seuil défini par l'utilisateur en termes humains..

Répartition sous contraintes inversées

Répartition classant les élèves suivant l'ordre inversé des contraintes qui tend à rapprocher ceux qui ont fait les choix 5 à 10 qui correspondent dans la pratique courante aux options facultatives cumulables. De ce fait, les groupements obtenus peuvent de simplifier la mise sur pied de l'emploi du temps.

Une option permet de regrouper les affinités positives (cf p. 58) et d'éloigner les affinités négatives (cf p. 64) dans la mesure où chacun des élèves concernés possède un équivalent au sens où l'indice de Jacquard (cf p. 61) des deux permutables est supérieur à un seuil défini par l'utilisateur en termes humains..

Répartition sous contraintes ordonnées

Répartition classant les élèves suivant l'ordre inversé des contraintes défini par l'utilisateur. On peut supposer que celui-ci connait ses besoins mieux que moi...

Une option permet de regrouper les affinités positives (cf p. 58) et d'éloigner les affinités négatives (cf p. 64) dans la mesure où chacun des élèves concernés possède un équivalent au sens où l'indice de Jacquard (cf p. 61) des deux permutables est supérieur à un seuil défini par l'utilisateur en termes humains..

Répartition sous contraintes simples

Répartition classant les élèves suivant l'ordre des contraintes qui tend à disperser ceux qui ont fait les choix 5 à 10 qui correspondent dans la pratique courante aux options facultatives cumulables. De ce fait, les groupements obtenus risquent de compliquer la mise sur pied de l'emploi du temps.

Une option permet de regrouper les affinités positives (cf p. 58) et d'éloigner les affinités négatives (cf p. 64) dans la mesure où chacun des élèves concernés possède un équivalent au sens où l'indice de Jacquard (cf p. 61) des deux permutables est supérieur à un seuil défini par l'utilisateur en termes humains..

Répartition avec particularités

Répartition originale de Réglisse :

le ratio masculins / effectif de chaque classe est maintenu au plus près du ratio global masculins / effectif,

les élèves à grouper (cf p. 61) sont groupés dans autant de classes que nécessaire,

les élèves à disperser (cf p. 59) sont affectés à des classes différentes de celle où ont été placés les élèves à grouper, et différentes dans la mesure où ils sont moins nombreux que le nombre de classes, sinon on minimise leur présence dans chacune des classes,

les élèves présentant des affinités (cf p. 58) négatives (cf p. 64) sont isolés de ceux avec qui il est souhaitable de ne pas les rapprocher,

les élèves présentant des affinités positives (cf p. 58) attirent ceux avec qui il est souhaitable de les rapprocher.

C'est la demande initiale qui a motivé l'écriture de Réglisse.

Répartition libre

Répartition élémentaire qui n'est sans doute pas très utile mais, coutant peu à programmer, s'est fait une place : les individus sont répartis en respectant le ratio global masculins / effectifs.

L'intérêt de cette répartition est de requérir un fichier de cas minimal, et très peu de manipulations dans Réglisse, quand il faut obtenir vite un groupement sur des gens dont on sait peu de choses. À l'extrême limite, on peut même renseigner le sexe arbitrairement s'il ne s'agit pas d'un critère important.

root

Désigne ici le superviseur d'un système unix. Suivant les distributions, on peut on non ouvrir une session comme root. Quand on ne le peut pas, dans un terminal on peut effectuer des opérations réservées à root en tapant :

su

mot_de_passe

commande

ou

sudo commande

Sans

Dans les menus, désigne les individus avec qui il serait souhaitable de ne pas placer un individu donné. N'est pas contraignant ; est traité après Grouper et Disperser. N'est pas traité transitivement.

Séparateur

Pour être certain d'éviter les confusions, les textes d'un fichier CSV sont entourés d'un séparateur en plus du délimiteur (cf p. 59).

Autres publications du même hurluberlu
aux presses de
sibylle.ouvaton.org

Sibylle : un logiciel de gestion de questionnaires

Vocabulaire français : une étude sur les moyens d'enrichir le vocabulaire français

L'orteil du Grand Czardazou : une pièce de théâtre d'inspiration historico-journalistique

Divers fatras