<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>
<channel>
	<title>La Case de l&#039;Oncle Tom &#187; xhtml</title>
	<atom:link href="http://case.oncle-tom.net/tag/xhtml/feed/" rel="self" type="application/rss+xml" />
	<link>http://case.oncle-tom.net</link>
	<description>Développement Web, bonnes pratiques et performances</description>
	<lastBuildDate>Sun, 25 Dec 2011 19:33:29 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<atom:link rel="search"
           href="http://case.oncle-tom.net/opensearch"
           type="application/opensearchdescription+xml"
           title="Content Search" />		<item>
		<title>Développement efficace avec les frameworks CSS</title>
		<link>http://case.oncle-tom.net/2008/developpement-efficace-frameworks-css/</link>
		<comments>http://case.oncle-tom.net/2008/developpement-efficace-frameworks-css/#comments</comments>
		<pubDate>Tue, 25 Nov 2008 06:00:08 +0000</pubDate>
		<dc:creator>Oncle Tom</dc:creator>
				<category><![CDATA[Développement Web]]></category>
		<category><![CDATA[blueprint]]></category>
		<category><![CDATA[bonnes pratiques]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[logiciels libres]]></category>
		<category><![CDATA[parisweb]]></category>
		<category><![CDATA[rythme vertical]]></category>
		<category><![CDATA[xhtml]]></category>
		<guid isPermaLink="false">http://case.oncle-tom.net/?p=1211</guid>
		<description><![CDATA[J&#8217;ai eu peur il y a 2 semaines en arrivant à Paris-Web 2008 : en discutant avec plusieurs personnes, il se trouve que peu d&#8217;entre elles connaissaient les frameworks CSS. Je craignais de n&#8217;attirer personne avec ce sujet lors des ateliers du samedi. Les frameworks CSS ont été mentionnés la première fois dans la conférence [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-1214" title="Logo Blueprint" src="http://case.oncle-tom.net/images/2008/11/blueprint-logo.png" alt="" width="340" height="82" /></p>
<p>J&#8217;ai eu peur il y a 2 semaines en arrivant à <a href="http://case.oncle-tom.net/2008/11/20/paris-web-2008-webdesign-qualite-standards/">Paris-Web 2008</a> : en discutant avec plusieurs personnes, il se trouve que peu d&#8217;entre elles connaissaient les <em>frameworks</em> <acronym title="Cascading Style Sheets">CSS</acronym>. Je craignais de n&#8217;attirer personne avec ce sujet lors des <a href="http://www.paris-web.fr/2008/-samedi-15-novembre-technique-">ateliers du samedi</a>.</p>
<p>Les <em>frameworks</em> <acronym title="Cascading Style Sheets">CSS</acronym> ont été mentionnés la première fois dans la conférence <a href="http://www.wait-till-i.com/2008/10/31/working-in-the-now/">Working in the Now</a> (<a title="Visualiser la présentation Working in the Now de Christian Heilmann" href="http://www.slideshare.net/cheilmann/working-in-the-now-presentation">visualiser la présentation</a>). Au final, on n&#8217;était pas loin de faire salle comble avec plus d&#8217;une vingtaine de participants à vue de nez.</p>
<p>Une petite scéance de rattrapage s&#8217;impose <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p><span id="more-1211"></span></p>
<h3>Pourquoi avoir choisi ce sujet ?</h3>
<p>J&#8217;ai lu un article sur <a href="http://www.biologeek.com/ergonomie,informatique/l-importance-du-rythme-vertical-en-design-css/">l&#8217;importance du rythme vertical</a> l&#8217;an dernier sur <a href="http://www.biologeek.com">Biologeek</a> et ça m&#8217;a sensibilisé au fait qu&#8217;on pouvait rendre la lecture d&#8217;un site tout simplement en rendant prédictible la position du texte.</p>
<p>Entre temps j&#8217;ai également lu l&#8217;excellent <a href="http://case.oncle-tom.net/2007/12/11/critique-transcender-css-sublimez-design-web/">Transcender <acronym title="Cascading Style Sheets">CSS</acronym></a> d&#8217;<a href="http://www.stuffandnonsense.co.uk">Andy Clarke</a>. J&#8217;y ai été sublimé par des présentations de sites totalement en grille.</p>
<p>Depuis je suis devenu fan de <a href="http://www.blueprintcss.org/">Blueprint <acronym title="Cascading Style Sheets">CSS</acronym></a> (je crois que ça s&#8217;est remarqué lors de mon intervention <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> ). J&#8217;ai commencé à l&#8217;utiliser sur des projets personnels puis dans un cadre professionnel. J&#8217;utilisais déjà <a href="http://www.symfony-project.org">symfony</a> comme framework <acronym title="Pre-Hypertext Processing">PHP</acronym> et <a href="http://jquery.com">jQuery</a> comme framework JavaScript alors pourquoi pas Blueprint ?</p>
<p>Comme le suggérait très justement <a href="http://www.wait-till-i.com">Christian Heilmann</a> dans sa présentation, l&#8217;utilisation d&#8217;outils déjà existants est nécessaire pour réduire les coûts de production. C&#8217;était déjà un bon alibi mais je les apprécie aussi parce qu&#8217;on gagne un temps fou ! On se concentre sur le code métier, pas le reste.</p>
<h3>La présentation</h3>
<p>Je n&#8217;en dis pas plus, je vous laisse lire la présentation. Ayez toutefois en tête qu&#8217;en vrai elle dure facilement 1h.</p>
<div style="text-align:center"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=pariswebdeveloppementefficaceframeworkscss-1226764594180788-9&amp;stripped_title=dveloppement-efficace-avec-les-frameworks-css-presentation" /><embed type="application/x-shockwave-flash" width="425" height="355" src="http://static.slideshare.net/swf/ssplayer2.swf?doc=pariswebdeveloppementefficaceframeworkscss-1226764594180788-9&amp;stripped_title=dveloppement-efficace-avec-les-frameworks-css-presentation" allowscriptaccess="always" allowfullscreen="true"></embed></object></div>
<h3>Ce qu&#8217;il faut en retenir</h3>
<p>J&#8217;ai rencontré 2 types de réactions lorsque j&#8217;ai parlé des frameworks : les enthousiastes et les réfractaires.</p>
<p>Je ne reviens pas sur les enthousiastes : il suffit de lire ma présentation. Les atouts les ont clairement séduit.<br />
Je m&#8217;intéresserai plutôt aux réfractaires. Assez paradoxalement, ce n&#8217;est pas dans la salle que je les ai eu mais en dehors. Les principaux arguments étaient :</p>
<ul>
<li>ça rajoute des kilo-octets superflus</li>
<li>on perd le contrôle de notre code</li>
<li>j&#8217;utilise déjà le mini-framework d&#8217;un collègue ou qui existait dans mon entreprise avant que j&#8217;arrive</li>
</ul>
<p>Ces arguments sont tout à fait acceptables &#8230; mais ça dépend dans quel contexte.</p>
<div id="attachment_1215" class="wp-caption aligncenter" style="width: 510px"><img class="size-full wp-image-1215" title="Exemple de mise en forme en grille" src="http://case.oncle-tom.net/images/2008/11/blueprint-sample.png" alt="Exemple de mise en forme en grille" width="500" height="226" /><p class="wp-caption-text">Exemple de mise en forme en grille</p></div>
<p>Les sites à la recherche de performances exceptionnelles, ceux pour qui un Ko supprimé économise plusieurs Go de bande-passante par jour &#8230; oui ceux-là ont un grand intérêt à réfléchir à l&#8217;adoption d&#8217;un <em>framework</em>, aussi compressé qu&#8217;il soit.<br />
Je ne me fais pas de soucis pour eux : en général ils ont leur propre <em>framework</em>, totalement adapté à leur besoin. Cependant ça n&#8217;empêche pas d&#8217;aller prendre des idées ailleurs et de découvrir de nouveaux concepts. Puis de les intégrer.</p>
<p>Lorsqu&#8217;on adopte un outil de développement rapide (RAD), la conception ne se fait plus par rapport à nos habitudes mais par rapport à des <strong>principes établis</strong>. On ne fait plus forcément comme on veut mais les meilleurs <em>frameworks</em> disposent de fonctionnalités répondant à cette problématique. Le <a href="http://www.jdclayton.com/blueprints_compress_a_walkthrough.html"><em>compressor</em></a> de Blueprint en est un parfait exemple.<br />
Il permet de construire une version de Blueprint adaptée à son besoin, inclut des feuilles de notre choix et compresse le tout en un seul fichier prêt à la mise en production.</p>
<p>Maintenant l&#8217;avantage d&#8217;un <em>framework</em> c&#8217;est qu&#8217;une <strong>communauté</strong> ou un groupe de personnes compétentes en ont la gestion. Ces mainteneurs produisent une documentation, des spécifications et un code suffisamment compréhensible à lire. Ce n&#8217;est pas forcément le cas de Joe le développeur à qui on aura demandé 36 choses en même temps.<br />
Je fais davantage confiance à un outil éprouvé avec succès sur des milliers de projets qu&#8217;un outil développé sur un coin de bureau, malgré toute la bonne volonté de son concepteur.<br />
C&#8217;est également un risque certes mais un bon outil délaissé aura tout de même le mérite de fonctionner &#8230; et d&#8217;avoir davantage de chances de trouver un repreneur.</p>
<p>Une remarque intéressante a également émergé de l&#8217;atelier : faut-il utiliser un <em>framework</em> <acronym title="Cascading Style Sheets">CSS</acronym> avant ou après que la créa graphique ait été établie ?<br />
Je réitère ma réponse : <strong>l&#8217;idéal est que tout soit pris en charge le plus tôt possible</strong>. Autrement dit, intégrer les contraintes du <em>framework</em> dès la conception graphique est un gros atout. Le découpage de la maquette n&#8217;en sera que facilité et ça évitera tout bricolage.<br />
Certains outils l&#8217;ont d&#8217;ailleurs bien compris en proposant des supports pour graphistes au format PSD, Visio, Fireworks etc.</p>
<div id="attachment_1213" class="wp-caption aligncenter" style="width: 310px"><a href="http://case.oncle-tom.net/images/2008/11/960-sketch-sheets.png"><img class="size-medium wp-image-1213" title="Feuilles de dessin pour 960 Grid System" src="http://case.oncle-tom.net/images/2008/11/960-sketch-sheets-300x232.png" alt="Feuilles de dessin pour 960 Grid System" width="300" height="232" /></a><p class="wp-caption-text">Feuilles de dessin pour 960 Grid System</p></div>
<h3>Conclusion</h3>
<p>Quoiqu&#8217;il en soit, les <em>frameworks</em> <acronym title="Cascading Style Sheets">CSS</acronym> sont à mon avis promis à un bel avenir dès lors que les critères d&#8217;industrialisation auront débarqué au sein des agences Web.</p>
<p>Aujourd&#8217;hui une petite agence a tout à gagner à maîtriser de tels outils et à annoncer qu&#8217;elle développera mieux, plus vite et moins cher. Le prix ne fait pas tout : ce sont les <strong>outils et la qualité du développement</strong>. Tous les <em>frameworks</em> cités sont également des logiciels libres.</p>
<p>J&#8217;espère que cet aperçu rapide aura ouvert les yeux à certains d&#8217;entre vous. Je suis preneur de vos retours, surtout en entreprise. Ça vaut également pour celles et ceux qui ne sont toujours pas convaincu de l&#8217;intérêt des <em>frameworks</em> <acronym title="Cascading Style Sheets">CSS</acronym> <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p><strong>Remarque</strong> : il y avait 2 ateliers complémentaires à Paris-Web :</p>
<ul>
<li><a href="http://css.mammouthland.net/parisweb/optimisation-css.php">Optimiser ses <acronym title="Cascading Style Sheets">CSS</acronym></a></li>
<li><a href="http://romy.tetue.net/spip.php?article555">Cascade et héritage : concevoir, organiser, optimiser et maintenir ses feuilles de style</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://case.oncle-tom.net/2008/developpement-efficace-frameworks-css/feed/</wfw:commentRss>
		<slash:comments>25</slash:comments>
		</item>
		<item>
		<title>X-UA-Compatible : danger ou opportunité ?</title>
		<link>http://case.oncle-tom.net/2008/x-ua-compatible-danger-ou-opportunite/</link>
		<comments>http://case.oncle-tom.net/2008/x-ua-compatible-danger-ou-opportunite/#comments</comments>
		<pubDate>Tue, 21 Oct 2008 05:00:42 +0000</pubDate>
		<dc:creator>Oncle Tom</dc:creator>
				<category><![CDATA[Standards du Web]]></category>
		<category><![CDATA[clever age]]></category>
		<category><![CDATA[internet explorer]]></category>
		<category><![CDATA[w3c]]></category>
		<category><![CDATA[x-ua-compatible]]></category>
		<category><![CDATA[xhtml]]></category>
		<guid isPermaLink="false">http://case.oncle-tom.net/?p=1174</guid>
		<description><![CDATA[Après 10 ans de règne d&#8217;Internet Explorer et un succès d&#8217;adoption en demi-teinte pour son successeur, Internet Explorer 7, Microsoft a fort à faire pour convaincre avec Internet Explorer 8. La firme de Redmond est confrontée à ce fâcheux dilemne : considérer ses clients existants réagir aux pressions exercées par la concurrence, Firefox en tête [...]]]></description>
			<content:encoded><![CDATA[
<p><img class="aligncenter size-full wp-image-1177" title="Logo Internet Explorer 8" src="http://case.oncle-tom.net/images/2008/10/logo-ie8.gif" alt="" width="166" height="58" /></p>
<p>Après 10 ans de règne d&#8217;Internet Explorer et un succès d&#8217;adoption en demi-teinte pour son successeur, Internet Explorer 7, Microsoft a fort à faire pour convaincre avec Internet Explorer 8.<br />
La firme de Redmond est confrontée à ce fâcheux dilemne :</p>
<ul>
<li> considérer ses clients existants</li>
<li> réagir aux pressions exercées par la concurrence, Firefox en tête</li>
</ul>
<p>On peut à ce titre saluer le choix de Microsoft d&#8217;enfin embrasser les standards du Web. La huitième version de son navigateur Web adoptera ainsi par défaut une interprétation respectant ces standards (<acronym title="HyperText Markup Language">HTML</acronym>, <acronym title="eXtensible HyperText Markup Language">XHTML</acronym>, <acronym title="Cascading Style Sheets">CSS</acronym> 2, partiellement <acronym title="Cascading Style Sheets">CSS</acronym> 3).<br />
Ce choix a notamment été facilité par la proposition d&#8217;une nouvelle balise propriétaire : <strong>X-UA-Compatible</strong>.</p>
<p>Solution de facilité ou excellent compromis ?</p>
<p><span id="more-1174"></span></p>
<h3>Internet Explorer 6 : retour de boomerang</h3>
<p>Si les développeurs de sites Web « pour Internet Explorer 6 » ont pu se réjouir d&#8217;un certain laxisme d&#8217;interprétation des standards du Web, ils vont payer dès demain le prix d&#8217;une catastrophe annoncée.<br />
Des milliers (des millions ?) de sites Web et des milliers d&#8217;applications spécifiques reposent ou ont été conçues uniquement pour Internet Explorer 6. Ce navigateur n&#8217;est désormais plus supporté par Microsoft et ce dernier pousse les utilisateurs à adopter au moins Internet Explorer 7. Il faudra cependant disposer de Windows XP et son Service Pack 2 pour en &laquo;&nbsp;profiter&nbsp;&raquo;.</p>
<p>Mais alors, que faire de ses sites et applications vouées à une double obsolescence : la leur et celle de leur navigateur compatible ?</p>
<h3>La solution X-UA-Compatible</h3>
<p>En adoptant par défaut le support des standards avec Internet Explorer 8, Microsoft ne pouvait pas fermer la porte à sa base de clients et d&#8217;utilisateurs.<br />
Au lieu de les flouer et de les ignorer, une nouvelle balise <acronym title="HyperText Markup Language">HTML</acronym> propriétaire pourra être incluse dans l&#8217;entête de toutes les pages <acronym title="HyperText Markup Language">HTML</acronym> : <strong>X-UA-Compatible</strong>.<br />
Cette entête pourra également être renvoyée par le biais d&#8217;une entête <acronym title="HyperText Transfer Protocol">HTTP</acronym> par votre serveur Web favori.<br />
Par &laquo;&nbsp;propriétaire&nbsp;&raquo;, j&#8217;entends que seul Internet Explorer 8 (et peut-être ses successeurs) sera en mesure d&#8217;interpréter la valeur de cette balise. Elle est fort heureusement respectueuse du standard <acronym title="HyperText Markup Language">HTML</acronym> et n&#8217;empêchera donc pas vos pages Web de passer au validateur sans provoquer d&#8217;erreur.</p>
<p>Cette balise a pour effet d&#8217;indiquer à Internet Explorer quel moteur de rendu utiliser. Autrement dit c&#8217;est le site/application Web qui influe sur le comportement schizophrénique du navigateur et en aucun cas l&#8217;utilisateur final.<br />
Si Internet Explorer 8 ne rencontre pas cette balise, il utilisera son moteur de rendu respectueux des standards. Autrement, il basculera dans le mode d&#8217;interprétation correspondant à la version spécifiée, à savoir Internet Explorer 6 ou Internet Explorer 7.</p>
<p>Il faut toutefois avoir en tête que cette bascule n&#8217;affecte pas que l&#8217;interprétation d&#8217;<acronym title="HyperText Markup Language">HTML</acronym> mais aussi celles des <acronym title="Cascading Style Sheets">CSS</acronym> et de JavaScript.<br />
Autrement dit, si vous décidiez un jour d&#8217;enlever la balise <em>X-UA-Compatible</em>, il y a de très fortes chances que vous souscriviez à une grosse couche de recettage fonctionnel, tant du côté <acronym title="Cascading Style Sheets">CSS</acronym> que JavaScript.</p>
<div id="attachment_1176" class="wp-caption aligncenter" style="width: 441px"><img class="size-full wp-image-1176" title="Bouton d'émulation Internet Explorer 7" src="http://case.oncle-tom.net/images/2008/10/emulateie7.png" alt="Bouton d'émulation Internet Explorer 7 ... équivoque ?" width="431" height="122" /><p class="wp-caption-text">Bouton d&#39;émulation Internet Explorer 7 ... équivoque ?</p></div>
<h3>Les options de compatibilité, le casse-tête</h3>
<p>Microsoft propose 3 modes de rendu :</p>
<ol>
<li> <em><acronym title="Internet Explorer">IE</acronym>=7</em> pour forcer tout type de rendu en <em>respect des standards</em> à la sauce IE7 (respect approximatif donc) ;</li>
<li> <em><acronym title="Internet Explorer">IE</acronym>=EmulateIE7</em> pour respecter les standards sauf quand la page est moisie (le fameux <em>mode Quirks</em>). Autrement dit, un Internet Explorer 8 déguisé en IE7 ;</li>
<li> <em><acronym title="Internet Explorer">IE</acronym>=EmulateIE8</em> pour respecter les standards (mais vraiment) sauf quand la page est moisie. Autrement dit un Internet Explorer 8 avec quelques laxismes.</li>
</ol>
<p>Si on compte avec ça la possibilité pour l&#8217;utilisateur de basculer de lui-même vers un mode de rendu &laquo;&nbsp;dégradé&nbsp;&raquo;, difficile de choisir la moindre balise à appliquer.<br />
Le navigateur sera cependant strictement compatible par défaut (pas besoin d&#8217;ajouter la moindre entête ou balise pour cela).</p>
<h3>Quelle stratégie adopter pour ses sites Web ?</h3>
<p>Si la présence de cette balise est en soi une bonne nouvelle, il convient de se poser les <em>bonnes questions</em> : X-UA-Compatible ne doit pas permettre à l&#8217;errance Internet Explorer de se reproduire à nouveau. La facilité ne doit pas être le seul facteur à envisager.<br />
Voici quelques intérêts à utiliser X-UA-Compatible :</p>
<ul>
<li> manque de compétences internes sur <acronym title="HyperText Markup Language">HTML</acronym>/<acronym title="eXtensible HyperText Markup Language">XHTML</acronym> et <acronym title="Cascading Style Sheets">CSS</acronym></li>
<li> besoin rapide d&#8217;adapter l&#8217;existant au nouveau logiciel</li>
<li> parc d&#8217;applications non-maîtrisé ou doté d&#8217;une politique de mise à niveau stricte</li>
<li> pas de budget pour redévelopper le site/application Web</li>
<li> la refonte du site/application aboutira plus tard que le déploiement d&#8217;Internet Explorer 8</li>
</ul>
<p>Vous remarquerez que je n&#8217;aborde en aucun cas la question des nouveaux sites et applications et/ou leur refonte. Ceci pour la simple et bonne raison suivante : X-UA-Compatible est un palliatif à court-terme pour conserver un maximum d&#8217;applications fonctionnelles en attendant leur adoption des standards.</p>
<p>Il y a de très fortes chances que cette balise ne soit plus prise en compte dans la version 9 du navigateur ; tout du moins, je l&#8217;espère fortement.<br />
En clair et pour résumer en 2 lignes :</p>
<ol>
<li> X-UA-Compatible n&#8217;est à utiliser que sur des sites existants, peu conformes aux standards et nécessitant une compatibilité maximale très rapide avec Internet Explorer 8</li>
<li> les refontes doivent impérativement se concentrer sur les standards et agir comme si X-UA-Compatible n&#8217;existait pas</li>
</ol>
<h3>Conclusion : l&#8217;avenir passe par les standards</h3>
<p>Si ce résumé éveille des craintes au plus profond de vous-même, sachez qu&#8217;il n&#8217;est pas trop tard. Comme tout choix logiciel ou matériel, il faut anticiper à moyen et long terme en évitant de s&#8217;enfermer dans une solution totalement fermée.</p>
<p>Les 99% des parts de marché d&#8217;Internet Explorer d&#8217;antan sont la preuve même qu&#8217;on ne peut se reposer sur un taux d&#8217;adoption mais bel et bien sur une base qualitative saine : le Web de demain sera sur vos ordinateurs, vos <acronym title="Personal Digital Assistant">PDA</acronym>, vos téléphones mobiles, vos téléviseurs, vos frigos, vos montres, vos consoles de jeux et même vos murs et tables basses. Dans tous les cas, la garantie que vos sites et applications fonctionnent c&#8217;est le respect des standarts ; les standards du Web, pas ceux définis par Internet Explorer 6.</p>
<p><strong>X-UA-Compatible est une solution à court terme</strong>, en aucun cas une fin en soi ou une garantie de pérennité.</p>]]></content:encoded>
			<wfw:commentRss>http://case.oncle-tom.net/2008/x-ua-compatible-danger-ou-opportunite/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Widget Jaiku pour Netvibes : présentation et bilan du développement</title>
		<link>http://case.oncle-tom.net/2008/widget-jaiku-netvibes-presentation-bilan-developpement/</link>
		<comments>http://case.oncle-tom.net/2008/widget-jaiku-netvibes-presentation-bilan-developpement/#comments</comments>
		<pubDate>Wed, 20 Aug 2008 05:00:37 +0000</pubDate>
		<dc:creator>Oncle Tom</dc:creator>
				<category><![CDATA[Développement Web]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[dashboard]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[jaiku]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[macosx]]></category>
		<category><![CDATA[micro-blogs]]></category>
		<category><![CDATA[netvibes]]></category>
		<category><![CDATA[proxy]]></category>
		<category><![CDATA[widget]]></category>
		<category><![CDATA[xhtml]]></category>
		<guid isPermaLink="false">http://case.oncle-tom.net/?p=1070</guid>
		<description><![CDATA[J&#8217;ai publié il y a quelques semaines un widget Jaiku dans l&#8217;écosystème Netvibes. Autrement dit, on peut désormais interagir avec le sous-employé Jaiku depuis son compte Netvibes en levant à peine le petit doigt. La réalisation de ce widget était pour moi l&#8217;occasion de réaliser mon premier widget utilisant la plateforme UWA : un développement [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://case.oncle-tom.net/images/2008/06/logo-jaiku.png"><img class="aligncenter size-full wp-image-938" title="Logo Jaiku" src="http://case.oncle-tom.net/images/2008/06/logo-jaiku.png" alt="" width="89" height="73" /></a></p>
<p>J&#8217;ai publié il y a quelques semaines un <a title="widget Jaiku pour Netvibes" href="http://eco.netvibes.com/widgets/241591/jaiku">widget Jaiku</a> dans l&#8217;<a href="http://eco.netvibes.com">écosystème Netvibes</a>. Autrement dit, on peut désormais interagir avec le sous-employé Jaiku depuis son compte Netvibes en levant à peine le petit doigt.</p>
<p>La réalisation de ce widget était pour moi l&#8217;occasion de réaliser mon premier widget utilisant la plateforme <acronym title="Universal Widget API">UWA</acronym> : un développement rendu compatible pour plusieurs plateformes dont <a href="http://igoogle.com">iGoogle</a>, <a href="http://www.apple.com/downloads/dashboard/">MacOS X Dashboard</a>, <a href="http://live.com">Windows Live</a> etc.</p>
<p><span id="more-1070"></span></p>
<h3>Présentation du widget Jaiku pour Netvibes</h3>
<p>Avant de rentrer dans les détails techniques, faisons ensemble un petit tour de ce qu&#8217;est capable de faire le widget Jaiku. Rien de bien méchant puisqu&#8217;il fait ce qu&#8217;on veut : lire et envoyer les messages. Faut savoir rester simple <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<div id="attachment_1082" class="wp-caption aligncenter" style="width: 290px"><img class="size-full wp-image-1082" title="Jaiku pour Netvibes" src="http://case.oncle-tom.net/images/2008/08/jaiku-netvibes.png" alt="Jaiku pour Netvibes" width="280" height="450" /><p class="wp-caption-text">Widget Jaiku pour Netvibes</p></div>
<p>Je ne me cacherai pas que je me suis largement inspiré du widget Twitter pour Netvibes au niveau de la présentation tout en ajoutant ma touche personnelle.</p>
<p>L&#8217;écran de connexion accueille directement avec des champs identifiant et mot de passe pour faciliter son utilisation. Pas besoin d&#8217;aller fouiller dans les options. Un petit confort on dira.</p>
<p>L&#8217;entête contient ce qu&#8217;il faut pour envoyer des messages : votre lieu de présence et le champ de saisie. Le compteur de texte se met à jour à chaque caractère saisi et surtout, votre saisie n&#8217;est pas bloquée une fois que vous atteignez la limite. Il n&#8217;y a rien de plus pénible que ça.</p>
<p><strong>Le gros du morceau réside dans les onglets</strong> : pour une fois vous pouvez facilement naviguer d&#8217;une ligne de temps à une autre. Choisissez les messages de vos contacts, les vôtres (un peu narcissique non ?) ou encore les messages publics.<br />
Les 3 onglets sont paginés à la convenance de l&#8217;utilisateur, de 1 à 20 messages par page.</p>
<p>J&#8217;ai ensuite agrémenté de plusieurs fonctionnalités que j&#8217;apprécie à l&#8217;usage (à vous de me dire si c&#8217;est aussi le cas) :</p>
<ul>
<li><strong>possibilité de répondre à un message</strong> en pré-remplissant le champ de saisie avec ce qu&#8217;il faut (et ce que l&#8217;<acronym title="Application Programming Interface">API</acronym> Jaiku permet de faire &#8230;)</li>
<li>icône signalant l&#8217;<strong>origine des messages</strong> affichés (flux <acronym title="Really Simple Syndication">RSS</acronym>, Twitter, Last.fm etc.)</li>
<li><strong>filtrage de ses propres messages</strong> : vos messages n&#8217;apparaîtront pas dans la ligne de temps des contacts (ce qui en soit n&#8217;est pas plus mal)</li>
<li><strong>formattage des messages</strong> avec une meilleure reconnaissance de <acronym title="Uniform Resource Locator">URL</acronym> que le widget Twitter et surtout, une reconnaissance des noms d&#8217;utilisateurs (@utilisateur) et des noms de canaux (#canal) &#8230; vous permettant de leur répondre en cliquant sur leur nom</li>
</ul>
<p>Il resterait encore pas mal de choses à faire mais on arrive malheureusement assez rapidement aux limites des 2 services.</p>
<h3>L&#8217;<acronym title="Application Programming Interface">API</acronym> Jaiku</h3>
<p>L&#8217;<a href="http://devku.org/docs"><acronym title="Application Programming Interface">API</acronym> Jaiku</a> est très bien mais un peu <strong>chiche en services</strong>.</p>
<p>Le nombre de flux en récupération est suffisant : contacts, messages, informations personnelles.<br />
En revanche les méthodes d&#8217;envoi sont limitées et pour cause, il n&#8217;y en a qu&#8217;une : envoyer un message.</p>
<p>Il ne manque pas grand chose pour qu&#8217;on puisse tout faire :</p>
<ul>
<li>obtention de la liste des icônes personnalisées</li>
<li>préciser à quel message on adresse une réponse (pour éviter de casser les discussions)</li>
<li>une gestion de <em>messages privés</em> (et les flux qui vont bien)</li>
<li>une <acronym title="Application Programming Interface">API</acronym> qui ne souffre pas d&#8217;autant de délai &#8230; parfois il faut attendre 3 heures avant d&#8217;avoir un flux actualisé. Pas pratique pour de la messagerie en temps quasi-réel</li>
</ul>
<p>Ces demandes ont été faites mais bon, il faudra attendre la <a href="http://www.jaiku.com/blog/2008/08/18/from-the-dev-corner-an-under-the-hood-preview-of-our-new-engine/">relance de Jaiku avec Google App Engine</a> &#8230; très bientôt visiblement.</p>
<h3>Et du côté de Netvibes ?</h3>
<p>Le développement du widget repose sur l&#8217;<acronym title="Application Programming Interface">API</acronym> <acronym title="Universal Widget API">UWA</acronym> de Netvibes et donc par conséquent, c&#8217;est du développement 99% JavaScript.</p>
<p>Heureusement tout n&#8217;est pas à faire puisqu&#8217;<acronym title="Universal Widget API">UWA</acronym> fournit une base d&#8217;outils et quelques fonctionnalités natives comme la pagination ou les onglets.</p>
<h3>Quels avantages à utiliser Netvibes <acronym title="Universal Widget API">UWA</acronym> ?</h3>
<p>La <a href="http://dev.netvibes.com/doc/universal_widget_api">spécification <acronym title="Universal Widget API">UWA</acronym></a> permet donc à partir d&#8217;un <strong>développement unique de le porter sur d&#8217;autres plateformes de blogs</strong> en un minimum d&#8217;efforts (très souvent aucun). Il faut savoir qu&#8217;à chaque plateforme de widget il y a une manière de développer différente.</p>
<p>Alors plutôt que de parier sur un cheval, avec <acronym title="Universal Widget API">UWA</acronym>, on peut parier sur tous. Et ne faire qu&#8217;un seul développement.</p>
<p>Le développement d&#8217;un widget aboutit très généralement à l&#8217;ajout dans l&#8217;<a href="http://eco.netvibes.com">écosystème Netvibes</a>. Le widget se retrouve ainsi à la portée de toutes les pages de démarrage par le biais de son moteur de recherche intégré.</p>
<p>Côté développement, tout reste globalement simple quand on veut faire du simple.</p>
<h3>Mais quelle galère à développer avec Netvibes <acronym title="Universal Widget API">UWA</acronym> &#8230;</h3>
<p>En revanche ça devient beaucoup moins drôle quand on tombe sur des besoins mal couverts par la documentation.<br />
Et quand je dis <em>mal couvert</em>, ça inclut :</p>
<ul>
<li>pas de documentation du tout</li>
<li>une documentation partielle et pas suffisamment verbeuse (genre pour les onglets et la pagination)</li>
<li>une documentation obsolète et pas recommandée de leur propre aveu (le stockage des mots de passe)</li>
</ul>
<p><strong>L&#8217;adoption d&#8217;un service et sa qualité se jugent à mon avis par sa documentation</strong>. Certes des efforts sont faits mais leur <acronym title="Application Programming Interface">API</acronym> deviendra crédible et fiable le jour où elle sera à jour et complète.</p>
<p>En plus de ça, certaines fonctionnalités sont elles aussi incomplètes.</p>
<p>Au hasard, le <strong>processus de <acronym title="localisation">l10n</acronym></strong> : à implémenter soi-même et encore, il ne pourra pas couvrir tous les besoins comme les préférences. C&#8217;est d&#8217;autant plus dommage que leur système est particulièrement au point pour l&#8217;interface traduite en une dizaine de langues.<br />
Mais pas les widgets &#8230;</p>
<p>Toute à l&#8217;heure j&#8217;évoquais les mots de passe. Il y a bien un mécanisme qui permet de les stocker mais il agit comme il veut : <strong>on ne peut stocker qu&#8217;un mot de passe par widget</strong> et surtout, on ne peut pas l&#8217;utiliser autrement que dans le cas d&#8217;une identification <acronym title="HyperText Transfer Protocol">HTTP</acronym>.<br />
Autrement dit, le stockage d&#8217;un clé d&#8217;<acronym title="Application Programming Interface">API</acronym> se fera dans un champ texte standard.</p>
<p>Ça ne serait pas gênant si la plupart des widgets étaient exécutés dans une iframe et que cette dite iframe embarquait dans l&#8217;<acronym title="Uniform Resource Locator">URL</acronym> toutes les préférences enregistrées. Donc <em>votre</em> clé d&#8217;<acronym title="Application Programming Interface">API</acronym>.<br />
Pourquoi c&#8217;est gênant ? Car il y a un <em>mécanisme inhérent</em> à tout navigateur Web qui s&#8217;appelle le Referrer. En clair, quand vous affichez une page, votre navigateur envoie l&#8217;adresse de la page appelante.<br />
Je me passerai du dessin &#8230;</p>
<p>Enfin, et pour terminer sur une note un peu moins noire, l&#8217;environnement de développement est un superbe outil pour tester son widget de manière indépendante. C&#8217;est à dire sans se connecter sur netvibes.com.<br />
Enfin là où le bas blesse c&#8217;est que les <strong>comportements et la présentation sont différents</strong> entre l&#8217;environnement de développement et Netvibes.</p>
<p>Ce qui sous-entend des bugs présents en développement et pas en production, la gestion des mots de passe qui diffère en développement de la production et du paramétrage spécifique pas documenté.</p>
<h3>Proxy local pour widget Netvibes</h3>
<p>Le <a href="http://dev.netvibes.com/doc/uwa_faq">proxy de développement Netvibes</a> indiqué dans la <acronym title="Frequently Asked Questions">FAQ</acronym> est fonctionnel mais <em>trop minimaliste</em>. On peut en effet récupérer les données mais dès qu&#8217;il s&#8217;agit d&#8217;en envoyer, c&#8217;est cuit.</p>
<p>J&#8217;ai donc adapté le <a href="http://developer.yahoo.com/javascript/samples/proxy/php_proxy_simple.txt">proxy du Yahoo! Developer Network</a> à mes besoins en ajoutant plusieurs fonctionnalités :</p>
<ul>
<li><strong>mise en cache des requêtes GET</strong> pour accélérer les chargements de page et éviter de cramer trop de requête auprès de fournisseurs les limitant (qui a dit Twitter ?)</li>
<li><strong>transmission des données POST</strong> ; c&#8217;est ce qu&#8217;il manquait le plus à la version fournie par Netvibes</li>
<li><strong>compatible texte/JSON/<acronym title="eXtensible Markup Language">XML</acronym></strong> ; le proxy renvoie les bonnes entêtes en fonction de la demande</li>
</ul>
<pre><code class="php">&lt;?php
define('CACHE_TTL', is_int($_GET['cache']) ? $_GET['cache'] : 3600);
define('CACHE_FOLDER', dirname(__FILE__).'/cache');
//
$session = curl_init($_GET['url']);
// If it's a POST, put the POST data in the body
if (isset($_POST) &amp;&amp; !empty($_POST))
{
  $postvars = '';
  while ($element = current($_POST))
  {
    $postvars .= key($_POST).'='.$element.'&amp;';
    next($_POST);
  }
  curl_setopt ($session, CURLOPT_POST, true);
  curl_setopt ($session, CURLOPT_POSTFIELDS, $postvars);
}
// Play with some cache
$md5sign = md5($_GET['url'].$postvars);
$md5file = CACHE_FOLDER.'/'.$md5sign;
/*
 * Read cache
 */
if (file_exists($md5file) &amp;&amp; filemtime($md5file)+CACHE_TTL &gt; time())
{
  curl_close($session);
  send_headers_content_type($_GET['type']);
  readfile($md5file);
  exit();
}
// Don't return <acronym title="HyperText Transfer Protocol">HTTP</acronym> headers. Do return the contents of the call
curl_setopt($session, CURLOPT_HEADER, false);
curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
// Make the call
$output = curl_exec($session);
$fp = fopen($md5file, "wb+");
fwrite($fp, $output);
fclose($fp);
send_headers_content_type($_GET['type']);
echo $output;
curl_close($session);
/*
 * Functions
 */
function send_headers_content_type($type)
{
  // Set the Content-Type appropriately
  switch ($type)
  {
    case 'text':
    default:
      header("Content-Type: text/plain");
    break;
    case 'xml':
      header("Content-Type: text/xml");
    break;
    case 'json':
      header('Content-Type: text/x-json');
    break;
  }
}
?&gt;</code></pre>
<p>En revanche, je serais vous, <strong>j&#8217;éviterais de m&#8217;en servir publiquement</strong> car il n&#8217;y a aucune vérification de sécurité donc à moins que vous ayiez envie de servir de relais à spam, le mieux est de n&#8217;utiliser ce proxy que sur une instance locale ou bien de davantage le blinder.</p>
<h3>Conclusion</h3>
<p>On arrive désormais au terme de ce billet fleuve <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Quoique je puisse en dire, <strong>Netvibes <acronym title="Universal Widget API">UWA</acronym> est quand même fort sympathique</strong> et permet d&#8217;aboutir à des temps de développement assez courts une fois la majorité des problèmés rencontrés. Nul doute que <strong>votre premier développement sera le plus compliqué</strong>. Surtout si comme moi vous avez envie de tout utiliser : pagination, onglets et <acronym title="Asynchronous JavaScript and XML">AJAX</acronym> à droite à gauche.</p>
<p>Dans tous les cas, <strong>une bonne conception de l&#8217;application vous sauvera la mise</strong> et évitera trop de réécriture de code.<br />
L&#8217;implémentation de la pagination et des onglets est particulièrement douloureuse si vous n&#8217;utilisez pas de programmation objet. Soyez-en avertis.</p>
<p>Je me suis personnellement bien amusé à développer en utilisant <acronym title="Universal Widget API">UWA</acronym> et en jouant avec l&#8217;<acronym title="Application Programming Interface">API</acronym> Jaiku. Cette dernière met vraiment l&#8217;accent sur le JSON ce qui est très pratique pour manipuler des données distantes de manière minimaliste.</p>
<p><strong>Une fois que ces 2 plateformes arriveront à maturité, il y aura de quoi faire d&#8217;encore plus belles applications</strong>.</p>
<p>N&#8217;hésitez pas à utiliser <a href="http://eco.netvibes.com/subscribe/241591">Jaiku sur Netvibes</a>, à me laisser vos remarques et à partager votre expérience de développement de widgets si le cœur vous en dit <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>]]></content:encoded>
			<wfw:commentRss>http://case.oncle-tom.net/2008/widget-jaiku-netvibes-presentation-bilan-developpement/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Menu déroulant en rollover semi-accessible avec jQuery</title>
		<link>http://case.oncle-tom.net/2008/menu-deroulant-accessible-en-rollover-avec-jquery/</link>
		<comments>http://case.oncle-tom.net/2008/menu-deroulant-accessible-en-rollover-avec-jquery/#comments</comments>
		<pubDate>Tue, 10 Jun 2008 05:00:50 +0000</pubDate>
		<dc:creator>Oncle Tom</dc:creator>
				<category><![CDATA[Accessibilité]]></category>
		<category><![CDATA[Standards du Web]]></category>
		<category><![CDATA[bonne pratique]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[ergonomie]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[logiciels libres]]></category>
		<category><![CDATA[rollover]]></category>
		<category><![CDATA[xhtml]]></category>
		<guid isPermaLink="false">http://case.oncle-tom.net/?p=919</guid>
		<description><![CDATA[Joie : je fais maintenant partie de Planète Accessibilité en plus de Planet Libre. C&#8217;est l&#8217;occasion pour ce premier article dédié d&#8217;allier à la fois logiciels libres et accessibilité pour le plus grand bien du Web Le but de cette explication sera de développer la méthode et le raisonnement pour mettre en place un menu [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align:center"><img class="aligncenter size-full wp-image-834" title="Logo jQuery" src="http://case.oncle-tom.net/images/2007/12/jquery-logo.png" alt="Logo jQuery" width="117" height="32" /></p>
<p>Joie : je fais maintenant partie de <a href="http://planete-accessibilite.com/">Planète Accessibilité</a> en plus de <a href="http://www.planet-libre.org/">Planet Libre</a>. C&#8217;est l&#8217;occasion pour ce premier article dédié d&#8217;allier à la fois logiciels libres et accessibilité pour le plus grand bien du Web <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Le but de cette explication sera de <strong>développer la méthode et le raisonnement</strong> pour mettre en place un menu en rollover accessible. La difficulté tient essentiellement au fait que tout élément masqué par le biais des <acronym title="Cascading Style Sheets">CSS</acronym> est masqué pour de nombreux clients Web.</p>
<p>Nous verrons aussi pourquoi il est <strong>important de dissocier la présentation et les artifices graphiques</strong> grâce à une dégradation propre du JavaScript. Nous utiliserons pour cela <a href="http://jquery.com">jQuery</a>, <a href="http://case.oncle-tom.net/tag/jquery/">ma librairie JavaScript favorite</a>.<br />
<span id="more-919"></span></p>
<h3>Buts et objectifs de l&#8217;exercice</h3>
<p>J&#8217;ai eu besoin d&#8217;appliquer cette technique sur le site <a href="http://www.emunova.net">Emu Nova</a>. Je souhaitais plusieurs choses :</p>
<ul>
<li>disposer d&#8217;un menu en rollover en haut de page (facilite la navigation sur toutes les pages)</li>
<li>placer le contenu avant les menus dans le flux <acronym title="HyperText Markup Language">HTML</acronym> de la page (améliore le référencement)</li>
<li>une navigation possible sans JavaScript (pour cause de bug ou autre)</li>
</ul>
<p>Autrement dis, j&#8217;ai besoin d&#8217;un <strong>contenu en fin de flux mais visible avant tout le reste</strong>. J&#8217;ai opté pour la solution JavaScript pour éviter un positionnement absolu pénible à gérer (pour cause de conteneur centré) mais aussi pour respecter le <a href="http://code.google.com/p/blueprintcss/">colonnage de Blueprint</a> (puis toutes façons j&#8217;ai raison <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_razz.gif' alt=':-P' class='wp-smiley' /> )</p>
<p>En une image, cela se résume ainsi :</p>
<p style="text-align:center"><a href="http://case.oncle-tom.net/images/2008/06/emunova-menu-accessible.png"><img class="aligncenter size-medium wp-image-920" title="Tentative de menu accessible" src="http://case.oncle-tom.net/images/2008/06/emunova-menu-accessible-150x300.png" alt="Tentative de menu accessible" width="150" height="300" /></a></p>
<p>Nous allons aborder les 3 phases de ce tracé de flèche :</p>
<ol>
<li>la construction du menu (la zone verte)</li>
<li>le déplacement du contenu (la flèche)</li>
<li>la construction de notre nouveau menu (la zone bleue)</li>
</ol>
<h3>Étape 1 : construire le menu en <acronym title="HyperText Markup Language">HTML</acronym></h3>
<p>C&#8217;est l&#8217;étape essentielle. De sa structure dépend le reste de l&#8217;application. On doit <strong>d&#8217;abord penser à présenter le contenu de manière dégradée</strong>. C&#8217;est ainsi que le verront les utilisateur et c&#8217;est important de penser d&#8217;abord au pire des cas avant de mettre en place les paillettes et les artifices.</p>
<p style="text-align:center"><img class="aligncenter size-full wp-image-921" title="Menu accessible (Étape 1)" src="http://case.oncle-tom.net/images/2008/06/menu-accessible-etape-1.png" alt="Menu accessible (Étape 1)" width="427" height="178" /></p>
<p>Cette structure est représentée ainsi en <acronym title="HyperText Markup Language">HTML</acronym> :</p>
<pre><code class="html">&lt;div id="contenu-secondaire"&gt;
  &lt;ul id="navigation"&gt;
    &lt;li class="first column span-6"&gt;
      &lt;h2&gt;Actualités&lt;/h2&gt;
      &lt;ul&gt;
        &lt;li&gt;&lt;a href="..."&gt;Actualités&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href="..."&gt;Newsletter&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href="..."&gt;Flux <acronym title="Really Simple Syndication">RSS</acronym>&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href="..."&gt;Twitter&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href="..."&gt;Réactions à chaud&lt;/a&gt;&lt;/li&gt;
      &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li class="column span-6"&gt;
      &lt;h2&gt;Émulation&lt;/h2&gt;
      &lt;ul&gt;
        &lt;li&gt;&lt;a href="..."&gt;Émulation&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href="..."&gt;Tutoriaux&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href="..."&gt;Foire aux Questions&lt;/a&gt;&lt;/li&gt;
      &lt;/ul&gt;
    &lt;/li&gt;
  &lt;/ul&gt;
&lt;/div&gt;</code></pre>
<p>Cette version est volontairement tronquée pour faciliter sa lecture.<br />
L&#8217;idée générale de tout ça c&#8217;est de transporter directement la liste <code>#navigation</code> en dehors de son conteneur, <code>#extra-content</code>. C&#8217;est en effet plus rapide et plus performant de transporter une partie du <acronym title="Document Object Model">DOM</acronym> dans un autre endroit que de la recréer séquentiellement.</p>
<p>Ça aura également l&#8217;avantage de limiter au maximum le travail à effectuer en JavaScript par derrière. On notera que jusqu&#8217;à présent, on n&#8217;a pas encore touché à jQuery.</p>
<p>Avec cette structure, on peut dores et déjà deviner que les &lt;ul&gt; de second niveau seront masqués et affichés à la demande.</p>
<h3>Étape 2 : préparer le menu <acronym title="HyperText Markup Language">HTML</acronym></h3>
<p>La deuxième reste assez simple : on transporte <code>#navigation</code> dans son nouveau conteneur (déjà existant) : <code>#welcome-bar.</code></p>
<p>Pour éviter tout aléas graphique, l&#8217;idéal est de masquer tout ce qu&#8217;on ne veut pas voir maintenant. Nous rentrons maintenant dans la partie pure JavaScript.</p>
<p style="text-align:center"><img class="aligncenter size-full wp-image-922" title="Menu accessible (Étape 2)" src="http://case.oncle-tom.net/images/2008/06/menu-accessible-etape-2.png" alt="Menu accessible (Étape 2)" width="304" height="72" /></p>
<p>Pour atteindre ce résultat, on pourrait envisager le code suivant :</p>
<pre><code class="javascript">(function($){
  $(function(){
    /*
     * Étape 2 : préparation du menu
     */
    $('#navigation &gt; li &gt; ul').hide();
    $('#navigation').appendTo('#welcome-bar');
  });
})(jQuery);</code></pre>
<p>En soi, ce n&#8217;est pas excessif du tout :</p>
<ol>
<li>on masque tous les sous-menus</li>
<li>on transporte le contenu de #navigation dans #welcome-bar</li>
</ol>
<p>Tout le travail se situait dans la réflexion il faut croire <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<h3>Étape 3 : assigner les évènements</h3>
<p>Maintenant le plus dur c&#8217;est de donner vie à tout ça. C&#8217;est bien beau d&#8217;avoir des menus mais encore faut-il les animer. Là encore nous avons plusieurs contraintes à subir :</p>
<ul>
<li>les <strong>titres doivent être cliquables</strong>. Certaines personnes cliqueront en effet avant de réaliser qu&#8217;il y a un menu déroulant. Par principe, on prendre le premier lien de la liste et on l&#8217;assignera au titre correspondant ;</li>
<li>le <strong>menu doit se dérouler lors du survol du titre</strong> &#8230;</li>
<li>mais il ne doit pas se masquer tant qu&#8217;on n&#8217;a pas quitté le titre NI la liste déroulante</li>
</ul>
<p>La difficulté tient à ces 2 dernières contraintes. On pourrait tout d&#8217;abord penser à l&#8217;utilisation des évènements <code>mouseover</code> et <code>mouseout</code> MAIS, parce qu&#8217;il y a bien un mais, <code>mouseout</code> est un peu capricieux.</p>
<p>Si on imagine un <code>mouseover</code> directement sur <code>li.column</code>, le problème c&#8217;est que survoler un élément comme <em>Actualités</em> ou <em>Newsletter</em> activera le <code>mouseover</code> de ces derniers &#8230; et désactivera, un temps minime certes, le survol de <code>li.column</code>. Autrement dit le menu se repliera alors qu&#8217;on tentera de l&#8217;utiliser.</p>
<p>Heureusement pour nous, jQuery a introduit les évènements <code>mouseenter</code> et <code>mouseleave</code> (présents dans Internet Explorer depuis des lustres, c&#8217;est bien le seul avantage de cette atrocité) depuis la <a title="Notes de version de jQuery 1.2.2" href="http://docs.jquery.com/Release:jQuery_1.2">version 1.2.2</a>. Ces évènements correspondent exactement à ce que l&#8217;on souhaite : maintenir une zone survolée malgré le survol de ses enfants.<br />
Tout est histoire de couches <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p style="text-align:center"><img class="aligncenter size-full wp-image-923" title="Menu accessible (Étape 3)" src="http://case.oncle-tom.net/images/2008/06/menu-accessible-etape-3.png" alt="Menu accessible (Étape 3)" width="301" height="180" /></p>
<p>Côté code, ça se complique :</p>
<pre><code class="javascript">(function($){
  $(function(){
    /*
     * Étape 3 : assignation des évènements et transformation
     */
    $('#navigation &gt; li')
      .each(function(){
        var title = $('h2:first', this);
        var href = $('a:first', this).clone();
        href.text(title.text()).wrapInner('&lt;span&gt;&lt;/span&gt;');
        title.html(href);
       })
      .find('h2 &gt; a').bind('mouseenter', function(){
        $(this).parents('li.column').find('&gt; ul').slideDown('fast');
      }).end()
      .bind('mouseleave', function(){
        $('&gt; ul', this).slideUp();
      });
  });
})(jQuery);</code></pre>
<p>Plusieurs remarques sur ce code :</p>
<ul>
<li>j&#8217;utilise les <strong>chaînes de jQuery</strong> pour gagner du temps et reparcourir des tableaux déjà connus (le sélecteur n&#8217;est pas réexécuté)</li>
<li>j&#8217;utilise également la <strong>méthode end()</strong> pour revenir au précédent état du sélecteur. Très pratique pour naviguer dans un jeu d&#8217;éléments et gagner en performances</li>
</ul>
<p>Et pour les explications :</p>
<ol>
<li>Pour chaque élément de liste
<ol>
<li>on met de côté le titre de la liste</li>
<li>on clone le premier élément du sous-menu</li>
<li>on modifie le libellé du lien du clone</li>
<li>on remplace le titre par le code <acronym title="HyperText Markup Language">HTML</acronym> du clone</li>
</ol>
</li>
<li>Pour ces liens hypertextes nouvellement créés (plus faciles à styler sans <acronym title="JavaScript">JS</acronym> au rollover), on leur demande de déplier le sous-menu voisin</li>
<li>Ce sous-menu ne sera replié que lorsqu&#8217;on quittera le li.column</li>
</ol>
<h3>Conclusion</h3>
<p>La <strong>mise en œuvre de ce menu est relativement aisée</strong> et surtout, suffisamment souple pour que vous puissiez l&#8217;adapter à vos besoins.<br />
Dans tous les cas on remarquera que les clés de la réussite sont :</p>
<ul>
<li>un <strong>code <acronym title="HyperText Markup Language">HTML</acronym> propre</strong> (facile les sélections <acronym title="JavaScript">JS</acronym> et le stylage <acronym title="Cascading Style Sheets">CSS</acronym>)</li>
<li>une évolution d&#8217;une <strong>base sans artifices vers une interface améliorée</strong> en JavaScript</li>
<li>un <strong>code simple</strong>, facilement maintenable et adaptable</li>
</ul>
<p>Ceci n&#8217;est qu&#8217;un exemple où le JavaScript peut servir à conserver des interfaces accessibles tout en augmentant leur utilisabilité. Qui a dit que le JavaScript c&#8217;était nul ?</p>
<p>Le seul reproche que l&#8217;on peut faire à ce menu accessible c&#8217;est le <em>manque de navigation au clavier</em>. L&#8217;idéal serait de pouvoir naviguer dans le choix des menus entièrement avec les flèches de son clavier.<br />
Rendez-vous dans un autre billet pour ce point ? <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://case.oncle-tom.net/2008/menu-deroulant-accessible-en-rollover-avec-jquery/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Emu Nova 2.1 : coulisses d&#8217;une refonte ergonomique et visuelle</title>
		<link>http://case.oncle-tom.net/2008/emu-nova-21-coulisses-dune-refonte-ergonomique-et-visuelle/</link>
		<comments>http://case.oncle-tom.net/2008/emu-nova-21-coulisses-dune-refonte-ergonomique-et-visuelle/#comments</comments>
		<pubDate>Tue, 22 Apr 2008 05:00:45 +0000</pubDate>
		<dc:creator>Oncle Tom</dc:creator>
				<category><![CDATA[Développement Web]]></category>
		<category><![CDATA[Projets]]></category>
		<category><![CDATA[Standards du Web]]></category>
		<category><![CDATA[blueprint]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[ergonomie]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[logiciels libres]]></category>
		<category><![CDATA[rythme vertical]]></category>
		<category><![CDATA[ui]]></category>
		<category><![CDATA[xhtml]]></category>
		<guid isPermaLink="false">http://case.oncle-tom.net/?p=902</guid>
		<description><![CDATA[Mon premier grand fait d&#8217;armes sur le Web aura été le lancement d&#8217;Emu Nova en octobre 2002. Les grandes lignes du site ont toujours été jeux vidéo rétro, émulation et aide aux utilisateurs. J&#8217;ai ainsi décidé d&#8217;offrir une nouvelle garde-robe à Emu Nova le 1er avril 2008 pour renouveler une interface vieille de 3 ans. [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center"><img class="aligncenter size-full wp-image-903" src="http://case.oncle-tom.net/images/2008/04/emunova.gif" alt="Emu Nova" width="186" height="48" /></p>
<p>Mon premier grand fait d&#8217;armes sur le Web aura été le lancement d&#8217;<a href="http://www.emunova.net/">Emu Nova</a> en octobre 2002. Les grandes lignes du site ont toujours été <strong>jeux vidéo rétro</strong>, <strong>émulation</strong> et <strong>aide aux utilisateurs</strong>.<br />
J&#8217;ai ainsi décidé d&#8217;offrir une nouvelle garde-robe à Emu Nova le 1<sup>er</sup> avril 2008 pour <strong>renouveler une interface</strong> vieille de 3 ans. 3 ans où le contenu s&#8217;est accumulé, les menus se sont désordonnés et la navigation s&#8217;est complexifiée.</p>
<p>Aujourd&#8217;hui je vous dévoile les <strong>tenants et aboutissants d&#8217;un travail de réflexion</strong> mené sur plusieurs mois tant en terme d&#8217;ergonomie, d&#8217;accessibilité et de respect des standards du Web.<br />
Où l&#8217;on parlera de jQuery, Blueprint et d&#8217;interface orientée utilisateur.<br />
<span id="more-902"></span></p>
<h3 style="text-align: center;"><a href="http://case.oncle-tom.net/images/2008/04/emunova-2010.png"><img class="aligncenter size-medium wp-image-905" src="http://case.oncle-tom.net/images/2008/04/emunova-2010-227x300.png" alt="Emu Nova : version 2" width="227" height="300" /></a></h3>
<h3>Objectifs de la refonte</h3>
<p>Comme je le disais, la plus grosse critique se tournait vers l&#8217;agencement du site : les menus étaient séparés en 2 et étaient peu visible.</p>
<p>Pire, il y avait tellement de contenu accumulé qu&#8217;au final l&#8217;utilisateur était obligé de scroller au mois une fois pour atteindre le contenu demandé.<br />
J&#8217;ai donc opté pour un <strong>choix radical</strong> : tout reprendre de la feuille blanche et ne tenter de conserver que l&#8217;identité du site au travers de ses couleurs et de son logo.</p>
<p>Plusieurs objectifs ont émergé en griffonnant au fur et à mesure l&#8217;interface sur une feuille de papier :</p>
<ul>
<li>offrir une page d&#8217;accueil qui ne fasse <strong>pas doublon</strong> avec le reste du site</li>
<li>offrir une page d&#8217;accueil <strong>mettant en avant du contenu</strong> pour inciter à visiter le site en profondeur (textes courts, images)</li>
<li>davantage <strong>lier les forums et le site</strong> pour susciter l&#8217;interaction avec l&#8217;internaute</li>
<li>offrir une <strong>interface lisible</strong> dont les contenus sont aisément identifiables sans effort cognitif</li>
<li>offrir du <strong>contenu annexe en pied de page</strong> : je suis désormais intimement convaincu que le pied de page est le meilleur moyen de fidéliser un vagabond curieux qui n&#8217;a pas tiré satisfaction de la première lecture</li>
<li>proposer un site conforme au <strong>standard <acronym title="eXtensible HyperText Markup Language">XHTML</acronym> 1 Strict</strong> en bannissant les mises en forme en tableau, entre autre</li>
</ul>
<p>On le voit, les objectifs de surface sont résolument tournés vers l&#8217;interface utilisateur. Derrière il y avait également des objectifs de simplification et de mutualisation du code avec l&#8217;interface d&#8217;administration.</p>
<h3>Choix technologiques</h3>
<p>Plutôt que de réinventer la roue, j&#8217;ai souhaité utiliser les applications en qui je crois le plus. Je peux compter dessus tout en gagnant du temps. N&#8217;est-ce pas là l&#8217;essentiel ?</p>
<h4>JavaScript : jQuery</h4>
<p>Je suis un féroce utilisateur de <a href="http://jquery.com/">jQuery</a> que j&#8217;adore pour sa <strong>souplesse d&#8217;utilisation</strong> et sa <strong>syntaxe vraiment plaisante</strong>. Elle dépassera, à mon avis, largement le vieillissant couple Prototype/Scriptaculous d&#8217;ici la fin de l&#8217;année 2008.</p>
<p>jQuery sert de base à tout le code JavaScript :</p>
<ul>
<li>altérer l&#8217;interface pour <strong>construire le menu de navigation principal</strong> : sans JavaScript ça marche, avec c&#8217;est encore mieux !</li>
<li>affichage des <strong>messages d&#8217;alertes pour les formulaires incomplets</strong> : pas de popup mais un message inséré à même la page</li>
<li><strong>ouverture des liens externes</strong> dans une nouvelle fenêtre</li>
<li><strong>diaporama de photos</strong> avec Lightbox ; personnalisé pour l&#8217;occasion afin de bénéficier de légendes plus détaillées</li>
</ul>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-904" src="http://case.oncle-tom.net/images/2008/04/emunova-jquery-form.png" alt="Emu Nova : formulaire avec erreur par jQuery" width="500" height="199" /></p>
<p>Il ne reste donc plus en tout et pour tout que 2 popup/alert/confirm obligeant à un affreux et désobligeant clic.</p>
<h4><acronym title="Cascading Style Sheets">CSS</acronym> : Blueprint</h4>
<p><a href="http://code.google.com/p/blueprintcss/">Blueprint</a> est la librairie <acronym title="Cascading Style Sheets">CSS</acronym> la plus proche du Saint-Graal : facile d&#8217;utilisation et très puissante. Mon seul regret à l&#8217;heure actuelle est qu&#8217;elle ne fonctionne qu&#8217;en largeur fixe. Mais dans cette configuration elle joue parfaitement son rôle :</p>
<ul>
<li>construction de colonnes les doigts dans le nez</li>
<li><a href="http://www.biologeek.com/journal/index.php/l-importance-du-rythme-vertical-en-design-css">rythme vertical</a> respecté pour un confort de lecture accru</li>
<li>construction typographique prémachée</li>
<li>correctifs liés à Internet Explorer déjà intégrés</li>
</ul>
<p>Une bonne présentation c&#8217;est une présentation sans contrainte : pas de couleur primaire, pas de difficulté à lire, pas de texte trop petit.</p>
<p>Le premier lecteur qui plisse les yeux c&#8217;est qu&#8217;il aura oublié d&#8217;allumer son écran <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<h4>Transparence d&#8217;images : <acronym title="Graphics Interchange Format">GIF</acronym> ou <acronym title="Portable Network Graphics">PNG</acronym> ?</h4>
<p>Quitte à trancher dans le vif, le <strong><acronym title="Graphics Interchange Format">GIF</acronym> a été abandonné au profit du <acronym title="Portable Network Graphics">PNG</acronym></strong> pour le logo.</p>
<p>Pour rappel, si la transparence est possible avec le <acronym title="Graphics Interchange Format">GIF</acronym>, il lui manque la <strong>couche alpha</strong> qui permet de mélanger transparence et couleur. Avec le <acronym title="Portable Network Graphics">PNG</acronym> on peut frimer avec des contours ombrés et des reflets qui fusionnent parfaitement avec le décors.</p>
<p>Alors où est le problème ? Le sempiternel Internet Explorer 6 qui commence même à chauffer les oreilles à Microsoft. À tel point qu&#8217;il souhaite s&#8217;en débarrasser au plus tôt en poussant Internet Explorer 7, y compris pour les non-possesseurs du Service Pack 2 de Windows XP.<br />
La transparence est affichée comme du gris. Magnifique. Sauf en utilisant <a href="http://jquery.khurshid.com/ifixpng.php">jQuery.ifixpng</a>, entre autre.</p>
<h3>Emu Nova : carte de chaleurs, avant et après</h3>
<p style="text-align: center;"><a href="http://case.oncle-tom.net/images/2008/04/emunova-2000vs2100-heatmap.jpg"><img class="aligncenter size-medium wp-image-907" title="Heatmap d\'Emu Nova" src="http://case.oncle-tom.net/images/2008/04/emunova-2000vs2100-heatmap-294x300.jpg" alt="Heatmap d\'Emu Nova" width="294" height="300" /></a></p>
<p>Voici une comparaison des cartes de chaleur à 6 mois d&#8217;intervalle.</p>
<p>On remarque aisément que sur la précédente version les clics sont concentrés, notamment sur la partie haute de la page. Les quelques listes existantes mettent peu en valeur le contenu et de ce fait ne sont pas cliquées.</p>
<p>Sur la nouvelle version les clics semblent <strong>moins concentrés mais touchent globalement toute la page</strong>, exception faite des vignettes en image. Un problème ? Non pas vraiment puisqu&#8217;elles sont rafraîchies toutes les 3 heures ce qui fausse le calcul (qui s&#8217;étale sur 1 journée).</p>
<p>Notez aussi les clics en bas de page : <strong>le pied de page compte</strong>. Qui n&#8217;a pas eu envie qu&#8217;on lui suggère du contenu à lire une fois sa lecture terminée ?</p>
<h3>Conclusion</h3>
<p style="text-align: center;"><a href="http://case.oncle-tom.net/images/2008/04/emunova-2101-homepage.png"><img class="aligncenter size-medium wp-image-906" title="Emu Nova 2.1 : page d\'accueil" src="http://case.oncle-tom.net/images/2008/04/emunova-2101-homepage-203x300.png" alt="Emu Nova 2.1 : page d\'accueil" width="203" height="300" /></a></p>
<p style="text-align: left;">Il n&#8217;est pas aisé de refondre une interface, surtout quand il y a derrière toute une troupe d&#8217;utilisateurs attachés à ses habitudes (ce qu&#8217;on peut comprendre).</p>
<p style="text-align: left;">Si on temporise les différentes phases, voici ce que cela donne :</p>
<ul>
<li>analyse des besoins, ressenti de la situation : plusieurs mois</li>
<li>dessin de la nouvelle interface sur papier : plusieurs jours</li>
<li>intégration <acronym title="HyperText Markup Language">HTML</acronym> : plusieurs heures</li>
<li>refonte du code : plusieurs jours</li>
<li>corrections de bugs : plusieurs heures</li>
<li>premières critiques : quelques minutes</li>
</ul>
<p>Pas étonnant que ma régularité sur ce blog en aie pris un coup <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>]]></content:encoded>
			<wfw:commentRss>http://case.oncle-tom.net/2008/emu-nova-21-coulisses-dune-refonte-ergonomique-et-visuelle/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Microformats : comment microformater du contenu déjà existant ?</title>
		<link>http://case.oncle-tom.net/2008/microformats-comment-microformater-du-contenu-deja-existant/</link>
		<comments>http://case.oncle-tom.net/2008/microformats-comment-microformater-du-contenu-deja-existant/#comments</comments>
		<pubDate>Thu, 03 Apr 2008 21:07:42 +0000</pubDate>
		<dc:creator>Oncle Tom</dc:creator>
				<category><![CDATA[Développement Web]]></category>
		<category><![CDATA[Standards du Web]]></category>
		<category><![CDATA[adr]]></category>
		<category><![CDATA[atom]]></category>
		<category><![CDATA[clever age]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[google maps]]></category>
		<category><![CDATA[hatom]]></category>
		<category><![CDATA[hcalendar]]></category>
		<category><![CDATA[hcard]]></category>
		<category><![CDATA[logiciels libres]]></category>
		<category><![CDATA[microformats]]></category>
		<category><![CDATA[rss]]></category>
		<category><![CDATA[tag]]></category>
		<category><![CDATA[wikia]]></category>
		<category><![CDATA[xhtml]]></category>
		<category><![CDATA[xoxo]]></category>
		<category><![CDATA[yahoo]]></category>
		<guid isPermaLink="false">http://case.oncle-tom.net/2008/04/03/microformats-comment-microformater-du-contenu-deja-existant/</guid>
		<description><![CDATA[Nous avions dressé un panorama des microformats dans un précédent article intitulé « microformats : republier et donner du sens aux contenus ». Nous avions notamment conclu que leur intégration était rapide, peu coûteuse et surtout bénéfique tant pour le visiteur que pour la visibilité du contenu. Nous nous intéresserons cette fois-ci à une partie [...]]]></description>
			<content:encoded><![CDATA[
<p style="text-align:center"><img src="http://case.oncle-tom.net/images/2007/07/logo-microformats.gif" alt="Microformats logo" /></p>
<p>Nous avions dressé un panorama des microformats dans un précédent article intitulé « <a href="http://case.oncle-tom.net/2008/01/29/microformats-republier-donner-sens-aux-contenus/">microformats : republier et donner du sens aux contenus</a> ». Nous avions notamment conclu que leur<strong> intégration était rapide, peu coûteuse et surtout bénéfique</strong> tant pour le visiteur que pour la visibilité du contenu.</p>
<p>Nous nous intéresserons cette fois-ci à une partie plus pratique des microformats : leur <strong>intégration</strong>. Toutefois ce rapide apprentissage sera didactique puisque nous apprendrons à identifier visuellement quels contenus d’une page peuvent être microformatés mais aussi comment microformater du code <acronym title="HyperText Markup Language">HTML</acronym> déjà existant.<br />
<span id="more-896"></span></p>
<h3>Des sites déjà microformatés</h3>
<p>Intéressons-nous toutefois à des sites ayant déjà microformaté leurs contenus. Nous pourrons ainsi éveiller notre curiosité et préparer le travail de réflexion de la prochaine étape.</p>
<p><strong><a href="http://maps.google.fr/?q=clever-age&amp;near=paris">Exemple avec Google Maps</a></strong> :</p>
<p style="text-align:center"><img src="http://case.oncle-tom.net/images/2008/04/microformats-sites-google-maps.jpg" alt="Microformats sur Google Maps" /></p>
<p>Google Maps est un service de recherche cartographique accessible via un simple navigateur Web. Le moteur donne un accès à des recherches de lieux, de calculs d&#8217;itinéraires mais aussi d&#8217;emplacement d&#8217;entreprises.</p>
<p>Le support des microformats sur Google Maps est relativement léger mais suffisant pour être utile.<br />
Contrairement à ce que l&#8217;on aurait pu penser, Google n&#8217;a pas intégré le <a href="http://microformats.org/wiki/geo">microformat geo</a> pour exporter les coordonnées GPS d&#8217;un point. La société s&#8217;est concentrée sur les données personnelles au moyen de deux microformats combinés :</p>
<ul>
<li> <a href="http://microformats.org/wiki/hcard">microformat hCard</a> (correspond à la réunion des encadrés bleu et vert)</li>
<li> <a href="http://microformats.org/wiki/adr">microformat adr</a> (correspond à l&#8217;encadré vert uniquement)</li>
</ul>
<p>Cette combinaison facilite l&#8217;extraction des adresse postales et des entités (individus ou entreprises).</p>
<p><strong><a href="http://upcoming.yahoo.com/search/?loc=paris">Exemple avec Yahoo ! Upcoming</a></strong> :</p>
<p style="text-align:center"><img src="http://case.oncle-tom.net/images/2008/04/microformats-sites-yahoo-upcoming.jpg" alt="Microformats sur Yahoo! Upcoming" /></p>
<p>Yahoo ! Upcoming est un service gratuit cataloguant tous les évènements à venir par pays, ville, date et même par catégories (cinéma, concerts, expositions etc.).</p>
<p>Le microformat par excellence à adopter était bien évidemment le <a href="http://microformats.org/wiki/hcalendar">microformat hCalendar</a>. Chaque occurence microformatée est représentée par un rectangle vert et peut contenir ces différents attributs, entre autre :</p>
<ul>
<li> date de début de l&#8217;évènement</li>
<li> date de fin de l&#8217;évènement</li>
<li> titre de l&#8217;évènement</li>
<li> description de l&#8217;évènement</li>
<li> le lieu de l&#8217;évènement (sous forme d&#8217;adresse complète ou pas)</li>
<li> une <acronym title="Uniform Resource Locator">URL</acronym> menant à un descriptif plus approfondi de l&#8217;évènement</li>
</ul>
<p>Ce microformatage permet d&#8217;aller au-delà d&#8217;une lecture classique puisque de manière simple, elle permet au visiteur de récupérer les évènements qui l&#8217;intéresse pour les ajouter à son gestionnaire de temps favoris, qu&#8217;il soit logiciel ou en ligne.</p>
<h3>Identifier visuellement les microformats à intégrer</h3>
<p>Identifier des microformats déjà implémenté est assez simple avec les outils adéquats. En revanche pour décider de microformater du contenu, deux outils sont indispensables :</p>
<ul>
<li> la documentation des microformats pour savoir <strong>quoi implémenter</strong></li>
<li> un peu de jugeotte pour savoir <strong>comment implémenter</strong> <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </li>
</ul>
<p>Avec un peu de pratique et de connaissance des différents microformats, il ne faut pas plus de 5 à 10 minutes pour identifier les contenus microformatables. La difficulté d&#8217;intégration dépendra uniquement de la structure technique affichant les données : plus elle sera complexe, plus le microformatage pourra être long &#8230; au même titre que toute autre modification basique.</p>
<p><strong><a href="http://re.search.wikia.com/search#clever%20age">Exemple avec Wikia Search</a></strong> :</p>
<p style="text-align:center"><img src="http://case.oncle-tom.net/images/2008/04/microformats-tomicroformat-wikia-search.jpg" alt="Microformats sur Wikia Search" /></p>
<p>Wikia Search est un moteur de recherche lancé au tout début de l&#8217;année 2008 par un des fondateurs de l&#8217;encyclopédie en ligne Wikipédia. Ce moteur en reprend d&#8217;ailleurs le principe du wiki pour contribuer à l&#8217;élaboration et la notation de meilleurs résultats.</p>
<p>Il est d&#8217;ailleurs étonnant de voir qu&#8217;aucun microformat ne soit présent malgré de tels objectifs. La capture d&#8217;écran ci-dessus découpe la page en 3 zones microformatables distinctes :</p>
<ol>
<li> le lien sur logo aurait pu se voir agrémenter d&#8217;un <a href="http://microformats.org/wiki/rel-home">rel-home</a> pour signifier un retour vers la page d&#8217;accueil ;</li>
<li> les résultats auraient pu quant à eux embarquer :
<ul>
<li> le <a href="http://microformats.org/wiki/hatom">microformat hAtom</a> pour faciliter la syndication de contenu et l&#8217;extraction des résultats.</li>
<li> le <a href="http://microformats.org/wiki/hreview">microformat hReview</a> ou <a href="http://microformats.org/wiki/vote-links">VoteLinks</a> sur les encadrés orangés identifiant les zones de votes.</li>
</ul>
</li>
<li> enfin le <a href="http://microformats.org/wiki/hcard">microformat hCard</a> aurait été le bienvenu sur la liste des résultats correspond à des personnes.</li>
</ol>
<p>On peut constater que plus il y a d&#8217;emplacement représentant des contenus différents sur une page, plus on a de chances qu&#8217;un microformat corresponde.</p>
<p><strong><a href="http://www.clever-age.com/">Exemple avec Clever Age</a></strong> :</p>
<p style="text-align:center"><img src="http://case.oncle-tom.net/images/2008/04/microformats-tomicroformat-cleverage.jpg" alt="Microformats sur Clever Age" /></p>
<p>J&#8217;ai dénombré pas moins de 5 zones pouvant accueillir des microformats :</p>
<ol>
<li> les dernières actualités pourraient utiliser le <a href="http://microformats.org/wiki/hatom">microformat hAtom</a>. Un flux <acronym title="Really Simple Syndication">RSS</acronym> est déjà disponible sur la page mais ce serait offrir un chemin de traverse pour les visiteurs et les moteurs d&#8217;indexation ;</li>
<li> le <a href="http://microformats.org/wiki/hcalendar">microformat hCalendar</a> aiderait à la réutilisation des données dans les gestionnaires de temps. Imaginez un chef d&#8217;entreprise affairé désireux de transmettre à ses collaborateurs une ressource contenant toutes les informations de leur future formation : peu d&#8217;effort et un gain de communication ;</li>
<li> ajouter facilement Clever Age dans votre carnet de contacts et de prestataires serait également facilité si le <a href="http://microformats.org/wiki/hcard">microformat hCard</a> redistribuait le nom et les moyens de contact de la société ;</li>
<li> en complément au moyen de contact, l&#8217;emplacement géographique des agences serait à portée de clic avec le <a href="http://microformats.org/wiki/geo">microformat geo</a>. Après tout, Google Maps proposera peut-être un jour d&#8217;importer des <acronym title="Uniform Resource Locator">URL</acronym> microformatée en plus des fichiers KMZ (Google Earth) <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  ;</li>
<li> enfin, le microformatage de la dernière partie dépend de ce qu&#8217;on aimerait redistribuer :
<ul>
<li> le <a href="http://microformats.org/wiki/hatom">microformat hAtom</a> pour offrir 3 flux de syndication mais le peu d&#8217;éléments (2 à chaque fois) tende à infirmer la pertinence de ce microformat dans le cas présent ;</li>
<li> le <a href="http://microformats.org/wiki/xoxo">microformat XOXO</a> est adapté à décrire des types de contenus embarqués dans une page ; ici des flux <acronym title="Really Simple Syndication">RSS</acronym>. Il serait à placer sur chaque lien pointant vers les flux <acronym title="Really Simple Syndication">RSS</acronym> ;</li>
<li> le <a href="http://microformats.org/wiki/xfolk">microformat Xfolk</a> est adapté aux collections d&#8217;<acronym title="Uniform Resource Locator">URL</acronym> plus communément appelés « favoris » ou « marque-pages »</li>
</ul>
</li>
</ol>
<p>Avec ce dernier exemple, nous venons de voir que le microformatage était facilement adaptable à un site Web de société. Dans ce cas précis, il y a énormément de contenu republiable mais pas systématiquement de manière pertinente.</p>
<h3>Intégrer les microformats dans du (X)<acronym title="HyperText Markup Language">HTML</acronym></h3>
<p>Les précédents exemples, sur de l&#8217;existant et ce qui pourrait exister, avaient pour but de former notre esprit à reconnaitre des zones susceptibles d&#8217;être microformatées.</p>
<p>La difficulté de l&#8217;exercice est d&#8217;ajouter du balisage sans altérer la présentation actuelle. Je traiterai du site de Clever Age dont nous avons parlé précédemment.</p>
<p><strong>Microformater des données d&#8217;entités</strong></p>
<p>Voici le code de départ, repris tel quel :</p>
<pre><code>Clever Age - Siège social : 01.53.34.66.10</code></pre>
<p>Comme nous avons pu le voir, la gestion d&#8217;identités passe par le <a href="http://microformats.org/wiki/hcard">microformat hCard</a> :</p>
<pre><code>&lt;span class="vcard"&gt;
&lt;span class="fn org"&gt;Clever Age&lt;/span&gt; - Siège social : &lt;span class="tel"&gt;&lt;span class="value"&gt;01.53.34.66.10&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;</code></pre>
<p>La balise <em>span</em> est une balise en-ligne neutre au sens où &#8230; n&#8217;en a pas justement. <em>div</em> est son pendant de type bloc.</p>
<p><strong>Microformater des ressources syndiquées</strong><br />
Voici le code de départ (simplifié par rapport à l&#8217;exemple afin de réduire le code à lire) :</p>
<pre><code>&lt;dl&gt;
&lt;dt&gt;&lt;a href="/rss/blog.xml"&gt;derniers billets du blog&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;...&lt;/dd&gt;
&lt;dt&gt;&lt;a href="/rss/publications.xml"&gt;dernières publications&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;...&lt;/dd&gt;
&lt;dt&gt;&lt;a href="/rss/cleverlink.xml"&gt;derniers Clever Links&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;...&lt;/dd&gt;
&lt;/dl&gt;</code></pre>
<p>Le <a href="http://microformats.org/wiki/xoxo">microformat XOXO</a> nous permet de définir une liste d&#8217;éléments en fonction des <a href="http://microformats.org/wiki/xoxo#The_XOXO_Document_Type">modules <acronym title="eXtensible HyperText Markup Language">XHTML</acronym></a> :</p>
<pre><code>&lt;dl class="xoxo"&gt;
&lt;dt&gt;&lt;a href="/rss/blog.xml" rel="feed" type="text/xml"&gt;derniers billets du blog&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;...&lt;/dd&gt;
&lt;dt&gt;&lt;a href="/rss/publications.xml" rel="feed" type="text/xml"&gt;dernières publications&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;...&lt;/dd&gt;
&lt;dt&gt;&lt;a href="/rss/cleverlink.xml" rel="feed" type="text/xml"&gt;derniers Clever Links&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;...&lt;/dd&gt;
&lt;/dl&gt;</code></pre>
<p>Le microformatage a été rendu possible uniquement en utilisant de manière standardisée des attributs définis par <acronym title="eXtensible HyperText Markup Language">XHTML</acronym>.<br />
Malgré cet aspect de simplicité, il faut s&#8217;investir dans la compréhension des spécifications <acronym title="eXtensible HyperText Markup Language">XHTML</acronym>. Ce n&#8217;est un problème que pour les personnes produisant du code <acronym title="eXtensible HyperText Markup Language">XHTML</acronym> non-conforme.</p>
<h3>Valider l&#8217;intégration des microformats</h3>
<p>La question qui se pose toujours après avoir produit un code quelconque c&#8217;est comment le tester ? Il existe à l&#8217;heure actuelle trois outils gratuits :</p>
<ul>
<li> la relecture manuelle avec la documentation à côté <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </li>
<li> l&#8217;<a href="https://addons.mozilla.org/firefox/addon/4106">extension Operator pour Firefox</a>. Elle n&#8217;est toutefois pas complète et ne permettra pas de tester tous les microformats existants. Cette extension propose dans ses options un <em>mode débogage</em> très utile ;</li>
<li> le service en ligne <a href="http://microformatique.com/optimus/">Optimus</a>. Ce service polyvalent est capable de retourner sous forme de flux <acronym title="eXtensible Markup Language">XML</acronym> ou JSON les microformats présents dans une page Web. Il propose également un validateur, toujours pour une page Web, décrivant les erreurs de microformatage.</li>
</ul>
<h3>Conclusion</h3>
<p>Il est difficile d&#8217;infuser en un article la manière de microformater du contenu. Fort heureusement la documentation des microformats abonde d&#8217;exemples en traitant des cas de figure concrets. Les spécifications restent là pour savoir quels sont les attributs, obligatoires ou pas.</p>
<p>De manière générale <strong>l&#8217;intégration des microformats est relativement aisée</strong> mais il existe 3 difficultés principales à l&#8217;intégration des microformats :</p>
<ul>
<li> difficultés liées à la <strong>plate-forme technique</strong> d&#8217;intégration ;</li>
<li> difficultés liées à un <strong>manque de données</strong>. Certaines spécifications exigent la présence de données particulières que l&#8217;on n&#8217;a pas ou que l&#8217;on ne peut afficher, rendant invalide le contenu ;</li>
<li> difficultés liées à un <strong>code <acronym title="HyperText Markup Language">HTML</acronym> désorganisé</strong>. L&#8217;abus de <em>div</em> et le non-respect de hiérarchie est une source de problèmes et si elle rend pénible l&#8217;intégration des microformats, elle pose problème à la maintenance du code et des <acronym title="Cascading Style Sheets">CSS</acronym>.</li>
</ul>
<p>Intégrer les microformats c&#8217;est finalement mener une <strong>réflexion sur la qualité du code produit</strong>. Un bon code, respectueux des standards et sémantique sera pérenne dans le temps, facilitera le microformatage et aura davantage de chances d&#8217;être accessible.</p>]]></content:encoded>
			<wfw:commentRss>http://case.oncle-tom.net/2008/microformats-comment-microformater-du-contenu-deja-existant/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>L&#8217;écrit Web : traitement de l&#8217;information sur Internet</title>
		<link>http://case.oncle-tom.net/2008/ecrit-web-traitement-information-sur-internet/</link>
		<comments>http://case.oncle-tom.net/2008/ecrit-web-traitement-information-sur-internet/#comments</comments>
		<pubDate>Tue, 08 Jan 2008 06:00:31 +0000</pubDate>
		<dc:creator>Oncle Tom</dc:creator>
				<category><![CDATA[Personnel]]></category>
		<category><![CDATA[bonnes pratiques]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[livres]]></category>
		<category><![CDATA[optimisation]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[xhtml]]></category>
		<guid isPermaLink="false">http://case.oncle-tom.net/2008/01/08/ecrit-web-traitement-information-sur-internet/</guid>
		<description><![CDATA[Je rédige sur ce blog depuis bientôt 3 ans, depuis plus de 5 ans sur Emu Nova et depuis quasiment 10 ans si on remonte à mon ancien site perso et mon site consacré à Star Wars. Ah l&#8217;époque des .fr.st . Ce bagage m&#8217;a permis d&#8217;affiner mon écriture sur le Web mais je cherchais [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align:center"><img src='http://case.oncle-tom.net/images/2008/01/ecrit-web.jpg' alt='Couverture de l’écrit Web' /></p>
<p>Je rédige sur ce blog depuis bientôt 3 ans, depuis plus de 5 ans sur <a href="http://www.emunova.net/">Emu Nova</a> et depuis quasiment 10 ans si on remonte à mon <a href="http://web.archive.org/web/20010223234921/http://www.ifrance.com/the-jedi/" rel="nofollow">ancien site perso</a> et <a href="http://the-jedi.ifrance.com/starwars/" rel="nofollow">mon site consacré à Star Wars</a>. Ah l&#8217;époque des <a href="http://www.ulimit.com/">.fr.st</a> <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  .<br />
Ce bagage m&#8217;a permis d&#8217;affiner mon écriture sur le Web mais je cherchais à l&#8217;améliorer. C&#8217;est précisément à ce moment qu&#8217;<a href="http://affordance.typepad.com/mon_weblog/2007/08/ronez-est-bon.html">Olivier Ertzscheid offre la dernière préface issue de sa plume</a> et qu&#8217;<a href="http://blog.temesis.com/2007/10/08/261-ecrit-web">Élie Sloïm recommande un obscur livre</a> : <strong><a href="http://ronez.typepad.com/lecritweb/">l&#8217;écrit Web</a></strong>.</p>
<p>J&#8217;apprécie ces hommes, entre autre, pour leur bonne parole donc il n&#8217;en fallait pas davantage pour me procurer cet ouvrage.<br />
<span id="more-830"></span></p>
<h3>Pourquoi le lire ?</h3>
<p><strong>L&#8217;écrit Web se destine à toute personne désireuse de perfectionner son écriture</strong>. Et plus particulièrement l&#8217;écriture sur le Web.<br />
Combien d&#8217;entre vous ou parmi vos connaissances n&#8217;ont jamais dis que <q>lire sur un écran c&#8217;est fatiguant, les livre c&#8217;est mieux</q> ? Une bonne majorité. Et c&#8217;est bien parce qu&#8217;on ne lit pas de la même manière un livre qu&#8217;un écran d&#8217;ordinateur qu&#8217;on doit impérativement adapter son écriture à un lectorat volatile, contraint par la technologie et difficile à capter.</p>
<p>L&#8217;écrit Web dispense ses bonnes pratiques pour mieux écrire sur le Web en suivant 6 grands axes :</p>
<ol>
<li><strong>organiser l&#8217;information</strong></li>
<li><strong>structurer son texte</strong></li>
<li><strong>adapter son style</strong></li>
<li><strong>soigner les microcontenus</strong></li>
<li>penser indexation et référencement</li>
<li>bloguer</li>
</ol>
<p>J&#8217;ai volontairement grassé les 4 axes les plus intéressants. Ils m&#8217;ont permis de conceptualiser beaucoup de pratiques que j&#8217;appliquais inconsciemment &#8230; et d&#8217;en découvrir d&#8217;autres.<br />
L&#8217;idée générale n&#8217;est pas d&#8217;apprendre à écrire mais de <em>réapprendre</em>. Les raisons sont simples :</p>
<ul>
<li>on lit moins vite sur un écran d&#8217;ordinateur ;</li>
<li>on lit en profondeur et non à plat, grâce aux liens hypertextes (qui ralentissent aussi la lecture).</li>
</ul>
<h3>Organiser et structurer</h3>
<p>En partant de ces principes là, il faut donc songer à réorganiser ses textes voire ses sites Web d&#8217;une part pour faciliter la vie de ses lecteurs (occasionnels ou pas) mais aussi pour capter plus facilement leur attention. Que faites-vous devant un gros pavé de texte ou un site mal organisé ? Vous zappez. Alors pensez qu&#8217;on fait de même avec ce que vous écrivez <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  .</p>
<p>En fin de compte tout contenu, que ce soit une page ou du texte, s&#8217;organise en suivant le principe de la <strong>pyramide inversée</strong> à l&#8217;image du <a href="http://www.prweaver.fr/blog/images/google/golden-triangle.jpg">triangle d&#8217;or d&#8217;une page Web</a> si cher aux référenceurs. On commence par l&#8217;essentiel pour terminer sur du détail. Ça vaut également pour l&#8217;ordre des listes à afficher (chronologiques, géographiques, thématiques etc.).</p>
<p>Contrairement au papier où la lecture se fait à plat, on peut et on doit se servir de la navigation hypertexte pour désengorger les pavés de textes susceptibles de décourager la lecture. C&#8217;est ce qu&#8217;entend l&#8217;auteur par <em>navigation en profondeur</em>.<br />
Plutôt que d&#8217;accueillir un visiteur avec beaucoup de texte, mieux vaut donc plusieurs boites aux titres informatifs présentant le contenu en une poignée de lignes.</p>
<p>Autre conseil judicieux, respecter les 5W (ou <acronym title="">QQOQP</acronym> en français) :</p>
<ol>
<li><strong>Q</strong>ui ? (<em><strong>W</strong>ho</em>)</li>
<li><strong>Q</strong>uand ? (<em><strong>W</strong>hen</em>)</li>
<li><strong>O</strong>ù ? (<em><strong>W</strong>here</em>)</li>
<li><strong>Q</strong>uoi ? (<em><strong>W</strong>hat</em>)</li>
<li><strong>P</strong>ourquoi ? (<em><strong>W</strong>hy</em>)</li>
</ol>
<p>En y songeant lors de la rédaction et en respectant l&#8217;ordre, on se retrouve à construire des <strong>phrases informatives, bien structurées et plaisantes à lire</strong>. Cumulez avec la pyramide inversée et c&#8217;est le gros lot : votre lecteur sait tout et tout de suite.</p>
<h3>Comment mieux écrire pour le Web</h3>
<p>Maintenant que l&#8217;on connaît l&#8217;ordre de rédaction, écrivons mieux. Écrivons court en suivant les principes <q>1 idée par phrase</q> et <q>sujet, verbe, complément</q>. La lecture n&#8217;en est que fluidifiée. Si en plus il n&#8217;y a pas de fautes d&#8217;orthographe et que le style reste naturel, alors on touche presque au but.</p>
<p>Une des particularités du Web c&#8217;est la republication du contenu. On peut écrire un article pour un site mais le retrouver affiché sur d&#8217;autres sites, sur son téléphone portable, un agrégateur voire sur le même site mais sans son contenu (dans une liste par exemple).<br />
Cette particularité est une bonne raison pour <strong>donner des titres explicites</strong>. Ils pourront ainsi être compris déconnecté de leur contexte. <em>L&#8217;écrit Web</em> propose des exemples clairs et compréhensibles vous aideront à mieux en comprendre les subtilités.</p>
<p><strong>La construction des liens hypertexte</strong> était indispensable et mérite vraiment d&#8217;être lue par toute personne peu familière du référencement. Au-delà de cette pratique, ce sont tout simplement la compréhension et l&#8217;accessibilité qui sont en jeu. Pas de liens sur des <q>cliquez ici</q>, <q>ici</q> ou <q>là</q>. Je rajouterai même qu&#8217;il ne faut pas de liens ayant le même libellé pointant vers des <acronym title="Uniform Resource Locator">URL</acronym> différentes.<br />
Tout comme <a href="http://fr.opquast.com/bonnes-pratiques/fiche/167">le libellé du lien décrit le contenu vers lequel il pointe</a>, il vaut mieux englober plusieurs mots (plus facile à cliquer) et qu&#8217;ils soient soulignés surtout ! Combien de chartes graphiques je reçois sans aucun lien soulignés ; j&#8217;outrepasse systématiquement cette mauvaise pratique du graphiste, dans le contenu en tous cas.</p>
<h3>Conclusion</h3>
<p><strong>J&#8217;ai énormément apprécié et appris de ce livre</strong>, surtout les parties structurelles et organisationnelles. La pyramide inversée et les bonnes pratiques de rédaction sont des gros &laquo;&nbsp;plus&nbsp;&raquo; que j&#8217;ai rarement retrouvé ailleurs &#8230; ou tout du moins, pas concentré en si peu de pages.<br />
Il se lit très bien et rapidement. J&#8217;ai prévu de l&#8217;offrir à quelques collaborateurs rédacteurs qui seront susceptibles d&#8217;en tirer des leçons et ainsi améliorer leur qualité rédactionnelle. Un bon investissement.</p>
<p>J&#8217;ai en revanche moins appris (voire rien du tout) sur les 2 derniers chapitres concernant le référencement et les blogs. Étant donné la quantité d&#8217;informations à traiter sur ces sujets, le contenu du livre était forcément un peu léger mais pas dénué d&#8217;intérêt pour les néophytes.<br />
Ces parties étaient néanmoins plus techniques et à mon avis plus difficiles à comprendre pour des personnes survolant l&#8217;informatique.</p>
<p>Si vous ne saviez pas quoi faire de vos étrennes, que vous rédiger pour le Web et que le marketing vous intéresse, <strong>il y aura sûrement de bonnes idées à prendre</strong> <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<div style="text-align:center"><iframe src="http://rcm-fr.amazon.fr/e/cm?t=oncletom-21&#038;o=8&#038;p=8&#038;l=as1&#038;asins=2353070051&#038;fc1=000000&#038;IS2=1&#038;lt1=_blank&#038;lc1=0000FF&#038;bc1=000000&#038;bg1=FFFFFF&#038;f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe></div>]]></content:encoded>
			<wfw:commentRss>http://case.oncle-tom.net/2008/ecrit-web-traitement-information-sur-internet/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Transcender CSS : sublimez le design Web !</title>
		<link>http://case.oncle-tom.net/2007/critique-transcender-css-sublimez-design-web/</link>
		<comments>http://case.oncle-tom.net/2007/critique-transcender-css-sublimez-design-web/#comments</comments>
		<pubDate>Tue, 11 Dec 2007 07:00:59 +0000</pubDate>
		<dc:creator>Oncle Tom</dc:creator>
				<category><![CDATA[Développement Web]]></category>
		<category><![CDATA[Standards du Web]]></category>
		<category><![CDATA[andy clarke]]></category>
		<category><![CDATA[bonnes pratiques]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[eyrolles]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[microformats]]></category>
		<category><![CDATA[semantique]]></category>
		<category><![CDATA[standards]]></category>
		<category><![CDATA[xhtml]]></category>
		<guid isPermaLink="false">http://case.oncle-tom.net/2007/12/11/critique-transcender-css-sublimez-design-web/</guid>
		<description><![CDATA[Concevoir un site Internet dans les règles de l&#8217;art demande de multiples compétences : architecture technique, programmation, graphismes, intégration, ergonomie et du bon sens. Transcender CSS : sublimez le design Web ! s&#8217;intéresse à l&#8217;aspect esthétique au travers des CSS. Ou comment CSS, sémantique, intégration XHTML, microformats, sources d&#8217;inspirations et approche du design en grilles [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align:center"><img src='http://case.oncle-tom.net/images/2007/12/transcencer-css-couverture.jpg' alt='Couverture de Transcender CSS' /></p>
<p>Concevoir un site Internet dans les règles de l&#8217;art demande de multiples compétences : architecture technique, programmation, graphismes, intégration, ergonomie et du bon sens. <a href="http://www.transcendingcss.com/">Transcender <acronym title="Cascading Style Sheets">CSS</acronym> : sublimez le design Web !</a> s&#8217;intéresse à l&#8217;aspect esthétique au travers des <acronym title="Cascading Style Sheet"><acronym title="Cascading Style Sheets">CSS</acronym></acronym>.</p>
<p>Ou comment <acronym title="Cascading Style Sheets">CSS</acronym>, sémantique, intégration <acronym title="eXtensible HyperText Markup Language">XHTML</acronym>, microformats, sources d&#8217;inspirations et approche du design en grilles sont indispensables pour tirer partie du meilleur du Web.<br />
<span id="more-823"></span><br />
<strong>Transcender <acronym title="Cascading Style Sheets">CSS</acronym> : sublimez le design Web !</strong> est un ouvrage paru en France en août 2007 aux éditions Eyrolles ; en novembre 2006 dans le monde anglophone. Le livre est broché sur 360 pages ce qui en fait un livre imposant et propice à de riches illustrations d&#8217;excellente qualité. <strong>Andy Clarke</strong>, son auteur, s&#8217;est permis ce plaisir pour montrer au mieux qu&#8217;un site visuellement alléchant et bien structuré est un succès assuré pour capter l&#8217;attention du visiteur.</p>
<p><strong>Transcender <acronym title="Cascading Style Sheets">CSS</acronym></strong> ne s&#8217;adresse pas aux débutants puisqu&#8217;il ne s&#8217;attardera pas à vous expliquer les modèles de boîte ou les innombrables bugs d&#8217;Internet Explorer. Son contenu évolue toutefois en douceur de la facilité à la complexité ce qui le rend néanmoins abordable par des néophytes.</p>
<p style="text-align:center"><img src='http://case.oncle-tom.net/images/2007/12/transcencer-1-decouverte.jpg' alt='Extrait du chapitre “Découverte” de Transcender CSS' /></p>
<h3>Découverte</h3>
<p><q>Organiser les contenus avant tout</q>, tel est le credo de <strong>Transcender <acronym title="Cascading Style Sheets">CSS</acronym></strong>. C&#8217;est l&#8217;objectif majeur de cette première partie ; partie qui devrait être lue et transmise par tous les enseignants puisqu&#8217;elle explique <strong>comment on adapte le design au contenu</strong> et non l&#8217;inverse.</p>
<p>La mise en pratique du balisage <acronym title="eXtensible HyperText Markup Language">XHTML</acronym> est menée avec pédagogie. Vous apprendrez comment <strong>traduire une image en balises <acronym title="HyperText Markup Language">HTML</acronym></strong> de manière adaptée. Et un bon balisage c&#8217;est déjà la moitié du travail, l&#8217;autre restant son habillage. Il faut dissocier le contenu et la mise en page tout en n&#8217;oubliant pas un point essentiel : <strong>donner du sens au contenu</strong>.<br />
Il existe de nombreuses balises <acronym title="eXtensible HyperText Markup Language">XHTML</acronym> qui ont chacune leur propre signification : il faut les utiliser pour donner du sens. C&#8217;est non seulement important pour le référencement mais aussi pour ancrer les feuilles de style de manière propre et efficace. Nos professeurs de français nous ont appris à utiliser des verbes riches au lieu de verbes pauvres (être, avoir, aller, prendre etc.) alors faisons de même avec les balises <acronym title="eXtensible HyperText Markup Language">XHTML</acronym> :</p>
<ul>
<li><code>&lt;h1 à h6&gt;</code> pour afficher des titres hiérarchiques</li>
<li><code>&lt;p&gt;</code> pour des paragraphes de textes (les images sont du texte)</li>
<li><code>&lt;ul/ol/li&gt;</code> pour des listes de contenus</li>
<li><code>&lt;q/cite/blockquote&gt;</code> pour des citations de textes</li>
<li><code>&lt;pre/code/kbd&gt;</code> pour des saisies de texte au clavier ou des extraits de code</li>
<li><code>&lt;span/div&gt;</code> dans les autres cas ; <strong>ce sont des balises neutres vides de tout sens</strong></li>
</ul>
<p>Et d&#8217;aborder dans la foulée les <a href="http://case.oncle-tom.net/2007/07/31/semantique-microformats-internet/">microformats</a>. Ça a été ma première surprise car je ne m&#8217;attendais pas à les retrouver dans ce livre. Un duo de page les aborde et montre (un peu trop succinctement) que microformater du contenu n&#8217;a rien d&#8217;impossible, surtout quand la structure <acronym title="eXtensible HyperText Markup Language">XHTML</acronym> est bonne dès le départ.</p>
<p style="text-align:center"><img src='http://case.oncle-tom.net/images/2007/12/transcencer-2-processus.jpg' alt='Extrait du chapitre “Processus” de Transcender CSS' /></p>
<h3>Processus</h3>
<p><strong>Transcender <acronym title="Cascading Style Sheets">CSS</acronym></strong> s&#8217;intéresse à une approche industrielle du processus de création. Autrement dit : <strong>comment proposer efficacement une interface graphique à un client/décideur sans investir trop de temps</strong>. Nous savons tous qu&#8217;il y a toujours du changement, mineur mais surtout majeur, et qu&#8217;il est difficile de chambouler toute une feuille de style pour repositionner des éléments en conservant une cohérence.</p>
<p>C&#8217;est là que l&#8217;approche par la <a href="http://jasonsantamaria.com/archive/2004/05/24/grey_box_method.php">méthode de la boîte grise</a> prend tout son sens. Elle définit à l&#8217;aide de boîtes grises l&#8217;<strong>agencement des contenus de la page</strong>. Une boîte, un contenu et le charme opère. Les classiques <em>story-board</em> s&#8217;en approchent.<br />
Cette méthode peut se compléter à l&#8217;aide de symboles pour représenter des éléments annexes (textes, formulaires etc.) mais est surtout très facilement réalisable à partir d&#8217;un logiciel de présentation de type <a href="http://fr.openoffice.org/docs/impress.html">OpenOffice Impress</a> ou <a href="http://office.microsoft.com/fr-fr/powerpoint/">Microsoft Powerpoint</a>.</p>
<p>Une fois les bases de la structure mise en place, l&#8217;heure est venue de présenter une maquette statique. Autrement dit du <acronym title="HyperText Markup Language">HTML</acronym> et des <acronym title="Cascading Style Sheets">CSS</acronym>. Les ajustements resteront possibles puisque la première partie du livre a expliqué comment mettre en œuvre une structure pérenne et libre de mise en forme.<br />
<strong>Transcender <acronym title="Cascading Style Sheets">CSS</acronym></strong> recommande fortement, et je suis on ne peut plus d&#8217;accord, d&#8217;utiliser de manière poussée les <a href="http://case.oncle-tom.net/2007/08/07/facebook-rock-your-firefox/">extensions indispensables de Firefox</a> que sont <a href="https://addons.mozilla.org/fr/firefox/addon/1843">Firebug</a> et <a href="https://addons.mozilla.org/fr/firefox/addon/60">Web Developer</a>.<br />
J&#8217;y consacrerai un billet mais les éditeurs intégré modifiant à la volée votre page sont des <strong>outils précieux offrant des gains de développement mésestimés</strong>.</p>
<p>L&#8217;ouvrage poursuit sur des <strong>bonnes pratiques d&#8217;organisation de son code</strong> au sein même des feuilles de style. Des pratiques qui permettent de retrouver facilement ses petits sans avoir à chercher inutilement. Des pratiques qui suggèrent également de bien coder pour mieux réutiliser son travail dans d&#8217;autres projets. Si vous estimez votre travail, pourquoi le recommencer intégralement lors du projet suivant ?</p>
<p style="text-align:center"><img src='http://case.oncle-tom.net/images/2007/12/transcencer-3-inspiration.jpg' alt='Extrait du chapitre “Inspiration” de Transcender CSS' /></p>
<h3>Inspiration</h3>
<p>Cette troisième partie a été mon deuxième choc pendant la lecture. C&#8217;est la partie dans laquelle j&#8217;ai le plus appris car <strong>elle explore des aspects finalement peu abordés</strong> dans les ouvrages liés aux <acronym title="Cascading Style Sheets">CSS</acronym>.</p>
<p>J&#8217;ai commencé à mieux percevoir l&#8217;<a href="http://www.biologeek.com/journal/index.php/l-importance-du-rythme-vertical-en-design-css">intérêt et l&#8217;ingéniosité du rythme vertical</a> grâce à la <strong>divine proportion</strong>. Qui aurait cru que les maths se cachaient aussi subtilement dans le design Web ? Certainement pas moi. Retenez bien le nombre 1,62 (φ) car c&#8217;est le <a href="http://goldennumber.net/">nombre d&#8217;or</a> qui régira avec majesté les designs <acronym title="Cascading Style Sheets">CSS</acronym> les plus réussis.<br />
En français, il s&#8217;agit de la règle des tiers. Au lieu de choisir arbitrairement la taille des contenus, divisez les espaces en largeurs proportionnelles, elles-mêmes divisibles par 1,62 etc. <strong>La clarté en résultat est tout simplement saisissante</strong>.</p>
<p>Tout ceci nous amène à parler du <a href="http://subtraction.com/">design par grille</a>. Vous venez de suivre le lien ? Vous aurez probablement remarqué, consciemment ou pas, que la page est découpée en 8 colonnes de largeur identiques. Certains contenus occupent davantage de place mais devinez-quoi ? Cela correspond toujours à un certain nombre de colonnes, pas une largeur hasardeuse.<br />
Cette lubie n&#8217;est pas si excentrique que cela puisqu&#8217;elle nous provient directement des &#8230; journaux papiers. Qui aurait cru que le New York Times aurait pu inspirer les meilleurs designers du Web ? Et pourtant, on ne regardera plus les journaux de la même manière en observant leur structure à 6 ou 8 colonnes. Du nombre d&#8217;or en veux-tu en voilà.</p>
<p><strong>Andy Clarke</strong> termine ce chapitre sur les sources d&#8217;inspirations. Là non plus il n&#8217;y a pas de frein à l&#8217;imagination puisque <strong>tout est susceptible de catalyser créativité</strong> : architectures d&#8217;immeubles, coupures de presse, publicités de magazines, affiches diverses et variées. Vous l&#8217;aurez compris, <strong>tous les supports visuels</strong> facilement agrégeables. </p>
<p style="text-align:center"><img src='http://case.oncle-tom.net/images/2007/12/transcencer-4-transcendance.jpg' alt='Extrait du chapitre “Transcendance” de Transcender CSS' /></p>
<h3>Transcendance</h3>
<p>Cette partie termine en apothéose <strong>Transcender <acronym title="Cascading Style Sheets">CSS</acronym></strong>. Nous savons intégrer, nous savons structurer et nous savons imaginer alors maintenant il va falloir sublimer. Au prix du livre, ça serait dommage que notre côté créatif n&#8217;aie pas pris du galon <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Il n&#8217;y a d&#8217;ailleurs qu&#8217;un point sur lequel j&#8217;ai du mal à adhérer : cette <strong>adhésion au positionnement absolu/relatif et le dénigrement déguisé des flottants</strong>. Si les positionnements relatifs permettent de forcer le positionnement d&#8217;un bloc, c&#8217;est en revanche une solution beaucoup moins flexible dans la majorité des cas. Cette technique oblige, à mes yeux, de connaître les tailles des éléments à positionner. <strong>C&#8217;est parfois impossible</strong>, <em>surtout</em> si on veut pouvoir s&#8217;affranchir de largeurs fixes pour profiter de <strong>designs élastiques</strong>.<br />
<em>Je comprends néanmoins</em> que c&#8217;est une pratique appréciable pour les designs en grilles.</p>
<p>De très nombreux cas pratiques abondent dans cette partie. Ces exemples stimulent l&#8217;imagination avec des mises en pages (et des variantes) convaincantes, attractives et on ne peut plus déclinables dans le monde réel. Réel ou presque puisqu&#8217;ils se basent sur des navigateurs valides uniquement.<br />
C&#8217;est l&#8217;occasion d&#8217;aborder le génie de <strong>Dean Edwards</strong> avec <a href="http://dean.edwards.name/IE7/">IE7, la librairie Javascript ultime pour Internet Explorer</a>. Cette librairie permet de mettre à niveau <em>Internet Explorer 5</em> et <em>Internet Explorer 6</em> au niveau d&#8217;<em>Internet Explorer 7</em>. Ce n&#8217;est certes pas la panacée mais ce n&#8217;est plus l&#8217;enfer truffé d&#8217;incertitude que l&#8217;on haït tant.</p>
<p><strong>Transcender <acronym title="Cascading Style Sheets">CSS</acronym></strong> conclut sur une quarantaine de pages avec les <acronym title="Cascading Style Sheets">CSS</acronym> 3 en mêlant exemples pratiques et des comparaisons entre <acronym title="Cascading Style Sheets">CSS</acronym> 2 et <acronym title="Cascading Style Sheets">CSS</acronym> 3. J&#8217;ai été ravi de voir en pratique l&#8217;affichage multi-colonnes sans jouer avec les flottants, l&#8217;habillage d&#8217;un bloc avec plusieurs bordures en images (sans balises superflues) et surtout l&#8217;<strong>Advanced Layout</strong>.<br />
L&#8217;Advanced Layout est probablement l&#8217;avancée la plus attendue car elle permet de <strong>s&#8217;affranchir des positions absolues pour repositionner du contenu sur la page</strong> simplement. Et de retrouver les notions de grilles puisque des régions sont définies dans la feuille de style. Au designer de déplacer un contenu dans le flux sans le faire quitter.</p>
<p>Autant dire que les <strong>designs bâtis sur <acronym title="Cascading Style Sheets">CSS</acronym> 3 seront riches en créativité</strong>. Et ce n&#8217;est pas l&#8217;initiative <a href="http://www.gotocss3.com/">Goto CSS3</a> qui dira le contraire <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<h3>Conclusion</h3>
<p>Cet ouvrage m&#8217;a énormément plu pour 2 raisons :</p>
<ul>
<li>j&#8217;ai failli croire que je n&#8217;allais rien apprendre</li>
<li>le contenu est ouvert vers l&#8217;avenir</li>
</ul>
<p>En effet plutôt que de nous dire <strong>quoi faire</strong>, <strong>Transcender <acronym title="Cascading Style Sheets">CSS</acronym></strong> explique <strong>comment mieux faire</strong>. C&#8217;est véritablement appréciable car en lisant le livre on adapte son contenu à ses besoins. Ses pages sont généreusement émargées de conseils, d&#8217;astuces et de ressources qui enrichissent la perception de la conception du design Web. Je me suis d&#8217;ailleurs surpris à relire le livre mais uniquement ses marges de peur d&#8217;avoir raté un lien essentiel &#8230;</p>
<p>Vous le savez tout aussi bien que moi, le gros problème des ouvrages réside dans des cas pratiques difficilement réutilisables au quotidien. <strong>Transcender <acronym title="Cascading Style Sheets">CSS</acronym></strong> a l&#8217;intelligence de proposer des recettes pour <strong>mieux aborder la conception des sites</strong>, des sources d&#8217;inspiration jusqu&#8217;aux secrets du découpage en grilles. Qui eût cru que la presse papier avait encore de belles leçons à donner au Web ?</p>
<p><strong>Transcender <acronym title="Cascading Style Sheets">CSS</acronym></strong> ne livre pas clé en mains des solutions mais vous aidera à y voir plus clair, à comprendre pour mieux réagir. En soi c&#8217;est ce que j&#8217;attends d&#8217;un livre à 30€. <strong>Une valeur sure</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://case.oncle-tom.net/2007/critique-transcender-css-sublimez-design-web/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>CSS Summer Refresh 2007</title>
		<link>http://case.oncle-tom.net/2007/css-summer-refresh-2007/</link>
		<comments>http://case.oncle-tom.net/2007/css-summer-refresh-2007/#comments</comments>
		<pubDate>Wed, 15 Aug 2007 19:12:18 +0000</pubDate>
		<dc:creator>Oncle Tom</dc:creator>
				<category><![CDATA[Standards du Web]]></category>
		<category><![CDATA[alsacreations]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[xhtml]]></category>
		<guid isPermaLink="false">http://case.oncle-tom.net/2007/08/15/css-summer-refresh-2007/</guid>
		<description><![CDATA[Le CSS Summer Refresh 2007 est lancé. Ce concours met en scène CSS, HTML, accessibilité et standards du Web. Chaque site inscrit est tenu de proposer un site beau, propre et accessible pour recevoir un maximum de votes positifs. La refonte de ce blog était également secrètement motivée par la participation à ce concours. Je [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align:center"><img src='http://case.oncle-tom.net/images/2007/08/logo-alsacreations.gif' alt='Logo Alsacreations' /></p>
<p><a href="http://blog.alsacreations.com/2007/08/14/378-cascading-stylesheet-summer-refresh-2007-les-votes">Le <acronym title="Cascading Style Sheets">CSS</acronym> Summer Refresh 2007 est lancé</a>. Ce concours met en scène <acronym title="Cascading Style Sheet"><acronym title="Cascading Style Sheets">CSS</acronym></acronym>, <acronym title="HyperText Markup Language"><acronym title="HyperText Markup Language">HTML</acronym></acronym>, accessibilité et standards du Web. Chaque site inscrit est tenu de proposer un site beau, propre et accessible pour recevoir un maximum de votes positifs.</p>
<p><a href="http://case.oncle-tom.net/2007/07/27/blog-nouveau-look/">La refonte de ce blog</a> était également <em>secrètement</em> motivée par la participation à ce concours. Je ne brigue pas la première place, loin de là, mais c&#8217;est là une occasion de tirer un bout de la couverture vers moi, de montrer qu&#8217;une personne de plus sait intelligemment <strong>respecter les standards</strong> (<a href="http://openweb.eu.org/articles/respecter_semantique/">sémantique au lieu de divite</a>).</p>
<p>L&#8217;édition de cette année comporte presque 2 fois plus de participants que la première édition l&#8217;année passée, soit 72 candidats. En espérant que cette progression soit corrélée avec l&#8217;intérêt des standards du web <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://case.oncle-tom.net/2007/css-summer-refresh-2007/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Du bon usage de la sémantique : microformats et futur de la recherche sur Internet</title>
		<link>http://case.oncle-tom.net/2007/semantique-microformats-internet/</link>
		<comments>http://case.oncle-tom.net/2007/semantique-microformats-internet/#comments</comments>
		<pubDate>Tue, 31 Jul 2007 15:00:00 +0000</pubDate>
		<dc:creator>Oncle Tom</dc:creator>
				<category><![CDATA[Développement Web]]></category>
		<category><![CDATA[Standards du Web]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[futur]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[microformats]]></category>
		<category><![CDATA[semantique]]></category>
		<category><![CDATA[technorati]]></category>
		<category><![CDATA[xhtml]]></category>
		<guid isPermaLink="false">http://case.oncle-tom.net/1999/11/30/semantique-microformats-internet/</guid>
		<description><![CDATA[Pendant que la bataille fait rage du côté des sites Web 2.0 (mais c&#8217;est un des leviers de l&#8217;innovation sur Internet que l&#8217;on aime ou pas cette appellation), une révolution silencieuse se met en marche : le Web sémantique ou encore le Web 3.0. Jusqu&#8217;à présent, les moteurs de recherche (Google, Yahoo!, Windows Live Search, [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align:center"><img src='http://case.oncle-tom.net/images/2007/07/logo-microformats.gif' alt='Logo microformats' /></p>
<p>Pendant que la bataille fait rage du côté des sites <em>Web 2.0</em> (mais c&#8217;est un des leviers de l&#8217;innovation sur Internet que l&#8217;on aime ou pas cette appellation), <strong>une révolution silencieuse se met en marche</strong> : <a href="http://affordance.typepad.com/mon_weblog/2006/11/web_30_donnes_o.html">le Web sémantique ou encore le Web 3.0</a>.<br />
Jusqu&#8217;à présent, les moteurs de recherche (Google, Yahoo!, Windows Live Search, Exalead etc.) avaient pour défi le recensement du plus grand nombre de documents et des résultats de recherche pertinents.</p>
<p>S&#8217;il faudra bien évidemment <a href="http://fr.opquast.com/bonnes-pratiques/fiche/167">soigner l&#8217;intitulé des liens</a>, il faudra avant tout <strong>donner du sens à vos documents</strong>. C&#8217;est tout l&#8217;intérêt d&#8217;une <strong>programmation propre</strong>, <strong>respectant les standards</strong> et utilisant la <strong>sémantique à bon escient</strong>.</p>
<p>Les <a href="http://microformats.org">microformats</a> sont pour moi un élément essentiel qui accéléreront le processus et permettront de comprendre l&#8217;intérêt de la sémantique.<br />
<span id="more-714"></span></p>
<h3>Qu&#8217;est-ce que la sémantique ?</h3>
<p>La sémantique est loin d&#8217;être une invention de l&#8217;informatique puisque ce principe est à la base de toutes les langues du monde. <strong>La sémantique se réfère tout simplement au sens exprimés par les mots</strong>. Ce concept peut être à vrai dire être élargi à tout ce qui structure de l&#8217;information.</p>
<p>Plus concrètement encore, ouvrez un journal (Le Figaro, Libération ou même Voici) et prenez une page au hasard. <strong>Vous arriverez sans peine</strong> et surtout sans lire le texte <strong>à discerner les titres d&#8217;articles, leur résumé, leurs passages clés</strong> et leur texte à proprement parler. <em>Pourquoi</em> ? Parce que tous ces éléments sont présentés de manière différente, utilisent une police de caractère différente et ont une taille différente. Un titre d&#8217;article sera naturellement plus grand et plus épais que l&#8217;article ; le résumé sera situé sous le titre et sera espace du texte l&#8217;article en lui-même.</p>
<p>Et si vous ne prenez pas garde à la sémantique en elle-même c&#8217;est parce qu&#8217;elle silencieuse et logique : <strong>votre cerveau analyse lui-même ce qu&#8217;il faut faire car il comprend la signification de la disposition sans avoir à comprendre ce qui est écrit</strong>.</p>
<h3>Bien structurer une page <acronym title="HyperText Markup Language">HTML</acronym></h3>
<p>Récemment encore j&#8217;entendais de la bouche d&#8217;une agence Web <q>on fait des sites aux standards, avec des div et du <acronym title="Cascading Style Sheet"><acronym title="Cascading Style Sheets">CSS</acronym></acronym></q>. C&#8217;est déjà bien de passer au validateur mais c&#8217;est encore mieux si on produit du code significatif.<br />
Voici deux exemples de code qui contiennent les <em>mêmes textes</em> et qui respectent le standard <acronym title="eXtensible HyperText Markup Language">(X)<acronym title="HyperText Markup Language">HTML</acronym></acronym>.</p>
<p><strong>Méthode sémantiquement correcte</strong> :</p>
<pre><code class="html">&lt;div id=&quot;introduction&quot;&gt;
	&lt;h2&gt;Site valide <acronym title="HyperText Markup Language">HTML</acronym>&lt;/h2&gt;
	&lt;p&gt;Cette portion de code a un code <acronym title="HyperText Markup Language">HTML</acronym> valide.&lt;/p&gt;
	&lt;p class=&quot;suite&quot;&gt;&lt;a href=&quot;./edito&quot;&gt;Lire la suite de l'édito&lt;/a&gt;&lt;/p&gt;
&lt;div&gt;</code></pre>
<p><strong>Méthode sémantiquement <em>in</em>correcte</strong> :</p>
<pre><code class="html">&lt;div id=&quot;page_haut&quot;&gt;
	&lt;div class=&quot;titre rouge&quot;&gt;Site valide <acronym title="HyperText Markup Language">HTML</acronym>&lt;/div&gt;
	&lt;div class=&quot;texte&quot;&gt;Cette portion de code a un code <acronym title="HyperText Markup Language">HTML</acronym> valide.&lt;/div&gt;
	&lt;div class=&quot;texte petit&quot;&gt;&lt;a href=&quot;./?page=12345&quot;&gt;Lire la suite de l'édito&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;</code></pre>
<p>Sans avoir à donner un cours de balisage, voici les principes auxquels se tenir :</p>
<ul>
<li><strong>utilisez les balises <acronym title="HyperText Markup Language">HTML</acronym> au bon endroit et à bon escient</strong>. Ne mettez pas un <code>div</code> (bloc neutre) si un <code>p</code> (paragraphe) ou un <code>h<em>n</em></code> (titre hiérarchique) peuvent faire l&#8217;affaire. De même pour les listes, n&#8217;utilisez pas de <code>div</code> (bloc neutre) si une <code>ul</code>/<code>ol</code> (liste désordonnée, liste ordonnée) ou une <code>dl</code> (liste de définition) sont mieux adaptées.</li>
<li><strong>nommez les <em>classes</em> (.classe) et les <em>id</em> (#id) en fonction de ce qu&#8217;ils représentent</strong> et non en fonction de l&#8217;apparence qu&#8217;ils devraient avoir.</li>
</ul>
<p>Et c&#8217;est tout ! Cette <strong>petite touche de rigueur assurera une pérennité certaine</strong> dans vos développements. Sans compter la <em>facilité à intégrer</em> les microformats par la suite.</p>
<h3>Et les microformats dans tout ça ?</h3>
<p>Justement les microformats parlons-en. Si de prime abord sémantique et microformats peuvent paraitre sans grand rapport, <em>ces concepts sont pourtant intimement liés</em>. En utilisant les attributs <code>class</code> et <code>rel</code> (pour les liens hypertextes) dans une logique bien précise, <strong>on décrit le contenu et sa nature</strong> (titre de billet, auteur, date d&#8217;un évènement etc.).</p>
<p>Pour faire simple :</p>
<ul>
<li><strong>les microformats sont faciles à intégrer</strong> si le contenu est déjà bien structuré</li>
<li><strong>les microformats aident à bien structurer</strong> le contenu : qu&#8217;il soit bien structuré ou pas, les recommandations vous guideront dans cette voie</li>
<li><strong>les microformats sont déjà reconnus par des moteurs de recherche</strong> spécialisés (<a href="http://technorati.com/">Technorati</a>) et plus officieusement par les moteurs de recherche classiques (<a href="http://www.google.com">Google</a>, <a href="http://search.yahoo.com">Yahoo!</a> etc.). Pas convaincu(e) ? Voici la <a href="http://microformats.org/wiki/implementations-fr">liste non-exhaustive des sites comprenant les microformats</a>.</li>
</ul>
<p>Pour bien compléter ces paroles, je vous recommande cette <a href="http://fredericdevillamil.com/presentations/2006/que-sont-les-microformats/index.html">excellente introduction aux microformats</a>.</p>
<h3>Intérêt supplémentaire des microformats</h3>
<p>Ce qui est intéressant avec les microformats c&#8217;est que l&#8217;on peut les utiliser sans avoir derrière un site Web super hi-tech en <em>Web 46.0 full Ajax</em>. <strong>Une page <acronym title="HyperText Markup Language">HTML</acronym> suffit</strong>. J&#8217;ai justement utilisé les microformats la première fois lorsque j&#8217;ai voulu refaire mon CV en me disant qu&#8217;en <acronym title="HyperText Markup Language">HTML</acronym> ça serait sympa. Il existe fort heureusement un <a href="http://microformats.org/wiki/hresume">microformat hResume</a> réutilisant lui-même les microformats <a href="http://microformats.org/wiki/hcard">hCard</a> (carte de visite) et <a href="http://microformats.org/wiki/hcalendar">hCalendar</a> (calendrier et évènements).<br />
Outre l&#8217;aspect purement technique de cet exercice, <strong>ce CV me sert maintenant de carte de visite</strong> (en utilisant le <a href="http://technorati.com/contacts/">service <em>contacts</em> de Technorati</a>) en plus de pouvoir <strong>être réutilisé sur des sites de recherche d&#8217;emploi</strong>.</p>
<p>Mis à part une sémantisation de votre contenu, voici les <strong>bénéfices à retirer d&#8217;un microformatage</strong> :</p>
<ul>
<li><strong>extraction et republication du contenu à la volée</strong> : des services Web permettent d&#8217;aggréger une page pour la transformer en flux Atom voire même de créer des cartes de visites instantanément</li>
<li><strong>les navigateurs Web intégreront eux aussi les microformats</strong> pour faciliter la navigation des utilisateurs : installez l&#8217;<a href="https://addons.mozilla.org/fr/firefox/addon/4106">extension Operator pour Firefox</a>, revenez sur cette page et améliorez votre expérience de navigation</li>
<li><strong>les microformats sont au coeur de l&#8217;Internet de demain</strong> et c&#8217;est aujourd&#8217;hui qu&#8217;il faut y travailler</li>
</ul>
<h3>La sémantique, moteur des futures recherches sur Internet</h3>
<p>Même si à l&#8217;heure actuelle on peut considérer que les microformats aident au référencement, ce n&#8217;est pas explicitement mentionné. Mais l&#8217;avenir est à la recherche sémantique afin d&#8217;affiner les résultats et de mieux répondre aux requêtes. C&#8217;est un énorme défi puisqu&#8217;entre indexer du contenu et comprendre ce qu&#8217;il dit, il y a tout un fossé. Cette recherche sémantique s&#8217;appliquera aussi bien au texte qu&#8217;aux ressources audio (musique, interview etc.) et vidéo.<br />
<a href="http://arstechnica.com/articles/culture/hakia-semantic-search-set-to-music.ars">Hakia s&#8217;intéresse à la recherche sémantique musicale</a> tandis que d&#8217;un autre côté, <a href="http://altsearchengines.com/2007/07/30/what-is-a-search-engine/">la recherche sémantique est considérée comme étant une fonctionnalité nécessaire pour le futur de la recherche sur Internet</a>.</p>
<p><ins><strong>Edition du 31/07 à 19h10</strong> : <a href="http://googlemapsapi.blogspot.com/2007/06/microformats-in-google-maps.html">Google Maps intègre désormais le microformat hCard</a>.</ins></p>]]></content:encoded>
			<wfw:commentRss>http://case.oncle-tom.net/2007/semantique-microformats-internet/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>

