Université Montpellier II / Maîtrise Informatique / 1999-2000 / TER
Le projet à réaliser cette année, de fin Février à fin Avril, était en rapport avec la demande du CSA (Conseil Supérieur de l'Audiovisuel): iProxy2000. Il s'agissait de fournir à des internautes, un moyen de personnaliser les pages ouèbes qu'il visitent. Par exemple, quand un internaute trouve un article intéressant en rapport avec une autre page, il peut très bien insérer sur cette page un lien vers cet article, ou directement cet article. Il peut aussi illustrer un texte avec des images provenant de son ordinateur ou du web, ou y rajouter des commentaires. Nous avons travaillé en groupe de 4 personnes. Après plusieurs réflexions, nous avons arrêté le schema suivant pour le projet:
  • Une base de données pour stoquer les préférences des utilisateurs (Nicolas FOURNIL et Christophe VIGNES)
  • Un serveur proxy qui récupère les requêtes HTML, interroge la base de données, et modifie les pages en question si nécessaire (Gauthier HADERER et moi)
  • Un éditeur permettant d'insérer les enrichissements (Gauthier HADERER et moi)
Ce projet m'a permis d'apprendre le langage JAVA, d'utiliser des outils de conception (comme Borland JBUILDER) et de remarquer l'esthétisme et la facilité d'utilisation de la librairie graphique: SWING.
En ce qui concerne l'éditeur, nous pouvions insérer 4 types d'enrichissements:
  • Un lien (texte éventuellement enrichi en HTML + adresse (internet avec http:// ou ftp:// ou locale avec file: (bouton "parcourir"))
  • Une image (adresse internet ou locale, type d'alignement (bas, haut ou milieu), et facteur de zoom avec aperçu mis à jour en temps réel)
  • Du texte éventuellement enrichi en HTML
  • Un morceau extrait d'un autre document (à sélectionnner dans un aperçu)
La base de donnée ne stoquait pas les documents modifiés, mais uniquement les modifications à faire en fonction de l'adresse. Pour localiser l'endroit où il fallait insérer l'enrichissement, nous n'avons pas compté le nombre d'offsets (de caractères), mais avons utilisé les librairies JAVA qui permettent de parcourir un document HTML sous la forme d'un arbre. Ceci avait pour avantage de limiter la casse dans le cas où le document était en partie modifié (puisque le lieu d'insertion était référencé par bloc! l'enrichissement n'allait pas se retrouver au milieu d'un texte par exemple, le rendant incompréhensible). Par contre, bien évidemment, il n'y avait pas de miracle si la page ouèbe était entièrement modifiée. Cela rendait aussi la sélection imprécise pour l'insertion d'un morceau d'un autre document (la sélection englobait les clics de souris puisqu'on insérait un bloc (paragraphe) et non du texte. Bien entendu, comme tout éditeur qui se respecte, il était possible de modifier les propriétés des enrichissements, de les couper/copier/coller/effacer, et de les déplacer. Là aussi, bien que visuel, le déplacement à la souris n'était pas précis puisque l'insertion ne pouvait se faire qu'entre 2 blocs.

Après des heures de travail acharné et passionné, notre projet fonctionna correctement et obtint la meilleure note: 17/20.

Voici ici d'ailleurs un exemple simple:

Voici la page normale de www.linux.org, sans passer par le proxy.

Une fois quelques modifications effectuées par l'utilisateur à l'aide de l'éditeur, et enregistrées dans la base de donnée, voici la page que l'on obtient en passant par le proxy:

Comme vous pouvez le remarquer, une image a été rajoutée et agrandie (comme le montre la légère pixellisation) à droite du titre, et elle est également insérée dansa sa taille originale à droite de la publicité (qui a changé entre temps puisque qu'on a cliqué sur "actualiser"). Sous "Site Search" à droite a été inséré un texte enrichi HTML (gras + couleur) "Vive Linux" ainsi qu'un lien vers www.kernel.org (que vous ne voyez pas à cause de la photocopie monochrome).

Ce projet comportent néanmoins un défaut (qui est plus en rapport avec Java): on ne peut modifier une document comportant la balise <charset> car JAVA génère une exeption "change chaset exception". Il faut espérer que ce bug sera corrigé dans la version 1.3 de JAVA.
A part ça, pour des raisons de manque de temps, l'éditeur de texte enrichi en HTML insère les balises en fonction de la sélection, mais n'effectue aucune vérification.

J'ai trouvé que ce projet était vraiment très intéressant, puisque c'est la 1ère fois que j'ai pu développer correctement en groupe un travail d'envergure, puisqu'il s'insicrivait dans la cadre du développement de l'internet, et recouvrait de nombreux domaines (réseaux, base de données, proxy, interfaces utilisateur en JAVA, HTML...). J'ai vraiment envie de faire du développement mon métier.

Ce projet a été testé et fonctionne correctement sous JAVA 1.2.2 (mais pas sous JAVA 1.2 à cause de quelques bugs dans les librairies HTML). Il peut être librement distribué et modifié, à condition qu'aucune information concernant ses auteurs ne soit retirée.
code du projet (archive RAR)