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(" ".b($galg)." : ","gros_car") ;
00013 echo s_span(ghRouge("G")."estion","gros_car") ;
00014 echo s_span(" d'".ghRouge("ALG")."orithmes ","gros_car") ;
00015 finp() ;
00016
00017 $sp = " " ;
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(" 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 = 0 ;
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 : " ;
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 :" ;
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é : 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")." :" ;
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 ê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 " ;
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 :" ;
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ê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 :" ;
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ê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 à la page principale de (gH)