________________________________________________________________ ____ __ __ / ___________________________________________________________ ____ __ _ / ` \ / \[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