dimanche, septembre 03, 2006

AJAX - Tag Clouds

Une fois n'est pas coutume, je vais profité du travail des autres ! Je cherchais en effet comment mettre en place un nuage de tags dans une application Lotus Notes. Avant de commencer le développement j'ai recherché ce qui existait et j'ai été étonné de trouver rapidement trois approches différentes d'implémenter cette fonctionnalité Web 2.0 avec Lotus Domino. C'est d'autant plus interressant que ces trois méthodes utilisent chacune une approche différente typique de l'évolution du développement des applications Domino pour le Web, formula avec Javascript, LotusScript et LotusScript avec DXL.

Qu'est-ce qu'un nuage de tags ?

Un nuage de tags est une représentation sous forme de liste de mots représentés de taille proportionnelle à leur importance. Cette importance est principalement lié au nombre d'occurences du mot.
On retrouve aujourd'hi ces nuages de tags un peu partout sur les applications dites 2.0 comme delicious, Flickr ou encore Technorati.

Ces nuages de tags sont aussi utilisés dans l'application Nébuloscope de Jean Veronis dont je ne peux que recommandé la lecture du blog Technologies du langage.


Cette forme de représentation permet de remplacer la visualisation catégorisée des vues et s'interface très facilement avec les options de restriction des vues intégrées.


Trois approches d'implémentation de la solution

Comme indiqué en introduction les trois méthodes présentées utilisent chacune une approche originale est montrant bien les approches différentes de développement des application Lotus Domino.

Approche Formula/Javascript
Ferdy Christant propose de générer un tableau Javascript à partir d'une vue présentée en HTML et d'un peu de formula. Le Javascript se charge après de représenter le nuage de tags sur le poste client.
Cette approche ressemble énormément à de nombreux exemples que j'ai présenté ici.

L'avantage d'une telle méthode est d'économiser la charge coté serveur. Seule une vue est appelée.

Malheureusement cette méthode a aussi ces inconvénients :
  • Le poste client doit supporter le Javascript. Même si quasimeent tous les navigateurs Web récents supporte le Javascript on peut le désactiver. De plus, même si le javascript peut s'exécuter coté client il faut tout de même faire attention au volume de données à traiter.
  • Même si celà peut paraitre secondaire, cette méthode retire l'attrait principal du nuage de tag pour le webmestre. En effet, l'un des effets secondaire du nuage de tag est l'indexation des pages web auprès des moteurs de recherche. Les liens d'un nuage pointent non seulement sur des ensembles de pages du site mais en plus porte un nom cohérent, le tag, vers ce lien. Hors dans le cas d'un traitement Javascript, les moteurs de recherche ne voient pas ce nuage.
  • Enfin, pour ceux qui voudraient encore développer des applications compatibles Web et Client Notes, il n'est pas possible d'utiliser cette méthode sur le client lourd.

Approche traditionnelle via LotusScript
Thomas Adrian utilise une méthode plus traditionnelle en utilisant un agent LotusScript. Le nuage de tags est calculé en temps réel par un agent LotusScript se basant sur un NotesViewNavigator et renvoie le résultat via des print. Le serveur est donc sollicité à chaque appel du nuage. Par contre, il génère une page Web qui pourra être proprement indexées auprès des moteurs de recherche. Bref les inconvénients de la première méthodes sont les avantages de celle-ci et inversement.

S'il fallait choisir une solution entre ces deux méthodes je privilégierai la première pour un Intranet avec un parc matériel et logiciel maitrisé, sans indexation auprès des moteurs de recherche et surtout où l'important est la vitesse de réponse du serveur. Par contre, la seconde approche est préférable pour une application à vocation publique.


Approche LotusScript/DXL
Christian Mueller propose une troisième approche pouvant répondre à tous les besoins exprimés en utilisant du LotusScript avec DXL. Le calcul du nuage de tag s'appuie exactement sur la même méthode que celle proposée via agent LotusScript par Thomas Adrian. La différence est qu'il n'envoie pas directement le résultat au navigateur Web mais créé un nouveau masque via DXL contenant ce nuage. La mise à jour de ce masque peut alors être recalculé uniquement lorsqu'un document est créé, modifié ou supprimé, bref lorsque le nuage est modifié.

Donc non seulement le serveur n'est pas sollicité lors de l'appel de cette page, le nuage est présentée sous forme HTML pour les moteurs de recherche mais en plus il est facilement présentable pour les utilisateurs de clients Lotus Notes.

Serait-ce la solution idéale ? Par rapport aux contraintes exposées précédemment, c'est sans conteste la meilleure solution. Reste le problème d'intégration et de maintenance de l'application. Le nombre de développeurs Lotus Notes utilisant et surtout maitrisant DXL est encore rare (du moins je n'en fait pas encore partie même si je prends des cours réguliers sur le blog de Yogi).

