:: Enseignements :: Licence :: L3 :: 2008-2009 :: Programmation système en C ::
![[LOGO]](http://igm.univ-mlv.fr/ens/resources/mlv.png) | 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.
- Il est interdit d'utiliser du code externe: vous devrez tout coder vous-mêmes.
- Tout code commun à plusieurs projets vaudra zéro pour tous les projets concernés.
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.
© Université de Marne-la-Vallée