-
Nicolas M. Thiéry authoredNicolas M. Thiéry authored
TODO 6.43 KiB
* QCM Question logique
- [ ] pour ***que*** l'expression suivante ***retourne*** true.
- [ ]
* Collections de programmes + randomisation + résultat
** Features
- [X] Code colorization
- [X] Code area just of the proper height
- [X] Selection of topic based on file prefix
- [X] Output dans un textarea
- [ ] Why are there empty lines at the top and bottom of the text shown?
- [ ] Randomization of the variable names
- [ ] Randomization of the output by substitution (preprocessing)
- [ ] Implement more logic in WIMS
- [ ] Support for various programming languages, based on file extension (see below)
- [ ] Separate clearly the expected output from the rest of the text
- [ ] Allow for broken programs
** Programs
- variables-assign.cpp est un peu trop long
- ceux avec factorielle sont trop prévisibles sans lire le code
- obfuscated / misindented programs
- programes autour de la division entiere
** Substitution des variables et constantes?
\text{code=\wims(replace internal resultat par \resultat)}
- Mesure intermédiaire:
Définir sur la ligne de commande de G++ un certain nombre de macros
I1,I2,I3, C1,C2,C3, F1,F2,F3, et les utiliser dans les programmes.
Comme ça, le jour de l'examen, on peut facilement travailler sur
d'autres valeurs.
* Onsite compilation and production of the output
** DONE Utility to compile and execute a program in a sandbox (docker container)
See file:docker-compile-and-run/docker-compile-and-run.cpp for an
experimental program.
** DONE rewrite the module to use it.
** TODO [/] Improvements
- [ ] Randomisation
- [ ] Where to put compile-and-run.sh
- [ ] Avoid hardcoding the module data location
- [ ] Avoid hardcoding the location of compile-and-run.sh
- [ ] Afficher la question avant de calculer la réponse?
- [ ] Support for other programming languages
See file:docker-compile-and-run/compile-and-run.sh
** TODO Deployment
Discuss with Bernadette to include that script (or some
equivalent) in Orsay's WIMS server.
** TODO Kernel panic
https://github.com/docker/docker/issues/15057 ?
** References:
http://askubuntu.com/questions/477551/how-can-i-use-docker-without-sudo
* Choisir l'entrée pour que ...
* Exercice générique avec base de donnée de programmes à trous
WIMS affiche un programme dont certain bouts sont cachés (les
trous), ainsi que l'affichage dudit programme. L'étudiant doit alors
compléter les trous pour que le programme affiche exactement la même
chose que le programme d'origine.
Typiquement le programme contiendra une fonction avec sa
documentation et ses tests, mais dont le corps et caché.
Pour introduire un peu de variabilité, le programme pourra lire sur
son entrée standard un entier que WIMS choisira aléatoirement.
* Écrire un programme qui ... par exemple pour n=5 ... copier coller le résultat ici
(Comparatif de la sortie par rapport à un programme de référence caché)
* Exercices existant: U1 / algo
Non fonctionnels en l'état (requiers un chroot qui n'est plus fonctionnel)
* Notes techniques sur WIMS
** Créer ses propres utilitaires / plugins / programmes externes
Si un programme est présent dans public_html/bin, il est exécutable
depuis les oef avec:
\text(toto=wims(exec ccc parametres ...)}
Il doit suivre un protocole spécifique. Le plus simple est de
mettre un programme usuel dans other/bin, avec un wrapper. Voir par
exemple toascii.
Ces programmes sont exécutables sans restriction par n'importe quel
auteur de module OEF/... Donc doivent être parfaitement sûr
** Créer ses programmes exécutables seulement par module de confiance
** Créer un index et chercher des infos dedans:
wims(lookup ... in ...)
src2def peut générer de tels index (voir aussi mkindex)
Il est possible qu'il existe déjà un index pour les *.data
** Compiler un module
Depuis la racine du module:
/opt/WIMS/other/bin/src2def
Mettre le module dans
/opt/WIMS/public_html/modules/devel/home/nthiery
** Compiler WIMS
sudo apt-get install libgd-dev
./compile --mathjax
dans bin/apache-config:
- remplacer apache2 par apache2ctl
- forcer confdir=/etc/apache2
- conffile=$confdir/conf-available/wims.conf
mistral-/etc/apache2/conf-enabled> sudo ln -s ../conf-available/wims.conf .
Still getting:
http://127.0.0.1/wims/
You don't have permission to access /wims/ on this server.
Se créer un compte développeur
* A propos des modules WIMS existants exécutant du code
** Modules
Chercher sur programmation sur le serveur
*** U1/algo/progstring.fr
*** ... arithmetic
** Supporte: perl, c, pascal
cf. public_html/bin/c
** Infrastructure:
- Un type de réponse: wims/public_html/scripts/anstype/code
définit:
- comment l'utilisateur rentre la réponse
- comment traiter la réponse (ici exécuter le code dans un chroot)
- le retour: qu'est-ce qui est affiché, note, ...
Objectif: mettre à jour pour utiliser docker à la place du chroot / secure_execq
Voir aussi ~/wims.log/unsecure.
Passe par WIMS/src/Misc/wrap.c à un moment ou un autre
** Variante: public_html/modules/tool/directexec/ (en particulier var.proc)
Outil indépendant permettant à un utilisateur d'exécuter un
programme quelconque écrit dans un des systèmes suivant:
outil,software, language, pari, gp, maxima, octave, macaulay, yacas, gap, scilab, c, perl, sh, python, pascal, fortran,jmol, jsgraph, canvasdraw,graphviz
entrée: une chaîne de caractère contenant le programme
sortie: l'affichage du programme
À confirmer: nécessitait un patch sur le noyau.
Utilise _calc_exec de WIMS/src/calc.c.
Exécute une commande, dans un chroot s'il n'est pas de confiance.
TODO: mettre à jour pour utiliser docker
** Consommation de ressources jugées raisonnables
Cf. src/wimsdef.h
Cf. aussi wims/log/wims.conf: rlimit_cpu et
public_html/bases/sys/defaults.conf pour les valeurs par défaut
** Si on se connecte avec une certaine IP alors on est en mode debug / admin
Affiche en particulier des informations sur l'exécution
* Serveur WIMS de test
https://wimstest2.di.u-psud.fr/
3/11/2015:
Serveur Centos6 similaire à WIMS installé par WIMS
docker.io installé
WIMS svn 4.11 a installé dans ~wims
voir /etc/httpd/conf/httpd.conf
Mainteneur: Julien Nauroy
Compte dévelopeur: nthiery wcloiasdf
service httpd restart FAILS, with selinux message in /var/log/httpd/error.log
2015/12/02: NT disabled selinux: http://www.crypt.gen.nz/selinux/disable_selinux.html