Le but de ce projet est de réaliser une application web utilisant au maximum les principes vus tout au long du semestre. L'idée est de faire une sorte de framework web ciblé sur une application type. Ce qui sera évalué est la propreté, l'extensibilité, la sécurité et l'utilisabilité de l'application et non pas malheureusement le coté artistique du site web.
Avant de commencer, il vous faut vous répartir en groupes de 3 personnes environ, sachant que le travail sera evalué sur une base de groupes de 3 et qu'on sera (beaucoup) plus exigeants pour des groupes plus nombreux.
Le sujet est plus ou moins laissé libre tant que la contrainte d'utiliser le maximum de choses que vous avez vues est respectée. Voici une liste en vrac de propositions:
Avant de commencer le développement pur et dur, il va vous falloir choisir dans quel langage le faire. Nous n'imposons pas de langage, mais PHP ou Python semblent les plus appropriés. De plus ce sujet sera clairement écrit dans l'esprit de vous forcer là main pour utiliser Python. Vous verrez pourquoi par la suite.
Si PHP vous convient mieux vous pourrez toujours mélanger les deux si vous vous en sentez le courrage, mais celà va probablement poser quelques problèmes techniques.
Le but de ce projet sera de ne pas réinventer la roue et d'utiliser au maximum vos connaissances des logiciels existants (ainsi que ceux que vous ne connaissez pas mais connaitrez bien vite). Dans ce but, nous allons vous présenter rapidement quelques outils que vous pourrez utiliser avec Python.
Vous êtes en groupe, vous avez une idée sur quel sujet prendre, vous n'êtes pas sûr de quel langage choisir, alors allons-y
Pour votre projet, vous aurez besoin d'y mettre du contenu. Que ça soit clair: nous ne voulons pas de contenu statique! Ainsi, il devra être géré par une base de données.
Vous avez déjà eu un avant goût avec PostgreSQL, mais vous pouvez aussi utiliser MySQL, SQLite ou encore d'autres si le coeur vous en dit.
Vous devrez donc stocker ce contenu dans une de ces bases et pour ça vous avez besoin de réfléchir à un modèle, quelle table créer ce qu'il faut y mettre dedans, etc. Celà va beaucoup dépendre de ce que vous voulez faire et c'est à vous d'y réfléchir.
Ça vous savez faire: cookies, sessions, mots de passe et logins dans une base de données. Nous, on a oublié!
Dans les grandes lignes, il faudrait que ça ressemble à ça:
Vous pouvez faire mieux avec par exemple un système de gestions des droits à la UNIX: chaque entrée dans la base aura un propriétaire, les tables peuvent être vues comme des répertoires, etc. C'est à vous de voir !
Après tout ceci fait, vous devrez faire une interface d'enregistrement où on peut s'incrire sur votre site pour pouvoir passer du grade d'utilisateur non authentifié à celui d'utilisateur authentifié!
Il vous faudra aussi une interface d'administration où seul le grand chef a accès. D'ici il pourra voir le contenu de toutes les tables, les modifier directement.
Cette interface servira à promouvoir certains utilisateurs authentifiés au grade de petit chef, à virer les comptes de spammeurs, à nettoyer le spam, etc.
Pour l'instant le seul moyen de rajouter du contenu à votre site est de modifier directement la base de données, c'est pas terrible. Vous devez donc écrire une interface dans laquelle les petits chefs auront le droit de rajouter des objets à la base.
Les utilisateurs enregistrés peuvent avoir le droit de donner leur avis sur les produits que vous leur proposez, il leur faut donc pouvoir le laisser mais pas modifier celui des autres. Ils n'auront le droit ici que de rajouter des informations qui seront ensuite traitées.
On verra après, on peut en discuter lors des scéances de TP
Soyez imaginatifs, proposez des idées, etc. Par exemple, l'interface d'ajout restreinte peut être vue comme une messagerie entre les différents joueurs si vous choisissez de faire un jeu.
Voici une liste non exhaustive de quelques outils que vous pouvez (et qu'il est même vivement conseillé) utiliser.
Rien de plus simple:
/home/ballier/bin/ffmpeg -s 1280x1024 -r 10 -f x11grab -i :0.0 -pix_fmt rgb555 -vcodec qtrle toto.mov
Et voilà, ça enregistre ce qu'il se passe à l'écran !