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)