Skip to content
Snippets Groups Projects
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