7 Commentaires:

Anonymous YoGi dit...

Intéressant, je n'avais vu que le billet de Ferdy Christant sur le sujet.
La dernière approche me parait la meilleure, au bémol près qu'elle ne pourra pas s'appliquer dans une application dont les documents comportent des droits d'accès.

lundi, septembre 04, 2006 7:56:00 AM  
Blogger domlike dit...

Même en réfléchissant trés fort (si si c'est possible), je n'arrive pas à voir l'interet du nuage de tag...

Sinon côté technique j'ai pas tout compris moi :
l'exemple que tu donnes en dxl crée un document avec un seul RTF contenant les tags. Une sorte de document "satellite" du document principal. Lorsque tu affiches sous web le document principal, comment tu fais pour le faire apparaitre le doc de tags spécifique sur ta page ?

mardi, septembre 05, 2006 7:34:00 AM  
Blogger Philippe GAUVIN dit...

De l'intérêt d'un nuage de tag
Celà mériterait presque un article mais celà sortirai du cadre de ce blog. Je vais tenter de résumer :
1. Celà ravi mes utilisateurs (c'est normalement l'argument choc)
2. Le nuage de tags a pour principal intérêt de visuellement représenter le poids d'un mot-clé dans une base.
3. Le nuage de tags me permet principalement de liste de sélection pour afficher une vue n'affichant qu'une catégorie (celle sélectionnée depuis le nuage).

Ce type de représentation n'a aucun intéret pour une vue catégorisée type sommaire. Par contre celà me parait beaucoup plus interressant pour des vues catégorisées sur une liste de mots clés. Si je prends l'exemple d'une vue catégorisée par pays, l'utilisateur pourra directement voir quel pays a le plus de "poids" dans la base.

Celà me semble encore plus interressant lorsque l'on gère les nuages de tags sur plusieurs niveaux pour voir l'indice d'interaction entre plusieurs mots-clés. On peut par exemple imaginer une base Web de gestion de demandes d'achats catégorisées par site puis par catégorie d'articles. Le responsable achat arrivant sur la base va d'un coup d'oeil voir quel site génère le plus de demandes d'achats, puis en cliquant sur un site, le nuage représentera les catégories d'articles pour ce site. Il pourra ainsi voir quelle catégorie d'articles est la plus demandée pour le site sélectionné.

Bref, dans ce cas, le nuage de tags est une forme de camembert hypertexte, simple à implémenter et simple à appréhender par l'utilisateur.

mardi, septembre 05, 2006 10:45:00 AM  
Blogger Philippe GAUVIN dit...

Intégration de la solution DXL
En entête de son document il spécifie l'UniqueID de son nouveau document
<noteinfo noteid='95a' unid='C8876C7D20ADABDAC12571CD006E9003' sequence='1'>
Il suffit donc d'ouvrir le nuage directement depuis son ID.
Sous Notes celà donne : notes:///C8876C7D20ADABDAC12571CD006E9003
Et sur le web
http://server/path/base.nsf/0/C8876C7D20ADABDAC12571CD006E9003

Pour afficher ce nuage dans un document existant on doit pouvoir passer par une iframe appelant cette URL par exemple.

mardi, septembre 05, 2006 10:52:00 AM  
Blogger domlike dit...

comme dirait Yogi :
l'iframe c'est le mal et en plus ça ne règle pas le problème de l'indexation de ton site a moins d'utiliser un robot.txt...

Je reste encore septique sur la mode des nuages de tags mais je comprends mieux leurs interets dans certains cas. Bien la comparaison avec un camembert hypertexte ;-)

Je te remercie en tout cas de ces éclaircissements !

mardi, septembre 05, 2006 11:29:00 AM  
Blogger Philippe GAUVIN dit...

Yogi, je me suis permis de reprendre ton argument, qui me semble très judicieux, dans la version anglaise de cet article en citant sa source bien évidemment.

mardi, septembre 05, 2006 2:23:00 PM  
Anonymous YoGi dit...

Aucun problème, bien entendu.
D'ailleurs, en parlant de ça, je me suis permi d'apporter quelques modifs à ton agent de proxy java : http://darkmag.net/darkBlog/index.php?2006/09/05/220-cross-domain-ajax-avec-domino-reloaded
j'espère que ça ne te pose pas de problème ;)

mardi, septembre 05, 2006 11:13:00 PM  

Enregistrer un commentaire

Lien vers ce message:

Créer un lien

<< Home

Rechercher sur ce blog
Effacer résultat