<?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; bonnes pratiques</title>
	<atom:link href="http://case.oncle-tom.net/tag/bonnes-pratiques/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 : 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>Développement efficace avec les frameworks CSS</title>
		<link>http://case.oncle-tom.net/2008/developpement-efficace-frameworks-css/</link>
		<comments>http://case.oncle-tom.net/2008/developpement-efficace-frameworks-css/#comments</comments>
		<pubDate>Tue, 25 Nov 2008 06:00:08 +0000</pubDate>
		<dc:creator>Oncle Tom</dc:creator>
				<category><![CDATA[Développement Web]]></category>
		<category><![CDATA[blueprint]]></category>
		<category><![CDATA[bonnes pratiques]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[logiciels libres]]></category>
		<category><![CDATA[parisweb]]></category>
		<category><![CDATA[rythme vertical]]></category>
		<category><![CDATA[xhtml]]></category>
		<guid isPermaLink="false">http://case.oncle-tom.net/?p=1211</guid>
		<description><![CDATA[J&#8217;ai eu peur il y a 2 semaines en arrivant à Paris-Web 2008 : en discutant avec plusieurs personnes, il se trouve que peu d&#8217;entre elles connaissaient les frameworks CSS. Je craignais de n&#8217;attirer personne avec ce sujet lors des ateliers du samedi. Les frameworks CSS ont été mentionnés la première fois dans la conférence [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-1214" title="Logo Blueprint" src="http://case.oncle-tom.net/images/2008/11/blueprint-logo.png" alt="" width="340" height="82" /></p>
<p>J&#8217;ai eu peur il y a 2 semaines en arrivant à <a href="http://case.oncle-tom.net/2008/11/20/paris-web-2008-webdesign-qualite-standards/">Paris-Web 2008</a> : en discutant avec plusieurs personnes, il se trouve que peu d&#8217;entre elles connaissaient les <em>frameworks</em> <acronym title="Cascading Style Sheets">CSS</acronym>. Je craignais de n&#8217;attirer personne avec ce sujet lors des <a href="http://www.paris-web.fr/2008/-samedi-15-novembre-technique-">ateliers du samedi</a>.</p>
<p>Les <em>frameworks</em> <acronym title="Cascading Style Sheets">CSS</acronym> ont été mentionnés la première fois dans la conférence <a href="http://www.wait-till-i.com/2008/10/31/working-in-the-now/">Working in the Now</a> (<a title="Visualiser la présentation Working in the Now de Christian Heilmann" href="http://www.slideshare.net/cheilmann/working-in-the-now-presentation">visualiser la présentation</a>). Au final, on n&#8217;était pas loin de faire salle comble avec plus d&#8217;une vingtaine de participants à vue de nez.</p>
<p>Une petite scéance de rattrapage s&#8217;impose <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p><span id="more-1211"></span></p>
<h3>Pourquoi avoir choisi ce sujet ?</h3>
<p>J&#8217;ai lu un article sur <a href="http://www.biologeek.com/ergonomie,informatique/l-importance-du-rythme-vertical-en-design-css/">l&#8217;importance du rythme vertical</a> l&#8217;an dernier sur <a href="http://www.biologeek.com">Biologeek</a> et ça m&#8217;a sensibilisé au fait qu&#8217;on pouvait rendre la lecture d&#8217;un site tout simplement en rendant prédictible la position du texte.</p>
<p>Entre temps j&#8217;ai également lu l&#8217;excellent <a href="http://case.oncle-tom.net/2007/12/11/critique-transcender-css-sublimez-design-web/">Transcender <acronym title="Cascading Style Sheets">CSS</acronym></a> d&#8217;<a href="http://www.stuffandnonsense.co.uk">Andy Clarke</a>. J&#8217;y ai été sublimé par des présentations de sites totalement en grille.</p>
<p>Depuis je suis devenu fan de <a href="http://www.blueprintcss.org/">Blueprint <acronym title="Cascading Style Sheets">CSS</acronym></a> (je crois que ça s&#8217;est remarqué lors de mon intervention <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> ). J&#8217;ai commencé à l&#8217;utiliser sur des projets personnels puis dans un cadre professionnel. J&#8217;utilisais déjà <a href="http://www.symfony-project.org">symfony</a> comme framework <acronym title="Pre-Hypertext Processing">PHP</acronym> et <a href="http://jquery.com">jQuery</a> comme framework JavaScript alors pourquoi pas Blueprint ?</p>
<p>Comme le suggérait très justement <a href="http://www.wait-till-i.com">Christian Heilmann</a> dans sa présentation, l&#8217;utilisation d&#8217;outils déjà existants est nécessaire pour réduire les coûts de production. C&#8217;était déjà un bon alibi mais je les apprécie aussi parce qu&#8217;on gagne un temps fou ! On se concentre sur le code métier, pas le reste.</p>
<h3>La présentation</h3>
<p>Je n&#8217;en dis pas plus, je vous laisse lire la présentation. Ayez toutefois en tête qu&#8217;en vrai elle dure facilement 1h.</p>
<div style="text-align:center"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=pariswebdeveloppementefficaceframeworkscss-1226764594180788-9&amp;stripped_title=dveloppement-efficace-avec-les-frameworks-css-presentation" /><embed type="application/x-shockwave-flash" width="425" height="355" src="http://static.slideshare.net/swf/ssplayer2.swf?doc=pariswebdeveloppementefficaceframeworkscss-1226764594180788-9&amp;stripped_title=dveloppement-efficace-avec-les-frameworks-css-presentation" allowscriptaccess="always" allowfullscreen="true"></embed></object></div>
<h3>Ce qu&#8217;il faut en retenir</h3>
<p>J&#8217;ai rencontré 2 types de réactions lorsque j&#8217;ai parlé des frameworks : les enthousiastes et les réfractaires.</p>
<p>Je ne reviens pas sur les enthousiastes : il suffit de lire ma présentation. Les atouts les ont clairement séduit.<br />
Je m&#8217;intéresserai plutôt aux réfractaires. Assez paradoxalement, ce n&#8217;est pas dans la salle que je les ai eu mais en dehors. Les principaux arguments étaient :</p>
<ul>
<li>ça rajoute des kilo-octets superflus</li>
<li>on perd le contrôle de notre code</li>
<li>j&#8217;utilise déjà le mini-framework d&#8217;un collègue ou qui existait dans mon entreprise avant que j&#8217;arrive</li>
</ul>
<p>Ces arguments sont tout à fait acceptables &#8230; mais ça dépend dans quel contexte.</p>
<div id="attachment_1215" class="wp-caption aligncenter" style="width: 510px"><img class="size-full wp-image-1215" title="Exemple de mise en forme en grille" src="http://case.oncle-tom.net/images/2008/11/blueprint-sample.png" alt="Exemple de mise en forme en grille" width="500" height="226" /><p class="wp-caption-text">Exemple de mise en forme en grille</p></div>
<p>Les sites à la recherche de performances exceptionnelles, ceux pour qui un Ko supprimé économise plusieurs Go de bande-passante par jour &#8230; oui ceux-là ont un grand intérêt à réfléchir à l&#8217;adoption d&#8217;un <em>framework</em>, aussi compressé qu&#8217;il soit.<br />
Je ne me fais pas de soucis pour eux : en général ils ont leur propre <em>framework</em>, totalement adapté à leur besoin. Cependant ça n&#8217;empêche pas d&#8217;aller prendre des idées ailleurs et de découvrir de nouveaux concepts. Puis de les intégrer.</p>
<p>Lorsqu&#8217;on adopte un outil de développement rapide (RAD), la conception ne se fait plus par rapport à nos habitudes mais par rapport à des <strong>principes établis</strong>. On ne fait plus forcément comme on veut mais les meilleurs <em>frameworks</em> disposent de fonctionnalités répondant à cette problématique. Le <a href="http://www.jdclayton.com/blueprints_compress_a_walkthrough.html"><em>compressor</em></a> de Blueprint en est un parfait exemple.<br />
Il permet de construire une version de Blueprint adaptée à son besoin, inclut des feuilles de notre choix et compresse le tout en un seul fichier prêt à la mise en production.</p>
<p>Maintenant l&#8217;avantage d&#8217;un <em>framework</em> c&#8217;est qu&#8217;une <strong>communauté</strong> ou un groupe de personnes compétentes en ont la gestion. Ces mainteneurs produisent une documentation, des spécifications et un code suffisamment compréhensible à lire. Ce n&#8217;est pas forcément le cas de Joe le développeur à qui on aura demandé 36 choses en même temps.<br />
Je fais davantage confiance à un outil éprouvé avec succès sur des milliers de projets qu&#8217;un outil développé sur un coin de bureau, malgré toute la bonne volonté de son concepteur.<br />
C&#8217;est également un risque certes mais un bon outil délaissé aura tout de même le mérite de fonctionner &#8230; et d&#8217;avoir davantage de chances de trouver un repreneur.</p>
<p>Une remarque intéressante a également émergé de l&#8217;atelier : faut-il utiliser un <em>framework</em> <acronym title="Cascading Style Sheets">CSS</acronym> avant ou après que la créa graphique ait été établie ?<br />
Je réitère ma réponse : <strong>l&#8217;idéal est que tout soit pris en charge le plus tôt possible</strong>. Autrement dit, intégrer les contraintes du <em>framework</em> dès la conception graphique est un gros atout. Le découpage de la maquette n&#8217;en sera que facilité et ça évitera tout bricolage.<br />
Certains outils l&#8217;ont d&#8217;ailleurs bien compris en proposant des supports pour graphistes au format PSD, Visio, Fireworks etc.</p>
<div id="attachment_1213" class="wp-caption aligncenter" style="width: 310px"><a href="http://case.oncle-tom.net/images/2008/11/960-sketch-sheets.png"><img class="size-medium wp-image-1213" title="Feuilles de dessin pour 960 Grid System" src="http://case.oncle-tom.net/images/2008/11/960-sketch-sheets-300x232.png" alt="Feuilles de dessin pour 960 Grid System" width="300" height="232" /></a><p class="wp-caption-text">Feuilles de dessin pour 960 Grid System</p></div>
<h3>Conclusion</h3>
<p>Quoiqu&#8217;il en soit, les <em>frameworks</em> <acronym title="Cascading Style Sheets">CSS</acronym> sont à mon avis promis à un bel avenir dès lors que les critères d&#8217;industrialisation auront débarqué au sein des agences Web.</p>
<p>Aujourd&#8217;hui une petite agence a tout à gagner à maîtriser de tels outils et à annoncer qu&#8217;elle développera mieux, plus vite et moins cher. Le prix ne fait pas tout : ce sont les <strong>outils et la qualité du développement</strong>. Tous les <em>frameworks</em> cités sont également des logiciels libres.</p>
<p>J&#8217;espère que cet aperçu rapide aura ouvert les yeux à certains d&#8217;entre vous. Je suis preneur de vos retours, surtout en entreprise. Ça vaut également pour celles et ceux qui ne sont toujours pas convaincu de l&#8217;intérêt des <em>frameworks</em> <acronym title="Cascading Style Sheets">CSS</acronym> <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p><strong>Remarque</strong> : il y avait 2 ateliers complémentaires à Paris-Web :</p>
<ul>
<li><a href="http://css.mammouthland.net/parisweb/optimisation-css.php">Optimiser ses <acronym title="Cascading Style Sheets">CSS</acronym></a></li>
<li><a href="http://romy.tetue.net/spip.php?article555">Cascade et héritage : concevoir, organiser, optimiser et maintenir ses feuilles de style</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://case.oncle-tom.net/2008/developpement-efficace-frameworks-css/feed/</wfw:commentRss>
		<slash:comments>25</slash:comments>
		</item>
		<item>
		<title>Paris-Web 2008 : au nom du webdesign, de la qualité et des standards</title>
		<link>http://case.oncle-tom.net/2008/paris-web-2008-webdesign-qualite-standards/</link>
		<comments>http://case.oncle-tom.net/2008/paris-web-2008-webdesign-qualite-standards/#comments</comments>
		<pubDate>Thu, 20 Nov 2008 06:00:13 +0000</pubDate>
		<dc:creator>Oncle Tom</dc:creator>
				<category><![CDATA[Accessibilité]]></category>
		<category><![CDATA[Standards du Web]]></category>
		<category><![CDATA[bonnes pratiques]]></category>
		<category><![CDATA[ergonomie]]></category>
		<category><![CDATA[logiciels libres]]></category>
		<category><![CDATA[paris]]></category>
		<category><![CDATA[parisweb]]></category>
		<category><![CDATA[performances]]></category>
		<category><![CDATA[pw2008]]></category>
		<category><![CDATA[qualité]]></category>
		<guid isPermaLink="false">http://case.oncle-tom.net/?p=1203</guid>
		<description><![CDATA[J&#8217;ai enfin pu assister à mon premier Paris-Web à Paris du 13 au 15 novembres 2008 inclus. C&#8217;était bien, très bien mais que dis-je : excellent ! J&#8217;ai rarement eu aussi peu envie de rentrer chez moi après cette multitude de rencontres dans un état d&#8217;esprit des plus respectueux. Y&#8217;a même pas de troll pendant [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-1204" title="Badge Paris-Web 2008" src="http://case.oncle-tom.net/images/2008/11/badge-paris-web-2008.jpg" alt="" width="327" height="500" /></p>
<p>J&#8217;ai <em>enfin</em> pu assister à mon premier <a href="http://www.paris-web.fr/">Paris-Web</a> à Paris du 13 au 15 novembres 2008 inclus. C&#8217;était bien, très bien mais que dis-je : excellent ! J&#8217;ai rarement eu aussi peu envie de rentrer chez moi après cette multitude de rencontres dans un état d&#8217;esprit des plus respectueux.</p>
<p>Y&#8217;a même pas de troll pendant la conférence <em>Internet Explorer 8</em>, c&#8217;est dire.</p>
<p><span id="more-1203"></span></p>
<h3>Les conférences en quelques mots</h3>
<p>Les <a href="http://www.paris-web.fr/2008/-programme-">conférences de Paris-Web 2008</a> étaient réparties du jeudi au vendredi. Je souhaitais intituler cette partie &laquo;&nbsp;mes conférences préférées&nbsp;&raquo; mais en faisant le décompte, j&#8217;en citerais au moins 75% :</p>
<ul>
<li><a href="http://www.slideshare.net/elirene/sp-parisweb2008-20081113-presentation/">Qualité et accessibilité Web : vers l’amélioration continue</a></li>
<li><a href="http://www.slideshare.net/cheilmann/working-in-the-now-presentation">Travailler dans le présent</a></li>
<li><strong>Accessibilité, des volontaires ?</strong></li>
<li>Internationalisation</li>
<li><strong>La mode se démode, le &lt;style&gt; jamais</strong></li>
<li>Identité 2.0 et Web sémantique</li>
<li>IE8 et les standards du Web</li>
<li><strong>Performances côté client</strong></li>
</ul>
<div class="wp-caption aligncenter" style="width: 344px"><a class="tt-flickr tt-flickr-Medium" title="Stéphane Deschamps" href="http://www.flickr.com/photos/the-jedi/3034676683/"><img src="http://farm4.static.flickr.com/3237/3034676683_5eedcfdbb4.jpg" alt="Stéphane Deschamps" width="334" height="500" /></a><p class="wp-caption-text">Stéphane Deschamps</p></div>
<p>Ce qu&#8217;il faut retenir c&#8217;est que désormais, nous sommes dans une époque où nombre d&#8217;outils sont à notre disposition. Il faut <strong>maximiser l&#8217;utilisation d&#8217;outils déjà existants</strong> et s&#8217;en servir pour bâtir nos applications, interfaces et présentations.</p>
<p>Il faut également qu&#8217;on en finisse avec notre approche trop technique et intégriste de travailleurs du Web : <strong>le client se fiche éperdument de la techno employée</strong> ou de la fonctionnalité en elle-même. Ce qui compte c&#8217;est ce qu&#8217;elle apporte ainsi que le résultat final.<br />
Bien entendu, si la solution employée tient compte des performances et est facile à mettre en œuvre, c&#8217;en n&#8217;est que mieux.</p>
<p>Élie me faisait la remarque : <strong>il faut vendre de la qualité et pas de l&#8217;accessibilité</strong>. Il faut vendre un site qui rassure et guide le client. Si le site n&#8217;est déjà pas adapté aux individus sans déficiences, à quoi bon s&#8217;acharner à le rendre accessible ?<br />
Mieux vaut beaucoup de sites accessibles à 60% qu&#8217;une infime proportion de sites accessibles à 99%.</p>
<p>Bon nombre de conseils sur l&#8217;optimisation des sites Web étaient déjà cités dans l&#8217;excellentissime <a href="http://case.oncle-tom.net/2008/07/15/high-performance-web-sites/">livre High Performances Websites</a>. L&#8217;équipe <em>Exceptional Performance</em> de Yahoo! s&#8217;est toutefois penchée à fond sur l&#8217;optimisation des images.<br />
J&#8217;y reviendrai d&#8217;ailleurs car j&#8217;ai découvert <em>pngnq</em> et <em>pngcrush</em>. Ces 2 programmes sont d&#8217;une utilité redoutable pour compresser et optimiser vos <acronym title="Portable Network Graphics">PNG</acronym>, notamment pour faciliter la transparence <acronym title="Internet Explorer 6">IE6</acronym> sans douleur.</p>
<div class="wp-caption aligncenter" style="width: 348px"><a class="tt-flickr tt-flickr-Medium" title="Chris Wilson" href="http://www.flickr.com/photos/the-jedi/3043455147/"><img src="http://farm4.static.flickr.com/3135/3043455147_016c2baa1d.jpg" alt="Chris Wilson" width="338" height="500" /></a><p class="wp-caption-text">Chris Wilson</p></div>
<p>On terminera également avec une perspective du futur.<br />
Daniel Glazman a fait un show exceptionnel sur les <strong>nouveautés de CSS3</strong> avec tout plein de bonnes choses. J&#8217;ai vraiment hâte qu&#8217;on puisse jouer avec &#8230; peut-être dans pas si longtemps que ça vu que les navigateurs intègrent ces nouveautés par anticipation.</p>
<p>De son côté, Chris Wilson (qui faisait déjà partie de l&#8217;équipe de développement de Mozaïc) a abordé les standards et Internet Explorer 8. En toute honnêteté, j&#8217;admire la bravoure de cet homme &laquo;&nbsp;seul&nbsp;&raquo; face à une assemblée pro-standards qui passe sa journée à jeter des cailloux sur Internet Explorer.<br />
Pour avoir un peu discuté avec lui après coup, il représente une chance exceptionnelle d&#8217;enfin avoir Internet Explorer au niveau des autres navigateurs.</p>
<p>Si fonctionnellement je me fiche éperdument du navigateur puisque je ne l&#8217;utiliserai plus, le monde a tout à gagner à avoir <strong>un navigateur de plus à respecter les standards</strong>.<br />
Bon courage à Chris car ça ne doit pas être évident tous les jours pour lui. Je n&#8217;ose pas imaginer les montages qu&#8217;il a dû déplacer pour imposer ce choix du respect.</p>
<h3>Du côté des ateliers</h3>
<p>Le samedi c&#8217;était ateliers : 2 sessions le matin et 2 l&#8217;après-midi. Je me suis d&#8217;ailleurs vite retrouvé avec des choix cornéliens puisque pour chaque horaire, il y avait 5 sujets qui se faisaient concurrence.</p>
<p>J&#8217;ai pour ma part assisté à :</p>
<ul>
<li><a href="http://www.paris-web.fr/2008/-samedi-15-novembre-technique-#hcalendar-Paris-Web_2008-15_novembre_2008-atelier-redaction_et_referencement_naturel">Rédaction Web et référencement naturel</a></li>
<li><a href="http://www.paris-web.fr/2008/-samedi-15-novembre-technique-#hcalendar-Paris-Web_2008-15_novembre_2008-atelier-validation_formulaires">Validation avancée des formulaires</a></li>
<li><a href="http://www.paris-web.fr/2008/-samedi-15-novembre-technique-#hcalendar-Paris-Web_2008-15_novembre_2008-atelier-frameworks_CSS">Développement efficace avec les <span lang="en">frameworks <acronym title="Cascading Style Sheet"><acronym title="Cascading Style Sheets">CSS</acronym></acronym></span></a></li>
<li><a href="http://www.paris-web.fr/2008/-samedi-15-novembre-technique-#hcalendar-Paris-Web_2008-15_novembre_2008-atelier-rdf_vs_microformats"><acronym title="Resource Description Framework" lang="en"><acronym title="Resource Description Framework">RDF</acronym></acronym>a <abbr class="discret" title="versus" lang="en">vs</abbr> Microformats</a></li>
</ul>
<p>La <strong>rédaction Web était intéressante</strong> même si je n&#8217;ai pas appris grand chose et j&#8217;en profitais pour terminer mes <em>slides</em>. Vous retrouverez tout le contenu de cette présentation dans le livre <a href="http://case.oncle-tom.net/2008/01/08/ecrit-web-traitement-information-sur-internet/">l&#8217;écrit Web</a>.</p>
<p>La <strong>validation avancée des formulaires partait d&#8217;un bon principe</strong> mais s&#8217;enfonçait inutilement dans certaines parties. À mon avis, expliquer chaque fonction (y compris celles du <acronym title="Document Object Model">DOM</acronym>) était une perte de temps.<br />
Conseil : charger ses slides ne rend pas pour autant l&#8217;information digeste. C&#8217;est pas un document Word.<br />
C&#8217;était néanmoins intéressant pour le raisonnement et la satisfaction de mettre en place son propre validateur. Toutefois en production autant utiliser de l&#8217;existant. Il y a des <em>plugins</em> pour tous les bons frameworks JavaScript qui se respectent.</p>
<p>Je passe sur l&#8217;atelier des <strong>frameworks <acronym title="Cascading Style Sheets">CSS</acronym></strong> puisque je l&#8217;animais. J&#8217;y reviendrai dans un prochain article pour appuyer ma présentation et fournir des explications à ceux qui n&#8217;ont pas pu y assister.<br />
J&#8217;étais en revanche étonné qu&#8217;ils soient si peu connus. J&#8217;ai par contre été enchanté de les voir cités à plusieurs reprises dans mes conférences préférées <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Rien à redire sur <strong>RDFa vs. Microformats</strong> même si on aurait pu éjecter les microformats rapidements et plonger encore plus loin dans la pratique de RDFa. Ça sera prétexte à une suite plus technique l&#8217;an prochain <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<div class="wp-caption aligncenter" style="width: 510px"><a class="tt-flickr tt-flickr-Medium" title="Amélie Boucher" href="http://www.flickr.com/photos/the-jedi/3035518848/"><img src="http://farm4.static.flickr.com/3175/3035518848_5670eddbfa.jpg" alt="Amélie Boucher" width="500" height="334" /></a><p class="wp-caption-text">La sublime Amélie Boucher</p></div>
<h3>Sans oublier les gens !</h3>
<p>Paris-Web c&#8217;est aussi l&#8217;occasion de <a href="http://www.biologeek.com/2008/11/paris-web-2008-retours-chaud/">rencontrer la moitié de son aggrégateur</a> et de ses <em>followers</em> Twitter <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Et Dieu sait s&#8217;il y avait tout un tas de pointures du Web à notre disposition dans une ambiance exceptionnellement cordiale :</p>
<ul>
<li>Sophie Major, big boss du Yahoo! Developer Network</li>
<li><a href="http://www.stubbornella.org/">Nicole Sullivan</a>, de l&#8217;équipe Yahoo! <em>Exceptional Performance</em></li>
<li><a href="http://www.wait-till-i.com/">Christian Heilmann</a> et son incroyable bonne humeur pragmatique ; je suis fan !</li>
<li><a href="http://glazman.org">Daniel Glazman</a>, du <acronym title="Cascading Style Sheets">CSS</acronym> Working Group ; franc, direct et j&#8217;aime ça</li>
<li>Sans oublier pêle-mêle <a href="http://www.sutekidane.net/">Than</a>, <a href="http://www.tentatives-accessibles.eu">Sébastien Delorme</a>, <a href="http://blog.webatou.info/">Monique</a>, <a href="http://www.jeuxdemaux.com/">La Lène</a>, <a href="http://www.ergolab.net">Amélie Boucher</a>, <a href="http://redisdead.net">Hellgy</a>, <a href="http://goetter.fr">Raphaël Goetter</a>, <a href="http://openweb.eu.org/">Fabrice Bonny</a>, <a href="http://www.netvibes.com/znarf">François Hodierne</a>, <a href="http://xavier.borderie.net/blog/">Xavier Borderie</a> &#8230; et en oubliant très certainement plein d&#8217;autres :&#8217;(</li>
<li>Et d&#8217;excellentes découvertes : <a href="http://hanblog.info/blog/">Anthony Ricaud</a>, <a href="http://blog.virgule.info/">Mathieu Pillard</a> et toute l&#8217;<strong>équipe Paris-Web</strong> !</li>
</ul>
<div class="wp-caption aligncenter" style="width: 510px"><a class="tt-flickr tt-flickr-Medium" title="Table ronde du jeudi" href="http://www.flickr.com/photos/the-jedi/3034679191/"><img src="http://farm4.static.flickr.com/3270/3034679191_d551c06a85.jpg" alt="Table ronde du jeudi" width="500" height="334" /></a><p class="wp-caption-text">La brochette des meilleurs !</p></div>
<h3>Conclusion</h3>
<p>Bref, <strong>Paris-Web c&#8217;est bien</strong>. Tellement bien que l&#8217;attente de l&#8217;édition 2009 me paraît déjà insoutenable !</p>
<p>Je ne regrette au final qu&#8217;une chose : 3 jours ça paraît long mais ça passe teeeeeeeeeeeeellement vite en compagnie de personnes de qualité avec un programme chargé.<br />
J&#8217;ai essayé de discuter avec un maximum de personnes, que je connaissais ou pas, mais des fois c&#8217;est très insuffisant.</p>
<p>Les tables rondes étaient également exceptionnelles &#8230; désolé ça frise le billet sponsorisé mais il est difficile de ne pas déborder d&#8217;enthousiasme après un tel évènement.</p>
<p>C&#8217;est l&#8217;<strong>effet Paris-Web</strong>. Rendez-vous est pris.</p>
<p><a class="tt-flickr tt-flickr-Medium" title="François Yergeau nous parle d'internationalisation" href="http://www.flickr.com/photos/the-jedi/3039040472/"><img class="aligncenter" src="http://farm4.static.flickr.com/3020/3039040472_65bfdecfbd.jpg" alt="François Yergeau nous parle d'internationalisation" width="500" height="334" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://case.oncle-tom.net/2008/paris-web-2008-webdesign-qualite-standards/feed/</wfw:commentRss>
		<slash:comments>21</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>High Performance Web Sites</title>
		<link>http://case.oncle-tom.net/2008/high-performance-web-sites/</link>
		<comments>http://case.oncle-tom.net/2008/high-performance-web-sites/#comments</comments>
		<pubDate>Tue, 15 Jul 2008 05:00:15 +0000</pubDate>
		<dc:creator>Oncle Tom</dc:creator>
				<category><![CDATA[Développement Web]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[bonnes pratiques]]></category>
		<category><![CDATA[critique]]></category>
		<category><![CDATA[firebug]]></category>
		<category><![CDATA[gzip]]></category>
		<category><![CDATA[livre]]></category>
		<category><![CDATA[logiciels libres]]></category>
		<category><![CDATA[mod_deflate]]></category>
		<category><![CDATA[mod_expires]]></category>
		<category><![CDATA[mod_gzip]]></category>
		<category><![CDATA[optimisation]]></category>
		<category><![CDATA[oreilly]]></category>
		<category><![CDATA[yahoo]]></category>
		<category><![CDATA[yslow]]></category>
		<guid isPermaLink="false">http://case.oncle-tom.net/?p=943</guid>
		<description><![CDATA[High Performance Web Site, sous-titré Essential Knowledge for Frontend Engineers, est ce genre de livre à lire au moins une fois à défaut de le posséder. Il résume en à peu près 120 pages 14 points d&#8217;optimisation d&#8217;un site Web. C&#8217;est d&#8217;autant plus intéressant que l&#8217;approche se base sur les mécanismes et non sur de [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="size-full wp-image-944" title="High Performance Web Sites (couverture)" src="http://case.oncle-tom.net/images/2008/07/livre-high-performance-web-sites.jpg" alt="High Performance Web Sites (couverture)" width="240" height="240" /></p>
<p><a href="http://www.amazon.fr/dp/0596529309/">High Performance Web Site</a>, sous-titré <em>Essential Knowledge for Frontend Engineers</em>, est ce genre de <strong>livre à lire au moins une fois</strong> à défaut de le posséder. Il résume en à peu près 120 pages 14 points d&#8217;optimisation d&#8217;un site Web.</p>
<p>C&#8217;est d&#8217;autant plus intéressant que l&#8217;<strong>approche se base sur les mécanismes</strong> et non sur de l&#8217;optimisation de code. Ainsi dans la plupart des cas, vous n&#8217;aurez &laquo;&nbsp;que&nbsp;&raquo; du paramétrage serveur à faire.</p>
<p><span id="more-943"></span></p>
<p>Ce livre fait étrangement penser aux <a href="http://developer.yahoo.com/performance/">conseils de haute performance</a> prodigués par le <a href="http://developer.yahoo.com">Yahoo! Developer Network</a> et repris par l&#8217;extension <a href="http://getfirebug.com">Firefox pour Firebug</a>, j&#8217;ai nommé <a href="http://developer.yahoo.com/yslow/">YSlow</a>.<br />
C&#8217;est normal : ce livre est écrit par un ingénieur de Yahoo!, probablement un de ceux qui ont participé à la rédaction du guide de performances.</p>
<h3>Pourquoi acheter High Performance Web Sites ?</h3>
<p>On serait tenté de ne pas acheter le livre puisqu&#8217;une bonne partie de ses conseils sont repris sur le guide de haute performance cité plus haut.</p>
<p>Sachez toutefois que <strong>cet ouvrage va plus loin dans le détail</strong>, prend bien le temps de présenter ses tests de performance pour illustrer et de justifier l&#8217;application de leurs méthodes. La plupart des relevés de mesure sont effectués sur une dizaine de sites allant de Google à Amazon.</p>
<p>J&#8217;achèterais ce livre si j&#8217;étais :</p>
<ul>
<li>un <strong>administrateur système</strong> chargé d&#8217;héberger 1 ou plusieurs sites Web</li>
<li>un <strong>technicien/webmaster</strong> en charge d&#8217;un site à plus ou moins fort trafic</li>
<li>un <strong>développeur Web</strong> soucieux des performances de ses productions</li>
<li>toute personne avare en kilo-octets superflus</li>
<li>toute personne voulant <strong>accélérer les temps de réponse</strong> de son ou ses sites Web</li>
</ul>
<p style="text-align:center"><a href="http://case.oncle-tom.net/images/2008/07/yslow-emunova-components.png"><img class="size-medium wp-image-945 aligncenter" title="YSLow sur Emu Nova : les composants" src="http://case.oncle-tom.net/images/2008/07/yslow-emunova-components-300x81.png" alt="YSLow sur Emu Nova : les composants" width="300" height="81" /></a></p>
<h3>Les 14 points d&#8217;optimisation</h3>
<p>High Performance Web Sites axe son discours sur 14 points :</p>
<ol>
<li><a href="http://developer.yahoo.com/performance/rules.html#num_http">Limiter le nombre de requêtes <acronym title="HyperText Transfer Protocol">HTTP</acronym></a></li>
<li><a href="http://developer.yahoo.net/blog/archives/2007/04/high_performanc_1.html">Utiliser un Content Delivery Network (CDN)</a></li>
<li><a href="http://developer.yahoo.net/blog/archives/2007/05/high_performanc_2.html">Utiliser une entête Expires</a></li>
<li><a href="http://developer.yahoo.net/blog/archives/2007/07/high_performanc_3.html">Compresser les composants avec Gzip ou Deflate</a></li>
<li><a href="http://developer.yahoo.net/blog/archives/2007/07/high_performanc_4.html">Placer les feuilles de style en début de page</a></li>
<li><a href="http://developer.yahoo.net/blog/archives/2007/07/high_performanc_5.html">Placer les scripts JavaScript en bas de page</a></li>
<li><a href="http://developer.yahoo.net/blog/archives/2007/07/high_performanc_6.html">Éviter les expressions <acronym title="Cascading Style Sheets">CSS</acronym></a> (Internet Explorer)</li>
<li><a href="http://developer.yahoo.net/blog/archives/2007/07/rule_8_make_jav.html">Placer les scripts JavaScript et les feuilles de style dans des fichiers externes</a></li>
<li><a href="http://developer.yahoo.com/performance/rules.html#dns_lookups">Réduire le nombre d&#8217;appels à des <acronym title="Domain Name Server">DNS</acronym> différents</a></li>
<li><a href="http://developer.yahoo.net/blog/archives/2007/07/rule_8_make_jav.html">Minifier le JavaScript et les <acronym title="Cascading Style Sheets">CSS</acronym></a></li>
<li><a href="http://developer.yahoo.com/performance/rules.html#redirects">Éviter les redirections</a></li>
<li><a href="http://developer.yahoo.net/blog/archives/2007/07/high_performanc_10.html">Supprimer les doublons de scripts</a></li>
<li><a href="http://developer.yahoo.net/blog/archives/2007/07/high_performanc_11.html">Configurer ETags</a></li>
<li><a href="http://developer.yahoo.com/performance/rules.html#cacheajax">Permettre la mise en cache des appels Ajax</a></li>
</ol>
<p>Il prend cependant le soin de bien expliquer les <strong>mécanismes d&#8217;<acronym title="HyperText Transfer Protocol">HTTP</acronym></strong> et les intérêts à améliorer les performances <em>frontend</em>.</p>
<p>Le livre termine sur un comparatif des 14 points sur 10 sites, notation YSLow comprise, dont Amazon, Google, CNN, eBay, Wikipédia et Yahoo!.</p>
<h3>La mise en pratique</h3>
<p>J&#8217;étais déjà sensibilité à presque tous les points pour avoir lu ces fameuses 14 règles en utilisant l&#8217;<a href="http://case.oncle-tom.net/2007/12/25/bonnes-pratiques-firebug-developpement-web/">extension YSlow et Firebug</a>. Cependant après la lecture du livre j&#8217;ai eu davantage de clés et des exemples probants pour me convaincre de les mettre en œuvre.</p>
<p>On peut <strong>appliquer la majorité des points et les points pertinents en 1 heure</strong>. En effet, tout site ne peut se permettre d&#8217;utiliser un CDN pour accélérer les temps de réponse autour du globe.</p>
<p>Personnellement j&#8217;ai mis en place une <strong>compression Gzip directement au niveau d&#8217;Apache</strong> au lieu d&#8217;utiliser une compression effectuée en <acronym title="Pre-Hypertext Processing">PHP</acronym> (avec Gzip aussi). J&#8217;ai couplé cet effort avec la <strong>minification JavaScript</strong> et la <strong>désactivation des ETags</strong>.</p>
<p>J&#8217;avais déjà au préalable externalisés mes <acronym title="Cascading Style Sheets">CSS</acronym> et JavaScript, placé au bon endroit (mais seulement les appels externes au <acronym title="Domain Name Server">DNS</acronym> principal en bas de page) et sans doublon.</p>
<p>C&#8217;est bête à dire mais <strong>le résultat s&#8217;est vraiment senti avec des chargements de page incroyablement plus rapides</strong>. <em>YSlow</em> est effectivement un compagnon idéal pour la mise en application de ces éléments avec son analyse des performances et des composants.</p>
<p style="text-align: center;"><img class="size-full wp-image-946" title="YSLow sur Emu Nova : les statistiques" src="http://case.oncle-tom.net/images/2008/07/yslow-emunova-stats.png" alt="YSLow sur Emu Nova : les statistiques" width="402" height="379" /></p>
<h3>Conclusion</h3>
<p>J&#8217;ai dévoré <strong>High Performance Web Sites</strong> grâce à sa simplicité de rédaction, les nombreux exemples et surtout, les explications enrichissantes. Elles sont mises en application sur Yahoo! et certes, même si on peut se dire qu&#8217;on n&#8217;a pas de site de leur envergure, leurs conseils sont toujours bons à prendre.</p>
<p><strong>High Performance Web Sites</strong> est un concentré de bonnes pratiques, simples à mettre en œuvre. Pourquoi s&#8217;en priver ?</p>
<p>Ces optimisations ne sont évidemment pas les seules à mettre en place pour que tout fonctionne bien : il faut aussi produire du code <acronym title="HyperText Markup Language">HTML</acronym> propre, du JavaScript optimisé, du code application qui ne soit pas redondant.</p>
<p><strong>C&#8217;est un bon début et des pratiques à généraliser</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://case.oncle-tom.net/2008/high-performance-web-sites/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>BlogCamp Bordeaux #3 : le dessous des cartes</title>
		<link>http://case.oncle-tom.net/2008/blogcamp-bordeaux-3-le-dessous-des-cartes/</link>
		<comments>http://case.oncle-tom.net/2008/blogcamp-bordeaux-3-le-dessous-des-cartes/#comments</comments>
		<pubDate>Tue, 04 Mar 2008 06:00:29 +0000</pubDate>
		<dc:creator>Oncle Tom</dc:creator>
				<category><![CDATA[Projets]]></category>
		<category><![CDATA[atelier]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[blogcamp bordeaux]]></category>
		<category><![CDATA[bonnes pratiques]]></category>
		<category><![CDATA[bordeaux]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[france]]></category>
		<category><![CDATA[OpenOffice]]></category>
		<category><![CDATA[seo]]></category>
		<guid isPermaLink="false">http://case.oncle-tom.net/2008/03/04/blogcamp-bordeaux-3-le-dessous-des-cartes/</guid>
		<description><![CDATA[J&#8217;ai tenu ma première conférence vendredi 29 février 2008 à l&#8217;occasion de BlogCamp Bordeaux #3. Petite conférence car il n&#8217;y avait &#171;&#160;qu&#8217;une trentaine&#160;&#187; de personnes face à moi. Une fréquentation plus qu&#8217;honorable si on tient compte de la jeunesse de BlogCamp France, à savoir 3 mois. C&#8217;est l&#8217;occasion pour moi d&#8217;aborder cette session par un [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align:center"><img src="http://case.oncle-tom.net/images/2008/02/blogcamp-france-logo.png" alt="Logo BlogCamp France" /></p>
<p>J&#8217;ai tenu ma première conférence vendredi 29 février 2008 à l&#8217;occasion de <strong>BlogCamp Bordeaux #3</strong>. Petite conférence car il n&#8217;y avait &laquo;&nbsp;qu&#8217;une trentaine&nbsp;&raquo; de personnes face à moi. Une fréquentation plus qu&#8217;honorable si on tient compte de la jeunesse de <a href="http://blogcamp.fr/">BlogCamp France</a>, à savoir 3 mois.</p>
<p>C&#8217;est l&#8217;occasion pour moi d&#8217;aborder cette session par un angle un peu différent, en parlant notamment de l&#8217;aspect présentation : où, quand, comment et surtout combien de temps. Ce sera un bon <a href="http://blogcamp.fr/2008/03/04/compte-rendu-blogcamp-bordeaux-3/">complément du résumé officiel</a> et du <a href="http://blogcamp.fr/wiki/bordeaux/blogcamp3">wiki BlogCamp Bordeaux #3</a>.<br />
<span id="more-881"></span></p>
<h3>L&#8217;atelier BlogCamp Bordeaux #3</h3>
<div style="text-align:center"><object width="425" height="355"><param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=blogcamp-bordeaux-3-latelier-1204382639117599-4"/><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=blogcamp-bordeaux-3-latelier-1204382639117599-4" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object></div>
<p>Cette présentation m&#8217;a pris à peu près 8h de travail, en comptant le temps de recherche de la mise en page. On utilisait en effet pour la première fois un modèle commun. Ces 8 heures ont été réparties de la sorte :</p>
<ul>
<li>2 heures de recherche &laquo;&nbsp;artistique&nbsp;&raquo; <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  et de manipulations d&#8217;OpenOffice Impress infructueuses</li>
<li>3 heures consacrées aux grosses questions (au nombre de 2)</li>
<li>3 heures consacrées aux petites questions (au nombre de 3)</li>
</ul>
<p>8 heures de préparation pour &#8230; 45 minutes de présentation. J&#8217;avais une crainte là-dessus mais si la présentation avait duré 5 à 10 minutes de moins ça aurait été mieux. C&#8217;est noté pour la prochaine fois <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /><br />
Comme toujours, une présentation en direct est autrement plus parlante puisque les <em>slides</em> ne sont qu&#8217;un support à la discussion.</p>
<p>L&#8217;exercice consistait à répondre à des questions posées au préalable : de la gestion générale à du très précis ciblant la présentation d&#8217;un blog particulier. L&#8217;occasion de vulgariser au maximum des concepts tels que les sauvegardes, le référencement et les feuilles de style.</p>
<h3>Les faits marquants de BlogCamp Bordeaux #3</h3>
<p>Outre la razzia sur les boissons (après 1h il n&#8217;y avait déjà plus rien à boire), j&#8217;ai noté une <strong>grande mixité des participants</strong> : étudiants, salariés, patrons &#8230; tous liés au Web &#8230; ou pas. Le dénominateur commun de toutes ces personnes était clairement la curiosité de découvrir un évènement lié au Web à Bordeaux.<br />
C&#8217;est d&#8217;autant plus satisfaisant que ces personnes en sont reparties le sourire aux lèvres, ravies d&#8217;avoir rencontré de nouveaux contacts et constaté qu&#8217;à Bordeaux, ça bougeait enfin un peu. Une progression à suivre.</p>
<p>Je note aussi la <strong>présence de la &laquo;&nbsp;Dream Team&nbsp;&raquo; bordelaise</strong> avec des représentants des sociétés <a href="http://www.addeo.com/">ADDEO</a>, <a href="http://www.websiteburo.com/">Websiteburo</a>, <a href="http://www.clever-age.com/">Clever Age</a> mais surtout <a href="http://www.temesis.com/">Temesis</a>. J&#8217;espère très sincèrement que la prochaine fois on pourra davantage discuter et échanger tous ensemble sur le Web à Bordeaux.</p>
<p>La rumeur du jour serait qu&#8217;un <strong>blog commun aux sociétés des TIC</strong> serait en cours de création pour diffuser de l&#8217;information liée à l&#8217;économie du Web à Bordeaux. J&#8217;espère que ça se concrétisera et contribuera à dynamiser l&#8217;économie numérique de la région.</p>]]></content:encoded>
			<wfw:commentRss>http://case.oncle-tom.net/2008/blogcamp-bordeaux-3-le-dessous-des-cartes/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Bonnes pratiques de codage CSS</title>
		<link>http://case.oncle-tom.net/2008/bonnes-pratiques-codage-css/</link>
		<comments>http://case.oncle-tom.net/2008/bonnes-pratiques-codage-css/#comments</comments>
		<pubDate>Tue, 26 Feb 2008 06:00:18 +0000</pubDate>
		<dc:creator>Oncle Tom</dc:creator>
				<category><![CDATA[Développement Web]]></category>
		<category><![CDATA[Standards du Web]]></category>
		<category><![CDATA[aptana]]></category>
		<category><![CDATA[bonnes pratiques]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[coding standards]]></category>
		<category><![CDATA[compresseur]]></category>
		<category><![CDATA[conventions]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[CSSDoc]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[feuille de style]]></category>
		<category><![CDATA[indentation]]></category>
		<category><![CDATA[logiciels libres]]></category>
		<category><![CDATA[optimisation]]></category>
		<guid isPermaLink="false">http://case.oncle-tom.net/2008/02/26/bonnes-pratiques-codage-css/</guid>
		<description><![CDATA[J&#8217;y songeais mais l&#8217;article «De l&#8217;ordre, que diable !» m&#8217;a incité à m&#8217;y atteler plus tôt que prévu. Il n&#8217;y a en effet pas de méthode universelle pour programmer les CSS mais après plusieurs années d&#8217;expérience, j&#8217;ai affiné ma réflexion que je vous livre aujourd&#8217;hui. Où l&#8217;on parlera de présentation en 1 ligne, de CSSDoc [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align:center"><img src="http://case.oncle-tom.net/images/2008/02/css-url-import.png" alt="CSS URL @import" /></p>
<p>J&#8217;y songeais mais l&#8217;article «<a href="http://blog.alsacreations.com/2008/02/21/411-de-lordre-que-diable-">De l&#8217;ordre, que diable !</a>» m&#8217;a incité à m&#8217;y atteler plus tôt que prévu.<br />
Il n&#8217;y a en effet <strong>pas de méthode universelle pour programmer</strong> les <acronym title="Cascading Style Sheets"><acronym title="Cascading Style Sheets">CSS</acronym></acronym> mais après plusieurs années d&#8217;expérience, j&#8217;ai affiné ma réflexion que je vous livre aujourd&#8217;hui.</p>
<p>Où l&#8217;on parlera de présentation en 1 ligne, de CSSDoc mais aussi de <em>folding</em> et d&#8217;indentation. <strong>En clair, tout plein de bonnes pratiques</strong> de développement en <acronym title="Cascading Style Sheets">CSS</acronym> qui vous feront gagner du temps, vous éviterons de la sueur et sentent bon le travail de qualité.<br />
<span id="more-878"></span></p>
<h3>Halte là et retour à la ligne !</h3>
<p>J&#8217;ai utilisé pendant un moment la technique dite du <a href="http://orderedlist.com/articles/single-line-css">single line <acronym title="Cascading Style Sheets">CSS</acronym></a> ; à savoir 1 ligne par déclaration.<br />
Je n&#8217;hésiterai pas une seconde à dire que je déconseille fortement cette écriture pour les raisons suivantes :</p>
<ul>
<li>si on souhaite gagner de la place, il y a des compresseurs (je recommande <a href="http://developer.yahoo.com/yui/compressor/">YUI Compressor</a>): pas la peine de réaliser ce travail nous-même ;</li>
<li>l&#8217;ajout de commentaires n&#8217;en est que plus compliqué : on a tous besoin de commenter certains passages cruciaux, notamment les <em>hacks</em> et autres <em>fix</em> ;</li>
<li>c&#8217;est tout bonnement illisible dès qu&#8217;on s&#8217;y replonge quelques semaines plus tard : imaginez pour quelqu&#8217;un qui n&#8217;a pas écrit le code !</li>
</ul>
<p>Les arguments avancés pour cette technique ne tiennent pas la route : <strong>on recherche avant tout la qualité et la facilité de relecture</strong>. Les quelques kilo-octets à perdre se feront par le biais de programmes. Ça ne doit certainement pas entraver le développement.</p>
<h3>L&#8217;auto-documentation avec la syntaxe CSSDoc</h3>
<p>Les habitués de Java connaissent <a href="http://java.sun.com/j2se/javadoc/">JavaDoc</a>.<br />
Les habitués de <acronym title="Pre-Hypertext Processing">PHP</acronym> connaissent <a href="http://www.phpdoc.org/">PHPDoc</a>.<br />
Les habitués de JavaScript connaissent <a href="http://code.google.com/p/jsdoc-toolkit/">JsDoc Toolkit</a> (dérivé de <a href="http://jsdoc.sourceforge.net/">JsDoc</a>).</p>
<p>Il était donc tout naturel que cette syntaxe de commentaires et d&#8217;auto-documentation soit utilisable en <acronym title="Cascading Style Sheets">CSS</acronym> avec <a href="http://cssdoc.net">CSSDoc</a>. Il n&#8217;y a pas d&#8217;inconvénient à l&#8217;utiliser, au contraire, que des avantages :</p>
<ul>
<li>la syntaxe permet d&#8217;<strong>harmoniser les commentaires</strong> sur les projets impliquant plusieurs développeurs ;</li>
<li>sa syntaxe <strong>facilite la relecture</strong> puisqu&#8217;elle est connue et employée dans de nombreux langages, autres que les <acronym title="Cascading Style Sheets">CSS</acronym> ;</li>
<li>l&#8217;<strong>auto-documentation du code</strong> c&#8217;est faciliter la génération d&#8217;une documentation externe en automatisant le processus ;</li>
<li>documenter en même temps que l&#8217;on écrit c&#8217;est <strong>comprendre ce que l&#8217;on fait</strong> et gagner du temps en évitant une écriture <em>a posteriori</em> ;</li>
</ul>
<p><a href="http://cssdoc.net/wiki/CssdocDraft">La syntaxe CSSDoc est documentée</a>,  aisément reconnaissable et est supportée par les meilleurs éditeurs <acronym title="Cascading Style Sheets">CSS</acronym>, dont <a href="http://www.aptana.com/">Aptana IDE</a> :</p>
<pre><code class="css">/**
 * @author Oncle Tom
 * @lastmodified Fev, 26 2008
 * @media print, screen
 * @site http://www.oncle-tom.net/
 */
/**
 * Redéfinition des balises <acronym title="HyperText Markup Language">HTML</acronym>
 *
 * @section html
 * @todo utiliser un reset.css conforme
 */
html,
*{
  margin: 0;
  padding: 0;
}</code></pre>
<h3>L&#8217;organisation hiérarchique</h3>
<p>J&#8217;ai pour habitude de travailler avec une seule feuille de style par media. Comme je travaille sur des <strong>hiérarchies thématiques</strong>, leur découpage en plusieurs fichiers ne consiste qu&#8217;à du copier/coller. On peut ainsi facilement passer d&#8217;une mono-feuille à du multi-feuilles. Je ne suis pas un fervent utilisateur de ces dernières car un code bien lisible sur une seule page n&#8217;est pas problématique.<br />
Je ne l&#8217;emploie que pour faciliter la réutilisation des <acronym title="Cascading Style Sheets">CSS</acronym> sur plusieurs projets partageant la même base graphique.</p>
<p>Concrètement, je vais d&#8217;abord organiser ma feuille pour redéfinir les éléments <acronym title="HyperText Markup Language">HTML</acronym> génériques puis créer autant de sections qu&#8217;il n&#8217;y en a sur ma page (navigation, contenu, navigation de contenu, contenus annexes etc.).<br />
Plus je m&#8217;avancerai dans la profondeur du balisage <acronym title="HyperText Markup Language">HTML</acronym> et plus j&#8217;indenterai mon code. Cette indentation fait penser à celle utilisée par le <a href="http://www.python.org/">langage Python</a>.</p>
<p>On pourrait résumer cette convention à ceci :</p>
<ul>
<li><strong>pas de tabulation</strong>, que des espaces pour avoir le même affichage peu importe les éditeurs</li>
<li>2 espaces par tabulation</li>
<li><strong>attributs classés par ordre alphabétique</strong> (même logique pour tout le monde)</li>
<li>une ligne d&#8217;espace entre les définitions ; pas de ligne entre les définitions proches/liées</li>
</ul>
<p>C&#8217;est simple et voici un exemple de résultat :</p>
<pre><code class="css">/**
 * Redéfinition du <acronym title="HyperText Markup Language">HTML</acronym>
 */
a{
  text-decoration: underline;
}
  a img{
    border: none;
  }
p{
  line-height: 1.5em;
}
  p img{
    margin: 1.5em
  }
  p img.top{
    margin-top: 0;
  }
/**
 * Contenu
 */
#main-content{
  clear: both;
  width: 100%;
}
  /**
   * Articles
   */
  #articles{
    margin-bottom: 2em;
  }
    #articles h2{
      font-size: 1.5em;
      font-weight: bold;
    }</code></pre>
<p>Les mieux organisés d&#8217;entre vous ajouteront un <strong>tri par fréquence d&#8217;utilisation</strong> afin d&#8217;optimiser les va-et-vient : on met en haut ce qu&#8217;on est susceptible de modifier le plus souvent, en bas ce à quoi on touchera rarement. Je ne vais pas jusque là mais ça reste envisageable, pertinent et surtout adapté aux plus chevronnés de l&#8217;optimisation.</p>
<h3>Autres conseils et astuces</h3>
<h4>Utilisation de raccourcis</h4>
<p>Les <em>aficionados</em> de l&#8217;optimisation et du gain de temps apprécieront cette méthode, s&#8217;ils ne l&#8217;utilisent pas déjà. J&#8217;ai pour habitude de placer des raccourcis dans mes sections pour <strong>faciliter l&#8217;utilisation d&#8217;une recherche via le raccourci clavier</strong> <kbd>Control+F</kbd>.<br />
Je préfixe chaque raccourci d&#8217;un symbole <kbd>=</kbd> :</p>
<pre><code class="css">/**
 * Liens d'évitement
 * =evitement
 */</code></pre>
<p>Je trouve cette méthode très pratique pour atteindre des portions de code. On évite ainsi un appel à la touche <kbd>Alt Gr</kbd> pour appuyer sur le # d&#8217;un ID (pour peu que l&#8217;on n&#8217;ait que des ID en tant que sections). On évite aussi les collisions de nom ou les recherches infructueuses pour cause de changement de nom de classes ou d&#8217;ID.</p>
<h4>De la sémantique, que diable !</h4>
<p>Je suis particulièrement attaché à cette bonne pratique d&#8217;autant plus qu&#8217;elle ne tombe pas forcément sous le sens de tout le monde : <strong>nommez vos ID et classes en fonction de leur <em>signification</em>, pas de leur <em>représentation</em></strong>. C&#8217;est la suite logique de la séparation fond et forme du <acronym title="HyperText Markup Language">HTML</acronym> et des <acronym title="Cascading Style Sheets">CSS</acronym>.</p>
<p><strong>Mauvaise sémantique</strong> :</p>
<pre><code class="css">.rouge{
  color: red;
}
#sidebar{
  /* ... */
}
#top-links{
  /* ... */
}</code></pre>
<p><strong>Bonne/meilleure sémantique</strong> :</p>
<pre><code class="css">.important{
  color: red;
}
#alternate-navigation{
  /* ... */
}
#main-links{
  /* ... */
}</code></pre>
<p><code>#sidebar</code> pourra être renommé différemment selon son contenu, selon que l&#8217;encart contienne des éléments de navigation supplémentaires, des informations utilisateur (<code>#user-content</code>) ou encore des widgets (<code>#widgets</code>).<br />
En conservant votre <acronym title="HyperText Markup Language">HTML</acronym> intact et en jouant sur les <acronym title="Cascading Style Sheets">CSS</acronym>, la <code>#sidebar</code> peut en effet se retrouver tout en bas, à l&#8217;horizontale. Aurez-vous toujours envie de l&#8217;appeler pareil ? Pas forcément. <strong>Un bon nommage est un nommage qui se conserve peu importe l&#8217;aspect de la présentation</strong>.</p>
<h4>Du choix de la langue</h4>
<p>Cette bonne pratique s&#8217;applique aussi bien aux <acronym title="Cascading Style Sheets">CSS</acronym> qu&#8217;à d&#8217;autres langages. Il faut partir du principe qu&#8217;<strong>il ne faut pas mélanger les langues dans le code</strong>, tant dans les commentaires que dans le nommage des classes et ID. <strong>Choisissez-une langue et restez avec</strong>.<br />
Certaines contraintes peuvent faciliter le choix de la langue : le travail avec une équipe internationale ou la redistribution du code. Dans ce cas l&#8217;anglais sera à 99% votre langue de prédilection.</p>
<p>Il n&#8217;y a pas de choix idéal : certains préféreront le tout français, d&#8217;autres le tout anglais. L&#8217;essentiel est que ce <strong>choix soit motivé par des arguments objectifs, pas une préférence personnelle</strong>.</p>
<h4>Recours au <em>folding</em></h4>
<p>J&#8217;en parle succintement mais le <em>folding</em> consiste à utiliser votre éditeur <acronym title="Cascading Style Sheets">CSS</acronym> pour <strong>masquer une partie de code</strong>. Eclipse propose par exemple de masquer toutes les définitions et tous les commentaires : leur contenu n&#8217;est révélé qu&#8217;en le dépliant.</p>
<p>Je ne suis pas un fervent utilisateur de cette pratique bien que je respecte son utilisation. Je trouve qu&#8217;en utilisation les précédentes astuces (hiérarchie + recherche) on s&#8217;y retrouve très bien.</p>
<p style="text-align:center"><img src="http://case.oncle-tom.net/images/2008/02/css-folding.png" alt="Folding en CSS" /></p>
<h3>Conclusion</h3>
<p>Ma méthodologie n&#8217;est pas parfaite, peut être perfectible et ne conviendra pas à tout le monde, par goûts ou par habitudes. Ces dernières sont cependant à combattre pour améliorer son travail. <strong>Quoi de mieux qu&#8217;un code propre, bien documenté et où l&#8217;on trouvera facilement ce que l&#8217;on cherche</strong> ?</p>
<p>C&#8217;est ce qui importe. <strong>Il y a autant de façons de coder qu&#8217;il n&#8217;y a de développeurs</strong>. Le tout est d&#8217;être ouvert aux améliorations possibles, aux méthodes existantes et à l&#8217;intérêt de leurs utilisations. Je trouverai peut-être cet article obsolète dans 1 an mais il aura été un point de passage.</p>
<p>J&#8217;espère qu&#8217;il le sera au moins en partie pour vous, développeur en herbe ou féru des pseudo-classes <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://case.oncle-tom.net/2008/bonnes-pratiques-codage-css/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>BlogCamp : pour devenir blogueur et améliorer son blog</title>
		<link>http://case.oncle-tom.net/2008/blogcamp-pour-devenir-blogueur-et-ameliorer-son-blog/</link>
		<comments>http://case.oncle-tom.net/2008/blogcamp-pour-devenir-blogueur-et-ameliorer-son-blog/#comments</comments>
		<pubDate>Tue, 05 Feb 2008 06:00:53 +0000</pubDate>
		<dc:creator>Oncle Tom</dc:creator>
				<category><![CDATA[Projets]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[blog@bordeaux]]></category>
		<category><![CDATA[blogcamp bordeaux]]></category>
		<category><![CDATA[bonnes pratiques]]></category>
		<category><![CDATA[bordeaux]]></category>
		<category><![CDATA[logiciels libres]]></category>
		<guid isPermaLink="false">http://case.oncle-tom.net/2008/02/05/blogcamp-pour-devenir-blogueur-et-ameliorer-son-blog/</guid>
		<description><![CDATA[Si seulement TiBo avait imaginé que son blog@bordeaux avait semé les germes de BlogCamp France &#8230; et pourtant c&#8217;est le cas. Je vais évangéliser en faveur de cette association toute fraîche de promotion des blogs auprès des blogueurs &#8230; mais aussi ceux qui ne le sont pas (encore). Je vais également tâcher d&#8217;expliquer les motivations [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align:center"><img src='http://case.oncle-tom.net/images/2008/02/blogcamp-france-logo.png' alt='Logo BlogCamp France' /></p>
<p>Si seulement <a href="http://www.tibo-etc.com/">TiBo</a> avait imaginé que son <a href="http://www.thibaut-charron.com/blog/2007/10/27/blogbordeaux/">blog@bordeaux</a> avait semé les germes de <a href="http://www.blogcamp.fr/">BlogCamp France</a> &#8230; et pourtant c&#8217;est le cas.</p>
<p>Je vais évangéliser en faveur de cette association toute fraîche de <strong>promotion des blogs auprès des blogueurs</strong> &#8230; mais aussi ceux qui ne le sont pas (encore). Je vais également tâcher d&#8217;expliquer les <em>motivations</em> de mon implication et pourquoi ça vaut bien quelques cernes marquées. Il y a des tabous à lever &#8230; et des <em>bonnes pratiques</em> à apporter <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /><br />
<span id="more-863"></span></p>
<h3>BlogCamp, qu&#8217;est-ce que c&#8217;est ?</h3>
<blockquote><p>BlogCamp est un rendez-vous mensuel entre blogueurs dans l&#8217;esprit des <a href="http://barcamp.org/">BarCamp</a> bien connus des technophiles. La seule différence est que dans un BlogCamp on parle blog life et pas forcément que de nouvelles technologies et d&#8217;Internet. Tous les blogueurs ne sont en effet pas des professionnels du Web (si, si).</p>
</blockquote>
<p>Le décor est planté, reste à le comprendre.</p>
<p>Quand on constate que les 2/3 des blogs se paraphrasent entre eux, que les blogs sont associées à des récits puérils (y compris jusqu&#8217;au niveau des entreprises) et qu&#8217;à Bordeaux il manquait un tissu social numérique, l&#8217;idée de BlogCamp est née. L&#8217;idée d&#8217;une <strong>réunion conviviale où les outils et les connaissances seraient mis à disposition du public</strong>, blogueurs ou pas. L&#8217;essentiel étant d&#8217;être curieux et intéressé par ce phénomène auréolé de stéréotypes.</p>
<h3>BlogCamp, le rendez-vous des blogueurs &#8230; et de ceux qui ne le sont pas</h3>
<p>Les stéréotypes parlons-en. Ils gravitent autour de 2 expressions phares :</p>
<ul>
<li><q>Je suis blogueur</q></li>
<li><q>Blogosphère</q></li>
</ul>
<p><strong>Le blogueur est une personne comme vous et moi</strong> : normale. Le blogueur n&#8217;est pas un être surnaturel ou un superhéros venu de Krypton pour sauver l&#8217;internaute lambda d&#8217;un ennui mortel. Être blogueur c&#8217;est avant tout une idée de partage, aussi maladroite soit son expression.</p>
<p>Ça rejoint d&#8217;ailleurs très bien l&#8217;idée que l&#8217;on forge de la <q>blogosphère</q> : fermée de l&#8217;extérieur, en circuit fermé de l&#8217;intérieur. En clair ça sent le moisi. Comment inciter les gens bien intentionnés et peu connaisseurs de se lancer dans un blog en pensant qu&#8217;il faut être fort et avoir de bonnes relations ?</p>
<p>C&#8217;est pour ça que <strong>BlogCamp s&#8217;adresse à celles et ceux qui ont un blog ou qui n&#8217;en ont pas</strong> mais qui souhaiteraient en avoir un.</p>
<p style="text-align:center"><a href="http://www.flickr.com/photos/22239045@N03/2222147955/"><img src="http://farm3.static.flickr.com/2353/2222147955_7a84df9e7a.jpg" alt="Présentation BlogCamp ergonomie et usabilité" /></a></p>
<h3>Le contenu et les conversations au cœur des rendez-vous</h3>
<p>BlogCamp cherche à créer du contenu en <strong>diffusant des bonnes pratiques</strong>, en dispensant des <strong>ateliers techniques</strong> et en <strong>réservant du temps aux échanges entre participants</strong>. Un soin tout particulier est apporté pour intégrer les nouvelles têtes afin de les mettre à l&#8217;aise.<br />
Chaque mois ce sont des conférences, avec des intervenants extérieurs ou pas, pour éduquer les esprits :</p>
<ul>
<li>les blogs ne sont pas des sapins de Noël : la dizaine de widgets des barres latérales n&#8217;ont pas à exister</li>
<li>l&#8217;identité d&#8217;un blog ça se construit : nous donnons les pistes à explorer</li>
<li>le référencement d&#8217;un blog peut être facilité avec un minimum de bonnes pratiques</li>
</ul>
<p>Bien d&#8217;autres concepts sont à aborder et leur orientation dépendra des sensations perçues lors des différentes interventions. L&#8217;idée est que tout participant y trouve son compte, apprenne des choses et mûrisse dans son approche du blog. Le <q>kikoolol</q> de SkyBlog a suffisamment hanté les consciences.</p>
<h3>BlogCamp, le concept déclinable clés en main</h3>
<p>La face cachée de BlogCamp c&#8217;est la <strong>réflexion dans sa conception</strong> : tout a été pensé pour que le concept soit facilement déclinable et facilement reproductible dans une autre ville de France.<br />
BlogCamp c&#8217;est aussi une solution packagée clés en main avec nom de domaine, hébergement, emails, ressources (wiki, diaporamas, cartes de visite etc.) et toute la synergie médiatique. Quelques détails sont encore à régler mais en l&#8217;espace de quelques minutes, un nouveau BlogCamp peut se créer en France en un minimum d&#8217;efforts.</p>
<p>Pour cela, <strong>BlogCamp repose essentiellement sur du logiciel libre et des standards ouverts</strong>. Internet est né grâce à cette ouverture, les blogs doivent poursuivre sur cette voie.</p>
<p><a href="http://blogcamp.fr/2008/02/01/blogcamp-bordeaux-3/">La troisième session de BlogCamp Bordeaux se tiendra le vendredi 29 février 2008 à 19h00</a>. J&#8217;espère y rencontrer un maximum de personnes désireuses d&#8217;en savoir plus sur les blogs et leur utilisation.<br />
Profitez-en, c&#8217;est gratuit et c&#8217;est pas votre pouvoir d&#8217;achat qui rechignera <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>]]></content:encoded>
			<wfw:commentRss>http://case.oncle-tom.net/2008/blogcamp-pour-devenir-blogueur-et-ameliorer-son-blog/feed/</wfw:commentRss>
		<slash:comments>4</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>jQuery : optimiser l&#8217;utilisation des sélecteurs CSS</title>
		<link>http://case.oncle-tom.net/2007/jquery-optimisation-selecteurs-css/</link>
		<comments>http://case.oncle-tom.net/2007/jquery-optimisation-selecteurs-css/#comments</comments>
		<pubDate>Tue, 18 Dec 2007 07:00:02 +0000</pubDate>
		<dc:creator>Oncle Tom</dc:creator>
				<category><![CDATA[Développement Web]]></category>
		<category><![CDATA[bonnes pratiques]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[css 3]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[optimisation]]></category>
		<category><![CDATA[performances]]></category>
		<guid isPermaLink="false">http://case.oncle-tom.net/2007/12/18/jquery-optimisation-selecteurs-css/</guid>
		<description><![CDATA[JQuery est une formidable librairie JavaScript car elle offre une grande souplesse et une utilisation simple. Il est cependant important de bien comprendre son fonctionnement pour éviter les débordements liés à une joie mal maîtrisée. S&#8217;il est très facile d&#8217;utiliser les sélecteurs CSS de jQuery, je constate de ci de là que leur utilisation n&#8217;est [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align:center"><img src="http://case.oncle-tom.net/images/2007/12/jquery-logo.png" alt="Logo jQuery" /></p>
<p><a href="http://jquery.com">JQuery</a> est une formidable librairie JavaScript car elle offre une grande souplesse et une utilisation simple. <strong>Il est cependant important de bien comprendre son fonctionnement</strong> pour éviter les débordements liés à une joie mal maîtrisée.<br />
S&#8217;il est très facile d&#8217;utiliser les sélecteurs <acronym title="Cascading Style Sheets">CSS</acronym> de jQuery, je constate de ci de là que leur utilisation n&#8217;est pas toujours optimale &#8230; quand elle l&#8217;est déjà un tant soit peu.</p>
<p>Alors on se retrousse les manches et c&#8217;est parti pour un petit <strong>cas pratique sur les sélecteurs <acronym title="Cascading Style Sheets">CSS</acronym></strong> jQuery, plus une petite récap&#8217; pour grapiller du temps et des lignes de code <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /><br />
<span id="more-832"></span></p>
<h3>Le cas pratique</h3>
<p>J&#8217;ai pensé à une chose : plutôt que vous papillonniez en lisant cet article, j&#8217;ai fait en sorte que vous puissiez y prendre part. JQuery est très divertissant &#8211; certainement plus que votre voisine d&#8217;en face &#8211; alors tant qu&#8217;à me lire, autant optimiser la compréhension <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /><br />
Pour cela il vous faut 2 choses :</p>
<ol>
<li>un <a title="Sandbox HTML / jQuery" href="http://case.oncle-tom.net/images/2007/12/sandbox-oncletom-20071217.htm">bac à sable <acronym title="HyperText Markup Language">HTML</acronym> / jQuery</a> concocté par mes soins</li>
<li>l&#8217;inévitable <a href="https://addons.mozilla.org/fr/firefox/addon/1843">extension Firebug</a> pour bénéficier d&#8217;une console digne de ce nom (entre autre)</li>
</ol>
<h3>Principe de la sélection <acronym title="Cascading Style Sheets">CSS</acronym> de jQuery</h3>
<p>Que celui qui s&#8217;est lancé corps et âme dans jQuery sans lire la <a title="documentation jQuery" href="http://docs.jquery.com/Selectors">documentation</a> lâche un com&#8217; ! Elle est suffisamment complète pour éviter la plupart des questions du genre <q>comment je fais pour &#8230;</q>.</p>
<p>Maintenant que vous avez le document en main, nous allons jouer avec jQuery pour récupérer ce que nous voulons. Les personnes n&#8217;ayant pas Firebug comprendront la logique du code sans même avoir à le regarder :</p>
<pre><code class="javascript">// Récupération du premier paragraphe
$('body p:first-child');
// Récupération du nœud des continents
$('ul.continents');
// Récupération de la liste des capitales
$('.capitale');
// Récupération du dernier élément du body
$('body :last');
// Compter le nombre de pays
$('.pays &gt; li').length;
</code></pre>
<p>Magique non ?</p>
<h3>Comprendre la sélection <acronym title="Cascading Style Sheets">CSS</acronym> de jQuery</h3>
<p>Les résultats sont propres mais n&#8217;est pas parce que ça marche que c&#8217;est bien. La preuve, tous les exemples ci-dessus ne sont pas du tout optimisés.<br />
Alors <strong>comment savoir si un sélecteur est optimisé</strong> ou pas ? La réponse n&#8217;est pas systématique car elle dépend exclusivement de votre rigueur et du <acronym title="Document Object Model"><acronym title="Document Object Model">DOM</acronym></acronym> à interroger. Plus il sera touffu et plus votre sens aigü de la performance sera sollicité.</p>
<p>Reprenons les exemples ci-dessus pour le transposer en JavaScript <em>old-school</em>. C&#8217;est le meilleur moyen de sentir le piège &#8230; ou pas.</p>
<pre><code class="javascript">// Récupération du premier paragraphe
$('body p:first-child');
// équivaut à
document.getElementsByTagName('body')[0].getElementsByTagName('p')[0];</code></pre>
<p>Il y a 2 erreurs dans cette sélection :</p>
<ol>
<li>sélectionner <code>body</code>. <code>getElementsByTagName()</code> oblige à parcourir tous les nœuds du document (1000 s&#8217;il y en a 1000) alors qu&#8217;on n&#8217;en veut qu&#8217;un &#8230; et qu&#8217;il ne peut y en avoir d&#8217;un ;</li>
<li>on sélectionne ensuite tous les <code>p</code> du body. Autant le faire dès la première fois car là encore c&#8217;est tous les nœuds contenus dans <code>body</code> qui sont parcourus &#8230; y compris l&#8217;énorme liste à puces !</li>
</ol>
<pre><code class="javascript">// Récupération du nœud des continents
$('ul.continents');
// équivaut à
var continents = [];
var el = document.getElementsByTagName('ul');
for (i in el)
{
  if (el[i].className.match(/(^| )continents( |$)/);
  {
     continents.push(el[i]);
  }
}</code></pre>
<p>La sélection est ici trop générique. On voit bien que l&#8217;on est obligé de charger tous les éléments <code>ul</code> du <acronym title="Document Object Model">DOM</acronym> pour les filtrer.</p>
<pre><code class="javascript">// Récupération de la liste des capitales
$('.capitale');
// équivaut à
var capitales = [];
var el = document.getElementsByTagName('*');
for (i in el)
{
  if (el[i].className.match(/(^| )capitale( |$)/);
  {
     capitales.push(el[i]);
  }
}</code></pre>
<p>C&#8217;est probablement la dernière chose à faire. Cassez les genoux de toute personne écrivant un tel sélecteur : il mérite d&#8217;animer le BigDill rien de plus !<br />
Dans ce cas de figure, c&#8217;est TOUT le <acronym title="Document Object Model">DOM</acronym> qui est chargé (75 éléments) pour ensuite boucler sur un filtre. Cette boucle n&#8217;est pas optimisée mais ce n&#8217;est pas ce que l&#8217;on souhaite travailler aujourd&#8217;hui <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<pre><code class="javascript">// Récupération du dernier élément du body
$('body :last');
// équivaut à
var el = document.getElementsByTagName('body')[0].lastChild;</code></pre>
<p>Comme dans le premier cas, le <code>document.getElementsByTagName()</code> charge tout le <acronym title="Document Object Model">DOM</acronym> pour le filtrer, ne récupérer que le premier élément et, seule opération non coûteuse, utiliser son dernier enfant.<br />
Ce n&#8217;est pas la pire des exemples mais là encore on peut optimiser les choses.</p>
<pre><code class="javascript">// Compter le nombre de pays
$('.pays &gt; li').length;
// équivaut à
var pays = 0;
var el = document.getElementsByTagName('*');
for (i in el)
{
  if (el[i].className.match(/(^| )pays( |$)/);
    {
      var continent = el[i];
      for (j in continent.childNodes)
      {
        pays += continent.childNodes[j].nodeName == 'li' ? 1 : 0;
      }
    }
  }
}</code></pre>
<p>Un sélecteur par classe ne devrait être qu&#8217;un cas extrême, quand on ne peut se fier à une balise donnée. Car de manière générale, le <code>getElementsByTagName('*')</code> est à bannir. Charger tout le <acronym title="Document Object Model">DOM</acronym> est une folie furieuse.<br />
La bonne idée ici est l&#8217;utilisation du symbole <code>&gt;</code>. Cela se traduit par <code>.childNodes</code> et nous verrons plus bas pourquoi c&#8217;est mieux.</p>
<h3>Et maintenant, optimisons</h3>
<p>S&#8217;il fallait <strong>résumer l&#8217;optimisation en 3 points</strong>, voici ce que je donnerai :</p>
<ol>
<li>jamais de sélecteur vague</li>
<li>toujours un ID (#&lt;ID&gt;) en tête de sélecteur</li>
<li>utiliser au maximum les objets natifs (<code>firstChild</code>, <code>childNodes</code> etc.) : ils évitent d&#8217;interroger tout le <acronym title="Document Object Model">DOM</acronym></li>
</ol>
<p><strong>L&#8217;ennemi des sélecteurs <acronym title="Cascading Style Sheets">CSS</acronym> ce sont les boucles</strong>. Plus elles ont à brasser d&#8217;éléments, plus elles sont longues. <code>getElementsByTagName()</code> cache une boucle : JavaScript scanne tout le <acronym title="Document Object Model">DOM</acronym> pour trouver un nœud ayant un <code>tagName</code> correspondant.<br />
<strong>S&#8217;il faut l&#8217;utiliser, c&#8217;est en aval d&#8217;un sélecteur ayant déjà trié une bonne partie du document.</strong></p>
<p><strong>Votre meilleur ami est <code>getElementById()</code></strong>. Comme son nom l&#8217;indique il ne retourne qu&#8217;un seul élément et surtout, il est incroyablement rapide. Utilisez-le dans un maximum de cas mais attention tout de même : trop d&#8217;ID nuit à la structure du document le rendant ainsi trop rigide.<br />
Il en est de même du parcours des objets natifs des nœuds du <acronym title="Document Object Model">DOM</acronym>. Cela signifie que dès que vous changer la tête de votre <acronym title="HyperText Markup Language">HTML</acronym>, le JavaScript peut en pâtir.</p>
<p>Des fois <strong>il faudra faire quelques concessions de performances pour éviter de réécrire votre code</strong> au moindre changement &#8230; ou parce que la génération est dynamique et difficilement maîtrisable.</p>
<p>Grâce à ces informations, nous pouvons reprendre nos exemples mais de manière optimisée :</p>
<pre><code class="javascript">// Récupération du premier paragraphe
$('body p:first-child');
// version optimisée
$('#sandbox &gt; p:first');
// Récupération du nœud des continents
$('ul.continents');
// version optimisée
$('#geoliste');
// Récupération de la liste des capitales
$('.capitale');
// version optimisée (mais fortement liée à la structure du document)
$('#geoliste &gt; li &gt; ul ul &gt; li.capitale');
// Récupération du dernier élément du body
$('body :last');
// version optimisée
$('#sandbox :last');
// Compter le nombre de pays
$('.pays &gt; li').length;
// version optimisée (mais liée à la structure du document)
$('#geoliste &gt; li &gt; ul &gt; li').length;
</code></pre>
<h3>Évitons les doublons : chaînons !</h3>
<p>Les <acronym title="Cascading Style Sheets">CSS</acronym> c&#8217;est un peu fatiguant alors terminons sur une autre utilisation de jQuery parfois sous-employée à cause d&#8217;un manque de compréhension : les chaînes. jQuery renvoie des objets et permet de réutiliser/filtrer les résultats avec un seul sélecteur.</p>
<p>Voici un extrait de code largement optimisable :</p>
<pre><code class="javascript">$('#intro').addClass('jevaisdisparaitre');
$('#intro').append(' &lt;strong&gt;Je vais disparaître&lt;/strong&gt;.');
$('#intro code').html('Goodbye World');
$('#intro').css('cursor', 'pointer');
$('#intro').one('click', function(){ alert("Bye bye"); $(this).remove(); });
</code></pre>
<p>Tout est correct sauf qu&#8217;on répète plusieurs fois le même sélecteur au lieu d&#8217;utiliser la chaîne disponible. jQuery optimise la sélection d&#8217;un élément déjà sélectionné au préalable mais n&#8217;empêche, au lieu d&#8217;interroger 5 fois <code>#intro</code>, nous n&#8217;allons plus le faire qu&#8217;une seule fois :</p>
<pre><code class="javascript">$('#intro')
  .addClass('jevaisdisparaitre')
  .append(' &lt;strong&gt;Je vais disparaître&lt;/strong&gt;.')
  .one('click', function(){
    alert("Bye bye");
    $(this).remove();
  })
  .children('code')
  .html('Goodbye World');
</code></pre>
<p>Tout se suit jusqu&#8217;à la fonction <code>children()</code> qui modifie le sélecteur de départ et applique la suite de la chaîne à cette nouvelle sélection.<br />
Une autre optimisation consiste à déplacer la déclaration <acronym title="Cascading Style Sheets">CSS</acronym> <code>cursor</code> dans la classe <code>.jevaisdisparaitre</code> de l&#8217;hypothétique feuille de style. <strong>Essayez de dissocier au mieux fond et forme</strong> : ça évite <em>BEAUCOUP</em> de modifications de code pour des ajustements esthétiques.</p>
<h3>Conclusion</h3>
<p><strong>Optimiser ses sélecteurs n&#8217;est finalement pas si difficile que ça quand on comprend comment fonctionnent les rouages internes</strong>. Il est évident que les gains peuvent être minimes sur de petites pages. Il s&#8217;agit cependant d&#8217;une gymnastique à maîtriser : ce n&#8217;est pas en arrivant sur de gros volumes qu&#8217;il faudra apprendre à sélectionner proprement.</p>
<p>Et comme <q>les petites rivières font les grands fleuves</q>, ces petites économies pourraient vous sauver la vie sur des applications full-<acronym title="Asynchronous JavaScript and XML">AJAX</acronym> ou qui sait, quand vous travaillerez chez Netvibes <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/jquery-optimisation-selecteurs-css/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Transcender CSS : sublimez le design Web !</title>
		<link>http://case.oncle-tom.net/2007/critique-transcender-css-sublimez-design-web/</link>
		<comments>http://case.oncle-tom.net/2007/critique-transcender-css-sublimez-design-web/#comments</comments>
		<pubDate>Tue, 11 Dec 2007 07:00:59 +0000</pubDate>
		<dc:creator>Oncle Tom</dc:creator>
				<category><![CDATA[Développement Web]]></category>
		<category><![CDATA[Standards du Web]]></category>
		<category><![CDATA[andy clarke]]></category>
		<category><![CDATA[bonnes pratiques]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[eyrolles]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[microformats]]></category>
		<category><![CDATA[semantique]]></category>
		<category><![CDATA[standards]]></category>
		<category><![CDATA[xhtml]]></category>
		<guid isPermaLink="false">http://case.oncle-tom.net/2007/12/11/critique-transcender-css-sublimez-design-web/</guid>
		<description><![CDATA[Concevoir un site Internet dans les règles de l&#8217;art demande de multiples compétences : architecture technique, programmation, graphismes, intégration, ergonomie et du bon sens. Transcender CSS : sublimez le design Web ! s&#8217;intéresse à l&#8217;aspect esthétique au travers des CSS. Ou comment CSS, sémantique, intégration XHTML, microformats, sources d&#8217;inspirations et approche du design en grilles [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align:center"><img src='http://case.oncle-tom.net/images/2007/12/transcencer-css-couverture.jpg' alt='Couverture de Transcender CSS' /></p>
<p>Concevoir un site Internet dans les règles de l&#8217;art demande de multiples compétences : architecture technique, programmation, graphismes, intégration, ergonomie et du bon sens. <a href="http://www.transcendingcss.com/">Transcender <acronym title="Cascading Style Sheets">CSS</acronym> : sublimez le design Web !</a> s&#8217;intéresse à l&#8217;aspect esthétique au travers des <acronym title="Cascading Style Sheet"><acronym title="Cascading Style Sheets">CSS</acronym></acronym>.</p>
<p>Ou comment <acronym title="Cascading Style Sheets">CSS</acronym>, sémantique, intégration <acronym title="eXtensible HyperText Markup Language">XHTML</acronym>, microformats, sources d&#8217;inspirations et approche du design en grilles sont indispensables pour tirer partie du meilleur du Web.<br />
<span id="more-823"></span><br />
<strong>Transcender <acronym title="Cascading Style Sheets">CSS</acronym> : sublimez le design Web !</strong> est un ouvrage paru en France en août 2007 aux éditions Eyrolles ; en novembre 2006 dans le monde anglophone. Le livre est broché sur 360 pages ce qui en fait un livre imposant et propice à de riches illustrations d&#8217;excellente qualité. <strong>Andy Clarke</strong>, son auteur, s&#8217;est permis ce plaisir pour montrer au mieux qu&#8217;un site visuellement alléchant et bien structuré est un succès assuré pour capter l&#8217;attention du visiteur.</p>
<p><strong>Transcender <acronym title="Cascading Style Sheets">CSS</acronym></strong> ne s&#8217;adresse pas aux débutants puisqu&#8217;il ne s&#8217;attardera pas à vous expliquer les modèles de boîte ou les innombrables bugs d&#8217;Internet Explorer. Son contenu évolue toutefois en douceur de la facilité à la complexité ce qui le rend néanmoins abordable par des néophytes.</p>
<p style="text-align:center"><img src='http://case.oncle-tom.net/images/2007/12/transcencer-1-decouverte.jpg' alt='Extrait du chapitre “Découverte” de Transcender CSS' /></p>
<h3>Découverte</h3>
<p><q>Organiser les contenus avant tout</q>, tel est le credo de <strong>Transcender <acronym title="Cascading Style Sheets">CSS</acronym></strong>. C&#8217;est l&#8217;objectif majeur de cette première partie ; partie qui devrait être lue et transmise par tous les enseignants puisqu&#8217;elle explique <strong>comment on adapte le design au contenu</strong> et non l&#8217;inverse.</p>
<p>La mise en pratique du balisage <acronym title="eXtensible HyperText Markup Language">XHTML</acronym> est menée avec pédagogie. Vous apprendrez comment <strong>traduire une image en balises <acronym title="HyperText Markup Language">HTML</acronym></strong> de manière adaptée. Et un bon balisage c&#8217;est déjà la moitié du travail, l&#8217;autre restant son habillage. Il faut dissocier le contenu et la mise en page tout en n&#8217;oubliant pas un point essentiel : <strong>donner du sens au contenu</strong>.<br />
Il existe de nombreuses balises <acronym title="eXtensible HyperText Markup Language">XHTML</acronym> qui ont chacune leur propre signification : il faut les utiliser pour donner du sens. C&#8217;est non seulement important pour le référencement mais aussi pour ancrer les feuilles de style de manière propre et efficace. Nos professeurs de français nous ont appris à utiliser des verbes riches au lieu de verbes pauvres (être, avoir, aller, prendre etc.) alors faisons de même avec les balises <acronym title="eXtensible HyperText Markup Language">XHTML</acronym> :</p>
<ul>
<li><code>&lt;h1 à h6&gt;</code> pour afficher des titres hiérarchiques</li>
<li><code>&lt;p&gt;</code> pour des paragraphes de textes (les images sont du texte)</li>
<li><code>&lt;ul/ol/li&gt;</code> pour des listes de contenus</li>
<li><code>&lt;q/cite/blockquote&gt;</code> pour des citations de textes</li>
<li><code>&lt;pre/code/kbd&gt;</code> pour des saisies de texte au clavier ou des extraits de code</li>
<li><code>&lt;span/div&gt;</code> dans les autres cas ; <strong>ce sont des balises neutres vides de tout sens</strong></li>
</ul>
<p>Et d&#8217;aborder dans la foulée les <a href="http://case.oncle-tom.net/2007/07/31/semantique-microformats-internet/">microformats</a>. Ça a été ma première surprise car je ne m&#8217;attendais pas à les retrouver dans ce livre. Un duo de page les aborde et montre (un peu trop succinctement) que microformater du contenu n&#8217;a rien d&#8217;impossible, surtout quand la structure <acronym title="eXtensible HyperText Markup Language">XHTML</acronym> est bonne dès le départ.</p>
<p style="text-align:center"><img src='http://case.oncle-tom.net/images/2007/12/transcencer-2-processus.jpg' alt='Extrait du chapitre “Processus” de Transcender CSS' /></p>
<h3>Processus</h3>
<p><strong>Transcender <acronym title="Cascading Style Sheets">CSS</acronym></strong> s&#8217;intéresse à une approche industrielle du processus de création. Autrement dit : <strong>comment proposer efficacement une interface graphique à un client/décideur sans investir trop de temps</strong>. Nous savons tous qu&#8217;il y a toujours du changement, mineur mais surtout majeur, et qu&#8217;il est difficile de chambouler toute une feuille de style pour repositionner des éléments en conservant une cohérence.</p>
<p>C&#8217;est là que l&#8217;approche par la <a href="http://jasonsantamaria.com/archive/2004/05/24/grey_box_method.php">méthode de la boîte grise</a> prend tout son sens. Elle définit à l&#8217;aide de boîtes grises l&#8217;<strong>agencement des contenus de la page</strong>. Une boîte, un contenu et le charme opère. Les classiques <em>story-board</em> s&#8217;en approchent.<br />
Cette méthode peut se compléter à l&#8217;aide de symboles pour représenter des éléments annexes (textes, formulaires etc.) mais est surtout très facilement réalisable à partir d&#8217;un logiciel de présentation de type <a href="http://fr.openoffice.org/docs/impress.html">OpenOffice Impress</a> ou <a href="http://office.microsoft.com/fr-fr/powerpoint/">Microsoft Powerpoint</a>.</p>
<p>Une fois les bases de la structure mise en place, l&#8217;heure est venue de présenter une maquette statique. Autrement dit du <acronym title="HyperText Markup Language">HTML</acronym> et des <acronym title="Cascading Style Sheets">CSS</acronym>. Les ajustements resteront possibles puisque la première partie du livre a expliqué comment mettre en œuvre une structure pérenne et libre de mise en forme.<br />
<strong>Transcender <acronym title="Cascading Style Sheets">CSS</acronym></strong> recommande fortement, et je suis on ne peut plus d&#8217;accord, d&#8217;utiliser de manière poussée les <a href="http://case.oncle-tom.net/2007/08/07/facebook-rock-your-firefox/">extensions indispensables de Firefox</a> que sont <a href="https://addons.mozilla.org/fr/firefox/addon/1843">Firebug</a> et <a href="https://addons.mozilla.org/fr/firefox/addon/60">Web Developer</a>.<br />
J&#8217;y consacrerai un billet mais les éditeurs intégré modifiant à la volée votre page sont des <strong>outils précieux offrant des gains de développement mésestimés</strong>.</p>
<p>L&#8217;ouvrage poursuit sur des <strong>bonnes pratiques d&#8217;organisation de son code</strong> au sein même des feuilles de style. Des pratiques qui permettent de retrouver facilement ses petits sans avoir à chercher inutilement. Des pratiques qui suggèrent également de bien coder pour mieux réutiliser son travail dans d&#8217;autres projets. Si vous estimez votre travail, pourquoi le recommencer intégralement lors du projet suivant ?</p>
<p style="text-align:center"><img src='http://case.oncle-tom.net/images/2007/12/transcencer-3-inspiration.jpg' alt='Extrait du chapitre “Inspiration” de Transcender CSS' /></p>
<h3>Inspiration</h3>
<p>Cette troisième partie a été mon deuxième choc pendant la lecture. C&#8217;est la partie dans laquelle j&#8217;ai le plus appris car <strong>elle explore des aspects finalement peu abordés</strong> dans les ouvrages liés aux <acronym title="Cascading Style Sheets">CSS</acronym>.</p>
<p>J&#8217;ai commencé à mieux percevoir l&#8217;<a href="http://www.biologeek.com/journal/index.php/l-importance-du-rythme-vertical-en-design-css">intérêt et l&#8217;ingéniosité du rythme vertical</a> grâce à la <strong>divine proportion</strong>. Qui aurait cru que les maths se cachaient aussi subtilement dans le design Web ? Certainement pas moi. Retenez bien le nombre 1,62 (φ) car c&#8217;est le <a href="http://goldennumber.net/">nombre d&#8217;or</a> qui régira avec majesté les designs <acronym title="Cascading Style Sheets">CSS</acronym> les plus réussis.<br />
En français, il s&#8217;agit de la règle des tiers. Au lieu de choisir arbitrairement la taille des contenus, divisez les espaces en largeurs proportionnelles, elles-mêmes divisibles par 1,62 etc. <strong>La clarté en résultat est tout simplement saisissante</strong>.</p>
<p>Tout ceci nous amène à parler du <a href="http://subtraction.com/">design par grille</a>. Vous venez de suivre le lien ? Vous aurez probablement remarqué, consciemment ou pas, que la page est découpée en 8 colonnes de largeur identiques. Certains contenus occupent davantage de place mais devinez-quoi ? Cela correspond toujours à un certain nombre de colonnes, pas une largeur hasardeuse.<br />
Cette lubie n&#8217;est pas si excentrique que cela puisqu&#8217;elle nous provient directement des &#8230; journaux papiers. Qui aurait cru que le New York Times aurait pu inspirer les meilleurs designers du Web ? Et pourtant, on ne regardera plus les journaux de la même manière en observant leur structure à 6 ou 8 colonnes. Du nombre d&#8217;or en veux-tu en voilà.</p>
<p><strong>Andy Clarke</strong> termine ce chapitre sur les sources d&#8217;inspirations. Là non plus il n&#8217;y a pas de frein à l&#8217;imagination puisque <strong>tout est susceptible de catalyser créativité</strong> : architectures d&#8217;immeubles, coupures de presse, publicités de magazines, affiches diverses et variées. Vous l&#8217;aurez compris, <strong>tous les supports visuels</strong> facilement agrégeables. </p>
<p style="text-align:center"><img src='http://case.oncle-tom.net/images/2007/12/transcencer-4-transcendance.jpg' alt='Extrait du chapitre “Transcendance” de Transcender CSS' /></p>
<h3>Transcendance</h3>
<p>Cette partie termine en apothéose <strong>Transcender <acronym title="Cascading Style Sheets">CSS</acronym></strong>. Nous savons intégrer, nous savons structurer et nous savons imaginer alors maintenant il va falloir sublimer. Au prix du livre, ça serait dommage que notre côté créatif n&#8217;aie pas pris du galon <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Il n&#8217;y a d&#8217;ailleurs qu&#8217;un point sur lequel j&#8217;ai du mal à adhérer : cette <strong>adhésion au positionnement absolu/relatif et le dénigrement déguisé des flottants</strong>. Si les positionnements relatifs permettent de forcer le positionnement d&#8217;un bloc, c&#8217;est en revanche une solution beaucoup moins flexible dans la majorité des cas. Cette technique oblige, à mes yeux, de connaître les tailles des éléments à positionner. <strong>C&#8217;est parfois impossible</strong>, <em>surtout</em> si on veut pouvoir s&#8217;affranchir de largeurs fixes pour profiter de <strong>designs élastiques</strong>.<br />
<em>Je comprends néanmoins</em> que c&#8217;est une pratique appréciable pour les designs en grilles.</p>
<p>De très nombreux cas pratiques abondent dans cette partie. Ces exemples stimulent l&#8217;imagination avec des mises en pages (et des variantes) convaincantes, attractives et on ne peut plus déclinables dans le monde réel. Réel ou presque puisqu&#8217;ils se basent sur des navigateurs valides uniquement.<br />
C&#8217;est l&#8217;occasion d&#8217;aborder le génie de <strong>Dean Edwards</strong> avec <a href="http://dean.edwards.name/IE7/">IE7, la librairie Javascript ultime pour Internet Explorer</a>. Cette librairie permet de mettre à niveau <em>Internet Explorer 5</em> et <em>Internet Explorer 6</em> au niveau d&#8217;<em>Internet Explorer 7</em>. Ce n&#8217;est certes pas la panacée mais ce n&#8217;est plus l&#8217;enfer truffé d&#8217;incertitude que l&#8217;on haït tant.</p>
<p><strong>Transcender <acronym title="Cascading Style Sheets">CSS</acronym></strong> conclut sur une quarantaine de pages avec les <acronym title="Cascading Style Sheets">CSS</acronym> 3 en mêlant exemples pratiques et des comparaisons entre <acronym title="Cascading Style Sheets">CSS</acronym> 2 et <acronym title="Cascading Style Sheets">CSS</acronym> 3. J&#8217;ai été ravi de voir en pratique l&#8217;affichage multi-colonnes sans jouer avec les flottants, l&#8217;habillage d&#8217;un bloc avec plusieurs bordures en images (sans balises superflues) et surtout l&#8217;<strong>Advanced Layout</strong>.<br />
L&#8217;Advanced Layout est probablement l&#8217;avancée la plus attendue car elle permet de <strong>s&#8217;affranchir des positions absolues pour repositionner du contenu sur la page</strong> simplement. Et de retrouver les notions de grilles puisque des régions sont définies dans la feuille de style. Au designer de déplacer un contenu dans le flux sans le faire quitter.</p>
<p>Autant dire que les <strong>designs bâtis sur <acronym title="Cascading Style Sheets">CSS</acronym> 3 seront riches en créativité</strong>. Et ce n&#8217;est pas l&#8217;initiative <a href="http://www.gotocss3.com/">Goto CSS3</a> qui dira le contraire <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<h3>Conclusion</h3>
<p>Cet ouvrage m&#8217;a énormément plu pour 2 raisons :</p>
<ul>
<li>j&#8217;ai failli croire que je n&#8217;allais rien apprendre</li>
<li>le contenu est ouvert vers l&#8217;avenir</li>
</ul>
<p>En effet plutôt que de nous dire <strong>quoi faire</strong>, <strong>Transcender <acronym title="Cascading Style Sheets">CSS</acronym></strong> explique <strong>comment mieux faire</strong>. C&#8217;est véritablement appréciable car en lisant le livre on adapte son contenu à ses besoins. Ses pages sont généreusement émargées de conseils, d&#8217;astuces et de ressources qui enrichissent la perception de la conception du design Web. Je me suis d&#8217;ailleurs surpris à relire le livre mais uniquement ses marges de peur d&#8217;avoir raté un lien essentiel &#8230;</p>
<p>Vous le savez tout aussi bien que moi, le gros problème des ouvrages réside dans des cas pratiques difficilement réutilisables au quotidien. <strong>Transcender <acronym title="Cascading Style Sheets">CSS</acronym></strong> a l&#8217;intelligence de proposer des recettes pour <strong>mieux aborder la conception des sites</strong>, des sources d&#8217;inspiration jusqu&#8217;aux secrets du découpage en grilles. Qui eût cru que la presse papier avait encore de belles leçons à donner au Web ?</p>
<p><strong>Transcender <acronym title="Cascading Style Sheets">CSS</acronym></strong> ne livre pas clé en mains des solutions mais vous aidera à y voir plus clair, à comprendre pour mieux réagir. En soi c&#8217;est ce que j&#8217;attends d&#8217;un livre à 30€. <strong>Une valeur sure</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://case.oncle-tom.net/2007/critique-transcender-css-sublimez-design-web/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Comment j&#8217;ai préparé et optimisé ma recherche d&#8217;emploi</title>
		<link>http://case.oncle-tom.net/2007/preparer-optimiser-recherche-emploi/</link>
		<comments>http://case.oncle-tom.net/2007/preparer-optimiser-recherche-emploi/#comments</comments>
		<pubDate>Tue, 25 Sep 2007 11:00:20 +0000</pubDate>
		<dc:creator>Oncle Tom</dc:creator>
				<category><![CDATA[Personnel]]></category>
		<category><![CDATA[Travail 2.0]]></category>
		<category><![CDATA[bonnes pratiques]]></category>
		<category><![CDATA[cv]]></category>
		<category><![CDATA[embauche]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[reseaux sociaux]]></category>
		<guid isPermaLink="false">http://case.oncle-tom.net/2007/09/25/preparer-optimiser-recherche-emploi/</guid>
		<description><![CDATA[A l&#8217;heure qu&#8217;il est ma lettre de démission a été expédiée et reçue. C&#8217;est l&#8217;aboutissement de plusieurs mois d&#8217;anticipation et de préparation pour un changement délicat puisque passée cette première expérience professionnelle, tout contrat signé oriente davantage son destin ou ce que l&#8217;on appelle plus professionnellement une carrière. Je vous livre ici les clés de [...]]]></description>
			<content:encoded><![CDATA[<p>A l&#8217;heure qu&#8217;il est ma lettre de démission a été expédiée et reçue. C&#8217;est l&#8217;aboutissement de <strong>plusieurs mois d&#8217;anticipation et de préparation</strong> pour un changement délicat puisque passée cette première expérience professionnelle, tout contrat signé oriente davantage son destin ou ce que l&#8217;on appelle plus professionnellement une <strong>carrière</strong>.</p>
<p>Je vous livre ici les clés de ma réussite, <em>a priori</em> inédite puisqu&#8217;entièrement basée sur de la communication, de la présence et de l&#8217;image de marque. J&#8217;ai utilisé tous les outils à ma disposition pour me mettre en valeur. Et je peux vous dire qu&#8217;il y a des reconsidérations à faire sur des outils Internet soit disant inutiles <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
<span id="more-773"></span></p>
<h3>Anticiper et convertir sa propre démotivation</h3>
<p><em>Période estimée : avril/mai 2007</em></p>
<p>Que ce soit en amour ou au travail, je commence à croire au fameux <strong>cycle des trois ans</strong> : un an pour s&#8217;<em>adapter</em>, un an pour <em>performer</em>, un an pour <em>transformer</em>. Cette dernière année est la plus marquante puisqu&#8217;elle déterminera le renouvellement du cycle.</p>
<p><em>Apprendre</em> et <em>améliorer</em> font partie de mes <em>leitmotiv</em> liés au travail (et même en dehors d&#8217;ailleurs). J&#8217;avoue cependant que plus particulièrement depuis le début de cette troisième année, j&#8217;ai ressenti un fort besoin d&#8217;apprendre. Ce nouveau besoin est entré en conflit avec une certaine lassitude au travail et une envie de changer pour m&#8217;épanouir davantage.</p>
<p>Avant d&#8217;avoir envie de baisser les bras, <strong>j&#8217;ai converti ce raz-le-bol général en volonté de changer</strong>. J&#8217;ai donc décidé d&#8217;<strong>utiliser Internet pour me mettre en valeur</strong> : blog, réseaux sociaux, micro-blog et rencontre de personnes issues du milieu.</p>
<h3>Définir ses cibles et ses objectifs</h3>
<p><em>Période estimée : mai 2007</em></p>
<p><strong>C&#8217;était donc décidé, j&#8217;allais changer de travail</strong>. Avant de me lancer tête baissée dans une simple recherche d&#8217;emploi, j&#8217;ai pris le temps de jeter un coup d&#8217;œil dans le rétroviseur, d&#8217;analyser mon parcours et ainsi deviner dans quelle direction je me rendais.</p>
<p>Etant développeur Web sensibilisé à bien des causes (logiciels libres, accessibilité, validité du code, sécurité, bonnes pratiques etc.), <strong>mon domaine de prédilection est Internet</strong>. Internet c&#8217;est bien mais c&#8217;est vaste alors quelles sont les composantes que j&#8217;aimerais retrouver ? Du <em>développement</em> bien sûr, être <em>entouré de personnes meilleures que moi</em> capables de m&#8217;aider à formaliser des connaissances et des lacunes, du <em>conseil</em> et de la <em>formation</em>.</p>
<p>Ce besoin dessine plusieurs structures d&#8217;entreprises susceptibles de me plaire et d&#8217;être intéressée par mon profil :</p>
<ul>
<li>l&#8217;<strong>agence Web</strong> : l&#8217;entreprise <em>a priori</em> idéale pour mes compétences ;</li>
<li>la <strong><acronym title="Société de Services en Ingénierie Informatique">SSII</acronym></strong> : l&#8217;organisation la plus carrée mais pas forcément la plus <em>cool</em> ;</li>
<li>la <strong><em>start-up</em></strong> : un rêve de gosse depuis l&#8217;apparition de la première bulle Internet</li>
</ul>
<p><strong>La problématique à résoudre</strong> : <em>trouver les meilleures</em> d&#8217;entre elles, <em>montrer le meilleur</em> de moi-même et <em>croiser les doigts</em> pour avoir eu de raison de placer la barre aussi haut.</p>
<p style="text-align:center"><img src='http://case.oncle-tom.net/images/2007/09/cv-apercu.png' alt='Aperçu de mon CV' /></p>
<h3>Se créer une présence en ligne : CV, blog, veille et réseaux sociaux</h3>
<p><em>Période estimée : juin à juillet 2007</em></p>
<p>L&#8217;avantage d&#8217;Internet, c&#8217;est la facilité avec laquelle circule l&#8217;information.<br />
L&#8217;inconvénient d&#8217;Internet, c&#8217;est que l&#8217;information circule facilement donc forcément, beaucoup d&#8217;informations circulent. Difficile de s&#8217;y (faire) repérer à ce moment là.</p>
<p><strong>Le CV est la pièce maîtresse qui doit résumer ma vie</strong>, mon expérience et mes aspirations. En lisant mon CV le recruteur doit comprendre d&#8217;où je viens, ce que je connais, ce que j&#8217;ai apporté et éventuellement ce vers quoi j&#8217;aimerais aller. Il est vraiment important de montrer que je ne se contente pas de mon job quotidien et que je comprends le recruteur en lui facilitant la lecture.<br />
J&#8217;ai pour ma part essayé d&#8217;allier originalité et sobriété car si les paillettes et autres fanfreluches peuvent être tolérées, au final ça reste une question de goût et peut potentiellement causer du tort. C&#8217;est en refaisant <a href="http://www.oncle-tom.net/cv-thomas-parisot.html">mon CV</a> que j&#8217;ai commencé à davantage m&#8217;intéresser aux microformats (avec hResume) et à la sémantique et de réaliser que l&#8217;interprétation des <acronym title="Cascading Style Sheets">CSS</acronym> de type <code>print</code>, c&#8217;est pas gagné.<br />
Bilan des courses pour le CV : <strong>il est consultable en ligne, imprimable à souhait et plutôt complet à lire</strong>. <a href="http://www.vincentchaigneau.fr/cv/">Une formule gagnante vu qu&#8217;il a déjà inspiré au moins une personne</a>.</p>
<p>Deuxième pièce maîtresse de ma présence en ligne : <strong>le blog</strong>. J&#8217;ai doucement réorienté celui-ci vers quelque chose de plus &laquo;&nbsp;pro&nbsp;&raquo; pour ne pas avoir honte que mon employeur tombe dessus, le lise et se fasse une meilleure idée de moi au quotidien, au travail et en dehors. <strong>Parce qu&#8217;une personne c&#8217;est davantage que ses qualités techniques</strong>, ce sont aussi ses capacités à créer une bonne ambiance au travail et à s&#8217;intégrer dans une équipe qui sont recherchées.<br />
Pas étonnant que <a href="http://case.oncle-tom.net/2007/07/27/blog-nouveau-look/">je retape l&#8217;esthétique du blog à la fin du mois de juillet</a>, profitant de cette occasion pour apporter davantage de sérieux à son contenu, quitte à moins écrire.<br />
Cette refonte a été l&#8217;occasion d&#8217;unifier ma communication en plaçant le blog comme étant une partie de mon CV, une partie de ma vie. Plus tard lors des entretiens il se trouve que plusieurs recruteurs étaient déjà tombés dessus par liens interposés, des commentaires sur d&#8217;autres blogs (d&#8217;où l&#8217;intérêt de commenter intelligemment) ou des recherches. Un point <em>bonus</em> puisqu&#8217;ils me connaissaient ainsi déjà avant que je les sollicite.</p>
<p>Dernier élément du triptyque : <strong>les réseaux sociaux</strong>. C&#8217;est à ce moment précis que j&#8217;ai trouvé une utilité réellement utile à <a href="http://www.facebook.com">Facebook</a>. Ma présence sur <a href="http://www.linkedin.com">LinkedIn</a> était également devenue pertinente. <a href="http://www.twitter.com">Twitter</a> a aussi connu un regain d&#8217;intérêt à mes yeux puisque j&#8217;ai pu suivre des personnes qui m&#8217;intéressaient et en apprendre davantage sur leur vie (infos à replacer lors d&#8217;un entretien, effet positif garanti).<br />
Sur ces différents réseaux, dites-en un maximum sur vous sans tomber dans la naïveté mielleuse. C&#8217;est l&#8217;occasion de placer quelques détails plus communs sur vos goûts et centres d&#8217;intérêt qui n&#8217;auraient pas leur place sur votre CV.</p>
<p style="text-align:center"><img src='http://case.oncle-tom.net/images/2007/09/facebook-logo.png' alt='Logo Facebook' /></p>
<h3>Se créer une présence en ligne : nouer les contacts</h3>
<p><em>Période estimée : juin à juillet 2007</em></p>
<p>Il y a deux moyens de nouer des contacts professionnels : en allant directement à leur rencontre et <em>via</em> Internet.<br />
C&#8217;est à ce moment là que <strong>j&#8217;ai réalisé l&#8217;importance et la valeur qu&#8217;a un carnet d&#8217;adresses</strong>. Vos contacts deviendront peut-être (et je l&#8217;espère) des amis, des partenaires professionnels voire vos employeurs et quoiqu&#8217;il en soit, ils seront de bon conseil, pourront vous refiler leurs tuyaux et même vous introduire auprès d&#8217;autres personnes.</p>
<p><strong>Pour aller à la rencontre de professionnels, l&#8217;avantage est aux grandes villes</strong> (Paris et Lyon notamment) car malheureusement il y aura peu de chance qu&#8217;une grosse agence ou qu&#8217;un gourou traîne au fond d&#8217;une vieille grange à la campagne (l&#8217;ADSL ne va pas si loin <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> ). <strong>J&#8217;ai toujours pensé à emporter plusieurs CV avec moi</strong> (même si l&#8217;interlocuteur est déjà censé l&#8217;avoir). Je me suis déplacé pour discuter, exposer mes opinions, savoir comment leur travail était organisé et signaler que j&#8217;envisageais de changer de travail. Et s&#8217;ils ne recrutaient pas, c&#8217;était tout de même l&#8217;occasion ou jamais de <strong>glaner des informations</strong> : qui recrute, qui pourrait recruter et quelles sont les entreprises conseillées.</p>
<p>Ces contacts réels, je les ai inclus dans mon cercle de contacts en ligne. <strong><a href="http://www.linkedin.com">LinkedIn</a> est un réseau social que j&#8217;estime beaucoup de par son côté qualitatif et professionnel</strong>. J&#8217;y ai moins de contacts mais je sais que je pourrai compter dessus. J&#8217;ai été agréablement surpris du nombre de Français inscrits sur ce site pourtant exclusivement consultable en anglais. Son homologue français est <a href="http://www.viadeo.com">Viadeo</a> mais je n&#8217;aime pas trop ce service car trop bordélique, moins bien fichu et surtout, de mauvais conseil : combien de fois ai-je reçu des mails automatique me conseillant de bosser dans la grande distribution alors que mon profil était orienté Internet ? Trop.</p>
<p><strong><a href="http://www.facebook.com">Facebook</a> est LE réseau social qui grimpe</strong>, plus informel et moins &laquo;&nbsp;pro&nbsp;&raquo; mais où bon nombre de personnes sont inscrites. J&#8217;y ai repéré des amis que je connaissais, les contacts réels que j&#8217;avais ou que j&#8217;allais nouer et j&#8217;ai surtout scruté leur liste d&#8217;amis. Ca prend un peu de temps mais c&#8217;est très instructif, on découvre de nouvelles têtes et ça permet de sortir un peu des cercles de relations habituels.<br />
Par contre <strong>évitez de céder à la tentation d&#8217;ajouter tout plein d&#8217;applications à trois sous</strong> (genre les Zombies etc.) et de spammer votre liste de contacts pour leur proposer d&#8217;adhérer à vos trouvailles. <em>C&#8217;est pénible</em> et ça pourrait se retourner à terme contre vous.</p>
<h3>La recherche active d&#8217;emploi</h3>
<p><em>Période estimée : août 2007</em></p>
<p>Ca y&#8217;est, je dispose d&#8217;une bonne dizaine de contacts et j&#8217;y vois plus clair dans vos objectifs. C&#8217;est le moment de commencer à démarcher activement. Toutefois mettons-nous d&#8217;accord sur une chose : démarcher ce n&#8217;est pas envoyer un CV par email et attendre une réponse <em>ad vitam eternam</em>. A l&#8217;heure d&#8217;Internet, sauf annonce mentionnant le contraire, oubliez le papier et passez par les emails. Vous gagnez du temps, courrez le risque du spam et économisez du papier.</p>
<p>Voici comment multiplier les contacts :</p>
<ul>
<li>publier des annonces de demande d&#8217;emploi (attention, selon les sites la qualité des contacts varie)</li>
<li>démarcher les entreprises qui recrutent</li>
<li>démarcher les entreprises qui vous intéressent</li>
</ul>
<p><strong><em>Systématiquement</em>, une semaine après avoir envoyé mon email j&#8217;ai téléphoné pour prendre des nouvelles</strong>. Soyez malins en étant capable de donner la date exacte, votre adresse email d&#8217;expédition et l&#8217;objet du mail. Vos interlocuteurs trient le courrier donc ça leur facilitera la recherche tout en marquant des points sur votre organisation. <strong>Être fiable et rigoureux ça paie</strong>. Je n&#8217;ai donc pas hésité à demander de moi-même un entretien pour discuter de ma candidature : c&#8217;est plus facile d&#8217;en discuter <em>de visu</em>, d&#8217;afficher ma motivation et de convaincre le recruteur.</p>
<p>Si jamais on vous demande une lettre de motivation, <strong>surtout ne sortez pas de lettre bateau</strong>. Au contraire écrivez une lettre générique dont les parties sont modulables en fonction de l&#8217;entreprise : décrivez vos <em>motivations</em>, votre <em>projet professionnel</em>, les <em>éléments marquants</em> de votre parcours et <em>ce qui vous pousse à candidater</em>. <strong>Ne paraphrasez pas le CV</strong>, utilisez l&#8217;espace de la lettre de motivation pour écrire ce qui n&#8217;y figure pas faute de place. Vous aurez alors une lettre totalement personnalisée, adaptée à votre interlocuteur et qui vous multiplierez ainsi les chances d&#8217;attirer son attention.<br />
<strong>Le recruteur doit sentir que vous apporterez à l&#8217;entreprise</strong>, peut-être même davantage que ce que celle-ci vous apportera. Le contrat doit être gagnant-gagnant.</p>
<h3>Conclusion</h3>
<p>Tout changement de travail oriente sa carrière. Pour choisir au mieux son orientation, il vaut mieux disposer d&#8217;un maximum d&#8217;entreprises intéressées par son profil, ne pas accepter la première offre venue et tout le temps réfléchir à ce que l&#8217;on veut, quitte à remettre en question ses objectifs de départ. Le tout est de ne pas regretter, de bien réfléchir et d&#8217;user de son instinct pour sentir l&#8217;entreprise qui nous conviendrait le mieux. Mieux vaut être moins bien payé et avoir un job plus intéressant que l&#8217;inverse.</p>
<p>Quoiqu&#8217;il en soit pendant ma recherche d&#8217;emploi j&#8217;ai toujours été très tenté de dire à mes collègues que je comptais partir, que je cherchais ailleurs. Cependant par précaution j&#8217;ai attendu le dernier moment, celui de la signature du contrat. Cela évite d&#8217;être démissionnaire aux yeux des collègues, surtout si au final je ne trouvais pas de nouvel employeur.<br />
En contenant cette joie de changer, j&#8217;ai évité du même coup de trop me laisser aller et de trop croire que j&#8217;étais déjà parti.</p>
<p>J&#8217;ai passé plusieurs mois à peaufiner ma présence et j&#8217;ai signé mon contrat en moins d&#8217;un mois. En montrant que j&#8217;étais une personne déterminée, motivée et désireuse d&#8217;apprendre, j&#8217;ai pu convaincre. <strong>J&#8217;ai reconnu mes points faibles, présenté mes atouts et montré que je savais où j&#8217;allais</strong>.</p>
<p>Au final j&#8217;en retire une expérience enrichissante, de nouveaux contacts et surtout le plus important, un nouveau boulot qui me plaît déjà.</p>]]></content:encoded>
			<wfw:commentRss>http://case.oncle-tom.net/2007/preparer-optimiser-recherche-emploi/feed/</wfw:commentRss>
		<slash:comments>14</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>
	</channel>
</rss>

