:: Enseignements :: Licence :: L3 :: 2008-2009 :: Programmation système en C ::
[LOGO]

MIDAS: Multi-Interface Dictionary Access Service


But du projet

Vous devrez réaliser un programme permettant de gérer un dictionnaire accessible à la fois par le web et en local par des commandes système.

Les services proposés

Votre dictionnaire doit proposer les 3 opérations suivantes:
  • put: mettre un mot dans le dictionnaire; le dictionnaire ne doit pas contenir de doublons
  • get: tester si un mot donné est dans le dictionnaire
  • list: obtenir la liste de tous les mots du dictionnaire

Il se présentera sous la forme d'un démon tournant sur une machine. Ce démon devra être interrogeable soit via des requêtes HTTP, soit via des commandes exécutables. Dans tous les cas, vous supposerez que les mots gérés sont codés en iso-latin1.

Les requêtes HTTP auront la forme suivante:
  • mettre un mot: http://host:port/put_word
    Retournera une page web indiquant si le mot a été ajouté ou s'il était déjà présent.
  • tester un mot: http://host:port/get_word Retournera une page web indiquant si le mot est dans le dictionnaire.
  • lister le contenu: http://host:port/list Retournera une page web donnant tous les mots contenus dans le dictionnaire, triés.

Toute autre requête devra conduire à la production d'une page d'erreur, conformément aux bonnes pratiques d'un serveur web poli.


Les 3 commandes système devront pouvoir fonctionner soit en local, soit en précisant par des options l'hôte et le port de la machine hébergeant le service. Elles fonctionneront de la façon suivante:
  • put: prend en paramètre un ou plusieurs mots à mettre dans le dictionnaire. Devra également accepter des mots sur l'entrée standard, comme une gentil commande Unix.
  • get: tester si LE mot passé en paramètre est dans le dictionnaire et retourne 0 ou 1 selon le résultat. S'il n'y a pas de paramètre, la commande lira des mots sur son entrée standard et, pour chacun d'eux, produira sur sa sortie standard une ligne de la forme mot:TRUE/FALSE
  • list: produira sur la sortie standard la liste des mots, triée.

Remarques

On ne se préoccupera pas de l'efficacité algorithmique de la gestion du dictionnaire. Faites AU PLUS SIMPLE, en montrant que vous avez retenu quelque chose du cours.

Sujet simple, exigences fortes: soignez particulièrement votre gestion des requêtes HTTP. Testez soigneusement votre code de toutes les façons possibles et imaginables.

Conditions de rendu

Vous travaillerez en binômes. Comme toujours, vous relirez SOIGNEUSEMENT la charte des projets pour éviter des erreurs susceptibles de chatouiller la sensibilité professorale. Vous rendrez ensuite une archive nommée login1-login2.zip contenant les choses suivantes:
  • un répertoire src contenant les sources du projet ainsi qu'un Makefile. Lorsqu'on lance make, on doit obtenir un exécutable nommé midas, correspondant au démon à démarrer, ainsi que les 3 exécutrables put, get et list. La cible clean doit fonctionner correctement. Les sources doivent être propres, en anglais et commentées.
  • un fichier doc.pdf contenant votre rapport qui devra décrire votre travail. En particulier, vous décrirez avec soin et en les justifiant tous vos choix d'architecture. Si votre projet ne fonctionne pas complètement, vous devrez en décrire les bugs.

Le projet est à rendre par mail à tous les enseignants (i.e. Dominique Revuz, Sylvain Cherrier et Frédéric Fauberteau). La date de rendu n'est pas encore fixée.