Valid XHTML     Valid CSS2    

Listing du fichier galg-vpl.php

 

00001     <?php
00002     #   # (gH)   -_-  galg-vpl.php  ;  TimeStamp (unix) : 01 Juin 2018 vers 13:29
00003     include(
"std.php") ;
00004     debutPageMinimal
("G-ALG : intégration dans Moodle (gH)","std.css","galg") ;
00005     $galg    
ghRouge("G-ALG") ;
00006     $vpl     
ghVert("VPL") ;
00007     $Moodle  
ghBleu(em("Moodle")) ;
00008     blockquote
() ;
00009     debutSection
("80%") ;
00010     
00011     p
() ;
00012      echo s_span
("&nbsp;&nbsp;&nbsp;".b($galg)."&nbsp;:&nbsp;","gros_car") ;
00013      echo s_span
(ghRouge("G")."estion","gros_car") ;
00014      echo s_span
("&nbsp;d'".ghRouge("ALG")."orithmes&nbsp;","gros_car") ;
00015     finp
() ;
00016     
00017     $sp 
"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" ;
00018     h1
($sp."Intégration de $galg et du plugin $vpl dans $Moodle","bleuf plusgros") ;
00019     
00020     p
() ;
00021     nbsp
(25) ;
00022     echo s_span
("&nbsp;gilles.hunault@univ-angers.fr","vert plusgros") ;
00023     finp
() ;
00024     
00025     blockquote
() ;
00026     
00027     div
("gauche") ;
00028     hr
("hrgalg") ;
00029     findiv
() ;
00030     
00031     pvide
() ;
00032     
00033     #  préparation des rubriques (l'indice 0 est volontairement vide)
00034     
00035     $tableauDesRubriques 
= array() ;
00036     $idr 
;
00037     $idr
++; $tableauDesRubriques[$idr] = "Rappel sur ce qu'est $galg " ;
00038     $idr
++; $tableauDesRubriques[$idr] = "Présentation du plugin $vpl pour $Moodle;
00039     $idr
++; $tableauDesRubriques[$idr] = "Installations et configurations (2018)" ;
00040     $idr
++; $tableauDesRubriques[$idr] = "Ce qu'il reste à faire" ;
00041     
00042     # noubel objet table des matières
00043     
00044     $tdmCRLM 
= new tdm($tableauDesRubriques) ;
00045     
00046     # affichage du titre
00047     
00048     $tdmCRLM
->titre() ;
00049     
00050     $tdmCRLM
->menu("oui","oui") ;
00051     
00052     ##########################################################################################
00053     
00054     $tdmCRLM
->afficheRubrique("oui") ; # 1. Rappel sur ce qu'est G-ALG
00055     
00056     ##########################################################################################
00057     
00058     blockquote
() ;
00059     
00060     p
("texte") ;
00061     echo 
$galg est un système pédagogique pour l'initiation à l'algorithmique impérative classique. " ;
00062     echo " Il se compose d'un langage algorithmique en français, d'un catalogue d'exercices et d'outils en " 
;
00063     echo " lignes de commandes pour analyser, exécuter, valider les algorithmes. Depuis mars 2018 il existe une " 
;
00064     echo " interface Web pour l'utiliser nommée "
.em(ghVert("galgi"))." accessible " ;
00065     echo href
("Interface/","ici")."." ;
00066     finp
() ;
00067     
00068     p
() ;
00069       nbsp
(8) ;
00070       $img 
"Interface/Galgimages/galgInterface.png" ;
00071       echo href
($img,img($img,"",800,"","encadre")) ;
00072     finp
() ;
00073     
00074     p
("texte") ;
00075     echo " Pour utiliser 
$galg en ligne de commandes, il suffit de disposer de Perl, de R et des scripts fournis par " ;
00076     echo " l'archive "
.b("galg2018.zip").". " ;
00077     finp
() ;
00078     
00079     finblockquote
() ;
00080     
00081     ##########################################################################################
00082     
00083     $tdmCRLM
->afficheRubrique("oui") ; # 2. Présentation du plugin VPL pour Moodle
00084     
00085     ##########################################################################################
00086     
00087     blockquote
() ;
00088     
00089     p
("texte") ;
00090     echo " Le plugin 
$vpl (".em("Virtual Programming Lab").") est un module d'activités pour $Moodle disponible au catalogue des modules. " ;
00091     echo " Ce module fournit aux étudiant(e)s des activités de programmation surveillées. Les étudiant(e)s disposent d'une " 
;
00092     echo " interface d'édition et de boutons pour compiler, exécuter, débugger..." 
;
00093     echo ghRouge
(" Ce plugin requiert un serveur d'exécution dédié et distinct du serveur $Moodle")." et des scripts pour analyser, exécuter, évaluer " ;
00094     echo " du code informatique. " 
;
00095     finp
() ;
00096     
00097     p
() ;
00098       nbsp
(8) ;
00099       $img 
"vpl.png" ;
00100       echo href
($img,img($img,"",600,"","encadre")) ;
00101     finp
() ;
00102     
00103     finblockquote
() ;
00104     
00105     ##########################################################################################
00106     
00107     $tdmCRLM
->afficheRubrique("oui") ; # 3. Installations et configurations
00108     
00109     ##########################################################################################
00110     
00111     blockquote
() ; # section 3
00112     
00113     h3
("3.1 Installation et configuration de $Moodle") ;
00114     
00115     blockquote
() ;
00116     
00117     p
("texte") ;
00118     echo " Nous avons installé en local sur notre portable sous Linux/Ubuntu 16.04, un 
$Moodle récent, " ;
00119     echo " suivant la procédure décrite " 
;
00120     echo href
("https://www.digitalocean.com/community/tutorials/how-to-install-moodle-on-ubuntu-16-04","ici").". " ;
00121     finp
() ;
00122     
00123     p
("texte") ;
00124     echo " Donc nous avons&nbsp;: "  
;
00125     finp
() ;
00126     
00127     ul
() ;
00128     
00129       debutli
() ; p() ;
00130            echo " installé des packages pour PHP, " 
;
00131       finp
() ; finli() ;
00132     
00133       debutli
() ; p() ;
00134            echo " relancé le serveur apache, " 
;
00135       finp
() ; finli() ;
00136     
00137       debutli
() ; p() ;
00138            echo " téléchargé puis décompressé l'archive " 
;
00139            echo " contenant le code de 
$Moodle dans le répertoire ".b("/var/www/html/moodle").", " ;
00140       finp
() ; finli() ;
00141     
00142       debutli
() ; p() ;
00143            echo " configuré la base de données, " 
;
00144       finp
() ; finli() ;
00145     
00146       debutli
() ; p() ;
00147           echo " défini des comptes et des mots de passe administrateur etc., " 
;
00148       finp
() ; finli() ;
00149     
00150     finul
() ;
00151     
00152     p
("texte") ;
00153     echo " Nous disposons alors d'un 
$Moodle correspondant à " ;
00154     echo " une version 3.2.6 branche 32. " 
;
00155     echo " comme indiqué dans le fichier " 
;
00156     br
() ;
00157     echo b
("/var/www/html/moodle/version.php")."." ;
00158     finp
() ;
00159     
00160     p
() ;
00161       nbsp
(8) ;
00162       $img 
"moodle-gh.png" ;
00163       echo href
($img,img($img,"",600,"","encadre")) ;
00164     finp
() ;
00165     
00166     finblockquote
() ;
00167     
00168     h3
("3.2 Installation et configuration du plugin $vpl") ;
00169     
00170     blockquote
() ;
00171     
00172     p
("texte") ;
00173     echo " Le plugin 
$vpl est décrit ".href("https://moodle.org/plugins/mod_vpl","ici")." sur le site de $Moodle " ;
00174     echo " et on le télécharge "
.href("https://moodle.org/plugins/pluginversions.php?plugin=mod_vpl","là").". " ;
00175     echo " Il s'installe comme les autres plugins de 
$Moodle via le panneau ".b("Administration du site").". " ;
00176     echo " Le plugin que nous avons installé via une distribution récente correspond à une version 3.3.2 " 
;
00177     echo " comme indiqué dans le fichier " 
;
00178     br
() ;
00179     echo b
("/var/www/html/moodle/mod/vpl/version.php")."."  ;
00180     finp
() ;
00181     
00182     p
("texte") ;
00183     echo "Pour rendre le plug-in accessible aux étudiants dans un cours, il suffit de le sélectionner dans le panneau " 
;
00184     echo " d'ajout d'activité et de ressources&nbsp;:" 
;
00185     finp
() ;
00186     
00187     p
() ;
00188       nbsp
(8) ;
00189       $img 
"activite-vpl.png" ;
00190       echo href
($img,img($img,"",400,"","encadre")) ;
00191     finp
() ;
00192     
00193     finblockquote
() ;
00194     
00195     h3
("3.3 Installation et configuration du \"jail server\" (serveur d'exécution)") ;
00196     
00197     blockquote
() ;
00198     
00199     p
("texte") ;
00200     echo " Pour télécharger ce serveur d'exécution, la page officielle est " 
;
00201     echo href
("http://vpl.dis.ulpgc.es/index.php","ici")." " ;
00202     echo " et la documentation pour installer le serveur d'exécution est " 
;
00203     echo href
("http://vpl.dis.ulpgc.es/index.php/support/2014-09-27-15-06-22/40-how-to-install-vpl-jail-system","là").". " ;
00204     finp
() ;
00205     
00206     p
("texte") ;
00207     echo " Notre serveur d'exécution a été pris comme conseillé&nbsp;: une machine Linux/Ubuntu 16.04 avec les langages usuels (C, C++, Perl, Python, R...). " 
;
00208     echo " Sur notre portable Linux, il s'agit d'une machine virtuelle fournie via VmWare." 
;
00209     echo " Sur ce serveur d'exécution, nous avons entré le code d'accès "
.b("XXXX")." au niveau du fichier ".b("/etc/vpl/vpl-jail-system.conf") ;
00210     echo " et dans un navigateur, via l'adresse du serveur suivi du mot "
.b("OK")." nous avons vérifié que le serveur était accessible et actif." ;
00211     finp
() ;
00212     
00213     /* il faut modifier la ligne 49 du fichier vpl-jail-system.conf :
00214     giluno@ubuntu-vpl:/etc/vpl$ sudo grep -n UA vpl-jail-system.conf
00215     49:URLPATH=/UA
00216     */
00217     
00218     
00219     p
("texte") ;
00220     echo " Il a ensuite fallu retourner sur le serveur 
$Moodle et, dans l'administration du site, " ;
00221     echo " nous avons mis l'adresse du serveur d'exécution et ce code d'accès. " 
;
00222     echo " Nous avons ensuite pu vérifier que le serveur d'exécution répond correctement pour des langages connus, " 
;
00223     echo " avec des extensions de fichiers standard comme .sh, .c, .perl..." 
;
00224     finp
() ;
00225     
00226     p
() ;
00227       nbsp
(8) ;
00228       $img 
"serveur-vpl.png" ;
00229       echo href
($img,img($img,"",800,"","encadre")) ;
00230     finp
() ;
00231     
00232     p
("texte") ;
00233     echo "Comme indiqué dans la page de documentation, tout le processus d'exécution se fait via "
.ghVert("XML-RPC")."&nbsp;:" ;
00234     finp
() ;
00235     
00236     pre_fichier
("vplcnx.txt","cadrejaune") ;
00237     
00238     # vu dans
00239     #     http://vpl.dis.ulpgc.es/index.php/support/2014-09-27-15-06-22/40-how-to-install-vpl-jail-system
00240     p
("texte") ;
00241     echo "En termes d'utilisateurs, un serveur d'exécution doit convenir pour 50 étudiants (lu sur le site du VPL) : " 
;
00242     finp
() ;
00243     
00244     pre_fichier
("vplsize.txt","cadrejaune") ;
00245     
00246     finblockquote
() ;
00247     
00248     h3
("3.4 Installation et configuration de $galg sur le serveur d'exécution") ;
00249     
00250     blockquote
() ;
00251     p
("texte") ;
00252     echo " Pour que 
$galg puisse &ecirc;tre utilisé par le serveur d'exécution, nous avons décompressé les fichiers " ;
00253     echo " de notre archive "
.b("galg2018.zip")." dans le répertoire ".b("/usr/sbin/Galg")." du serveur d'exécution, à l'exception des scripts " ;
00254     echo b
("galg").", ".b("galg-analyse").", ".b("galg-execute")." et ".b("galg-valide")." mis dans ".b("/usr/sbin/").". " ;
00255     echo " Ces scripts définissent une variable d'environnement "
.b("PERL_MACROS")." et ajoutent le chemin " ;
00256     echo b
("/usr/sbin/Galg")." volontairement en fin de PATH. En voici un exemple&nbsp;" ;
00257     finp
() ;
00258     
00259     pre_fichier
("galg-analyse-sh.txt","cadre") ;
00260     
00261     p
("texte") ;
00262     echo "Il a ensuite fallu définir l'association entre les fichiers "
.b(".alg")." et les scripts ".b("galg*").". " ;
00263     /*
00264     echo " Pour cela, ??? " ;
00265     finp() ;
00266     
00267     p("texte") ;
00268     echo " Pour que le $vpl exécute les scripts $galg, il faut actuellement, au niveau des activités, définir les fichiers d'exécution " ;
00269     echo b("vpl_run.sh")." et ".b("vpl_evaluate.sh").". " ;
00270     echo " Voici un exemple d'un tel fichier&nbsp;:" ;
00271     finp() ;
00272     
00273     pre_fichier("vpl_evaluate-sh.txt","cadre") ;
00274     
00275     p("texte") ;
00276     */
00277     echo 
" Nous avons également, réussi, après plusieurs essais malheureux, à trouver comment comment définir les " ;
00278     echo " paramètres de la coloration syntaxique pour les fichiers de type "
.b(".alg")." de façon à fournir une colorisation syntaxique des mots-clés. " ;
00279     echo " Ces modifications techniques à exécuter sur le serveur 
$Moodle ne sont pour l'instant pas détaillées ici." ;
00280     finp
() ;
00281     
00282     /*
00283     
00284     il faut ajouter, vers la ligne 70 que le type alg correspond à galg dans vpl_submission_CE.class.php
00285     
00286     @ghchu5/var/www/html/moodle/mod/vpl|(~gH) > diff vpl_submission_CE.class.php vpl_submission_CE.class.php.org
00287     70d69
00288     <       'alg' => 'galg',
00289     
00290     #########################################################################################
00291     
00292     il faut aussi ajouter, vers la ligne 342 que le type alg correspond à galg dans VPLUtil.js
00293     
00294     @ghchu5/var/www/html/moodle/mod/vpl/editor|(~gH) > diff VPLUtil.js VPLUtil.js.org
00295     342d341
00296     <             'alg' : 'galg' ,
00297     
00298     #########################################################################################
00299     
00300     il faut créer un fichier mode-galg.js pour définir les mots-clés, les blocs... dans
00301     
00302     @ghchu5/var/www/html/moodle/mod/vpl/editor/ace9/
00303     
00304     */
00305     
00306     finblockquote
() ; # sous-section 3.4
00307     
00308     h3
("3.5 Configuration d'une activité $galg-$vpl") ;
00309     
00310     blockquote
() ;
00311     
00312     p
("texte") ;
00313     echo "Pour disposer d'une session d'édition, d'analyse, d'exécution et de validation 
$galg via le plugin $vpl," ;
00314     echo " il suffit d'ajouter à une section ou à un cours une nouvelle activité 
$vpl -- à condition de configurer finement l'activité." ;
00315     echo " Au niveau des paramètres de l'activité, il faut bien gérer la période de soumission, le plus simple étant de décocher l'activation. " 
;
00316     echo " Ensuite, pour le paramètre de restrictions des soumissions, nous conseillons de passer le nombre de fichiers utilisés à 10 alors que la " 
;
00317     echo "  valeur par défaut est 1. Cela permet de pouvoir conserver facilement au m&ecirc;me endroit différentes versions des algorithmes. " 
;
00318     echo " Attention : le plug-in exécute par défaut le premier fichier édité. Il faut utiliser le bouton de tri pour choisir un autre fichier " 
;
00319     echo " à exécuter en premier. " 
;
00320     finp
() ;
00321     
00322     p
("texte") ;
00323     echo "Par défaut les étudiants ne peuvent ni exécuter, ni débugger ni faire évaluer leur code. " 
;
00324     echo " Pour les y autoriser, il faut éditer l'activité et utiliser les valeurs Oui/Non du menu des options d'exécutions comme ci-dessous&nbsp;:" 
;
00325     finp
() ;
00326     
00327     p
() ;
00328       nbsp
(8) ;
00329       $img 
"vpl-options.png" ;
00330       echo href
($img,img($img,"",800,"","encadre")) ;
00331     finp
() ;
00332     
00333     finblockquote
() ; # sous-section 3.5
00334     
00335     h3
("3.5 Utilisation d'une activité $galg-$vpl") ;
00336     
00337     blockquote
() ;
00338     
00339     p
("texte") ;
00340     echo " Pour utiliser une session d'édition, d'analyse, d'exécution et de validation 
$galg via le plugin $vpl," ;
00341     echo " les étudiant(e)s ont juste à cliquer sur l'icone de l'activité 
$vpl puis à cliquer sur l'onglet ".b("Edit").". " ;
00342     echo " Une fois un fichier .alg édité puis sauvegardé (icone de disquette ou Ctrl-s), " 
;
00343     echo " ils peuvent l'exécuter via l'icone de fusée ou la combinaison Ctrl-F11. " 
;
00344     finp
() ;
00345     
00346     p
("texte") ;
00347     echo " Nous n'avons pas pour l'instant trouvé de façon simple de basculer entre l'exécution et la validation  "
;
00348     echo " ni comment changer la taille de l'affichage des résultats, comme on pourra s'en rendre compte ci-dessous." 
;
00349     finp
() ;
00350     
00351     p
() ;
00352       nbsp
(8) ;
00353       $img 
"vpl-exemple.png" ;
00354       echo href
($img,img($img,"",800,"","encadre")) ;
00355     finp
() ;
00356     
00357     finblockquote
() ; # sous-section 3.5
00358     
00359     finblockquote
() ; # section 3
00360     
00361     ##########################################################################################
00362     
00363     $tdmCRLM
->afficheRubrique("oui") ; # 4. Ce qu'il reste à faire
00364     
00365     ##########################################################################################
00366     
00367     blockquote
() ;
00368     
00369     p
("texte") ;
00370     echo "A ce jour (19 juin 2018), nous ne savons pas comment choisir au hasard, via 
$Moodle, un exercice du catalogue de $galg." ;
00371     echo " Nous ne savons pas non plus comment générer puis \"bloquer\" par programme une page pour emp&ecirc;cher les étudiant(e)s d'avancer dans les exercices " 
;
00372     echo " tant qu'ils n'ont pas validé l'exercice de la page. " 
;
00373     echo " Il nous manque également la traçabilité des exercices réussis afin de pouvoir délivrer une certification de compétences algorithmiques." 
;
00374     finp
() ;
00375     
00376     p
("texte") ;
00377     echo "Il reste aussi à explorer les tutoriaux sur le VPL du " 
;
00378     echo href
("http://www.science.smith.edu/dftwiki/index.php/Moodle_VPL_Tutorials","Clark Science Center") ;
00379     echo " car ils regroupent de nombreux cas d'étude." 
;
00380     finp
() ;
00381     
00382     finblockquote
() ;
00383     
00384     ##########################################################################################
00385     
00386     pvide
() ;
00387     p
("pluspetit") ;
00388     echo href
("montresource.php?nomfic=galg-vpl.php","Code-source de cette page","orange_stim nou")."." ;
00389     finp
() ;
00390     
00391     ##########################################################################################
00392     
00393     finblockquote
() ;
00394     finSection
() ;
00395     finblockquote
() ;
00396     finPageMinimale
() ;
00397     ?>

Pour ne pas voir les numéros de ligne, ajoutez &nl=non à la suite du nom du fichier.

 

 

retour gH    Retour à la page principale de   (gH)