<?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; html</title>
	<atom:link href="http://case.oncle-tom.net/tag/html/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>Industrialiser l&#8217;artisanat de l&#8217;intégration Web, retour sur l&#8217;atelier</title>
		<link>http://case.oncle-tom.net/2010/industrialiser-lartisanat-de-lintegration-web-retour-sur-latelier/</link>
		<comments>http://case.oncle-tom.net/2010/industrialiser-lartisanat-de-lintegration-web-retour-sur-latelier/#comments</comments>
		<pubDate>Thu, 18 Nov 2010 16:35:19 +0000</pubDate>
		<dc:creator>Oncle Tom</dc:creator>
				<category><![CDATA[Standards du Web]]></category>
		<category><![CDATA[atelier]]></category>
		<category><![CDATA[bonnes pratiques]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[interaction design]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[livre blanc]]></category>
		<category><![CDATA[opquast]]></category>
		<category><![CDATA[parisweb]]></category>
		<category><![CDATA[temesis]]></category>
		<guid isPermaLink="false">http://case.oncle-tom.net/?p=17740</guid>
		<description><![CDATA[Industrialiser l'artisanat ? N'est-ce pas là un sacrilège ? Je partage ma vision et mon retour sur cet atelier. Pratique si vous n'aviez pas eu l'occasion d'y assister. D'ailleurs, il sera possible de contribuer, 2 livrables étant à l'étude.]]></description>
			<content:encoded><![CDATA[<p>De l&#8217;eau a coulé sous les ponts depuis <a href="http://paris-web.fr/">Paris Web</a>, et surtout, depuis que j&#8217;ai animé mon atelier technique intitulé &laquo;&nbsp;Industrialiser l&#8217;artisanat de l&#8217;intégration Web&nbsp;&raquo; (titre amélioré sur une judicieuse remarque de <a href="http://frank.taillandier.free.fr/">Frank Taillandier</a> &#8230; comme quoi on peut être végétarien et avoir de bonnes idées <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> ).</p>
<p><span id="more-17740"></span></p>
<h3>La présentation</h3>
<p style="text-align: center;"><iframe src="http://www.slideshare.net/slideshow/embed_code/5459902" width="400" height="337" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe><br/><br/></p>
<p>J&#8217;ai <strong>complètement changé d&#8217;axe d&#8217;approche</strong> entre l&#8217;appel à proposition de Paris Web et le jour venu. J&#8217;ai retourné le sujet dans tous les sens pour arriver à transmettre le message de la manière la plus adaptée qu&#8217;il soit au public. Parce qu&#8217;il est vraiment <a href="http://thinkvitamin.com/user-science/understanding-your-audience/">essentiel de comprendre votre auditoire</a>.</p>
<p>De ce fait, j&#8217;ai préféré laisser tomber l&#8217;atelier magistral où j&#8217;aurais été le seul à partager. L&#8217;approche choisie fût celle de l&#8217;<a href="http://en.wikipedia.org/wiki/Interaction_design"><em>interaction design</em></a> (IxD) ; notion découverte la veille pendant la conférence de <a href="http://stephanietroeth.com/">Stéphanie Troeth</a>. L&#8217;idée étant de <strong>construire ensemble</strong> le corps de l&#8217;atelier, de produire ensemble la réflexion et d&#8217;en arriver à des conclusions plus rapidement.</p>
<p>Le plus amusant fût qu&#8217;<strong>on arrivait aux mêmes conclusions</strong>, et que les <em>slides </em>suivant la phase de <em>design</em> répondaient aux questions nouvellement créées.</p>
<p>Pour l&#8217;expérience, et le résultat produit, j&#8217;en suis satisfait <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<h3>Déroulement de l&#8217;atelier</h3>
<p>L&#8217;atelier consistait à passer en revue 3 des étapes du développement <em>frontend</em> : l&#8217;intégration <acronym title="HyperText Markup Language">HTML</acronym>, l&#8217;habillage <acronym title="Cascading Style Sheets">CSS</acronym> et les interactions JavaScript. Chaque étape se divisait en 4 composants de travail :</p>
<ul>
<li>Production / réalisation</li>
<li>Organisation / équipe</li>
<li>Documentation</li>
<li>Tests</li>
</ul>
<p>Pour chacun de ces composants, toute personne dans la salle pouvait suggérer une <strong>bonne pratique</strong>, une <strong>mauvaise pratique</strong> ou un <strong>outil</strong>. Cela s&#8217;est matérialisé avec un tableau blanc découpé en 4 zones, dans lesquelles on collait des post-it.</p>
<p>Pour la petite histoire, n&#8217;ayant pas pensé à acheter les post-il avant d&#8217;arriver à Paris, je me suis rabattu sur le premier choix venu, en me basant sur la connaissance du terrain de <a href="http://larlet.fr/">David Larlet</a> : Loisirs &amp; Créations du Bercy Village.</p>
<p>C&#8217;est ainsi que je me retrouvais avec 200 post-it en forme de cœur,  de maison ou de fleur.</p>
<p><img class="aligncenter size-medium wp-image-17834" title="Post-it" src="http://media.oncle-tom.net/images/2010/11/post-it-paris-web-300x179.jpg" alt="" width="300" height="179" /></p>
<p>Un peu de gaieté pour un atelier sérieux et créatif.<br />
D&#8217;ailleurs, parce qu&#8217;on n&#8217;a pas bossé pour rien, et que Paris Web c&#8217;est aussi la création en plus de <em>share the love</em>, voici la carte mentale de notre heure de travail :</p>
<iframe width="600" height="400" frameborder="0" scrolling="no" class="mindmeister-presentation mindmeister-presentation-id-65925228" src="http://www.mindmeister.com/maps/public_map_shell/65925228?width=600&height=400&zoom=0"></iframe>
<h3>Constats</h3>
<p>Mon premier constat, en regardant la carte mentale, c&#8217;est qu&#8217;on a quand même réussi à produire un <strong>bon nombre d&#8217;éléments</strong> en 1 heure, avec un public qui n&#8217;était pas préparé et dans une configuration de salle de classe, remplie de surcroît.<br />
La logistique s&#8217;est organisée d&#8217;elle-même, avec des contributions diverses pour ramasser les post-it, leur circulation et même la modération.</p>
<p>Quant au contenu en lui-même, plusieurs remarques s&#8217;imposent :</p>
<ul>
<li>la très grande majorité des contributions concernaient la <strong>production</strong> (c&#8217;était flagrant, face au tableau)</li>
<li>par extension, il y a peu d&#8217;éléments de documentation et de tests et dans une moindre mesure, peu de travail en équipe/organisationnel (à part les classiques <em>versionning</em>)</li>
<li>en production de <acronym title="Cascading Style Sheets">CSS</acronym> et de JavaScript, le<strong> nombre de mauvaises pratique équivaut ou dépasse les bonnes pratiques</strong></li>
</ul>
<p>En une phrase et une seule : le développement frontend, en tous cas représentatif de la population présente dans la salle, <strong>travaille dans son coin</strong>, avec ses méthodes, peu adaptables à d&#8217;autres cadres.</p>
<h3>Et la suite ?</h3>
<p>Mon avis c&#8217;est que si la production n&#8217;est pas forcément industrialisable au sens où on ne peut que difficilement automatiser la production du code, en revanche on peut <strong>automatiser les tests et la documentation</strong>, voire certains aspects d&#8217;organisation (diffusion automatique des <em>commits</em>, rapports etc.).</p>
<p>Une de mes hypothèses est que si le caractère individuel du travail est si marqué, c&#8217;est que nombre des méthodes, astuces et outils de travail sont basés sur des <strong>avis subjectifs</strong>. Pas étonnant que les réactions sur le mot <em>industrialisation</em> soient si virulentes et chargées d&#8217;émotions.</p>
<p>C&#8217;est une des raisons pour laquelle j&#8217;ai proposé en conclusion d&#8217;<strong>aller au-delà de nos jugements personnels</strong> pour formaliser des bonnes et mauvaises pratiques, que l&#8217;on applique ensuite à son projet si l&#8217;on est concerné. Un mélange des <em><a href="http://www.bbc.co.uk/guidelines/futuremedia/technical/css.shtml">guidelines</a></em><a href="http://www.bbc.co.uk/guidelines/futuremedia/technical/css.shtml"> BBC</a> et des bonnes pratiques <a href="http://www.opquast.com/">Opquast</a> en somme.</p>
<p>Ce que j&#8217;aimerais, c&#8217;est produire 2 livrables :</p>
<ul>
<li>une <em><strong>checklist</strong></em><strong> de bonnes pratiques</strong> de développement <em>frontend</em></li>
<li>un <strong>livre blanc du développement <em>frontend</em></strong>, comprenant en plus le processus de dialogue entre acteurs, pendant les phases projet</li>
</ul>
<p>Ces livrables seront <em>Open Source</em>, libres, gratuits et créés collectivement, parce qu&#8217;on a tous des terrains d&#8217;expertise différents et complémentaires.</p>
<div id="attachment_17833" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-17833" title="Délire de post-it" src="http://media.oncle-tom.net/images/2010/11/post-it-delire-300x179.jpg" alt="" width="300" height="179" /><p class="wp-caption-text">Share the love <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p></div>
<p>Je ne manquerai pas de vous tenir informé des avancées de ces projets, qui me tiennent à coeur.<br />
Je ne saurais que trop remercier les participants, présents lors de l&#8217;atelier Paris Web, ceux qui apporteront leur pierre à l &#8216;édifice (même si ça ne concerne qu&#8217;un changement de virgule dans une phrase) et ceux qui apporteront leur soutien, <a href="http://temesis.com/">Elie Sloïm</a> en tête. Il propose en effet de mettre à disposition la plate-forme Opquast en tant qu&#8217;outil de contribution.</p>
<p>Une idée qu&#8217;elle est bonne.</p>]]></content:encoded>
			<wfw:commentRss>http://case.oncle-tom.net/2010/industrialiser-lartisanat-de-lintegration-web-retour-sur-latelier/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Paris Web 2010 : l&#8217;âge de raison</title>
		<link>http://case.oncle-tom.net/2010/paris-web-2010-age-de-raison/</link>
		<comments>http://case.oncle-tom.net/2010/paris-web-2010-age-de-raison/#comments</comments>
		<pubDate>Thu, 28 Oct 2010 16:25:22 +0000</pubDate>
		<dc:creator>Oncle Tom</dc:creator>
				<category><![CDATA[Accessibilité]]></category>
		<category><![CDATA[Développement Web]]></category>
		<category><![CDATA[Standards du Web]]></category>
		<category><![CDATA[a11y]]></category>
		<category><![CDATA[accessibilité]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[grilles]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[innovation]]></category>
		<category><![CDATA[parisweb]]></category>
		<category><![CDATA[qualité]]></category>
		<category><![CDATA[typographie]]></category>
		<category><![CDATA[usability]]></category>
		<category><![CDATA[ux]]></category>
		<category><![CDATA[webdesign]]></category>
		<category><![CDATA[yahoo]]></category>
		<guid isPermaLink="false">http://case.oncle-tom.net/?p=17772</guid>
		<description><![CDATA[Paris Web, rien que d'y penser j'ai déjà envie d'y retourner. Condensé de l'édition 2010, où l'on parlera de typographie, d'innovation, d'architecture, d'outils et d'expérience utilisateur.
Paris Web, c'est LE cycle de conférence sur le webdesign, la qualité et l'accessibilité en France.]]></description>
			<content:encoded><![CDATA[<p><a href="http://paris-web.fr/">Paris Web</a>. Déjà 2 semaines que cet évènement est passé. 1 an à attendre à chaque fois : ça fait long mais au final, l&#8217;attente passe vite. Plus on se rapproche de la prochaine édition, plus le temps file.</p>
<p>Cette année, j&#8217;ai décidé de participer à toutes les conférences qui ne sont pas au cœur de mon activité quotidienne, au sens <em>production</em>. En gros, j&#8217;ai voulu laisser tomber tous les <em>buzzwords</em> et me concentrer sur des compétences et connaissances périphériques à activité. Satisfaire ma curiosité.</p>
<p>Je suis donc arrivé à Paris Web sans avoir regardé le programme, en décidant entre chaque pause le titre de la conférence que j&#8217;allais inscrire sur mon carnet de notes.</p>
<p><a href="http://case.oncle-tom.net/images/2010/09/logotype-paris-web.png"><img class="aligncenter size-medium wp-image-17530" title="Paris-Web" src="http://case.oncle-tom.net/images/2010/09/logotype-paris-web-300x203.png" alt="" width="300" height="203" /></a></p>
<p><span id="more-17772"></span></p>
<h3>L&#8217;ouverture par l&#8217;architecture</h3>
<p>Ce n&#8217;est pas tout à fait vrai : je savais quelle était la <em>première conférence</em> à laquelle j&#8217;allais assister. Graine semée il y a 2 ans, dans le retour en métro de Paris Web 2008. J&#8217;apprenais que <a href="http://arkhi.org/">Fabien Basmaison</a> partait 1 année entière en Chine (ou ailleurs en Asie ?).<br />
Absent de Paris Web 2009, il propose &laquo;&nbsp;<a href="http://www.paris-web.fr/2010/programme/le-web-lespace-public.php">Espace construit et espace virtuel, un retour vers le futur ?</a>&laquo;&nbsp; en guise d&#8217;introduction.</p>
<p>Ou comment ne pas parler de Web mais d&#8217;architecture, de construction et d&#8217;alliage fonctionnel/esthétique.</p>
<p>Il citait d&#8217;ailleurs une phrase que j&#8217;apprécie beaucoup : <q>l&#8217;architecture, c&#8217;est savoir changer d&#8217;échelle, de point de vue</q>. Je me plais à appliquer ce <em>moto</em> au quotidien mais au fond, n&#8217;est-ce pas là une chose essentielle pour toute personne travaillant dans le Web ? Savoir sortir le nez du cambouis, observer ce qui l&#8217;entoure, s&#8217;en inspirer et replonger/changer d&#8217;angle d&#8217;attaque.</p>
<p>L&#8217;architecture, c&#8217;est également <strong>réduire les obstacles</strong> pour obtenir davantage de fluidité, et augmenter le rendement. C&#8217;est la raison d&#8217;être des méthodes agiles, comme <a href="http://www.scrum.org/">scrum</a>. Parce que notre défi, c&#8217;est <a href="http://blog.akei.com/post/1415889011/choisir-son-metier-arreter-de-le-faire-subir">réussir un projet sur une base qui est tout sauf industrialisée</a> (voire industrialisable).</p>
<p>L&#8217;architecture, c&#8217;est <strong>travailler sur un patrimoine</strong>, ensemble, en utilisant l&#8217;existant (cf. <a href="#title-interface">Let&#8217;s Interface!</a>). On ne peut créer un ouvrage sans tenir compte de l&#8217;existant, de l&#8217;environnement ou même de l&#8217;intérêt même du-dit ouvrage. On ne peut décemment pas concevoir un site Web optimisé pour Internet Explorer 6 et une résolution de 1024&#215;748, ce serait juste omettre/nier l&#8217;existence du Web tout entier.</p>
<p>Paris Web est un moment où l&#8217;<strong>on s&#8217;ouvre l&#8217;esprit</strong> : cette conférence était programmée au bon moment, avec le bon intervenant mais surtout avec le bon contenu. Quelque chose qui n&#8217;était pas axée sur le Web. Celui qui replace le Web dans son contexte, celui de l&#8217;inspiration.</p>
<p><strong>Conseil livre</strong> :  de Le Corbusier.</p>
<h3 id="title-interface">Let&#8217;s Interface!</h3>
<p><a href="http://www.wait-till-i.com">Christian Heilmann</a> me fascine littéralement. Il a le don d&#8217;arriver à insuffler ce qu&#8217;il recherche : du fun et de l&#8217;intelligence.<br />
Si je devais résumer cette conférence en une phrase, ça serait la sienne : <q>le Web est un outil, utilisons-le</q>. On ne construit pas pour le Web, on construit <em>avec</em> le Web.</p>
<p>C&#8217;est la transcription parfaite de l&#8217;architecture vers le Web. Tenir compte de l&#8217;existant, des outils, pour construire les siens et arrêter de réinventer la roue.</p>
<p><strong>Les interfaces devraient être des outils faciles à utiliser</strong>, et à comprendre. De l&#8217;accessibilité au sens large en somme.<br />
De quoi insister auprès des clients de ne pas perdre de vue l&#8217;objectif principal ? L&#8217;utilisateur ?</p>
<h3>L&#8217;accessibilité dans une chaîne de production Web</h3>
<p>Quel meilleur moyen de ne pas perdre ses objectifs de vue en effectuant un contrôle qualité, matérialisé par une vérification de l&#8217;accessibilité à <em>toutes</em> les étapes du processus, plutôt qu&#8217;en livraison finale. C&#8217;est le point de vue de <a href="http://twitter.com/dboudreau">Denis Boudreau</a> et de <a href="http://accessibiliteweb.com/">Vincent François</a>.</p>
<p>Pourquoi la fin de chaîne pose problème ? Tout simplement parce qu&#8217;il est (souvent) déjà trop tard, que le coût des modifications en est multiplié mais surtout, c&#8217;est beaucoup plus simple d&#8217;intégrer ça dès le départ.<br />
Si on en revient à l&#8217;architecture, c&#8217;est comme si on mettait des fenêtres à 2 mètres de hauteur et qu&#8217;on se rendait compte à la livraison de la maison que ce n&#8217;est pas accessible car trop en hauteur pour les habitants. Vous vous voyez casser le mur et descendre la fenêtre ?</p>
<p>Leur <a href="http://accessibiliteweb.com/presentations/2010/parisweb/accessibilite-chaine-production/">présentation de l&#8217;accessibilité dans une chaine de production Web</a>, navigable au clavier et à la souris, est équivoque et découpe ces différentes phases au sein du projet :</p>
<ul>
<li>Analyse</li>
<li>Architecture</li>
<li>Ergonomie</li>
<li>Graphisme</li>
<li>Prototypage</li>
<li>Rédaction</li>
<li>Développement</li>
<li>Contrôle qualité</li>
</ul>
<p>Le liant entre ces phases étant la gestion de projet, menée de concert entre la maîtrise d&#8217;oeuvre et la maîtrise d&#8217;ouvrage. Une personne a même très justement souligné qu&#8217;il faudrait ajouter une nouvelle dernière étape, la livraison/maintenance. Pour s&#8217;assurer notamment qu&#8217;à l&#8217;usage, lors de la contribution ou des évolutions de l&#8217;application, l&#8217;accessibilité soit maintenue à niveau.</p>
<p><a href="http://www.flickr.com/photos/nicolas-hoizey/5107972863/"><img class="aligncenter" title="Paris Web Marketing Fail" src="http://farm2.static.flickr.com/1328/5107972863_754420e883.jpg" alt="" width="500" height="333" /></a></p>
<h3>Innover de 9 à 5</h3>
<p>Je m&#8217;intéresse à l&#8217;innovation, pas seulement à la théorie mais également à sa mise en pratique, depuis que je vois passer sous mon nez des projets intéressants mais qui oublient toujours une chose. Les usagers (tiens, on y revient). Un site est réalisé par une entreprise, pour accomplir un but (besoin marketing, nouveau produit ou autre) mais &#8230; la praticité et l&#8217;intérêt de l&#8217;usager, bien souvent, y sont absent ou trop peu représenté.</p>
<p>J&#8217;y reviendrai dans d&#8217;autres articles, par le biais de mes lectures et de mes projets.</p>
<p>Toujours est-il, j&#8217;ai découvert une autre personne de <a href="http://pheromone.ca/">Phéromone</a>, <a href="http://ot.zoy.org/">Olivier Théreaux</a>. Il a présenté de manière méthodique les différents types d&#8217;innovations possibles (<em>business</em>, <em>design</em>, incrémentales, radicales). Leur mélange provoque de l&#8217;efficacité, une amélioration des processus, de nouveaux produits, une découverte de nouveaux besoins et j&#8217;en passe.</p>
<p>Le travail de l&#8217;innovation, ce n&#8217;est pas seulement l&#8217;acquisition de l&#8217;idée : c&#8217;est l<strong>&#8216;art de la faire fructifier</strong>, de la mettre concrètement en oeuvre.<br />
En ce sens, il cite Scott Berkun : <q>les gens ne veulent pas innover, ils veulent avoir innové</q>. N&#8217;avez-vous jamais entendu de client qui vous demandait une application iPhone sans savoir ce qu&#8217;ils voulaient y mettre ? La réponse est dans la citation.</p>
<p>Innover, c&#8217;est <strong>apprendre à échouer</strong>. C&#8217;est admettre que des fautes seront commises et que la réussite se mesure également en terme de ressources : elles doivent être à la mesure des ambitions. L&#8217;amplitude entre les 2 augmente les risques d&#8217;échec.</p>
<p>Olivier soulignait aussi un détail essentiel, qu&#8217;on oublie un peu et qui pourtant caractérise tellement notre métier, notre univers : c&#8217;est la <strong>culture hacker</strong>. <em>Hacker</em> au sens bidouilleur. Celui qui parvient à ses fins en se servant d&#8217;outils à disposition. LE Web est à notre disposition.</p>
<p>Encore une fois, les personnes les plus fascinantes ne sont pas celles qui apportent de nouvelles choses ou qui sont les &laquo;&nbsp;meilleures&nbsp;&raquo;. Mais celles qui apportent un regard différent, de par leur(s) culture(s), leur expérience et leur vécu.</p>
<p><strong>Conseil lecture</strong> :  de Scott Berkun.</p>
<h3>Journey over Destination: creating an effective framework with UX tools</h3>
<p>J&#8217;ai malheureusement été moins attentif sur la conférence de <a href="http://unadorned.org/">Stéphanie Troeth</a> (projet client à régler, à croire que chaque année j&#8217;y coupe pas ;-(). Néanmoins, à la lecture de ses <em>slides</em> pendant sa présentation, une chose m&#8217;avait frappé : tout est clair, limpide et extrêmement synthétique. Sans le son, il y avait de quoi apprendre. C&#8217;est d&#8217;ailleurs comme ça que je me suis aperçu que la méthode employée lors de mon atelier technique (<a href="http://case.oncle-tom.net/2010/paris-web-industrialiser-integration-html/">dont vous pouvez lire l&#8217;annonce </a>; le détail et résumé arrivent) était en fait de l&#8217;<em>interactive design</em>.</p>
<p>L&#8217;expérience utilisateur repose avant tout sur la conception, du site, de l&#8217;outil ou de je ne sais quoi (le concept s&#8217;applique à tout, pas seulement au Web). Encore une fois, l&#8217;<strong>agilité du processus</strong>, la fragmentation des tâches et les contraintes (limites de temps, de fonctionnalités etc.) sont un élément essentiel à la qualité du résultat final.</p>
<p>L&#8217;exemple le plus parlant est celui du curseur : tirer d&#8217;un côté enlève du poids à l&#8217;extrême opposé. De même que parmi la trinité temps, argent, fonctionnalité, on ne peut en conserver que 2. Lesquels choisiriez-vous au moment d&#8217;acter un choix ? Que diraient vos clients ?</p>
<p>Notre conversation en <em>off</em> m&#8217;a confirmé mon intuition : sa présentation représente des mois de réfléxion, au fil de l&#8217;eau. Tiens, ce n&#8217;est pas justement le concept de l&#8217;innovation ? <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p><a href="http://www.flickr.com/photos/mauriz/5107657136/"><img class="aligncenter" title="Amphithéâtre IBM à Paris Web" src="http://farm2.static.flickr.com/1139/5107657136_4c4de67512.jpg" alt="" width="500" height="333" /></a></p>
<h3>La typographie comme outil de design</h3>
<p>Encore un petit nouveau à Paris Web : <a href="http://www.davidrault.com/">David Rault</a>. Encore un globetrotter, à croire que ça va devenir un élément déterminant sur le CV <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>La typographie, de mémoire, est un sujet qui a été peu abordé à Paris Web, en tous cas pas lors de conférences. Je m&#8217;y connaissais assez peu et le moins que je puisse en dire, c&#8217;est que je suis resté le regard rivé sur la scène, à noter avec délectation cet enseignement, fort souvent un choix par défaut. <q>On va utiliser quelle typo ? Oh bof, de l&#8217;Arial ou du Verdana</q>.</p>
<p>Quelques explications sur la classification typographique, et hop, tout devient plus clair quant aux termes serif, sans-serif, linéales, humanes, garaldes, romaines etc. Je ne paraphraserai pas cette classification.</p>
<p>En revanche, retour à l&#8217;architecture, c&#8217;est tout le <strong>bagage culturel</strong> que les polices de caractères véhiculent. Sans oublier leur base historique et sociale. Je n&#8217;imaginais pas utiliser sur un ordinateur une police datant du XVI<sup>ème</sup> siècle, considérée comme parfaite.</p>
<p>En considérant que le Web, c&#8217;est 95% de typographie (ce que l&#8217;on lit), ce n&#8217;est clairement pas le choix banal que l&#8217;on a l&#8217;habitude de faire, ou de subir. Je rajoute cette notion aux indispensables à réunir pour réussir un projet, par le biais de la communication écrite.</p>
<p><strong>Conseil lecture</strong> : de David Rault.</p>
<h3>La macrotypographie de la page Web</h3>
<p>On reste dans l&#8217;univers de la communication visuelle avec <a href="http://lasoeurkaramazov.net/">Anne-Sophie Fradier</a>. L&#8217;occasion d&#8217;ailleurs de me rendre compte que j&#8217;avais déjà lu son blog auparavant, et que je le découvre juste maintenant, à l&#8217;occasion de la rédaction de cet article <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' />  Le Web est petit et on se connait plus facilement en avatar en fin de compte.</p>
<p>Macrotypographie vous dites ? Il s&#8217;agit de concevoir la typographie au niveau du paragraphe, de la page, par le biais de grilles, de colonnes, leur ratio etc. C&#8217;est forcément une personne bien puisque les grilles, elle adore et en mange au petit-déjeuner mais surtout, a eu une réponse extra à ma question (oui j&#8217;ai posé beaucoup de questions, je sais <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> ) : <q>les grilles apportent-elles une contrainte qui brident la créativité ?</q><br />
Réponse : non, bien au contraire, <strong>il faut des contraintes pour développer la créativité</strong>. Elles agissent comme un guide.</p>
<p>Le rapport permanent du livre au Web était très intéressant. On a tendance à opposer print au Web, moi le premier &#8230; et finalement, elle considère que la page Web se rapproche du <em>volumen</em> (les rouleaux de papier, utilisé pour la Torah notamment).<br />
Plus amusant encore, tout ce qui concerne la typographie a déjà été inventé &#8230; par les moines. Enluminures, marges, blocs de lecture etc.</p>
<p>Un <strong>regard rafraîchissant</strong> de plus sur la manière de concevoir et d&#8217;architecturer nos contenus, nos sites et nos applications.</p>
<p><strong>Conseil lecture</strong> : de Josef Muller-Brockmann.</p>
<div class="wp-caption aligncenter" style="width: 510px"><a href="http://www.flickr.com/photos/nicolas-hoizey/5108562588/"><img class="  " title="La croix au rouge français" src="http://farm2.static.flickr.com/1153/5108562588_7a9d7e59d8.jpg" alt="" width="500" height="333" /></a><p class="wp-caption-text">La crois au rouge français</p></div>
<h3>Conclusion</h3>
<p>Alors, pourquoi avoir titré mon article l&#8217;âge de la raison ? Parce qu&#8217;en plus de partager notre amour du Web, les intervenants de Paris Web, les organisateurs, mais aussi les participants, ont réussi à démontrer qu&#8217;on n&#8217;était plus que dans la diffusion d&#8217;informations à coup de slides.<br />
Non, on était dans la <strong>création</strong>.</p>
<p>L&#8217;âge de la raison parce que finalement, le fond de <strong>cette édition était basé sur les réflexions</strong>. Qui sommes-nous ? Comment valoriser nos compétences ? Comment dialoguer avec le client ? Comment dire que la qualité ce n&#8217;est pas une option (pas la nôtre) ? Comment faire un site Web standard et un site Web mobile en un seul développement ?</p>
<p>L&#8217;âge de la raison car les <strong>processus </strong>de création et les <strong>enjeux métier</strong> étaient au centre des réflexion. Et qu&#8217;on n&#8217;a d&#8217;ailleurs toujours pas une réponse claire. L&#8217;argumentation va s&#8217;étoffer avec le temps, je n&#8217;en doute pas.</p>
<p>Je remercie chaleureusement les organisateurs d&#8217;avoir si bien <strong>réussi </strong>la programmation. Cette matinée typographie est un vent de fraîcheur qu&#8217;il faut continuer à pousser, pour aborder le <em>webdesign</em> d&#8217;un angle peu pratiqué jusqu&#8217;à présent.<br />
L&#8217;expérience de la <a href="http://fr.wikipedia.org/wiki/V%C3%A9lotypie">vélotypie </a>et de la traduction simultanée (et les 2 en même temps) était excellente. Je découvrais l&#8217;effervescence d&#8217;un organisateur des RMLL se demandant comment mettre en place un tel système.</p>
<p>Je terminerai malgré tout par quelques critiques, car on peut toujours progresser :</p>
<ul>
<li>HTML5 c&#8217;est sympa, il faut aller vers du concret, au-delà des balises section, header etc. La démo de Paul Rouget cassait la baraque car elle <strong>apportait ce qu&#8217;il manquait</strong> jusque là : la concrétisation au-delà du <em>slide</em> ;</li>
<li>le <strong>mobile </strong>a quasiment disparu de la programmation alors que l&#8217;an dernier, on sentait que c&#8217;était le sujet de toutes les interrogations</li>
<li>les conférences sur le <strong>contenu</strong>, leur rédaction me font trop souvent penser à des cours de référencement naturel de bas étage (je suis dur, j&#8217;assume)</li>
</ul>
<p>Encore une fois, rendez-vous de pris pour l&#8217;année prochaine, à savoir en 2011 &#8230; à moins qu&#8217;un <strong>Sud Web</strong> se glisse entre temps dans le calendrier ? <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p><strong>Remarque</strong> : j&#8217;oublie plein de choses, plein de personnes (Ryan, toute la <em>famille</em> avec Frank, N1k0 etc.) &#8230; dur dur de tout caser en 1 billet ;-(</p>]]></content:encoded>
			<wfw:commentRss>http://case.oncle-tom.net/2010/paris-web-2010-age-de-raison/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Paris-Web 2010 : industrialiser l&#8217;artisanat de l&#8217;intégration HTML</title>
		<link>http://case.oncle-tom.net/2010/paris-web-industrialiser-integration-html/</link>
		<comments>http://case.oncle-tom.net/2010/paris-web-industrialiser-integration-html/#comments</comments>
		<pubDate>Mon, 20 Sep 2010 09:00:04 +0000</pubDate>
		<dc:creator>Oncle Tom</dc:creator>
				<category><![CDATA[Développement Web]]></category>
		<category><![CDATA[Standards du Web]]></category>
		<category><![CDATA[atelier]]></category>
		<category><![CDATA[blueprint]]></category>
		<category><![CDATA[bonnes pratiques]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[discussion]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[industrialisation]]></category>
		<category><![CDATA[oocss]]></category>
		<category><![CDATA[optimisation]]></category>
		<category><![CDATA[parisweb]]></category>
		<category><![CDATA[performances]]></category>
		<guid isPermaLink="false">http://case.oncle-tom.net/?p=17526</guid>
		<description><![CDATA[Je présente un nouvel atelier Paris-Web : "industrialiser l'artisanat de l'intégration HTML" le samedi 16 octobre 2010 à Télécom Paris. Présentation de l'atelier, pourquoi j'ai décidé de l'animer et comment il va s'organiser.
Une chose est sure : on va tous réfléchir ensemble !]]></description>
			<content:encoded><![CDATA[<p>J&#8217;ai le plaisir d&#8217;animer un atelier technique à <a href="http://www.paris-web.fr">Paris-Web</a> pour la troisième année consécutive. Mon premier atelier, en 2008, traitait des <strong>frameworks <acronym title="Cascading Style Sheets">CSS</acronym></strong> ; et en 2009, des capacités de Gears et d&#8217;HTML5 pour <strong>construire un site Web consultable hors-ligne</strong>.</p>
<p>Je reviens aux sources et à mon grand dada avec l&#8217;<strong>intégration <acronym title="HyperText Markup Language">HTML</acronym></strong> au sens large du terme. J&#8217;ai choisi d&#8217;intituler cet atelier : <a href="http://www.paris-web.fr/2010/programme/industrialiser-lartisanat-de-lintegration-html.php">industrialiser l&#8217;artisanat de l&#8217;intégration <acronym title="HyperText Markup Language">HTML</acronym></a>. Rendez-vous le samedi 16 octobre 2010 à 10h50 dans les locaux de <a href="http://www.telecom-paristech.fr/">Télécom Paris</a> pour en discuter &#8230; et maintenant, pour le préparer et en dessiner les contours.</p>
<p><img class="aligncenter size-medium wp-image-17530" title="Paris-Web" src="http://case.oncle-tom.net/images/2010/09/logotype-paris-web-300x203.png" alt="" width="300" height="203" /></p>
<p><span id="more-17526"></span></p>
<h3>Origine de l&#8217;atelier</h3>
<p>Juste après l&#8217;édition 2009 de Paris-Web, je me demandais sur quoi je pourrais parler en conférence ou en atelier. Cette manifestation a le mérite d&#8217;attirer des orateurs de qualité &#8230; et ce n&#8217;est pas évident de monter sur scène en se disant : que pourrais-je apporter au public, qui ne soit pas de la redite et suscite autant d&#8217;intérêt qu&#8217;une <a href="http://stephanietroeth.com/">Stéphanie Troeth</a>, <a href="http://www.la-grange.net/">Karl Dubost</a> ou <a href="http://icant.co.uk/">Christian Heilmann</a>.</p>
<p>Et là j&#8217;ai lu <a href="http://blog.temesis.com/post/2009/12/15/Ma-lettre-a-papa-ParisWeb">la lettre au papa Paris-Web d&#8217;Elie Sloïm</a>. J&#8217;ai de suite pensé à un sujet lié à l&#8217;<strong>intégration <acronym title="HyperText Markup Language">HTML</acronym></strong>. Cette spécialité connaît une effervescence d&#8217;outils depuis 2008 (<em>frameworks</em> <acronym title="Cascading Style Sheets">CSS</acronym>, pré-processeurs <acronym title="Cascading Style Sheets">CSS</acronym> et performances Web) &#8230; pourtant les méthodes de travail restent toujours très liées au développeur, à son tempérament et à ses connaissances d&#8217;outils capables d&#8217;améliorer la productivité. Quelque chose de tout sauf normalisé, industrialisé.</p>
<p>Comme il s&#8217;agit également d&#8217;une pratique ayant du mal à accepter les changements &#8211; je me souviens encore des réticences liées aux <em>frameworks</em>, alors que dans tout langage de programmation ces outils sont perçus comme du pain béni &#8211; je me suis dis qu&#8217;il y avait quelque chose à faire.</p>
<h3>Les axes initiaux de l&#8217;atelier</h3>
<p>En préparant l&#8217;appel à propositions de Paris-Web, j&#8217;avais convenu que cet atelier devrait tenter de répondre aux objectifs suivants :</p>
<ul>
<li>dresser un état de l&#8217;art de l&#8217;intégration <acronym title="HyperText Markup Language">HTML</acronym></li>
<li>offrir une large tribune à l&#8217;audience, notamment en partageant ses  propres retours d&#8217;expérience</li>
<li>déterminer ce dont on dispose et ce dont on manque en terme  d&#8217;outillage</li>
</ul>
<p>Par extension, je souhaitais répondre (au moins) à ces questions :</p>
<ul>
<li>comment bâtir des <acronym title="Cascading Style Sheets">CSS</acronym> indépendantes et réutilisables ?</li>
<li>quand et comment utiliser un préprocesseur <acronym title="Cascading Style Sheets">CSS</acronym> ?</li>
<li>comment dialoguer avec le graphiste ?</li>
<li>comment dialoguer avec le développeur ?</li>
<li>comment détecter les régressions et assurer une qualité de code en  <acronym title="Cascading Style Sheets">CSS</acronym> ?</li>
</ul>
<p>J&#8217;ai également repris l&#8217;historique des précédents Paris-Web pour voir que de précédents ateliers s&#8217;étaient déjà penchés sur la question de la chaine d&#8217;intégration. D&#8217;où mon souhait de ne pas forcément réinventer la roue.</p>
<p>Pour autant, les objectifs tout comme les questions ne sont pas figées dans le marbre. Cet article est également là pour <strong>capter vos avis et vos remarques</strong>, pour ajuster cela avant le jour de l&#8217;atelier.</p>
<h3>Discuter, échanger, et créer</h3>
<p>Enfin, mon évolution personnelle au long de cette année 2010 et certaines paroles de <a href="http://larlet.fr/">David Larlet</a> résonnaient dans ma tête.<br />
Un sujet de cette importance ne peut pas être magistral. Pourquoi ? Parce que tous les intégrateurs rencontrent une <strong>variété de conditions de travail différentes</strong>, et qu&#8217;il serait d&#8217;autant plus difficile d&#8217;obtenir un consensus en prodiguant cet atelier de manière magistrale.</p>
<p>D&#8217;où l&#8217;idée d&#8217;introduire l&#8217;atelier par un <strong>bref résumé de mes retours d&#8217;expérience</strong> sur les <em>frameworks</em> (existants, ou créés pour le besoin), les pré-processeurs <acronym title="Cascading Style Sheets">CSS</acronym>, leur combinaison ainsi que l&#8217;application de la philosophie <a href="http://oocss.org/">Object Oriented <acronym title="Cascading Style Sheets">CSS</acronym></a>. Quelque chose comme 10/15 minutes maximum.</p>
<p>Le reste du temps serait réparti de manière équitable sur chacune des questions, et <strong>animé sous forme de discussion</strong>. Chaque participant répondrait (<em>via</em> des post-it, je les fournirai <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> ) par 1 ou plusieurs réponses, positives et négatives. En gros, ce qu&#8217;il faut faire, et ce qu&#8217;il ne faut pas faire.</p>
<p>Cette collecte en <em>live</em> des post-it, affichés au tableau, permettrait de dresser une <strong>cartographie des bonnes et mauvaises pratiques</strong>, des actions à mener et dont il faut se méfier.</p>
<p>A défaut de parler d&#8217;une industrialisation vidant l&#8217;intégration <acronym title="HyperText Markup Language">HTML</acronym> de son côté artisanal, on aurait une excellente occasion pour tous se poser ensemble les bonnes questions, et <strong>repartir avec des réponses et des idées pleins la tête</strong>.</p>
<h3>Conclusion</h3>
<p>Bref, si le sujet de l&#8217;intégration <acronym title="HyperText Markup Language">HTML</acronym> vous préoccupe, est au centre de vos intérêts et que vous souhaitez en améliorer sa pratique professionnelle (pour une meilleure reconnaissance de celle-ci ?), je vous invite à la fois à venir à l&#8217;atelier technique du samedi (<a href="http://inscriptions.paris-web.fr/">il reste quelques places ; ça ne coûte que 22€</a>) et à réagir en commentaires. Je ferai mon possible pour adapter l&#8217;animation de l&#8217;atelier à vos problématiques et questionnements.</p>
<p>Cet atelier serait ainsi à l&#8217;image de Paris-Web : une <strong>grande discussion conviviale, constructive et enrichissante</strong>.<br />
L&#8217;idée sera ensuite de concrétiser ces échanges soit par un ensemble de billets de blogs soit, si la matière le permet, en <strong>livre blanc</strong>.</p>
<p>Ne me demandez pas ce que je prévois pour 2011, je n&#8217;en ai aucune idée &#8230; <em>pour l&#8217;instant</em> <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/2010/paris-web-industrialiser-integration-html/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>RMLL 2010 : c&#8217;est parti !</title>
		<link>http://case.oncle-tom.net/2010/rmll-2010/</link>
		<comments>http://case.oncle-tom.net/2010/rmll-2010/#comments</comments>
		<pubDate>Tue, 06 Jul 2010 14:50:32 +0000</pubDate>
		<dc:creator>Oncle Tom</dc:creator>
				<category><![CDATA[Développement Web]]></category>
		<category><![CDATA[accessibilité]]></category>
		<category><![CDATA[bordeaux]]></category>
		<category><![CDATA[conférences]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[ezpublish]]></category>
		<category><![CDATA[ftth]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[logiciels libres]]></category>
		<category><![CDATA[opendata]]></category>
		<category><![CDATA[openstreetmap]]></category>
		<category><![CDATA[rmll]]></category>
		<category><![CDATA[symfony]]></category>
		<category><![CDATA[typo3]]></category>
		<guid isPermaLink="false">http://case.oncle-tom.net/?p=14602</guid>
		<description><![CDATA[Les RMLL commencent ! Petit aperçu du programme de la session Internet, que je co-organise avec <a href="http://prendreuncafe.com">Nicolas Perriault</a>.]]></description>
			<content:encoded><![CDATA[<p>La <a href="http://2010.rmll.info">onzième édition des Rencontres Mondiales du Logiciel Libre</a> (<em>Libre Software Meeting</em> pour les anglophones) vient de débuter à Bordeaux. Ce cycle de conférences signe son retour dans le terroir puisque sa toute première édition s&#8217;est déroulée à Bordeaux, 10 ans plus tôt.</p>
<p>Je vous parlais en janvier de l&#8217;appel à conférence. Celui-ci a battu les records : 35 conférences, 1 table ronde et plus d&#8217;une demi-journée de conférences en anglais pour la session Internet, que je co-organise avec <a href="http://prendreuncafe.com">Nicolas Perriault</a>.</p>
<p><a href="http://case.oncle-tom.net/images/2010/07/logo-11es_fr.png"><img class="aligncenter size-full wp-image-14603" title="RMLL 2010" src="http://case.oncle-tom.net/images/2010/07/logo-11es_fr.png" alt="Logo RMLL 2010" width="308" height="85" /></a></p>
<h3><span id="more-14602"></span>La session Internet</h3>
<p>Toutes les conférences liées à la thématique de l&#8217;Internet et du libre se déroulent sur 3 jours, du <strong>mercredi 7 juillet</strong> (demain) jusqu&#8217;au <strong>vendredi 8 juillet</strong>. Ça se passe dans l&#8217;<strong>amphitéâtre A</strong> (150 places) de l&#8217;<a href="http://www.enseirb.fr/">ENSEIRB-MATMECA</a>, à 2 pas de l&#8217;arrêt de tramway B « Arts et Métiers ». Tout se trouve sur le <a href="http://2010.rmll.info/spip.php?page=osm&amp;lang=fr">plan détaillé de l&#8217;évènement</a>, en particulier dans la rubrique <a href="http://2010.rmll.info/Venir-en-tramway.html">déplacement en tramway</a>.</p>
<p>La philosophie consiste à réduire les durées de conférence sur des durées de 20 minutes, pour offrir un message clair, sans longueur ainsi qu&#8217;une variété d&#8217;intervenants et de sujets.<br />
Coïncidence de la vie et organisation aidant, on a réussi à caser ça en demi-journées thématiques.<br />
Cela offre d&#8217;une part une vision claire du programme mais aussi, si vous avez une attente bien précise, une (ou plusieurs) demi-journées suffisent pour y répondre.</p>
<p>On aurait aimé en faire plus &#8230; difficile en 3 jours, déjà intenses.</p>
<h4>Frameworks et tests</h4>
<ul>
<li>Date : mercredi matin</li>
<li>6 conférences</li>
</ul>
<p>Où l&#8217;on parlera de <em>frameworks</em> de développement avec Django et Symfony2, de tests avec Selenium et une avant-première Temesis.<br />
SPIP sera de la partie pour inaugurer ce bal technique, servant autant à du site Web que de l&#8217;applicatif ou de la création d&#8217;<acronym title="Application Programming Interface">API</acronym>.</p>
<h4><acronym title="HyperText Markup Language">HTML</acronym>, <acronym title="Cascading Style Sheets">CSS</acronym> et accessibilité</h4>
<ul>
<li>Date : mercredi après-midi</li>
<li>8 conférences</li>
</ul>
<p>On habille le Web avec des présentations d&#8217;HTML5, CSS3 mais également des outils d&#8217;amélioration de qualité (comme KBAccess, ou Tanaguru).<br />
La journée se terminera sur 2 conférences clé : l&#8217;intégration accessible de vidéos et l&#8217;<a href="http://2010.rmll.info/spip.php?article409&amp;lang=fr">accessibilité pour les non-lecteur</a>s. Oui, les non-lecteurs <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<h4><acronym title="Content Management System">CMS</acronym> et gestion de contenu</h4>
<ul>
<li>Date : jeudi matin</li>
<li>6 conférences</li>
</ul>
<p>eZ Publish sera à l&#8217;honneur, aux côtés d&#8217;Automne, Typo3 et Joomla. Piwigo illustrera la gestion de contenu de photos et d&#8217;images.<br />
L&#8217;orientation est données aux cas pratiques : intégration de recherche à facette, optimisation de performances.</p>
<h4>Internet I/O</h4>
<ul>
<li>Date : jeudi après-midi</li>
<li>6 conférences</li>
</ul>
<p>À la fin de la demi-journée, vous saurez ce qu&#8217;il faut pour devenir votre propre hébergeur, de l&#8217;infrastructure matérielle jusqu&#8217;à l&#8217;accès Internet maitrisé.<br />
Une autre partie des conférences est dédiée à des outils d&#8217;extraction et d&#8217;accès à Internet, autrement qu&#8217;avec un navigateur Web.</p>
<h4>Matinée anglophone</h4>
<ul>
<li>Date : vendredi matin</li>
<li>3 conférences</li>
</ul>
<p>C&#8217;est un peu plus fourre-tout : <acronym title="Content Management System">CMS</acronym> Java avec <a href="http://lenya.apache.org/">Apache Lenya</a> (présenté par des membres de la fondation Apache), tests de montée en charge et outil de traduction collaborative par <a href="http://automattic.com/">Automattic</a>.</p>
<h4>Collaboratif, traduction et Open Data</h4>
<ul>
<li>Date : vendredi après-midi</li>
<li>6 conférences</li>
<li>1 table ronde</li>
</ul>
<p>Le clou du spectacle : traduction automatisée, réseau social décentralisé, collaborer à OpenStreetMap, gérer une communauté Open Source, Open Data et moteur de recherche décentralisé.</p>
<p>On terminera sur une table ronde dédiée à <strong>Open Data</strong>, afin de décrypter ensemble tous les intérêts à libérer ses données, créer de la richesse et apporter l&#8217;innovation jusqu&#8217;à la société civile ; un levier de croissance trop facilement oublié.</p>
<h3>On se voit sur place !</h3>
<p>Je serai sur place pendant toute la durée de la session Internet donc n&#8217;hésitez pas à nous interpeler, Nicolas ou moi.<br />
Le programme continue également en soirée, en aparté :</p>
<ul>
<li>mardi soir à <a href="http://www.laparcelle.fr">la Parcelle</a></li>
<li><a href="http://blog.temesis.com/post/2010/07/06/RMLL-2010-Bordeaux-c-est-parti">mercredi soir chez Élie</a> − c&#8217;est celui qui est plus beau en vrai que sur le Net, et c&#8217;est pas un <em>self-service</em></li>
<li><a href="http://blog.temesis.com/post/2010/07/06/RMLL-2010-Bordeaux-c-est-parti"></a>jeudi soir au <a href="http://2010.rmll.info/Le-repas-du-Libre.html">repas du libre</a></li>
<li>vendredi soir <a href="http://www.gotoresto.com/la-guinguette-chez-alriq">chez Alriq</a></li>
</ul>
<p>Vous pourrez y croiser entre autre (et dans le désordre) <a href="http://prendreuncafe.com">Nicolas Perriault</a>, <a href="http://ideance.net/">Sébastien Delorme</a>, <a href="http://david.larlet.fr/">David Larlet</a>, <a href="http://www.yab-le-o.com/">Mickaël Hoareau</a>, <a href="http://romy.tetue.net/">Romy Tetue</a>, <a href="http://temesis.com">Élie Sloïm</a>, <a href="http://frank.taillandier.free.fr/">Frank Taillandier</a>, <a href="http://www.denderello.com/">Dennis Benkert</a> et moi-même.</p>
<p>Je remercierai quand même mon employeur, <a href="http://www.clever-age.com/actualites/dernieres-actualites/autres-actualites/clever-age-participe-a-la-onzieme-edition-des-rencontres-mondiales-du-logiciel-libre.html">Clever Age, qui prend intégralement en charge mes jours de participation à cet évènement</a>. Participer à l&#8217;écosystème du libre sans se soucier de l&#8217;aspect financier est un confort très appréciable.</p>
<p>Pour un Internet libre !</p>]]></content:encoded>
			<wfw:commentRss>http://case.oncle-tom.net/2010/rmll-2010/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Everything You Know About CSS Is Wrong!</title>
		<link>http://case.oncle-tom.net/2009/everything-you-know-about-css-is-wrong/</link>
		<comments>http://case.oncle-tom.net/2009/everything-you-know-about-css-is-wrong/#comments</comments>
		<pubDate>Tue, 20 Jan 2009 06:00:44 +0000</pubDate>
		<dc:creator>Oncle Tom</dc:creator>
				<category><![CDATA[Développement Web]]></category>
		<category><![CDATA[Standards du Web]]></category>
		<category><![CDATA[critique]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[grilles]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[livre]]></category>
		<category><![CDATA[sitepoint]]></category>
		<guid isPermaLink="false">http://case.oncle-tom.net/?p=1287</guid>
		<description><![CDATA[En bon français : &#171;&#160;tout ce que vous savez des CSS est faux !&#160;&#187;. L&#8217;heure n&#8217;est pas à la déprime mais à la lecture de cet ouvrage par le site SitePoint. Il est écrit en anglais par Rachel Andrew et Kevin Yank. Ce titre fortement accrocheur à la limite de l&#8217;injure annonce la couleur : [...]]]></description>
			<content:encoded><![CDATA[<p>En bon français : &laquo;&nbsp;<strong>tout ce que vous savez des <acronym title="Cascading Style Sheets">CSS</acronym> est faux</strong> !&nbsp;&raquo;. L&#8217;heure n&#8217;est pas à la déprime mais à la lecture de cet ouvrage par le site <a href="http://sitepoint.com">SitePoint</a>. Il est écrit en anglais par Rachel Andrew et Kevin Yank.</p>
<p><img class="aligncenter size-medium wp-image-1288" title="Everything You Know About CSS Is Wrong" src="http://case.oncle-tom.net/images/2009/01/everything-you-know-about-css-is-wrong-300x300.jpg" alt="Everything You Know About CSS Is Wrong" width="300" height="300" /></p>
<p>Ce titre fortement accrocheur à la limite de l&#8217;injure annonce la couleur : l&#8217;ouvrage est censé vous expliquer que les techniques employées aujourd&#8217;hui ne sont que du bricolage et qu&#8217;on peut faire la même chose en plus propre et plus simple.</p>
<p>En route pour cette saine lecture &#8230; ou pas.<br />
<span id="more-1287"></span></p>
<h3>Chapitrage</h3>
<p><a href="http://www.sitepoint.com/books/csswrong1/">Everything You Know About <acronym title="Cascading Style Sheets">CSS</acronym> Is Wrong!</a> est découpé en 5 chapitres. Cela représente un volume d&#8217;une petite centaine de pages. En voici la structure :</p>
<ol>
<li>The Problem with <acronym title="Cascading Style Sheets">CSS</acronym></li>
<li><acronym title="Cascading Style Sheets">CSS</acronym> Table Layout</li>
<li><acronym title="Cascading Style Sheets">CSS</acronym> Table Solutions</li>
<li>Considering Older Browsers</li>
<li>The Road Ahead</li>
</ol>
<p>Si vous commencez à flairer le mauvais plan, vous n&#8217;avez pas tout à fait tort.</p>
<h3>display: table-cell au lieu de float/clear/margin</h3>
<p>Tel serait le <em>credo</em> de l&#8217;ouvrage. C&#8217;est en teneur ce qui y est distillé, ni plus ni moins.</p>
<p>Quand on y repense, aujourd&#8217;hui <strong>on utilise vraiment des techniques à la noix</strong> pour positionner les flux, pour imiter des colonnes de taille égale. Tout ça pourquoi ? Parce que le navigateur dominant du marché s&#8217;appelle Internet Explorer 6/7 et ne permet pas d&#8217;utiliser l&#8217;attribut <acronym title="Cascading Style Sheets">CSS</acronym> display: table-cell.<br />
Son utilité ? Donner à l&#8217;élément concerné le comportement d&#8217;un tableau : des cellules de hauteur égale et des colonnes notamment.</p>
<p>Les 2 premiers chapitres sont à ce titre très démonstratifs puisque simplement, on apprend à construire un habillage classique à 2 colonnes avec cette technique. Mais, à mon avis, le chapitre 3 est entièrement à jeter.</p>
<p>Le livre commence en nous expliquant qu&#8217;on utilise des techniques de barbare pour le rendu. Sauf que celles proposées pour palier aux lacunes de cette mise en page en tableaux ne valent pas beaucoup mieux : pas de solution générique possible, simulation de colspan et rowspan laborieuse &#8230; si j&#8217;ai été convaincu par la présentation en grille, je l&#8217;ai en revanche moins été par ces solutions proposées.</p>
<p>Le chapitre 4 explique avec plein de sous-entendus qu&#8217;Internet Explorer 6 et 7 &#8230; ben il faut arrêter. En tous cas pour utiliser le display: table-cell. Je pense que même sans cette technique on avait déjà envie de les balancer mais bon. Ça sera un argument de plus pour prôner cette solution.</p>
<p>Le chapitre 5, <em>The Road Ahead</em>, propose une présentation maintes fois vue et revue de l&#8217;avenir avec CSS3. Ça fait office de piqûre de rappel concernant le module <em>templates</em> et  <em>grille</em> notamment.</p>
<div id="attachment_1289" class="wp-caption aligncenter" style="width: 459px"><a href="http://css.alsacreations.com/xmedia/exemples/display/txt-2cols.png"><img class="size-full wp-image-1289" title="Texte 2 colonnes avec display: table-cell" src="http://case.oncle-tom.net/images/2009/01/txt-2cols.png" alt="Texte 2 colonnes avec display: table-cell" width="449" height="251" /></a><p class="wp-caption-text">Texte 2 colonnes avec display: table-cell</p></div>
<h3>Pourquoi je ne vous recommande pas son achat ?</h3>
<p>Parce qu&#8217;au final on se trouve face à <em>gros article</em> doublé d&#8217;un titre bon pour écouler des exemplaires. Il aurait pu s&#8217;appeler &laquo;&nbsp;<em>comment présenter en grille sans tableaux et sans flottants</em>&nbsp;&raquo; par exemple.</p>
<p>Sans vouloir relancer le fumeux débat du  Web contre les livres, je pense qu&#8217;il y a des articles sur display: table-cell plus courts, moins chers et tout à fait valables (<a href="http://www.digital-web.com/articles/everything_you_know_about_CSS_Is_wrong/">y compris leur article de présentation</a>), notamment sur <a href="http://css.alsacreations.com/Faire-une-mise-en-page-sans-tableaux/Mise-en-page-CSS-avancee-grace-a-la-propriete-display">Alsacréations</a>.<br />
Pour moitié prix, le contenu aurait pu passer. À 30$, j&#8217;en attends davantage &#8230;</p>
<p>Je recommande avec beaucoup plus de ferveur l&#8217;indémodable <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;Andy Clarke.</p>
<p>Un dernier point toutefois : je ne suis pas convaincu qu&#8217;un <strong>rendu à l&#8217;identique au pixel près</strong> soit une solution d&#8217;avenir. Il ne faut pas espérer avoir un rendu identique à la maquette ni identique sur tous les naivgateurs (notamment au niveau de la colorimétrie). Je crois davantage à un support de fonctionnalités et des solutions alternatives pour les navigateurs ne supportant pas ces dites-fonctionnalités. De même qu&#8217;on n&#8217;a pas le même rendu de couleurs pour les téléviseurs (y compris HD), il est utopique de vouloir la même chose d&#8217;un site.</p>
<p>Depuis quelques mois je ne recommande plus à mes clients de supporter <acronym title="Internet Explorer 6">IE6</acronym> et ce, malgré ses 20% de parts de marché. Je préfère largement proposer une solution dégradée, toujours fonctionnelle mais moins jolie.<br />
Cette année je refonds le thème de ce blog et je ne compte pas supporter ni <acronym title="Internet Explorer 6">IE6</acronym> ni IE7. Votre adoption d&#8217;autres navigateurs aide mais il faut montrer l&#8217;exemple.</p>]]></content:encoded>
			<wfw:commentRss>http://case.oncle-tom.net/2009/everything-you-know-about-css-is-wrong/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Conventions de programmation : la nécessaire maturité</title>
		<link>http://case.oncle-tom.net/2008/conventions-de-programmation-necessaire-maturite/</link>
		<comments>http://case.oncle-tom.net/2008/conventions-de-programmation-necessaire-maturite/#comments</comments>
		<pubDate>Wed, 23 Jul 2008 05:00:04 +0000</pubDate>
		<dc:creator>Oncle Tom</dc:creator>
				<category><![CDATA[Développement Web]]></category>
		<category><![CDATA[bonnes pratiques]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[coding standards]]></category>
		<category><![CDATA[conventions]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[pear]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[phpdoc]]></category>
		<category><![CDATA[symfony]]></category>
		<guid isPermaLink="false">http://case.oncle-tom.net/?p=1014</guid>
		<description><![CDATA[Tout développeur, que ce soit à l&#8217;école ou en apprenant sur le tas, écrit du code. J&#8217;espère n&#8217;avoir perdu personne à ce stade de l&#8217;explication Inconsciemment on cherchera à utiliser un style d&#8217;écriture avec lequel on se sent à l&#8217;aise, qu&#8217;on pourra et saura relire facilement et dans le meilleur des cas, qui pourra être [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align:center"><img class="size-full wp-image-1028" title="Exemple de code PHP" src="http://case.oncle-tom.net/images/2008/07/sample-php-code.png" alt="Exemple" width="500" height="184" /></p>
<p>Tout développeur, que ce soit à l&#8217;école ou en apprenant sur le tas, écrit du code. J&#8217;espère n&#8217;avoir perdu personne à ce stade de l&#8217;explication <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p><strong>Inconsciemment on cherchera à utiliser un style d&#8217;écriture avec lequel on se sent à l&#8217;aise</strong>, qu&#8217;on pourra et saura relire facilement et dans le meilleur des cas, qui pourra être relu par une autre personne sans avoir à engager d&#8217;interprète.</p>
<p>Tout développeur tend donc à utiliser des <a href="http://fr.wikipedia.org/wiki/Convention_de_nommage_(programmation)">conventions de programmation</a> (<em>coding standards</em>), que ce soit en <acronym title="HyperText Markup Language">HTML</acronym>, <acronym title="Pre-Hypertext Processing">PHP</acronym>, <acronym title="Cascading Style Sheets">CSS</acronym>, JavaScript ou même en Cobol. Et <strong>utiliser des conventions, c&#8217;est bien</strong> !</p>
<p><span id="more-1014"></span></p>
<h3>Quelle convention de nommage adopter ?</h3>
<p>Avant de choisir une convention, encore faudrait-il savoir quelles conventions existent :</p>
<ul>
<li>pas de convention</li>
<li><a href="http://fr.wikipedia.org/wiki/Notation_hongroise">convention hongroise</a></li>
<li><a href="http://pear.php.net/manual/fr/standards.php">convention PEAR</a></li>
<li><a href="http://www.symfony-project.org/book/1_0/02-Exploring-Symfony-s-Code">convention symfony</a></li>
<li><a href="http://framework.zend.com/manual/fr/coding-standard.html">convention Zend Framework</a></li>
<li><a href="http://codex.wordpress.org/WordPress_Coding_Standards">convention WordPress</a> (que j&#8217;abhorre)</li>
<li>etc.</li>
</ul>
<p>Autant dire qu&#8217;il y a de tout et pour tous les goûts.<br />
Ce qu&#8217;il faut retenir d&#8217;<strong>une convention c&#8217;est qu&#8217;elle explicite des règles de développement</strong> :</p>
<ul>
<li>sur le nommage des éléments</li>
<li>sur l&#8217;indentation des éléments</li>
<li>sur les structures de contrôle (if, else, tout ça quoi)</li>
<li>sur la syntaxe des commentaires</li>
<li>sur la syntaxe de la documentation (le code auto-documenté c&#8217;est bon !)</li>
<li>sur l&#8217;organisation des fichiers, éventuellement</li>
</ul>
<p>C&#8217;est pour ça que partir sur une <strong>convention parfaite sur le papier mais inapplicable est une vaste fumisterie</strong>. L&#8217;idéal étant de pouvoir reprendre du code dans un projet sans avoir eu besoin de lire la documentation pour en comprendre l&#8217;organisation.</p>
<p>Mon conseil : <strong>essayez, choisissez</strong> mais ne prenez pas non plus trop laxiste en terme de notation.<br />
Une chose est sure : quand on a essayé une belle</p>
<h3>Mes conventions de nommage en <acronym title="Pre-Hypertext Processing">PHP</acronym></h3>
<p style="text-align:center"><a href="http://case.oncle-tom.net/images/2008/07/eclipse-php-code-sample.png"><img class="size-medium wp-image-1022" title="Exemple de code PHP dans Eclipse" src="http://case.oncle-tom.net/images/2008/07/eclipse-php-code-sample-300x207.png" alt="Exemple de code PHP dans Eclipse" width="300" height="207" /></a></p>
<p>J&#8217;avoue, la notation utilisée dans <a href="http://www.symfony-project.org/">symfony</a> m&#8217;a tellement plu que je la réutilise quasiment partout. Ci-dessus, une illustration montrant du code pour un <a href="http://case.oncle-tom.net/code/wordpress/">plugin WordPress</a> (en <acronym title="Pre-Hypertext Processing">PHP</acronym> 4 malheureusement &#8230;). Elle en présente un bon aperçu.</p>
<h4>Notation</h4>
<p>J&#8217;utilise UpperCamelCase pour le nommage des classes <em>sauf</em> s&#8217;il y a un préfixe qui, lui, reste en minuscule.<br />
<em>Exemples</em> : <code>class AmazonWidgetsShortcodes</code>, <code>class sfUploader</code>.</p>
<p>Pour ce qui est méthodes de classes, j&#8217;utilise lowerCamelCase. Comme ça on sait qu&#8217;on reste dans un objet et c&#8217;est pas plus mal.</p>
<p>Enfin, pour les fonctions orphelines, <em>helpers</em> &amp; cie, c&#8217;est tout en minuscule séparé par des underscore (un nom particulier à ça ? <em>lowered_and_underscored</em> ? <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> )<br />
<em>Exemple</em> : <code>add_filter()</code></p>
<h4>Indentation</h4>
<p>Dans l&#8217;indentation il y a 2 camps : celui des espaces et celui des tabulations.</p>
<p>J&#8217;ai suivi celui des <strong>espaces</strong> pour une simple et bonne raison : 1 tabulation a une taille différente selon les éditeurs, que ça soit votre IDE, votre shell ou n&#8217;importe quel logiciel de texte. L&#8217;idéal est d&#8217;avoir un rendu identique dans tous les éditeurs sans paramétrage.</p>
<p>En revanche, là encore je suis mais j&#8217;aime, je suis sur une <strong>tabulation à 2 espaces</strong> : c&#8217;est bête mais je trouve ça plus esthétique et on arrive moins rapidement à la limite de 80 caractères.</p>
<p>Cette &laquo;&nbsp;limite&nbsp;&raquo; n&#8217;est que virtuelle mais ouvrez un terminal, 80 lignes par défaut. C&#8217;est plus confortable de rester en-dessous de ce nombre. Ceci dit je fais quelques exceptions, des fois <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<h4>Structures de contrôle</h4>
<p>On pourrait résumer à <cite>1 ligne = 1 action</cite> et 2 types d&#8217;utilisation.</p>
<p>Tout d&#8217;abord les structures dans le code à proprement parler :</p>
<ul>
<li>un espace entre l&#8217;opérateur et la parenthèse ouvrante</li>
<li>un retour à la ligne à chaque accolade</li>
<li>pas d&#8217;espaces dans les lignes vides (résidus d&#8217;indentation)</li>
<li>systématiquement les accolades, même en cas de ligne unique après l&#8217;opérateur</li>
<li>opérateur ternaire quand ça reste simple, pas trop long et plus lisible</li>
</ul>
<p>Côté templating en revanche j&#8217;utilise la <a href="http://fr.php.net/manual/fr/control-structures.alternative-syntax.php">syntaxe alternative de <acronym title="Pre-Hypertext Processing">PHP</acronym></a> à raison d&#8217;un opérateur par ligne :</p>
<pre><code class="php">&lt;ol class="posts"&gt;
&lt;?php foreach($posts as $post): ?&gt;
  &lt;li id="post-&lt;?php echo $post-&gt;getId() ?&gt;"&gt;
    &lt;a href="&lt;?php $post-&gt;getPermalink() ?&gt;"&gt;
      &lt;?php echo $post-&gt;getTitle() ?&gt;
    &lt;/a&gt;
  &lt;/li&gt;
&lt;?php endforeach ?&gt;
&lt;/ol&gt;</code></pre>
<h4>Syntaxe de la documentation</h4>
<p>Enfin, pour terminer sur la partie <acronym title="Pre-Hypertext Processing">PHP</acronym>, <a href="http://www.phpdoc.org/">PHPDoc</a> est surpuissante en plus d&#8217;être simple à utiliser. Comble du bonheur, sa syntaxe est réutilisable dans d&#8217;autres langages.</p>
<p>PHPDoc est le principe du <strong>code autodocumenté</strong> :</p>
<ol>
<li>vous commentez votre code avec la syntaxe PHPDoc</li>
<li>vous générez sa documentation avec le programme PHPDoc (en <acronym title="HyperText Markup Language">HTML</acronym>, <acronym title="Portable Document Format">PDF</acronym> etc.)</li>
</ol>
<p>L&#8217;idéal est de <strong>documenter en même temps qu&#8217;on produit le code</strong>. Par principe on revient rarement sur son propre code juste pour le loisir de le décrire, par manque de temps ou par flemme.</p>
<h3>Mes conventions de nommage en JavaScript</h3>
<p style="text-align:center"><a href="http://case.oncle-tom.net/images/2008/07/eclipse-javascript-code-sample.png"><img class="size-medium wp-image-1021" title="Exemple de code JavaScript dans Eclipse" src="http://case.oncle-tom.net/images/2008/07/eclipse-javascript-code-sample-300x288.png" alt="Exemple de code JavaScript dans Eclipse" width="300" height="288" /></a></p>
<p>Ne vous inquiétez pas, je ne vais pas tout recommencer pour JavaScript <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  Je suis à peu près la même logique qu&#8217;en <acronym title="Pre-Hypertext Processing">PHP</acronym> à part pour les accolades.</p>
<p>En effet si je conserve un comportement similaire pour les structures de contrôles (1 accolade par ligne) :</p>
<ul>
<li>je ne fais pas de retour à la ligne sur les accolades/parenthèse ouvrante d&#8217;une fonction/objet anonyme</li>
<li>je ne fais pas de retour à la ligne après une accolade/parenthèse fermante s&#8217;il y a une virgule ou parenthèse après</li>
</ul>
<pre><code class="javascript">var OncleTom = {
  age:      25,
  pensee:   function(){
    return this.age * Math.random()
  }
};</code></pre>
<h3>Mes conventions de nommage en <acronym title="Cascading Style Sheets">CSS</acronym></h3>
<p style="text-align:center"><img class="aligncenter size-full wp-image-879" title="Folding en CSS" src="http://case.oncle-tom.net/images/2008/02/css-folding.png" alt="" width="500" height="138" /></p>
<p>Inutile de paraphraser ce que j&#8217;ai déjà écris dans mon article sur les <a href="http://case.oncle-tom.net/2008/02/26/bonnes-pratiques-codage-css/">bonnes pratiques de codage <acronym title="Cascading Style Sheets">CSS</acronym></a>.</p>
<p>Deux lectures en une oui <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<h3>Conclusion</h3>
<p>Bon au final on voit que ce n&#8217;est pas si compliqué que ça d&#8217;apporter un brin de rigueur.<br />
On pourra même s&#8217;amuser à compléter le tout par la disposition des méthodes et fonctions d ans un fichier par ordre alphabétique (j&#8217;en connais un que ça fera sourire <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> ).</p>
<p>Les vues <em>Outline</em> fournissent un plan du code et certains logiciels ne semblent pas disposer d&#8217;une fonction de tri. Et au cas où un jour vous n&#8217;auriez pas votre IDE favori sous le nez, ça ne mange pas de pain de fonctionner ainsi.</p>
<p style="text-align:center"><img class="size-full wp-image-1020" title="Plan de code dans Eclipse (Outline)" src="http://case.oncle-tom.net/images/2008/07/eclipse-outline.png" alt="Plan de code dans Eclipse (Outline)" width="334" height="288" /></p>
<p>Que l&#8217;on travaille seul à plusieurs, et à plus fortes raison dans ce dernier cas, l&#8217;utilisation de notations et conventions est un gage de qualité. Ça rend le travail plus facilement interopérable avec d&#8217;autres développeurs, plus facile à relire, plus facile à maintenir.</p>
<p><strong>Ça n&#8217;empêchera jamais des bugs</strong> ou de sortir du mauvais code mais c&#8217;est ça, c&#8217;est une autre histoire.</p>
<p>Enfin, j&#8217;aimerais terminer cet article en écrivant qu&#8217;il a fait l&#8217;objet d&#8217;une <a href="http://blog.damienalexandre.fr/index.php?post/2008/07/19/Mes-conventions-de-programmation">chaîne par le Padawan PHPiste Damien Alexandre</a>. C&#8217;était l&#8217;occasion de faire une réponse qui passe inaperçue <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Ça ne m&#8217;empêchera en revanche pas de refiler la patate chaude à <a href="http://prendreuncafe.com/blog/">NicoDePrendreUnCafé</a>, de tenter d&#8217;insuffler de l&#8217;activité au blog de <a href="http://lacot.org/blog">Xavier Lacot</a>, de Spipifier <a href="http://www.gasteroprod.com">Gastero Prod</a>, d&#8217;extirper une technique ninja pyjama à <a href="http://shiii.org/">remouk</a> et pourquoi pas lire avec attention l&#8217;avis pythonien de <a href="http://www.biologeek.com/journal/">David Larlet</a> ?</p>
<p>Et <em>just for fun</em>, un petit coup d&#8217;électrode à un de mes futurs étudiants, <a href="http://blog.thierry.poinot.fr/">Thierry Poinot</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://case.oncle-tom.net/2008/conventions-de-programmation-necessaire-maturite/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>Microformats : republier et donner du sens aux contenus</title>
		<link>http://case.oncle-tom.net/2008/microformats-republier-donner-sens-aux-contenus/</link>
		<comments>http://case.oncle-tom.net/2008/microformats-republier-donner-sens-aux-contenus/#comments</comments>
		<pubDate>Tue, 29 Jan 2008 06:00:06 +0000</pubDate>
		<dc:creator>Oncle Tom</dc:creator>
				<category><![CDATA[Développement Web]]></category>
		<category><![CDATA[Standards du Web]]></category>
		<category><![CDATA[bonnes pratiques]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[hatom]]></category>
		<category><![CDATA[hcard]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[logiciels libres]]></category>
		<category><![CDATA[microformats]]></category>
		<category><![CDATA[semantique]]></category>
		<category><![CDATA[seo]]></category>
		<category><![CDATA[technorati]]></category>
		<guid isPermaLink="false">http://case.oncle-tom.net/2008/01/29/microformats-republier-donner-sens-aux-contenus/</guid>
		<description><![CDATA[Le Web sémantique. Cette expression est sur toutes les lèvres de ceux qui préparent l&#8217;Internet de demain. Moteurs de recherche, services de pointe, secteur marchand &#8230; après avoir indexé du contenu, ils aimeraient désormais le comprendre. Comprendre pour mieux cibler, mieux profiler et mieux servir. Malgré cet aspect futuriste teinté de recherche et de développement, [...]]]></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><strong>Le Web sémantique</strong>.<br />
Cette expression est sur toutes les lèvres de ceux qui préparent l&#8217;Internet de demain. Moteurs de recherche, services de pointe, secteur marchand &#8230; après avoir indexé du contenu, ils aimeraient désormais le comprendre. Comprendre pour mieux cibler, mieux profiler et mieux servir.<br />
<span id="more-861"></span></p>
<p>Malgré cet aspect futuriste teinté de recherche et de développement, le concept de Web sémantique est pourtant vieux comme &#8230; le Web. Tim Berners-Lee y pensait déjà lorsqu&#8217;il accouchait d&#8217;Internet sur ses petites tablettes.</p>
<p>Si les hommes arrivent à comprendre les hommes, les ordinateurs ne comprennent <em>que</em> ce pourquoi ils ont été programmés. Le Web sémantique a été imaginé pour palier à ce problème, pour expliquer le sens du contenu, pour lier les contenus entre eux tout en décrivant ces relations.</p>
<p>En ce sens, les formats <acronym title="Ressource Description Framework"><acronym title="Resource Description Framework">RDF</acronym></acronym> et <acronym title="Web Ontology Language">OWL</acronym> figurent comme les étendards du concept. <acronym title="Resource Description Framework">RDF</acronym> décrit les ressources tandis qu&#8217;OWL établit des liens entre eux en leur donnant un sens. Ces relations sont nommées <a href="http://fr.wikipedia.org/wiki/Ontologie_%28informatique%29">ontologies</a> et permettent donc de transformer un Web de données anonymes en un Web sémantique. Un Web où humains et ordinateurs comprennent et échangent.</p>
<p><strong>Les microformats sont nés du constat de complexité de mise en œuvre du couple <acronym title="Resource Description Framework">RDF</acronym>/OWL et d&#8217;un besoin de simplicité</strong>.</p>
<h3>Les microformats</h3>
<p>Tantek Çelik et Adam Rifkin dévoilent le concept des microformats en 2004 après 2 années d&#8217;expérimentation. Ils ne s&#8217;en cachaient pas : ils souhaitaient démocratiser et implanter la sémantique au cœur du Web en s&#8217;affranchissant au maximum de contraintes techniques.<br />
C&#8217;est ainsi qu&#8217;au lieu de créer un énième format de fichier les microformats se greffent sous la forme d&#8217;attributs (X)<acronym title="HyperText Markup Language">HTML</acronym> pour tenter de donner du sens au contenu.</p>
<p>Il existe plusieurs spécifications de microformats :</p>
<ul>
<li><a href="http://microformats.org/wiki/hatom">hAtom</a> (syndication de contenus, basé sur Atom) ;</li>
<li><a href="http://microformats.org/wiki/hcalendar">hCalendar</a> (dates et évènements, basé sur iCal) ;</li>
<li><a href="http://microformats.org/wiki/hcard">hCard</a> (représentation d&#8217;entité, basé sur vCard) ;</li>
<li><a href="http://microformats.org/wiki/hresume">hResume</a> (<acronym title="Curriculum vitæ">CV</acronym>, mélangeant hCard et hCalendar notamment) ;</li>
<li><a href="http://microformats.org/wiki/geo">geo</a> (emplacement géographique) ;</li>
<li><a href="http://microformats.org/wiki/xfn">XFN</a> (relations entre individus) ;</li>
<li><a href="http://microformats.org/wiki/xoxo">XOXO</a> (description de contenus) ;</li>
<li>et de nombreux motifs de conception rel-* (<a href="http://microformats.org/wiki/rel-tag">tags</a>, <a href="http://microformats.org/wiki/rel-nofollow">nofollow</a>, <a href="http://microformats.org/wiki/rel-license">license</a>, <a href="http://microformats.org/wiki/rel-home">home</a> etc.).</li>
</ul>
<h3>Intérêts et utilité des microformats</h3>
<p>La force des microformats réside dans sa souplesse d&#8217;utilisation, leur approche métier et surtout, la réutilisation de formats existants.<br />
Les microformats se basent sur deux attributs [<a id="nh1" title="[1] Il en existe en réalité 3 mais l&#8217;attribut rev n&#8217;est employé qu&#8217;une fois. (&#8230;)&nbsp;&raquo; rel=&nbsp;&raquo;footnote&nbsp;&raquo; href=&nbsp;&raquo;#nb1&#8243;>1</a>] de (X)<acronym title="HyperText Markup Language">HTML</acronym> :</p>
<ul>
<li><code>rel</code> : pour décrire la relation du lien avec sa cible ;</li>
<li><code>class</code> : pour décrire le sens de contenu.</li>
</ul>
<p>Les balises (X)<acronym title="HyperText Markup Language">HTML</acronym> indiquent la nature de leur contenu :</p>
<ul>
<li><code>&lt;p&gt;</code> pour un paragraphe de texte ;</li>
<li><code>&lt;h1&gt;</code> pour un titre important ;</li>
<li><code>&lt;strong&gt;</code> pour une forte emphase ;</li>
<li><code>&lt;img&gt;</code> pour une image ;</li>
<li><code>&lt;li&gt;</code> pour un élément de liste ;</li>
<li><code>&lt;a&gt;</code> pour lier une autre ressource via son <acronym title="Uniform Resource Identifier">URI</acronym>.</li>
</ul>
<p>Les microformats s&#8217;ajoutent par le biais des attributs cités ci-dessus (rel et class) pour affiner leur sens :</p>
<ul>
<li><code>&lt;a rel="nofollow"&gt;</code> indique aux robots d&#8217;indexation des moteurs de recherche de ne pas suivre ce lien ;</li>
<li><code>&lt;span class="tel"&gt;</code> indique que cette balise neutre contient un numéro de téléphone ;</li>
<li><code>&lt;div class="entry"&gt;</code> indique que cette balise neutre contient un article (billet de blog par exemple).<br />
Rassurez-vous, le choix des classes n&#8217;est pas arbitraire et le <a href="http://microformats.org/wiki/">wiki officiel</a> est un bon guide. Il reprend les spécifications des formats cités précédemment tout en les agrémentant d&#8217;exemples.</li>
</ul>
<p>Enfin, et pour achever d&#8217;attiser votre curiosité, voici un résumé des microformats en 7 points :</p>
<ul>
<li> ils s&#8217;adaptent au code et non l&#8217;inverse ;</li>
<li> ils s&#8217;appliquent aussi bien sur des pages statiques que dynamiques ;</li>
<li> ils aident à structurer la page ;</li>
<li> ils n&#8217;ont quasiment aucun coût de mise en place ;</li>
<li> ils aident et aideront à la bonne indexation du contenu dans les moteurs de recherche ;</li>
<li> ils offrent des perspectives d&#8217;interaction et de navigation intelligente pour les visiteurs d&#8217;une page microformatée ;</li>
<li> ils sont un socle pour réutiliser le contenu (cf. « Outils agrégeant les microformats »).</li>
</ul>
<h3>Cas pratique : offrir une carte de visite en visitant une page Web</h3>
<p>Prenons par exemple le cas des fichiers vCard. Nos carnets d&#8217;adresses en raffolent car ils contiennent des informations de contact : nom, prénom, adresse, numéro de téléphone, email etc.<br />
Il n&#8217;est pas rare de recevoir des emails contenant une vCard en pièce-jointe. Un clic dessus et les informations de l&#8217;expéditeur se retrouvent dans notre carnet d&#8217;adresses.</p>
<p><strong>Les microformats proposent la même chose</strong> mais au format Web avec le microformat hCard. Outre la ressemblance de nom, on retrouve dans sa spécification tous les éléments de vCard (nom, prénom, adresse etc.).<br />
La seule différence se trouve dans la représentation. Nous n&#8217;avons plus affaire à un fichier séparé (comme ça aurait été le cas avec <acronym title="Resource Description Framework">RDF</acronym> et OWL)<br />
mais bel et bien à du texte présent sur une page Web.</p>
<p>Si ce code était placé sur une page Web accessible au public, n&#8217;importe quel outil gérant les microformats serait capable d&#8217;en extraire les données et pourquoi pas, de lancer une recherche sur<br />
Google Maps pour obtenir les coordonnées GPS de l&#8217;adresse.</p>
<pre><code class="html">&lt;div class="vcard"&gt;
  &lt;a class="fn org url" href="http://www.clever-age.com/"&gt;Clever Age&lt;/a&gt;
  &lt;div class="adr"&gt;
    &lt;div class="street-address"&gt;37, boulevard des Capucines&lt;/div&gt;
    &lt;span class="postal-code"&gt;75002&lt;/span&gt;
    &lt;span class="locality"&gt;Paris&lt;/span&gt;
    &lt;div class="country-name"&gt;France&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="tel"&gt;
   &lt;span class="type"&gt;Téléphone&lt;/span&gt; +33 1 53 34 66 10
  &lt;/div&gt;
  &lt;div class="tel"&gt;
    &lt;span class="type"&gt;Fax&lt;/span&gt; +33 1 53 34 65 20
  &lt;/div&gt;
  &lt;div&gt;Email: &lt;span class="email"&gt;commercial@clever-age.com&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;</code></pre>
<h3>Outils proposant des microformats</h3>
<p>Les industriels et les leaders du Web contribuent à diffuser les microformats en les adoptant progressivement. Cette adoption apporte une valeur ajoutée à leurs services et facilite la vie des utilisateurs.<br />
Concrètement, ils microformatent leur contenu pour enrichir leur présentation et faciliter les interactions avec d&#8217;autres services.</p>
<p>Voici une liste non-exhaustive de services proposant des contenus microformatés :</p>
<ul>
<li><em>Blogs</em> (<a href="http://wordpress.org">WordPress</a>) ;</li>
<li><em>Cartographie</em> (<a href="http://maps.google.fr">Google Maps</a>, <a href="http://fr.local.yahoo.com">Yahoo ! Local</a>) ;</li>
<li><em>Emploi</em> <a href="http://www.jobijoba.com">JobiJoba</a>) ;</li>
<li><em>Outils sociaux</em> (<a href="http://flickr.com">Flickr</a>, <a href="http://del.icio.us">Del.icio.us</a>, <a href="http://ma.gnolia.com">Ma.gnolia</a>) ;</li>
<li><em>Réseaux sociaux</em> (<a href="http://www.linkedin.com">LinkedIn</a>, <a href="http://www.ziki.com">Ziki</a>).</li>
</ul>
<h3>Outils agrégeant les microformats</h3>
<p style="text-align:center"><img src="http://case.oncle-tom.net/images/2008/01/microformats-operator-c2fc2.png" alt="Extension Operator pour Firefox" /></p>
<p>L&#8217;utilisation la plus intéressante des microformats reste indéniablement l&#8217;agrégation. Vous pourrez ainsi construire un flux <acronym title="Really Simple Syndication">RSS</acronym> à partir d&#8217;une page statique ou explorer<br />
des photos en rapport avec la page visitée.</p>
<p><a href="http://technorati.com">Technorati</a> porte l&#8217;étendard des microformats. Ses différents services, utilisables en appelant une simple <acronym title="Uniform Resource Identifier">URI</acronym>, permettent d&#8217;agréger des <a href="http://technorati.com/contacts/">cartes de visites (vCard)</a> ou encore des <a href="http://technorati.com/events/">calendriers (iCal)</a> pour générer des fichiers réutilisables dans votre carnet d&#8217;adresse ou votre gestionnaire de temps.</p>
<p><a href="http://www.jobster.com/">Jobster</a> propose une utilisation intéressante des microformats. Ce site de recherche d&#8217;emploi vous évite l&#8217;écueil de l&#8217;énième ressaisie de CV. En lui fournissant l&#8217;<acronym title="Uniform Resource Locator">URL</acronym> de votre profil public LinkedIn, il en extrait toutes les données pour en générer un CV en ligne.</p>
<p>Les navigateurs Web jouent également le jeu. Firefox 2 (avec son <a href="https://addons.mozilla.org/fr/firefox/addon/4106">extension Operator</a>) ou encore Firefox 3 et le futur Internet Explorer 8 proposent des outils intégrés.<br />
Sur chaque page visitée, ils en extraient tous les contenus microformatés possibles et proposent différentes interactions possibles.</p>
<p>D&#8217;autres outils plus confidentiels s&#8217;efforcent de défricher le terrain, notamment les agrégateurs de flux <acronym title="Really Simple Syndication">RSS</acronym>/Atom et autres transformateurs <acronym title="eXtensible HyperText Markup Language">XHTML</acronym>/microformats :</p>
<ul>
<li><a href="http://xoxotools.ning.com/hatom2rss.php">hatom2rss</a> ;</li>
<li><a href="http://rbach.priv.at/Microformats/hAtom2Atom/">hAtom2Atom</a> ;</li>
<li><a href="http://atom.geekhood.net/">atom2rss</a> ;</li>
<li><a href="http://suda.co.uk/projects/X2V/">X2V</a>.</li>
</ul>
<h3>Conclusion</h3>
<p><strong>Il est de plus en plus facile de microformater les contenus, d&#8217;interagir avec et de les republier</strong>. Leur faible coût d&#8217;intégration et la rapidité<br />
d&#8217;apprentissage sont d&#8217;autres atouts pour intéresser vos intégrateurs <acronym title="HyperText Markup Language">HTML</acronym>, vos programmeurs ou même vos décisionnels.<br />
La publication de microformats de LinkedIn et leur utilisation par Jobster pour préremplir automatiquement le CV sans ressaisie est le cas de figure idéal.<br />
Ces pratiques ont pour vocation d&#8217;être généralisées, de quoi nous faciliter la vie.</p>
<p>Nous verrons dans une prochaine partie des bonnes pratiques d&#8217;intégration des microformats à des contenus déjà existants. Ce sera d&#8217;ailleurs l&#8217;occasion<br />
de remarquer que <strong>sémantique, respect des standards et accessibilité génèrent une incroyable synergie</strong>.</p>
<h3>Pour en savoir plus</h3>
<ul>
<li><a href="http://tantek.com/presentations/2006/03/microformats-sxsw/">Présentation des microformats en mars 2006 au SXSW Interactive</a> ;</li>
<li><a href="http://www.readwriteweb.com/archives/semantic_web_road.php">En route vers le Web sémantique</a> ;</li>
<li><a href="http://www.readwriteweb.com/archives/10_future_web_trends.php">Les 10 prochaines tendances du Web</a>.</li>
</ul>
<ol class="notes">
<li>[<a id="nb1" rev="footnote" href="#nh1">1</a>] Il en existe en réalité 3 mais l&#8217;attribut <code>rev</code> n&#8217;est employé qu&#8217;une fois. Difficile d&#8217;en déduire une généralité.</li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://case.oncle-tom.net/2008/microformats-republier-donner-sens-aux-contenus/feed/</wfw:commentRss>
		<slash:comments>6</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>Modifier du HTML à la volée de manière non intrusive</title>
		<link>http://case.oncle-tom.net/2007/modifier-html-non-intrusif/</link>
		<comments>http://case.oncle-tom.net/2007/modifier-html-non-intrusif/#comments</comments>
		<pubDate>Mon, 10 Sep 2007 11:00:55 +0000</pubDate>
		<dc:creator>Oncle Tom</dc:creator>
				<category><![CDATA[Accessibilité]]></category>
		<category><![CDATA[Développement Web]]></category>
		<category><![CDATA[Standards du Web]]></category>
		<category><![CDATA[bonnes pratiques]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[dom]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[xpath]]></category>
		<guid isPermaLink="false">http://case.oncle-tom.net/2007/09/10/modifier-html-non-intrusif/</guid>
		<description><![CDATA[Lors de la refonte de ce blog, j&#8217;ai concocté un petit script JavaScript (non intrusif bien entendu) affichant et modifiant le contenu d&#8217;un bandeau sous la forme d&#8217;une classe statique reponsant sur jQuery. J&#8217;explique aujourd&#8217;hui comment ces 48 petits lignes de code (en comptant commentaires, sauts de lignes et accolades) fonctionnent, comment il est aisé [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align:center"><img src="http://case.oncle-tom.net/images/2007/09/javascript.png" alt="Javascript" /></p>
<p><a href="http://case.oncle-tom.net/2007/07/27/blog-nouveau-look/">Lors de la refonte de ce blog</a>, j&#8217;ai concocté un petit script JavaScript (non intrusif bien entendu) affichant et modifiant le contenu d&#8217;un bandeau sous la forme d&#8217;une classe statique reponsant sur <a href="http://jquery.com/">jQuery</a>. J&#8217;explique aujourd&#8217;hui comment ces 48 petits lignes de code (en comptant commentaires, sauts de lignes et accolades) fonctionnent, comment il est aisé de mettre en place de telles routines de manière intelligente, souple et non intrusive.</p>
<p>Et comme l&#8217;indique le slogan de <cite>jQuery</cite> : <q>Write less, do more</q>.<br />
<span id="more-769"></span></p>
<h3>Le besoin</h3>
<p>Avant de se lancer tête baissée dans le code, <strong>prenons le temps d&#8217;exprimer avec des mots ce que l&#8217;on aimerait faire</strong>.</p>
<p>On souhaite disposer d&#8217;une <strong>liste de liens</strong>. <strong>Lors d&#8217;un clic</strong> sur un lien de cette liste, l&#8217;<strong>encart correspondant doit s&#8217;afficher</strong> pour illustrer davantage son sens. Eventuellement, lorsque l&#8217;on <strong>reclique sur ce même lien</strong>, le visiteur est transporté sur la page en question.</p>
<p>J&#8217;ai grassé les mots importants de ce besoin. Vous le verrez par la suite, ils vont régir le comportement du script.</p>
<h3>La structure <acronym title="HyperText Markup Language">HTML</acronym></h3>
<p>Nous allons donc nous retrouver avec trois grosses parties dans le code :</p>
<ul>
<li><strong>la liste de liens</strong>, une balise <code>ul</code> semble toute indiquée)</li>
<li><strong>une liste de textes correspondants</strong>, il n&#8217;a pas lieu d&#8217;être visible pour l&#8217;utilisateur final concerné par le code</li>
<li>un <strong>bloc conteneur neutre</strong> destiné à recevoir les textes d&#8217;enrichissement de manière visuelle</li>
</ul>
<p>Des mots au code, voici ce que donnerait la structure balisée :</p>
<pre><code class="html">&lt;body&gt;
&lt;!-- (...) --&gt;
	&lt;div id="conteneur_cible"&gt;&lt;/div&gt;
	&lt;!-- (...) --&gt;
	&lt;ul id="liens_etendus"&gt;
		&lt;li&gt;&lt;a href="page1.html" class="page1"&gt;Page 1&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href="page2.html" class="page2"&gt;Page 2&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href="page3.html" class="page3"&gt;Page 3&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;
	&lt;!-- (...) --&gt;
	&lt;div id="conteneur_source"&gt;
		&lt;h2&gt;Titre&lt;/h2&gt;
		&lt;p&gt;Texte explicatif apportant de la cohérence aux utilisateurs dépourvus de JavaScript et d'interprétation des feuilles de style.&lt;/p&gt;
		&lt;ul&gt;
			&lt;li class="page1"&gt;Texte page 1&lt;/li&gt;
			&lt;li class="page2"&gt;Texte page 2&lt;/li&gt;
			&lt;li class="page3"&gt;Texte page 3&lt;/li&gt;
		&lt;/ul&gt;
	&lt;/div&gt;
&lt;!-- (...) --&gt;
&lt;/body&gt;
</code></pre>
<p><strong>L&#8217;ordre de la structure importe peu</strong> mais dans tous les cas, leur position dans le flux <acronym title="HyperText Markup Language">HTML</acronym> dépend avant tout de leur importance au sein de celui-ci. De manière générale, <strong>il vaut mieux disposer le contenu principal tout en haut du flux et le faire suivre par le contenu secondaire</strong> tels que les menus de navigation et les textes supplémentaires.<br />
Je pense que le code parle de lui-même, posez vos questions en commentaires si jamais il y a besoin d&#8217;explications plus poussées.</p>
<p>Côté <acronym title="HyperText Markup Language">HTML</acronym> tout est réglé avec ceci. <strong>Il ne restera éventuellement que du travail de stylage pour lui donner une apparence plus conviviale</strong>.<br />
Vous remarquerez qu&#8217;il n&#8217;y a aucune mention à du JavaScript à l&#8217;intérieur de ce code et ce sera le cas jusqu&#8217;au bout. C&#8217;est tout l&#8217;intérêt de séparer fond et forme et donc, du <strong>JavaScript non intrusif</strong>.</p>
<h3>Le code Javascript</h3>
<p>J&#8217;ai pris la décision d&#8217;écrire ce code pour <em>jQuery</em> car cette bibliothèque (ou <em>framework</em>) est embarquée dans WordPress et réduit drastiquement la quantité de code à écrire pour produire des résultats.</p>
<p>Dans la pratique, le code va se charger dès que possible (c&#8217;est à dire dès que le <acronym title="Document Object Model"><acronym title="Document Object Model">DOM</acronym></acronym> est prêt) et exécutera une méthode en se servant des paramètres prédéfinis ou passés manuellement à la classe. Le code suivant est structuré et suffisamment commenté pour le comprendre sans trop de difficulté. J&#8217;expliquerai en-dessous sa logique :</p>
<pre><code class="javascript">/*////////////////////////////////////////
// Classe statique 'oncletom_text_grabber'
// # Permet d'afficher un slide d'informations en cliquant sur un lien
// # C'est rigolo et en plus ça sert à quelque chose
// @ parametres (objet, optionnel) : objet de clé:valeur paramétrant le comportement
////////////////////////////////////////*/
function oncletom_text_grabber()
{
	var parametres = arguments.length == 1 &amp;&amp; typeof arguments[0] == 'object' ? arguments[0] : {};
	//Paramétrage de la fonction
	//# permet un lancement de la classe avec un paramétrage par défaut
	parametres.source = typeof parametres.source == 'undefined' ? '#conteneur_source &gt; ul &gt; li' : parametres.source;
	parametres.bindto = typeof parametres.bindto == 'undefined' ? '#liens_etendus a' : parametres.bindto;
	parametres.target = typeof parametres.target == 'undefined' ? '#conteneur_cible' : parametres.target;
	/*////////////////////////////////////////
	// Méthode publique 'ot_text_caller'
	// # Récupère le contenu associé à l'attribut 'rel'
	// # Méthode à appeler sur un évènement
	////////////////////////////////////////*/
	function ot_text_caller()
	{
		//sélection de l'élément à récupérer
		var id = $(this).attr('class');
		//hop ! on vérifie c'est déjà ouvert. Auquel cas le lien redevient cliquable
		if( $( parametres.target ).attr('class') == id )
		{
			return true;
		}
		//on nettoie le contenu de la destination
		$( parametres.target ).empty();
		$( parametres.target ).attr({ 'class' : '' });
		//on remplit la destination avec le bon contenu
		//on le fait en utilisant une expression régulières pour récupérer l'élément voulu
		$( parametres.target ).fadeIn( 'slow' ).append(  $( parametres.source+"."+id ).html() ).toggleClass( id );
		//évite que le lien soit cliqué
		return false;
	}
	//On greffe les différentes méthodes
	$( parametres.bindto ).click( ot_text_caller );
}
//exécution automatique de fonctions au lancement du document
$( oncletom_text_grabber );
//FACULTATIF
//pour assigner une deuxième liste de liens, il suffirait d'écrire le code ci-contre, par exemple :
//tous les paramètres non renseignés prennent la valeur par défaut de la classe
$( function(){ oncletom_text_grabber({ 'target' : '#nouveau_conteneur_cible', 'bindto' : '#exemple_entete ol a[@rel]', 'source' : '#liste_source2' }); } );
</code></pre>
<ol>
<li>Dans un premier temps, je m&#8217;applique toujours à pouvoir <strong>proposer une utilisation de la classe sans avoir à fournir de paramètre lors de son appel</strong>. C&#8217;est un côté pratique qui permet en plus de documenter les différentes options possibles. Ces options correspondent aux différents <a href="http://docs.jquery.com/DOM/Traversing/Selectors">sélecteurs jQuery</a> dont on aura besoin par la suite ;</li>
<li>Dans un deuxième temps, je déclare une méthode interne à la classe. <em>La cascade des accolades</em> fait qu&#8217;elle n&#8217;est accessible que depuis la classe. Cette méthode sera assignée à l&#8217;évènement <code>onclick</code> de tous les éléments concernés par <code>parametre.bindto</code>. En clair, des liens hypertextes. Le <code>this</code> y fait référence.
<ol>
<li>On stocke dans la variable interne <code>id</code> le nom de la classe. En effet, la classe du lien permet de récupérer le bon texte dans el conteneur source (<code>parametre.source</code>),</li>
<li>On vérifie que le conteneur cible ne porte pas le même nom de classe : si oui, on suit le lien, si non, on affiche d&#8217;abord le texte complémentaire (la suite),</li>
<li>Le passage le plus délicat consiste à extraire ce qu&#8217;il faut et le placer où il faut. Heureusement jQuery dispose de deux fonctions magiques : <code>append()</code> et <code>html()</code>. La première rajoute du <acronym title="HyperText Markup Language">HTML</acronym> à la suite du sélecteur tandis que la deuxième extrait le <acronym title="HyperText Markup Language">HTML</acronym> par sélection. Le fonctionnement en chaîne de jQuery permet de réaliser tout ceci en une ligne,</li>
<li>Pourquoi un <code>return false;</code> pour terminer ? Tout simplement pour éviter que le lien hypertexte contenu dans l&#8217;attribut <code>href</code> du lien soit suivi.</li>
</ol>
</li>
<li>Dans un troisième temps, on assigne la méthode déclarée juste avant. A chaque clic de chaque élément, elle sera appelée et surtout, aura accès à tous les paramètres de la classe ;</li>
<li>Enfin, après avoir clôturé la classe, on l&#8217;exécute dès que le <acronym title="Document Object Model">DOM</acronym> est chargé.</li>
</ol>
<h3>Conclusion et résultat</h3>
<p>Pour que ce code soit effectif, il faut bien évidemment l&#8217;insérer à même la page ou bien en appelant un script externe (cette méthode est recommandée justement pour dissocier fond et forme). Il faut aussi penser à inclure jQuery dans votre page sans quoi le compilateur JavaScript va tirer la tête.</p>
<p>Pour résumer, je résume la pensée des <strong>bonnes pratiques du JavaScript non intrusif</strong>, prouvant si besoin en était que JavaScript est loin d&#8217;être le Diable :</p>
<ol>
<li>définir sa structure <acronym title="HyperText Markup Language">HTML</acronym></li>
<li>styler le <acronym title="HyperText Markup Language">HTML</acronym></li>
<li>ajouter le JavaScript en surcouche</li>
</ol>
<p>Ainsi, <strong>on ne pénalise personne</strong> (y compris en cas d&#8217;erreur de programmation), <strong>on conserve un code lisible</strong> tout en <strong>facilitant sa réutilisation</strong> dans un autre document.</p>
]]></content:encoded>
			<wfw:commentRss>http://case.oncle-tom.net/2007/modifier-html-non-intrusif/feed/</wfw:commentRss>
		<slash:comments>1</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>
		<item>
		<title>Tableau auto-extensible en JavaScript</title>
		<link>http://case.oncle-tom.net/2007/tableau-auto-extensible-en-javascript/</link>
		<comments>http://case.oncle-tom.net/2007/tableau-auto-extensible-en-javascript/#comments</comments>
		<pubDate>Tue, 26 Jun 2007 11:59:32 +0000</pubDate>
		<dc:creator>Oncle Tom</dc:creator>
				<category><![CDATA[Accessibilité]]></category>
		<category><![CDATA[Développement Web]]></category>
		<category><![CDATA[Standards du Web]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[bonne pratique]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[dom]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[mootools]]></category>
		<guid isPermaLink="false">http://case.oncle-tom.net/2007/06/26/tableau-auto-extensible-en-javascript/</guid>
		<description><![CDATA[Bon nombre de clients utilisant les sites Internet de mon employeur passent des commandes en saisissant directement les codes articles de leur choix. Ce n&#8217;est pas anodin : pour du réassort de magasin, ils savent exactement ce qu&#8217;ils veulent. Et un beau jour on vient me voir en me disant qu&#8217;ils ne peuvent saisir qu&#8217;un [...]]]></description>
			<content:encoded><![CDATA[<p>Bon nombre de clients utilisant les sites Internet de mon employeur passent des commandes en saisissant directement les codes articles de leur choix. Ce n&#8217;est pas anodin : pour du réassort de magasin, ils savent exactement ce qu&#8217;ils veulent. Et un beau jour on vient me voir en me disant qu&#8217;<cite>ils ne peuvent saisir qu&#8217;un code et une seule quantité à la fois</cite>, qu&#8217;il faudrait changer ça.</p>
<p style="text-align:center"><img src="http://case.oncle-tom.net/images/2007/06/articles-autoexpand-mini.png" alt="Ligne article" /></p>
<p>Voici donc mon constat de départ :</p>
<ul>
<li>un client doit pouvoir saisir <em>un seul article</em> s&#8217;il le veut</li>
<li>un client doit pouvoir saisir <em>10 articles</em> s&#8217;il le veut</li>
<li>un client doit pouvoir saisir <em>100 articles</em> s&#8217;il le veut</li>
<li>mais <strong>celui qui n&#8217;en saisit que 10 ne doit pas être gêné par 100 lignes de formulaire à remplir</strong></li>
<li>un <em>débutant</em> doit pouvoir saisir 100 lignes sans avoir de mode d&#8217;emploi sous la main</li>
</ul>
<p>Donc ma solution a été très simple : <strong>je ne mettrai qu&#8217;une ligne</strong>.<br />
<span id="more-680"></span></p>
<h3>L&#8217;idée</h3>
<p>Comment faire pour satisfaire tout le monde, les gros donneurs d&#8217;ordre comme les petits ?<br />
<strong>En faisant en sorte que le formulaire s&#8217;adapte à leur besoin.</strong> Je voulais donc qu&#8217;à chaque ligne complétée s&#8217;en ajoute une autre avant de passer à la validation finale. Place au combo <strong>JavaScript + <acronym title="Document Object Model">DOM</acronym> = Ajax</strong>.</p>
<h3>La version dégradée</h3>
<p>Une <em>bonne pratique de l&#8217;Ajax</em> est de partir du cas particulier : celui où les conditions ne sont pas requises. En clair, une personne qui n&#8217;a pas JavaScript d&#8217;activé ou pas de JavaScript tout court.<br />
Conclusion, j&#8217;ai décidé de générer un tableau en <acronym title="HyperText Markup Language">HTML</acronym> de 10 lignes. 10 est un choix arbitraire, modifiable à tout moment et qui ne doit donc pas gêner la version dynamique en cas de changement (ajout de colonne, ajout de lignes).</p>
<p style="text-align:center"><img src="http://case.oncle-tom.net/images/2007/06/articles-autoexpand.png" alt="Tableau auto-extansible dégradé" /></p>
<h3>La version Ajax</h3>
<p>On peut manipuler le document à loisir grâce à JavaScript. <strong>Avec un code propre et ordonné c&#8217;est d&#8217;autant plus simple</strong>. Alors voici la logique à mettre en oeuvre :</p>
<ol>
<li>éliminer toutes les lignes dont on ne veut pas et n&#8217;en garder qu&#8217;une</li>
<li>assigner à chaque champ de formulaire de la ligne (<code>input</code>, <code>select</code>, <code>textarea</code>) une fonction de vérification : si tous les éléments de la ligne sont remplis / cochés et qu&#8217;il n&#8217;y a pas de ligne après, on clonera la ligne</li>
<li>cloner la ligne en la vidant de ses valeurs, en modifiant les noms de champ pour les rendre exploitable après coup</li>
</ol>
<p><strong><br />
Ce qu&#8217;on l&#8217;on veut étant relativement simple, <em>le code doit l&#8217;être également</em></strong> ! Le résultat aussi, la preuve en mouvement.</p>
<div style="text-align:center"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="372" height="188" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://case.oncle-tom.net/images/2007/06/articles-autoexpand.swf" /><embed type="application/x-shockwave-flash" width="372" height="188" src="http://case.oncle-tom.net/images/2007/06/articles-autoexpand.swf"></embed></object></div>
<p>Au final, <strong>50 lignes de JavaScript ont suffit</strong> à transformer un tableau complètement statique en tableau dynamique, s&#8217;adaptant à la demande de n&#8217;importe quel client. Client qui pourra également utiliser le clavier pour davantage d&#8217;efficacité de saisie.</p>
<p>C&#8217;est à dire <strong>exactement ce que l&#8217;on souhaitait au départ</strong>.</p>
<h3>Le code</h3>
<h4>Le tableau <acronym title="HyperText Markup Language">HTML</acronym></h4>
<pre><code class="html">&lt;table cellspacing="0" id="ajout_multi_articles"&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Code article&lt;/th&gt;
      &lt;th&gt;Quantité&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr class="article"&gt;
      &lt;th&gt;&lt;input type="text" name="article[1][ref]" maxlength="10" /&gt;&lt;/th&gt;
      &lt;td&gt;&lt;input type="text" name="article[1][qte]" maxlength="5" size="5" /&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr class="article"&gt;
      &lt;th&gt;&lt;input type="text" name="article[2][ref]" maxlength="10" /&gt;&lt;/th&gt;
      &lt;td&gt;&lt;input type="text" name="article[2][qte]" maxlength="5" size="5" /&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr class="article"&gt;
      &lt;th&gt;&lt;input type="text" name="article[3][ref]" maxlength="10" /&gt;&lt;/th&gt;
      &lt;td&gt;&lt;input type="text" name="article[3][qte]" maxlength="5" size="5" /&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr class="article"&gt;
      &lt;th&gt;&lt;input type="text" name="article[4][ref]" maxlength="10" /&gt;&lt;/th&gt;
      &lt;td&gt;&lt;input type="text" name="article[4][qte]" maxlength="5" size="5" /&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr class="article"&gt;
      &lt;th&gt;&lt;input type="text" name="article[5][ref]" maxlength="10" /&gt;&lt;/th&gt;
      &lt;td&gt;&lt;input type="text" name="article[5][qte]" maxlength="5" size="5" /&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr class="article"&gt;
      &lt;th&gt;&lt;input type="text" name="article[6][ref]" maxlength="10" /&gt;&lt;/th&gt;
      &lt;td&gt;&lt;input type="text" name="article[6][qte]" maxlength="5" size="5" /&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr class="article"&gt;
      &lt;th&gt;&lt;input type="text" name="article[7][ref]" maxlength="10" /&gt;&lt;/th&gt;
      &lt;td&gt;&lt;input type="text" name="article[7][qte]" maxlength="5" size="5" /&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr class="article"&gt;
      &lt;th&gt;&lt;input type="text" name="article[8][ref]" maxlength="10" /&gt;&lt;/th&gt;
      &lt;td&gt;&lt;input type="text" name="article[8][qte]" maxlength="5" size="5" /&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr class="article"&gt;
      &lt;th&gt;&lt;input type="text" name="article[9][ref]" maxlength="10" /&gt;&lt;/th&gt;
      &lt;td&gt;&lt;input type="text" name="article[9][qte]" maxlength="5" size="5" /&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr class="article"&gt;
      &lt;th&gt;&lt;input type="text" name="article[10][ref]" maxlength="10" /&gt;&lt;/th&gt;
      &lt;td&gt;&lt;input type="text" name="article[10][qte]" maxlength="5" size="5" /&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;</code></pre>
<h4>La fonction JavaScript</h4>
<pre><code class="javascript">/**
 * Transforme un tableau multi-lignes en un tableau mono-ligne mais auto-extensible
 * Renomme également les noms de champ en suivant un masque paramétrable ; par défaut article[]
 *
 * @usage articlesMultiRows([{'css_id': ?, 'css_row_class': ?, 'check_inputs': ?}])
 * @param {Object} params Objet contenant (ou pas) les paramètres de contrôle de la classe
 */
function articlesMultiRows(params)
{
  this.row_number = 0;
  /*
   * Extension des paramètres par défaut
   */
  var params = params || {};
  params.css_id = params.css_id || 'ajout_multi_articles';
  params.css_row_class = params.css_row_class || 'article';
  params.check_inputs = params.check_inputs || 'input,select,textarea';
  /**
   * Initialise le tableau de données et accroche les méthodes dynamiques
   */
  this.init = function(){
    //aucun ID détecté, pas la peine de continuer plus loin
    if (!$(params.css_id))
    {
      return false;
    }
    //on récupère les lignes, on enlève la première du tableau et on supprime les autres
    var rows = $(params.css_id).getElements('tr.'+params.css_row_class);
    var row_first = rows.shift();
    rows.removeElements();
    rows = null;
    /*
     * On assigne l'évènement aux champs paramétrés de la ligne
     * On place le focus sur le premier champ
     */
    $ES(params.check_inputs, row_first).addEvent('blur', rowCheck);
    $(row_first).getElement('input').focus();
    row_number = 1;
    /*
     * On écrit un petit message sympathique indiquant le fonctionnement du bazar
     * On le fait via JavaScript car un utilisateur sans <acronym title="JavaScript">JS</acronym> ne pourrait justement pas suivre les infos
     * Il est placé juste avant le tableau
     */
    new Element('p',{
          'class' : 'message'
          }).setHTML("Dès qu'un code article et une quantité sont saisis ci-dessous, &lt;strong&gt;une nouvelle ligne s'ajoute automatiquement&lt;/strong&gt;.&lt;br /&gt;Afin d'accélérer votre saisie, &lt;em&gt;utilisez la touche de tabulation de votre clavier&lt;/em&gt; pour passer d'un champ à l'autre. Vous verrez, c'est facile et surtout efficace !").injectBefore(params.css_id);
  };
  /**
   * Vérifie si la ligne a entièrement été complétée et le cas échéant, déclenche l'ajout de ligne
   */
  this.rowCheck = function(){
    var row = { 'inputs' : 0, 'completed' : 0, 'dom' : $(this).getParent().getParent() };
    $ES(params.check_inputs, row.dom).each(function(input){
      //Un élément de plus ...
      ++row.inputs;
      //... dont on vérifie s'il est bien complété
      switch (input.getTag())
      {
        case 'input':
        case 'textarea':
          if (input.value.clean())
          {
            ++row.completed;
          }
        break;
        case 'select':
          if (input.selectedIndex &gt;= 0 &amp;&amp; input.selectedIndex &lt; input.length)
          {
            ++row.completed;
          }
        break;
      }
    });
    /*
     * Pour insérer une nouvelle ligne, on doit avoir :
     * - autant de champs complétés que de champs existants
     * - aucun élément suivant
     */
    if (row.inputs === row.completed &amp;&amp; !row.dom.getNext())
    {
      rowInsert(row.dom);
    }
  };
  /**
   * Insère une nouvelle ligne en clonant la dernière du tableau et la purgeant de ses valeurs
   *
   * @param {Object} row Noeud <acronym title="Document Object Model">DOM</acronym> correspondant à la ligne à cloner
   */
  this.rowInsert = function( row ){
    //On incrémente le nombre de lignes dispo
    //Ce numéro sert à changer les masques de nom de champ
    ++row_number;
    var row_clone = row.clone();
    //Clonage de la ligne
    $ES('input[type=text],input[type=password],input[type=hidden],textarea', row_clone).setProperty('value', '');
    $ES(params.check_inputs, row_clone).removeEvents('blur'); /* obligé car <acronym title="Internet Explorer 5">IE5</acronym>+ clone aussi les évènements ... alors qu'il ne le devrait pas */
    $ES(params.check_inputs, row_clone).addEvent('blur', rowCheck); /* oui oui, <acronym title="Internet Explorer 5">IE5</acronym>+ ne rassignait pas cet évènement comme il fallait malgré ça */
    //On remplace les noms des champs pour que permettre une utilisation des résultats $_POST
    $ES(params.check_inputs, row_clone).each(function(input){
      input.name = input.name.replace(new RegExp('^'+params.css_row_class+'\[[0-9]+\]'), params.css_row_class+'['+row_number+']');
    });
    //Injection de la ligne, une fois tout le travail terminé
    row_clone.injectAfter(row);
    //Nettoyage, le clonage, ça salit
    row_clone = null;
    row = null;
  };
  /*
   * Initialisation de la classe
   */
  this.init();
}
/*
 * Initialisation du tableau multi-lignes avec les options par défaut
 */
window.addEvent('domready', articlesMultiRows);</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://case.oncle-tom.net/2007/tableau-auto-extensible-en-javascript/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>Sites Web : les bonnes pratiques</title>
		<link>http://case.oncle-tom.net/2007/sites-web-les-bonnes-pratiques/</link>
		<comments>http://case.oncle-tom.net/2007/sites-web-les-bonnes-pratiques/#comments</comments>
		<pubDate>Mon, 26 Feb 2007 19:37:35 +0000</pubDate>
		<dc:creator>Oncle Tom</dc:creator>
				<category><![CDATA[Accessibilité]]></category>
		<category><![CDATA[Développement Web]]></category>
		<category><![CDATA[Standards du Web]]></category>
		<category><![CDATA[bonnes pratiques]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[livres]]></category>
		<category><![CDATA[opquast]]></category>
		<category><![CDATA[pro]]></category>
		<category><![CDATA[temesis]]></category>
		<guid isPermaLink="false">http://case.oncle-tom.net/2007/02/26/sites-web-les-bonnes-pratiques/</guid>
		<description><![CDATA[Lorsqu&#8217;on crée son premier site ou bien lorsqu&#8217;on navigue sur Internet, on est loin de se douter de l&#8217;étendue des conventions implicites qui facilitent la vie de tout le monde. Et pourtant, passé l&#8217;apprentissage de la soupe de balises HTML et éventuellement des feuilles de style, il y a tout un tas de règles à [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align:center"><img id="image475" src="http://case.oncle-tom.net/images/2007/02/sites-web-bonnes-pratiques.jpg" alt="Sites Web : les bonnes pratiques" /></p>
<p>Lorsqu&#8217;on crée son premier site ou bien lorsqu&#8217;on navigue sur Internet, on est loin de se douter de l&#8217;étendue des conventions implicites qui facilitent la vie de tout le monde.<br />
Et pourtant, passé l&#8217;apprentissage de la soupe de balises <acronym title="HyperText Markup Language">HTML</acronym> et éventuellement des feuilles de style, il y a tout un tas de <em>règles à respecter</em> pour rendre la navigation aisée et non bloquante. Car oui, <strong>mal concevoir un site peut en bloquer</strong>, qu&#8217;il s&#8217;agisse de personnes atteintes de déficiences (physiques, mentales) ou pas.<br />
<span id="more-476"></span><br />
Pour se sensibiliser à ces bonnes pratiques de la conception des sites Web, il existe depuis peu le guide <a href="http://www.eyrolles.com/Informatique/Livre/9782212121018/livre-memento-sites-web-les-bonnes-pratiques.php">Sites Web : les bonnes pratiques</a> édité dans la collection <a href="http://www.eyrolles.com/Informatique/Collection/4143/memento.php">Memento</a> d&#8217;<a href="http://www.eyrolles.com/">Eyrolles</a>. Les habitués de l&#8217;initiative <a href="http://fr.opquast.com/">Opquast</a> ne seront pas dépaysés étant donné qu&#8217;il en reprend les quelques <strong>153 bonnes pratiques</strong>.</p>
<p>Mais au final, c&#8217;est quoi une <em>bonne pratique</em> ? Quelques règles que certains appliquent sans se rendre compte alors que d&#8217;autres sont au contraire bien loin de pouvoir ne serait-ce que les imaginer.</p>
<p>Exemples de bonnes pratiques simples que n&#8217;importe qui peut mettre en oeuvre :</p>
<ul>
<li><cite>Le nom du site et/ou le nom de l&#8217;auteur sont indiqués sur chaque page</cite> ;</li>
<li><cite>Le soulignement est réservé aux hyperliens</cite> ;</li>
<li><cite>Le site propose au moins un moyen de contacter l&#8217;auteur et/ou le webmestre</cite>.</li>
</ul>
<p>D&#8217;autres sont plus tordues au premier abord mais totalement justifiée, certaines abordant le délicat sujet de l&#8217;<a href="http://css.alsacreations.com/Accessibilite-du-Web/">accessibilité</a> :</p>
<ul>
<li><cite>Les hyperliens sont visuellement différenciés du reste du contenu</cite> ;</li>
<li><cite>L&#8217;emplacement du menu principal de navigation est identique sur toutes les pages</cite> ;</li>
<li><cite>La navigation reste possible sur l&#8217;ensemble du site en utilisant exclusivement le clavier</cite>.</li>
</ul>
<p>Comme vous pouvez le constater, ça n&#8217;a rien de bien sorcier. C&#8217;est un peu comme dire <cite>bonjour</cite> en se présentant à un inconnu : c&#8217;est le minimum à fournir pour établir une conversation. Lorsqu&#8217;on crée un site Web, c&#8217;est une conversation avec le monde que l&#8217;on établit <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/sites-web-les-bonnes-pratiques/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>

