________________________________________________________________ ____ __ __
/ ___________________________________________________________ ____ __ _ / `
\ / \[O4]/ + ,\_____ ___/ . `
|\/ , \__/ . \____ /:/=[ Un affaire d'ergonomie web ] =\:\ _____/ ` x
|| , . " :X \_______________________________ ____ ____ / , ` `
|| + , () . x , . ` ' ` \_ \ ,\\_ +\_ \ 'M ` | .
|| ` | ` , ` , + , ` ,--, + . \\_ \_ \ , \\_ K -+-
/ |+ -+- . , ` , ,',/ ,'. \_ \ . \\_ \_ \ - | `
/ . | ; + + . ` | : . :`` ,_): ' ` \\_ \_ \ \\_` 1 ,
/ ` . . x , .-=+=- `. ,. ,' ` , \_ \ + \\_` \_ \ 1
/\_____ x ' , . . X | ` `--' ` ` \\_ \_ \ , \\_ 1 +
\\_ \___________________ , . . ` , + ' , , ; x ._\ \___\\___\ \ .
\_ \ \__________________________________/ \ ` ,
\\_ /:/=[ Aka: ]=\:\ \
\__\__________________________________________ ______________________________ \`
\__\ /__/
\\_ /:/=[ h3 ]=\:\ _//
\__\________________________/__/
Bon.. j'croyais avoir inventé un nouveau terme.. mais malheureusement google m'a
ramené à la réalité en 0.18 seconde. (plus 20 secondes pour afficher
la page en 56k :|)
Results 1 - 10 of about 194 for "software ergonomy". (0.18 seconds)
Encore une fois, mon idée est morte dans l'oeuf.. Mais bon, j'me console en me disant
qu'elle n'était pas si bête s'il y a des cours sur l'ergonomie au niveau software.
Je vois déjà les e-mails de programmeurs chevronnés me disant;"C'est rien de nouveau,
c'était le 2ieme chapitre de mon livre de premiere session quand j'étudiais en génie
logiciel.. Bon.. Peut-être. Mais je n'ai pas étudié en programmation, à vrai dire, je n'ai
même pas étudié en informatique.
Et c'est vrai, le sujet a surement été mieux traité dans les livres. Je croyais que
mon idée ne valait plus la peine d'écrire un article, mais en repensant à la façon dont
l'idée m'est venue, j'ai réalisé qu'il en valait peut-être l'effort.
La première question qui m'est venue à l'esprit, c'est pourquoi après 3 ans de
programmation php (plus comme passe-temps que comme travail). Je n'avais jamais entendu
parler d'ergonomie software.. Pourtant, je lis régulièrement sur des sujets assez avancés...
En gros, je trouvais que
l'interaction entre les utilisateurs et les sites webs est souvent "mal foutue". Ca l'est
pour les sites web, mais c'est encore plus flagrant losrqu'on utilise des "applications web".
Avec le temps, j'ai remarqué qu'une application a beau donner le résultat attendu, si
l'interaction entre l'utilisateur et le programme est trop complexe ou trop "mal foutue",
l'utilisateur en question cessera de tout simplement de l'utiliser..
Évidemment, la question est: "Pourquoi l'interaction sur le web est si pénible?"
Surtout dans le contexte d'application web dynamique. La réponse est assez simple, mais elle
met en contexte plusieurs facteurs. Les plus importants sont les suivants:
- Le protocol HTTP
- Le manque cruel de standards stables, éprouvés et surtout
respectés au niveau des languages interpretés
(de moins en moins vrai avec l'arrivée du xhtml strict)
La liste pourrait surement être plus longue, mais la plupart des problèmes inhérent à
l'ergonomie software sur le web découlent surtout du protocol HTTP. Pour la simple et bonne
raison qu'il n'a pas été conçu, pour gérer un flot d'informations dynamiques et
bidirectionnels. Même le nom le dit, Hyper Text Transfert Protocol.. L'idée de base était
de prendre un fichier texte, de le mettre sur un serveur, puis le serveur en question
retourne le contenu du fichier texte sous forme "plain text". Seul un language de
programmation à balises était supporter, le html, dérivé du SGML (Standard Generalized Markup
Language) lui même ayant été développé pour structurer des données.
En tenant compte du but original qui était de formatter et de rendre plus lisible les
donnés du web. Jusque là le but était plus ou moins atteint. La où les problèmes commencent.
Avec le temps et l'avancement des technologies, les objectifs ont déviés, malheureusement pas
toujours dans le bon sens. Beaucoup d'autres languages ont été ajoutés à la longue liste des
languages supportés par le web d'aujourd'hui (voir la tableau 2). Bref, le protocole HTTP
transfert maintenant plus de lignes de code que de Texte.
L'autre inconvéniant du protocol HTTP est sa structure qui est basée sur des
requêtes/réponses (qui comprennent les méthodes GET/POST), mais qui exige que le buffer soit
"flushé" puis retransféré complètement pour afficher le nouveau contenu. Sa brise
radicalement la fluidité dans l'utilisation d'un programme web. Les languages "client-side"
comme le javascript ont bien sur été implantés pour palier à ce manque. C'est bon pour les
opérations calculables du coté client, mais si une requête doit être faite au server et que
de l'information doit être reçue et traitée avant d'être renvoyée au client, vous risquez de
frapper un mur si vous ne voulez pas d'un "refresh". À moins d'utiliser des méthodes assez
complexes, comme une 2ieme connection entre le server et le client, mais persistante, qui
gère l'interaction entre le "programme web" et sont interface remote.. On appele ca du RPC*.
Ce n'est pas, à mon avis, la solution idéale, car elle comporte beaucoup de faiblesses et est
relativement complexe à utiliser, car elle fait appel à un programme client et un programme
serveur qui communique ensemble via un autre port TCP. Alors beaucoup de calculs et de
processing pour rien, en plus d'avoir à utiliser un port TCP autre que le 80, donc qui peut
être bloqué par un firewall. Malgré cette perspective plutôt sombre, une solution vient
peut-être éclairer nos pauvres âmes de patenteux.. Le " XMLHttpRequest".. En gros, il fait
exactement ce que le RPC tente de faire, mais en étant un standards accepté, il sera surement
beaucoup plus accessible et stable que le "pseudo RPC". Pour plus d'informations à propos du
XMLHttpRequest, visitez le site suivant:
http://www.xml.com/pub/a/2005/02/09/xml-http-request.html
Le non respect délibéré ou non des standards par les compagnies qui produisent les
fureteurs nous complique aussi incroyablement la tâche. Souvent des dizaines, voir des
centaines de lignes de codes doivent être ajoutées au site pour que le site sorte exactement
pareil dans tous les fureteurs. Sans compter que certaines compagnies malveillantes
(MICROSOFT< STRONG/>) ajoutent leurs propres standards propriétaires dans leur fureteurs.
Ou ils refusent catégoriquement de se plier à un standard pourtant accepté de tous pour des
raisons inconnues, mais surement futiles. Peut-être que c'est juste pour nous compliquer la
vie.. Si c'est le cas, ils ont réussi :| Un exemple frappant est l'élément CSS "fixed"
qu'Internet Explorer ne supporte pas.. Pourtant QUOI DE PLUS UTILE que de pouvoir dire: je
veux que cet élément la reste a cette position la, MEME si le user scroll .. Biensur il y a
des "workaround" ou des "tricks" pour contourner le problème, mais souvent ces solution
apportent autant de problèmes qu'il n'en règles, en plus de prendre 100x plus de bytes que le
mot F I X E D. Cases studies:
Méthode #1
http://tagsoup.com/-dev/null-/css/fixed/
L'effet est la.. tout fonctionne comme dans firefox et seulement avec des tricks CSS..
Félicitation champion. Mais le "hic", c'est qu'avec cette méthode vous perdez l'élément de
position "absolute" .. PRATIQUE .
Méthode #2
http://www.howtocreate.co.uk/fixedPosition.html
L'effet est surprenant et je n'ai pas trouvé d'inconvéniants majeurs si ce n'est que la
grosseur du code pour arriver à un résultat qu'un mot de 6 lettres arrive à faire dans un
browser comme Mozilla Firefox et qu'il fait appel à des fonctions obscures d'internet
explorer dont j'ignorais totalement l'existance..
... Avouez que ce n'est pas catholique :p J'avoue que