<?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>Front-end &#8211; Les intégristes</title>
	<atom:link href="/categorie/front-end/feed/" rel="self" type="application/rss+xml" />
	<link>/</link>
	<description></description>
	<lastBuildDate>Thu, 03 Nov 2016 17:33:28 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.0</generator>
	<item>
		<title>À fournir avant de lancer un développement front</title>
		<link>/2014/12/08/a-fournir-avant-de-lancer-un-developpement-front/</link>
					<comments>/2014/12/08/a-fournir-avant-de-lancer-un-developpement-front/#comments</comments>
		
		<dc:creator><![CDATA[Vincent Valentin]]></dc:creator>
		<pubDate>Mon, 08 Dec 2014 10:27:11 +0000</pubDate>
				<category><![CDATA[Front-end]]></category>
		<category><![CDATA[Organisation]]></category>
		<category><![CDATA[gestion de projet]]></category>
		<category><![CDATA[métier]]></category>
		<guid isPermaLink="false">/?p=4744</guid>

					<description><![CDATA[Quels sont les « entrants » nécessaires pour lancer un projet front-end ?

Derrière cette simple question, il s’agit de faciliter le travail des chefs de projets, mais aussi de tous les corps de métiers qui sont amenés à travailler avec nous autres intégrateurs.
Après avoir réuni quelques éléments de réponse personnels, j’ai posé cette question sur Twitter afin d’obtenir un regard extérieur (encore merci aux nombreux participants). J’ai dû faire des choix, pour en limiter la taille et aller à ce qui me semble essentiel ; mais même si cette checklist n’est pas parfaite, vous avez là une base&#160;[&#8230;]]]></description>
										<content:encoded><![CDATA[<blockquote>
<p>Quels sont les « entrants » nécessaires pour lancer un projet <i lang="en">front-end</i> ?</p>
</blockquote>
<p>Derrière cette simple question, il s’agit de faciliter le travail des chefs de projets, mais aussi de tous les corps de métiers qui sont amenés à travailler avec nous autres intégrateurs.</p>
<p>Après avoir réuni quelques éléments de réponse personnels, j’ai <a href="https://twitter.com/htmlvv/status/517700204062326784">posé cette question sur Twitter</a> afin d’obtenir un regard extérieur (encore merci aux nombreux participants). J’ai dû faire des choix, pour en limiter la taille et aller à ce qui me semble essentiel ; mais même si cette checklist n’est pas parfaite, vous avez là une base de travail que j’espère néanmoins très complète.</p>
<p><strong>Notre métier est fait de choix techniques : il nous faut des contextes précis pour y apporter des réponses adaptées. Cette liste permet de mieux les définir.</strong></p>
<h2>Bloquant</h2>
<h3>Informations fournies par le chef de projet</h3>
<h4>Contexte projets précis. (Qui est le client ? Y a-t-il un site existant ? Quels seront les intervenants sur le projet ? Quel est le budget ? Quelle cible ? Quelle durée de développement ? <abbr lang="la" title="Et cætera">Etc</abbr>.)</h4>
<p>C’est important pour éviter de faire de la sur-qualité, pour comprendre les enjeux, pour adapter les contraintes ou pour se sentir impliqué…</p>
<h3>Informations fournies par la partie <span lang="en">design</span></h3>
<h4>Maquettes graphiques validées. (Avec éventuellement des prototypes et/ou des <i lang="en">wireframes</i>.)</h4>
<p>Les maquettes graphiques permettent de se projeter avant de lancer les phases plus techniques de réalisation. C’est une manière de simuler le résultat final sans engager tout le processus.<br />
Si les maquettes ne sont pas validées, le processus sera déjà engagé et les modifications techniques se révèleront plus lourdes.</p>
<h4>Sources des polices non web utilisées.</h4>
<p>Les polices sont parfois payantes et doivent également être testées avant de les adopter. Elles sont fournies normalement pour un usage « web » clefs en main.<br />
Si ce n’est pas le cas, il faudra se pencher sur les problématiques de licence et de conversion, ce qui demande plus de temps et de nombreux aller-retours.</p>
<h4>Animations complexes ? Préciser les déroulements et les <i lang="en">timings</i>.</h4>
<p>Les animations complexes demandent bien souvent une structure et un code très spécifiques. Ainsi, il faut définir très tôt leurs comportements car il sera très difficile d’en changer en cours de route.</p>
<h4>Liste des formats et ratios des images contribuées.</h4>
<p>Les images contribuées ou issues d’une base de donnée existante seront plus difficilement déclinables en différents formats, et encore moins en différents ratios. Il est important d’identifier quels seront les formats courants pour faciliter le travail de développement en aval et s’assurer de la bonne homogénéité de l’ensemble.</p>
<h4>Planche de composants graphique avec états survolés, activés, désactivés ; palette de couleurs…</h4>
<p>Même si les maquettes sont statiques dans un premier temps et aident le client à se projeter, elles servent ensuite de référence pour les intégrateurs. De nombreux états et comportements doivent alors être définis précisément pour bien s’entendre sur le résultat attendu.</p>
<h3>Informations fournies par le client</h3>
<h4>Cible navigateurs. (Bureau, tablettes et mobiles. Indiquer s’il n’est pas possible de mettre en place une dégradation élégante et une amélioration progressive.)</h4>
<p>Les choix techniques associés à l’intégration des maquettes se feront en fonction du parc navigateur défini. Plus ce parc est moderne, plus des techniques avancées pourront être mises en place, au profit d’une bonne maintenabilité et de meilleures performances notamment.</p>
<h4>Niveau d&rsquo;accessibilité demandé ? (En précisant si ça entre dans le cadre d’une labellisation.)</h4>
<p>Bien que les bonnes pratiques du métier soient généralement appliquées, une contrainte forte en accessibilité changera l’approche technique des choses, il est important de le prévoir (avant même la partie <span lang="en">design</span>, cette contrainte va impacter tout les intervenants du projet).</p>
<h4>Multilingue ? (En précisant s’il y a du <i lang="en"><abbr title="Right To Left">RTL</abbr></i> ou des langues asiatiques le cas échéant.)</h4>
<p>Là encore, bien qu’il soit d’usage de toujours anticiper sur la longueur des contenus, il sera intéressant d’y porter une attention particulière sur les sites multilingue. Dans le cadre des intégrations <i lang="en"><abbr title="Right To Left">RTL</abbr></i> ou dans des langues asiatiques, de nouvelles contraintes viennent s’ajouter sur la conception ; mieux vaut anticiper les choses. <br />Quelle méthode de positionnement préférer quand la maquette doit pouvoir s’inverser verticalement, ou quelles polices utiliser pour les langues asiatiques ?</p>
<h4><i lang="en"><abbr title="High Dots Per Inch">HiDPI</abbr></i> ?</h4>
<p>Intégrer pour des écrans à haute densité de pixels demande des sources adaptées (soit des maquettes entières, soit des planches de composants). Il faut également faire des choix entre images matricielles et images vectorielles. Les techniques employées seront ensuite très différentes.</p>
<h4><i lang="en"><abbr title="Responsive Web Design">RWD</abbr></i> ? (Indiquer si le site sera fluide et/ou s’il y a des paliers.)</h4>
<p>Évidement, un travail plus conséquent est à prévoir quand le site doit s’adapter à une grande variété de tailles d‘écrans.<br />
D’un point de vue technique, penser une interface en fluide ou avec des paliers pourra complètement changer l’approche technique. Il est préférable d’avoir cette information dès le départ. </p>
<h4>Version imprimée à prévoir ?</h4>
<p>Cette partie peut impacter légèrement les plannings et est pourtant souvent oubliée. Les difficultés techniques associées imposent parfois de bien échanger sur le sujet si la demande est précise.</p>
<h3>Informations fournies par le client ou la partie développement</h3>
<h4><i lang="en">From scratch</i> ? (Ou sinon préciser le contexte de l’existant.)</h4>
<p>Il sera toujours plus facile de partir sur des bases saines. Hériter d’un existant demande de bien le définir pour mieux l’appréhender.</p>
<h4>Contraintes de production ? (Par exemple des bibliothèques imposées, des <i lang="en">plugins</i> ou une architecture particulière…)</h4>
<p>Il peut arriver que des clients imposent l’utilisation d’outils spécifiques. Il faudra alors maîtriser cette contrainte supplémentaire et sans doute adapter ses processus en fonction.</p>
<h4>Contraintes projet spécifiques ? (Par exemple les performances…)</h4>
<p>Définir un (ou des) axe(s) de travail permettra de savoir où porter son attention et à être en phase avec les attentes du client.</p>
<h3>Informations fournies par la partie développement</h3>
<h4>Contraintes en développement ? (Par exemple un <i lang="en">CMS</i> qui demande du code spécifique, un <i lang="en">framework</i>… Fournir les <i lang="en">templates</i> adaptés si besoin.)</h4>
<p>Il n’est pas toujours possible pendant la phase de développement d’adapter certaines structures imposées par les outils. Aussi, si cela est possible, il est intéressant de communiquer la contrainte aux intégrateurs, qui tacheront alors de contourner le problème différemment.</p>
<h4>Format d’échange des données avec les développeurs le cas échéant.</h4>
<p>Il sera nécessaire de bien s’entendre sur les formats de données échangées avec les développeurs, pour là encore gagner du temps et éviter des incompréhensions. </p>
<h3>Informations fournies par le client ou la partie <i lang="en"><abbr title="Search Engine Optimization">SEO</abbr></i></h3>
<h4>Contraintes <i lang="en"><abbr title="Search Engine Optimization">SEO</abbr></i> ? (Par exemple la présence d’un <i lang="en">sitemap</i> ou d’une hiérarchisation particulière de l’information, mise en place de microformats ou microdata…)</h4>
<p>Il arrive que des contraintes <i lang="en"><abbr title="Search Engine Optimization">SEO</abbr></i> ne soient pas en adéquation avec les bonnes pratiques du métier. Il faut pouvoir l’anticiper pour trouver un compromis, ou simplement ne pas oublier de coder la demande.</p>
<h2>Utile</h2>
<h3>Informations fournies par la partie <span lang="en">design</span></h3>
<h4>Grille verticale et/ou horizontale.</h4>
<p>Intégrer avec des grilles permet d’assurer un meilleur respect du <span lang="en">design</span>, tout en facilitant l’étape d’intégration.<br />
Les grilles permettent aussi d’assurer facilement une cohérence graphique tout au long de la vie du projet.</p>
<h4>Échelles typographiques.</h4>
<p>Les échelles typographiques peuvent être automatisées au niveau code, cette donnée doit être partagée pour qu’elle soit reprise.</p>
<h3>Informations fournies par le client ou par la partie <span lang="en">design</span></h3>
<h4>Contenus types.</h4>
<p>Les véritables contenus permettent de mieux appréhender les comportements des maquettes. Il est aussi plus facile d’en contrôler la bonne lisibilité et également d’y apporter les détails sémantiques et micro-typographiques nécessaires.</p>
<h3>Informations fournies par le client</h3>
<h4>Statistiques de navigation du site existant s’il en existe.</h4>
<p>Avec ses statistiques, le parc navigateur défini plus haut peut être ajusté plus finement. Les statistiques apportent également un axe supplémentaire sur les questions de contexte projet.</p>
<h2>Points d’attention</h2>
<h3>Informations fournies par la partie <span lang="en">design</span></h3>
<ul>
<li><span lang="en">Design</span> des messages d&rsquo;erreurs sur les interactions (formulaires, <i lang="en"><abbr title="Asynchronous JavaScript and XML">AJAX</abbr></i>…)</li>
<li><span lang="en">Design</span> des pages d’erreurs. (Erreur 404…)</li>
<li><span lang="en">Design</span> des <i lang="en">e-mails</i> éventuels ? (Avec des contraintes et des besoins dédiés.)</li>
<li><span lang="en">Design</span> de la <i lang="en">favicon</i> et de ses variantes mobiles.</li>
<li><span lang="en">Design</span> pour les chargements dynamiques (les <i lang="en">loaders</i>).</li>
<li><span lang="en">Design</span> du message relatif aux <i lang="en">cookies</i>.</li>
<li><span lang="en">Design</span> de la page mentions légales si nécessaire.</li>
</ul>
<p>Ces points sont très souvent oubliés lors de la phase de <span lang="en">design</span>. Pourtant ils sont presque toujours nécessaires, et mènent inévitablement à un nouvelle itération.</p>
<h2>À vous</h2>
<p>Peut-être serait-il intéressant de voir cette procédure copiée à d’autres corps de métiers ? Peut-être qu’il s’agit là d’un travers au travail en silos ? Peut-être qu’il manque quelque chose d’essentiel à cette liste ?</p>
<p>Je serais très heureux de lire vos commentaires.</p>
<ul>
<li><a href="https://trello.com/b/bMxd0h33/a-fournir-avant-de-lancer-un-developpement-front">Cette <i lang="en">cheklist</i> est également disponible sur Trello.</a></li>
<li><a href="/wp-content/uploads/2014/11/À-fournir-avant-de-lancer-un-développement-front.txt">Et également au format <i lang="en">markdown</i>.</a></li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>/2014/12/08/a-fournir-avant-de-lancer-un-developpement-front/feed/</wfw:commentRss>
			<slash:comments>7</slash:comments>
		
		
			</item>
		<item>
		<title>Les plugins, nos amis qui nous rendent la vie dure&#8230;</title>
		<link>/2012/11/07/les-plugins-nos-amis-qui-nous-rendent-la-vie-dure/</link>
					<comments>/2012/11/07/les-plugins-nos-amis-qui-nous-rendent-la-vie-dure/#comments</comments>
		
		<dc:creator><![CDATA[Guillaume Richard]]></dc:creator>
		<pubDate>Wed, 07 Nov 2012 12:36:22 +0000</pubDate>
				<category><![CDATA[Front-end]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<guid isPermaLink="false">/?p=3264</guid>

					<description><![CDATA[On le sait, jQuery et sa facilité de prise en main ont fait énormément de bien à la communauté.
Via le biais des plugins, tout le monde a pu commencer à faire des effets « wahou » en deux secondes et a pu commencé à vouloir écrire ses propres plugins&#8230; Rendons à César ce qui est à César et remercions jQuery pour avoir apporté une idée différente du framework javascript. Dans une discussion future, je me ferai peut-être moins respectueux en évoquant les différents maux que cette librairie a pu apporter.
Rapidité &#60; Qualité
Ce qui reste très agaçant, surtout&#160;[&#8230;]]]></description>
										<content:encoded><![CDATA[<p>On le sait, jQuery et sa facilité de prise en main ont fait énormément de bien à la communauté.</p>
<p>Via le biais des plugins, tout le monde a pu commencer à faire des effets « wahou » en deux secondes et a pu commencé à vouloir écrire ses propres plugins&#8230; Rendons à César ce qui est à César et remercions jQuery pour avoir apporté une idée différente du framework javascript. Dans une discussion future, je me ferai peut-être moins respectueux en évoquant les différents maux que cette librairie a pu apporter.</p>
<h2>Rapidité &lt; Qualité</h2>
<p>Ce qui reste très agaçant, surtout lorsqu&rsquo;on commence à prendre un peu de niveau dans son métier, c&rsquo;est quand un chef de projet vous pose cette question: « pourquoi tu n&rsquo;as pas utilisé un <em>plugin tout fait</em> à la place ? »; alors que vous auriez bien aimé tout de même avoir la chance de pouvoir démontrer que vous pouviez faire mieux et surtout : <strong>plus adapté au projet</strong>.<br />
Qui ne s&rsquo;est jamais arraché les cheveux à <em>faire rentrer un plugin dans un projet</em> en bidouillant l&rsquo;impossible, ajoutant des options dans l&rsquo;objet d&rsquo;options même si ce n&rsquo;était pas vraiment le meilleur endroit&#8230;</p>
<p>Mais plus loin encore, est-ce là un vrai travail responsable que d&rsquo;accepter l&rsquo;utilisation de plugins par son équipe technique ?<br />
Non seulement l&rsquo;équipe ne risque pas de prendre du niveau et très certainement se ramollir, voir se démotiver, mais en plus, vous rendez votre travail dépendant de ce qui se passe ailleurs, <em>chez les autres&#8230; </em>dépendant donc de la veille « plugin ».<br />
C&rsquo;est un peu comme à l&rsquo;époque du designers que les intégrateurs bridaient afin de pouvoir avoir des maquettes intégrables « <em>comme on l&rsquo;a toujours fait depuis des années</em>« , à force on obtenait presque toujours les mêmes briefs: « <em>A gauche donc, on aura une sidebar, à droite.. le contenu et puis au milieu, un jQuery Carousel de chez bidule »</em>; Grisant.<br />
D&rsquo;ailleurs, la version 2013 de ces pratiques sera « <em>en haut, le header, au milieu&#8230; et bah un bon gros jQuery mansonry hein ? t&rsquo;en dis quoi ? le footer ? Oh y&rsquo;en a pas besoin..</em>. »</p>
<p>Donnez-vous une année comme cela, sans faire un peu de programmation chez vous et vous allez vite voir que vous allez très rapidement perdre vos compétences.</p>
<p>Petite blague à part: Vous n&rsquo;avez jamais remarqué que sur stackoverflow, à chaque question en js natif il y a toujours une armée de réponses type « <em>pourquoi tu n&rsquo;utilises pas jQuery</em>« . Et si demain vous ne deviez pas l&rsquo;utilisez, pour des raisons d&rsquo;optimisations ? Et si sans jQuery vous vous rendiez compte que vous ne compreniez qu&rsquo;une partie de la DOM API et donc, à votre métier ? True story que cela et je vous la raconterai peut-être en temps voulu&#8230; mais autre sujet, autre journée.</p>
<h2>L&rsquo;artisanat français</h2>
<p><small>Oui monsieur&#8230;</small></p>
<p>Il reste aussi le problème de l&rsquo;honnêteté.<br />
La plupart de ces <em>plugins</em> sont souvent réalisés à des fins de promotion personnelle, donner à ceux qui ne savent pas programmer l&rsquo;occasion d&rsquo;avoir un petit plus sur leur blog ou de réutiliser plusieurs fois un travail réalisé pour un client ou encore simplement démontrer un concept, une idée simple.</p>
<p>Il est évident qu&rsquo;à un certain niveau de la hiérarchie, on ne se préoccupe pas trop de comment un projet est commencé et fini, il faut tout simplement qu&rsquo;il soit fini.<br />
Là où cela devient préoccupant, c&rsquo;est lorsque le chef de projet technique ne s&rsquo;en préoccupe pas non plus&#8230; et encore plus préoccupant d&rsquo;entendre ce genre de propos dans la bouche d&rsquo;un développeur front-end.</p>
<p>C&rsquo;est peut-être du au fait qu&rsquo;en France, au delà de 8 à 10 ans en tant que technicien, il est inconcevable de ne pas rechercher ou accepter un magnifique poste de manager et / ou de chef de projet, poste qui fera systématiquement, si on n&rsquo;y prête pas garde, perdre le fil de la veille technologique (en fait plutôt les compétences que la veille).<br />
Quelle belle récompense pour tant d&rsquo;année de bon et loyaux services, mais ça, c&rsquo;est déjà un sujet assez récurrent sur ce blog et je n&rsquo;y reviendrais plus (promis juré !)</p>
<p>Cela est peut-être aussi du au fait que depuis les <em>plugins à tout va</em>, on sait qu&rsquo; un site Internet coutera moins cher et sera surtout réalisé plus rapidement. Par conséquent, « on » est toujours plutôt gagnant&#8230; enfin sauf pour les « techos » mais eux, ils attendent patiemment leur 8 à 10 ans pour devenir chef de projet (quoi, vous voulez pas être CP ou manager ? Mais puisqu&rsquo;on vous dit que vous n&rsquo;avez pas le choix !)</p>
<p>La seule question qui restent à mes yeux importante :  Est-ce un service que nous rendons au <strong>métier</strong> ?<br />
Je m&rsquo;étonne bien souvent de notre retard sur les points de l&rsquo;UX, de l&rsquo;UI et du design de site Internet mais n&rsquo;est-ce pas avant tout parce que nous travaillons presque toujours à l&rsquo;inspiration en regardant un peu ce qui a déjà été fait et finalement très peu en workshop ? Que les commerciaux vendent d&rsquo;office des promesses impossibles à tenir ? Ou, peut-être est-ce parce qu&rsquo;on s&rsquo;obstine à rechercher des ninjas en PHP/MYSQL/AS3/CSS3/HTML5/JS/ASP au lieu de profils spécialisés dans l&rsquo;interface utilisateur&#8230; Ou pire, que certains bloggeurs influents parlent partout de <em>webresponsive </em>sans exactement comprendre les implications (encore un bon sujet potentiel que celui-ci)</p>
<h2>Be open! Oui mais&#8230;</h2>
<p>Alors, au final, merci jQuery mais par pitié, vous, développeurs de plugins, soyez fermes avec vos licences d&rsquo;utilisations et menez la vie dure aux entreprises qui utilisent vos plugins sans en avoir l&rsquo;autorisation. De cette manière, nous pourrons ainsi tous combattre l&rsquo;utilisation de plugins en entreprise tout en permettant aux gens de s&rsquo;inspirer et/ou regarder directement le code via GitHub pour <strong>apprendre</strong> sans pour autant réutiliser&#8230; sinon dans quelques années, il faudra ajouter la ligne « <strong>google-isation de plugins</strong> » sur nos CVs.</p>
<p>Il serait d&rsquo;ailleurs intéressant de savoir ce que pense certaines personnes de l&rsquo;utilisation de leurs plugins pour des projets professionnels vendus à quelques dizaines voir centaines de milliers de <em>brouzoufs</em>&#8230; qui se souvient encore de l&rsquo;utilisation d&rsquo;un blog Dotclear pour un site Internet vivant à promouvoir certaines lois que l&rsquo;état était désireux de passer ? Et qui se souvient du prix à laquelle ce Dotclear avait été vendu ?</p>
]]></content:encoded>
					
					<wfw:commentRss>/2012/11/07/les-plugins-nos-amis-qui-nous-rendent-la-vie-dure/feed/</wfw:commentRss>
			<slash:comments>19</slash:comments>
		
		
			</item>
		<item>
		<title>Stylus et les préprocesseurs CSS (en guise d&#8217;introduction)</title>
		<link>/2012/11/02/stylus-et-les-preprocesseurs-css-en-guise-dintroduction/</link>
					<comments>/2012/11/02/stylus-et-les-preprocesseurs-css-en-guise-dintroduction/#comments</comments>
		
		<dc:creator><![CDATA[Eric Le Bihan]]></dc:creator>
		<pubDate>Fri, 02 Nov 2012 14:48:05 +0000</pubDate>
				<category><![CDATA[Front-end]]></category>
		<guid isPermaLink="false">/?p=3769</guid>

					<description><![CDATA[En préambule je voudrais dire que le but de l&#8217;article n&#8217;est pas de se poser la question de savoir si les pré-processeurs c&#8217;est mal ou pas &#8211; il est bien connu que les gens n&#8217;aiment pas le changement : il faut en effet 21 jours aux neurotransmetteurs du cerveau humain pour créer une nouvelle connexion entre neurones qui facilitera le changement et ensuite 90 jours pour consolider les nouvelles habitudes. On comprendra donc aisément que de nombreuses personnes souhaitent s&#8217;en tenir aux bonnes vieilles CSS qu&#8217;ils maîtrisent parfaitement. J&#8217;ai d&#8217;ailleurs lu pas mal d&#8217;articles et de commentaires assez drôles sur&#160;[&#8230;]]]></description>
										<content:encoded><![CDATA[<p>En préambule je voudrais dire que le but de l&rsquo;article n&rsquo;est pas de se poser la question de savoir si les pré-processeurs <em>c&rsquo;est mal</em> ou pas &#8211; il est bien connu que les gens n&rsquo;aiment pas le changement : il faut en effet 21 jours aux neurotransmetteurs du cerveau humain pour créer une nouvelle connexion entre neurones qui facilitera le changement et ensuite 90 jours pour consolider les nouvelles habitudes. On comprendra donc aisément que de nombreuses personnes souhaitent s&rsquo;en tenir aux bonnes vieilles CSS qu&rsquo;ils maîtrisent parfaitement. J&rsquo;ai d&rsquo;ailleurs lu pas mal d&rsquo;articles et de commentaires assez drôles sur le sujet. </p>
<p>Les préprocesseurs CSS ne remplacent pas le langage CSS en lui même et le fait d&rsquo;apprendre un nouveau langage qui vient se <em>sur-ajouter</em> n&#8217;empêche en rien de continuer l&rsquo;apprentissage de CSS (il n&rsquo;est d&rsquo;ailleurs pas possible d&rsquo;apprendre Stylus sans connaître CSS). Il est de la responsabilité de chacun de maintenir ses connaissances en la matière, la dérive étant parfaitement illustrée par l&rsquo;usage de jQuery qui dans l&rsquo;esprit de nombreuses personnes a remplacé le couple JavaScript/DOM à tel point que l&rsquo;apprentissage de JavaScript fait actuellement un retour en force, il est effectivement primordial d&rsquo;avoir des connaissances en JavaScript et comprendre le DOM pour comprendre ce que fait jQuery et pouvoir adapter son code en fonction des buts et performances à atteindre, mais ceci fera sans doute l&rsquo;objet d&rsquo;un autre article sur le sujet.</p>
<p>J&rsquo;aurais pu m&rsquo;en tenir à un article sur les préprocesseurs css en général, mais de nombreux blogs l&rsquo;ont déjà très bien fait dans le détail (cf la partie <a href="#resources">ressources</a> de cet article) ou faire un énième article sur Sass qui est déjà super documenté et à qui <a href="http://blog.kaelig.fr/">Kaelig Deloumeau-Prigent</a> a consacré un ouvrage entier :  <a href="http://librairie.immateriel.fr/fr/read_book/9782212134179/">CSS maintenables Avec Sass et Compass</a> (que je n&rsquo;ai malheureusement pas encore eu le temps de lire), ou encore <a href="http://lesscss.org/">Less</a> qui a certainement été le premier à être utilisé. Je me suis attaché à regarder du côté de Stylus qui est plébiscité par de nombreuses personnes de mon entourage et qui pourtant n&rsquo;a pas le même retentissement que les deux premiers, pourquoi ? </p>
<p><strong>Première question : qu&rsquo;est-ce qu&rsquo;un préprocesseur ?<br />
</strong><br />
<cite> Un préprocesseur est un programme qui procède à des transformations sur un code source, avant l&rsquo;étape de traduction proprement dite (compilation ou interprétation).</cite><br />
<i><small>source Wikipedia.</small></i></p>
<p>Dans le cas d&rsquo;un préprocesseur CSS la syntaxe simplifiée ou enrichie en entrée est analysée et compilée en un langage que nous connaissons tous et que nous utilisons au quotidien : CSS.</p>
<p>Par exemple ces lignes de code écrites avec un préprocesseur CSS sont analysées et transformées en langage compréhensible par le navigateur.</p>
<p>Input : </p>
<pre><code>body
  font 12px Helvetica, Arial, sans-serif
</code></pre>
<p>Output :</p>
<pre><code class="language-css">body {
  font: 12px Helvetica, Arial, sans-serif;
}
</code></pre>
<p><strong>Avant de continuer : qu&rsquo;est-ce qu&rsquo;est CSS et qu&rsquo;est-ce que n&rsquo;est pas CSS et que viennent compenser les préprocesseurs ?</strong></p>
<p>CSS n&rsquo;est en aucun cas un langage de programmation, le fait de ne pas pouvoir définir des variables ou des conditions limite ses possibilités d&rsquo;utilisation. Il est quasiment impossible de rationaliser le code CSS sans faire de nombreuses répétitions. Les préprocesseurs viennent combler ces manques à tel point que certains n&rsquo;hésitent pas à y voir <a href="http://nylira.com/stylus-the-revolutionary-successor-to-css/">l&rsquo;avenir de CSS</a>. </p>
<p><strong>Comment fonctionne Stylus ?</strong></p>
<p>Qui peut le moins peut le plus. La syntaxe de Stylus est simplifiée à l&rsquo;extrème, elle reprend celle de Jade, le moteur de template pour Node.js : oublions les deux points, points-virgules et parenthèses, ces signes de ponctuations auront leur utilité dans Stylus comme nous le verrons par la suite mais pas celle à laquelle les destine CSS initialement.</p>
<p>Il est ainsi possible avec Stylus d&rsquo;écrire la propriété CSS suivante :</p>
<p>De cette façon,</p>
<pre><code class="language-css">body {
  font: 12px Helvetica, Arial, sans-serif;
}
</code></pre>
<p>ou de cette façon,</p>
<pre><code>body
  font: 12px Helvetica, Arial, sans-serif;
</code></pre>
<p>ou encore de celle-là.</p>
<pre><code>body
  font 12px Helvetica, Arial, sans-serif
</code></pre>
<p>Ce qui veut dire que <strong>Stylus accepte également l&rsquo;écriture de CSS en version native</strong>.</p>
<p>Point important : l&rsquo;indentation par tabulation rappelle la syntaxe de Python, et c&rsquo;est là tout la rigueur de ce langage, selon que vous indenterez d&rsquo;une façon ou d&rsquo;une autre l&rsquo;interprétation en sera complètement différente. Une habitude qui se prend très vite étant données les possibilités offertes.</p>
<p>Pour paraphraser Yves Bonnefoy, je dirais : pour comprendre Stylus installons Stylus.</p>
<p>Etape 1 : <a href="http://nodejs.org/">installer Nodejs</a><br />
Etape 2 : installer Stylus en ligne de commande</p>
<pre><code>npm install -g stylus
</code></pre>
<p>C&rsquo;est fait ? Parfait, nous allons pouvoir passer à la pratique.</p>
<p>Vous créez votre répertoire comme d&rsquo;habitude : fichier HTML, répertoire pour les images, etc. mais à la place de votre fichier.css, vous créez un fichier .styl, c&rsquo;est ce fichier qui sera analysé par Stylus pour sa transformation au format CSS.</p>
<p>Il suffit juste de lancer Node et Stylus avec l&rsquo;option « watch » sur le répertoire contenant votre fichier ou sur le fichier en lui même. Le fichier sera compilé à la volée. </p>
<pre><code>stylus -w monrépertoire/monfichier.styl
</code></pre>
<p>Très pratique, vous travaillez sur le fichier .styl et vous liez à votre fichier HTML le fichier .css, ainsi vous pouvez voir directement sur votre page les modifications que vous apportez à votre fichier stylus, simple, non ?</p>
<p>Plus d&rsquo;infos sur ce point particulier ? C&rsquo;est indiqué <a href="http://learnboost.github.com/stylus/docs/executable.html">là</a> :</p>
<h2>1. Les sélecteurs</h2>
<p>Nous avons vu dans les quelques exemples donnés plus haut qu&rsquo;il était optionnel d&rsquo;indiquer les accolades, les parenthèses, les deux points voire les points virgules à condition d&rsquo;indenter le code correctement. Il est également possible de ne pas indiquer les virgules à condition de passer à la ligne. Une fois ces quelques règles intégrées, il est très simple de commencer à coder comme vous le feriez naturellement avec CSS.</p>
<p>Pour se référer au sélecteur parent dans le même bloc de CSS, il suffit d&rsquo;ajouter <em>&#038;</em> devant la propriété définie.</p>
<pre><code>body
  section div a
    color red
  &
    color blue
</code></pre>
<p>Un exemple plus parlant ?</p>
<pre><code>body
  section div a
    color red
    &:hover
       color blue
</code></pre>
<p>aura pour résultat en sortie </p>
<pre class="language-css"><code>
body section div a {
  color: #f00;
}
body section div a:hover {
  color: #00f;
}
</code></pre>
<h2>2. Les variables</h2>
<p>Voilà certainement ce qui manquait le plus aux CSS pour assurer une maintenance facile des feuilles de style. Avec stylus les variables peuvent être préfixées par un $ ou pas. Les noms des propriétés peuvent être utilisées, on peut donc définir les valeurs pour la propriété <em>font</em> en utilisant une variable <em>font</em>, mais par soucis de clarté, il est conseillé de nommer les variables de manières à les identifier rapidement et sans ambiguité.  </p>
<p>par exemple</p>
<pre><code>fontarial14=14px Arial, sans-serif;
</code></pre>
<p>ou de cette manière</p>
<pre><code>$fontarial14=14px Arial, sans-serif;
</code></pre>
<p>Ensuite cette variable sera utilisée partout où on voudra définir la propriété définie.</p>
<pre><code>body
  font fontarial14
</code></pre>
<p>A noter que si vous utilisez le signe $ en préfixe du nom de votre variable, il faudra appeler la variable telle qu&rsquo;elle a été définie (avec le $ donc).</p>
<pre><code>body
  font $fontarial14
</code></pre>
<p>Mais le plus intéressant est de pouvoir utiliser la valeur d&rsquo;une propriété définie dans un bloc CSS pour l&rsquo;assigner à une autre propriété en ajoutant simplement le préfixe <em>@</em> devant :</p>
<pre><code>#logo
   position: absolute
   top: 50%
   left: 50%
   width: 150px
   height: 80px
   margin-left: -(@width / 2)
   margin-top: -(@height / 2)
</code></pre>
<p>Dans le cas où la propriété est définie plusieurs fois dans un même bloc, la dernière valeur (en remontant à l&rsquo;intérieur du bloc CSS) sera prise en compte, dans l&rsquo;exemple ci-dessous <em>@color</em> aura la valeur <em>#00f (blue)</em>.</p>
<pre><code>body
  color: red
  p
     color: blue
     a
	background-color: @color
</code></pre>
<p>Voilà, vous en savez assez pour pouvoir commencer et intégrer Stylus dans vos outils de travail, je vous encourage à prendre connaissance de la <a href="http://learnboost.github.com/stylus/">doc officielle de Stylus</a> qui est claire et très bien documentée. Vous me pardonnerez, j&rsquo;espère, les nombreux emprunts que j&rsquo;ai pu y faire mais il me paraissait important de poser les bases avant de pouvoir aborder d&rsquo;autres points plus précis à l&rsquo;avenir. Les prochains articles consacrés à Stylus seront consacrés à des cas pratiques ou à des aspects plus obscurs du préprocesseur.</p>
<h2 id="resources">Ressources :</h2>
<ul>
<li><a href="http://www.hteumeuleu.fr/le-manifeste-du-css-pur-et-dur/">Le manifeste du CSS pur et dur</a></li>
<li><a href="http://www.pompage.net/traduction/clarence">Clarence le poney</a></li>
<li><a href="http://www.vanseodesign.com/css/css-preprocessors/">Sass And LESS: An Introduction To CSS Preprocessors</a></li>
<li><a href="http://www.catswhocode.com/blog/8-css-preprocessors-to-speed-up-development-time">8 CSS preprocessors to speed up development time</a></li>
<li><a href="http://fr.slideshare.net/verekia/deep-dive-into-css-preprocessors">Deep Dive Into CSS Preprocessors</a></li>
<li><a href="http://code.google.com/p/csspreprocessor/wiki/LanguageDesign">Csspreprocessor &#8211; Language Design</a></li>
<li><a href="http://www.nixtu.info/2011/12/how-to-write-css-preprocessor-using.html">How to Write a CSS Preprocessor Using Node.js?</a></li>
<li><a href="http://net.tutsplus.com/tutorials/html-css-techniques/sass-vs-less-vs-stylus-a-preprocessor-shootout/">Sass vs. LESS vs. Stylus: Preprocessor Shootout</a></li>
<li><a href="http://29a.ch/slides/2012/using-css-preprocessors-effectively/">Using CSS preprocessors effectively</a></li>
<li><a href="http://designshack.net/articles/css/sass-vs-stylus-who-wins-the-minimal-syntax-battle/">Sass vs. Stylus: Who Wins the Minimal Syntax Battle?</a></li>
<li><a href="http://forum.alsacreations.com/topic-4-63962-1-Preprocesseurs-CSS.html">Préprocesseurs CSS</a></li>
<li><a href="https://speakerdeck.com/bermonpainter/css-pre-processors-stylus-less-sass">CSS Pre-Processors: Stylus, Less &#038; Sass</a></li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>/2012/11/02/stylus-et-les-preprocesseurs-css-en-guise-dintroduction/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Développeur d&#8217;intégration « interfaçante » et animée, Le WTF.</title>
		<link>/2012/10/22/developpeur-dintegration-interfacante-et-animee-le-wtf/</link>
					<comments>/2012/10/22/developpeur-dintegration-interfacante-et-animee-le-wtf/#comments</comments>
		
		<dc:creator><![CDATA[Guillaume Richard]]></dc:creator>
		<pubDate>Mon, 22 Oct 2012 19:29:31 +0000</pubDate>
				<category><![CDATA[Front-end]]></category>
		<category><![CDATA[débats]]></category>
		<category><![CDATA[intégration web]]></category>
		<category><![CDATA[Interface]]></category>
		<category><![CDATA[métier]]></category>
		<category><![CDATA[réflexions]]></category>
		<guid isPermaLink="false">/?p=2267</guid>

					<description><![CDATA[Pas la peine d&#8217;être en constante recherche d&#8217;emploi pour s&#8217;en apercevoir, un nouveau type de poste tend à prendre la place de notre bon vieux poste d&#8217;intégrateur web et comme par magie, tous les intégrateurs deviennent développeur front-end en un coup de cuillère à modification de CV en ligne.
On ne peut les blamer, depuis tant d&#8217;année les intégrateurs vivent dans la honte de ne pas avoir « développeur » dans leur titre ainsi que sur leurs cartes de visite, et nos bon vieux amis développeurs de site internet orienté back-office n&#8217;ont pas manqué de nous le faire remarquer.
Enfin&#160;[&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Pas la peine d&rsquo;être en constante recherche d&#8217;emploi pour s&rsquo;en apercevoir, un nouveau type de poste tend à prendre la place de notre bon vieux poste d&rsquo;intégrateur web et comme par magie, tous les intégrateurs deviennent développeur front-end en un coup de cuillère à modification de CV en ligne.</p>
<p>On ne peut les blamer, depuis tant d&rsquo;année les intégrateurs vivent dans la honte de ne pas avoir « développeur » dans leur titre ainsi que sur leurs cartes de visite, et nos bon vieux amis développeurs de site internet orienté back-office n&rsquo;ont pas manqué de nous le faire remarquer.</p>
<p>Enfin l&rsquo;occasion se présente à nous de pouvoir prendre notre revanche sur le reste du monde.</p>
<h2>Un peu d&rsquo;histoire</h2>
<p>Après tout, les choses changent, nous aussi (ce n&rsquo;est pas sale) et comme notre ami de l&rsquo;intégration française, monsieur Eric Le Bihan me l&rsquo;a souvent rappelé lorsque je servais à ses côtés ainsi que sous ses ordres: il existait avant notre ère un poste de monteur HTML (une sorte de <dfn title="(Péjoratif) Dans le monde du cirque, personne en charge du montage et démontage du chapiteau.">baltringue</dfn> des temps modernes donc).</p>
<p>Par simple définition et compréhension de la langue française, on peut d&rsquo;ores et déjà comprendre qu&rsquo;il fut un temps où le monteur HTML se limitait à monter des squelettes HTML alors que l&rsquo;intégrateur se devait d&rsquo;intégrer (bien joué Sherlock<img src="https://s.w.org/images/core/emoji/14.0.0/72x72/2122.png" alt="™" class="wp-smiley" style="height: 1em; max-height: 1em;" />) plusieurs éléments à des pages qu&rsquo;il montait, et bien souvent, lorsque le développement du site était optimal, il se devait de tout intégrer sur la plateforme de développement même, reliant ainsi diverses technologies entre elles.<br />
Car oui ne l&rsquo;oublions pas: l&rsquo;intégrateur est un jongleur de technologies.<br />
Et bien souvent, il est la personne entre toutes les autres, celui qui reliera le pôle produit au pôle développement.</p>
<p>Bref, le monteur se contente de monter. L&rsquo;intégrateur intègre (et avec intégrité qui plus est). Pas la peine d&rsquo;avoir fait Normal Sup.<br />
Certes, vous me direz que c&rsquo;est le même métier mais si on y regarde de plus près, ce n&rsquo;est pas exactement la même définition.</p>
<p>Mais à quel moment est-il précisément devenu développeur Front-end ?</p>
<h2>Un peu de sémantique</h2>
<p>Car pour bien comprendre un ensemble de mot, il est bon de les prendre un par un puis de les confronter.</p>
<dl>
<dt><strong>Développeur</strong></dt>
<dd><em>Celui qui conçoit, effectue l&rsquo;analyse et écrit le code d&rsquo;un logiciel.</em></dd>
</dl>
<dl>
<dt><strong>Front-end</strong></dt>
<dd><em>Front venant de l&rsquo;anglais et signifiant « premier plan », ce premier plan étant la &#8230; BREF, « interface »</em></dd>
<dd></dd>
</dl>
<p>Donc, développeur Front-end signifierait « <strong>développeur d&rsquo;interface</strong> » ?<br />
« Mais c&rsquo;est bien sûr. Maintenant que vous me le dites » ! »</p>
<p>Et là tout de suite, vous vous dites que c&rsquo;est pas demain la veille que vous aller réussir à draguer avec ce titre et qu&rsquo;il faudra continuer d&rsquo;essuyer les bars en prétendant être « éleveur de dauphin », une profession souvent mésestimée qui aura certainement le mérite de soulever plusieurs questions lors de vos soirées mondaines.</p>
<h2>De la différence&#8230; ou pas</h2>
<p>Il y a bien sûr des intégrateurs qui, dans le cadre de leur travail, ont pu se rendre compte que les tâches qu&rsquo;ils effectuaient depuis des années s&rsquo;apparentaient à du développement d&rsquo;interface.</p>
<p>Mais en-est-il exactement pareil pour tout le monde ?<br />
Est-ce que tous les intégrateurs peuvent prétendre à cette appellation, cette spécialité qui, une fois définie, prend bien tout son sens, toute sa particularité ?</p>
<p>Et c&rsquo;est là que comme tout bon petit malin je vous répondrai: <strong>ça dépend</strong>.</p>
<p>Et j&rsquo;exemplerai le tout avec l&rsquo;exemple de ces nouveaux sites fabuleux qui réagissent au scroll de notre bonne vieille molette.<br />
Ne me dites pas que vous l&rsquo;aviez raté, c&rsquo;est la grosse mode depuis un an et on n&rsquo;a pas fini d&rsquo;en voir à la pelle de ces « parallaxes » &#8230; ou encore tous ces petits portfolios qui tendent à se comporter comme un bon vieux site en flash super bien animé, le tout en HTML5 (/TROLL) couplé à j&#8230;Query.</p>
<p><small>Si je peux me permettre: un parallax n&rsquo;est pas juste un effet au scroll, mais un effet bien particulier, qui mélange plusieurs plans qui ne se déplaceraient pas à la même vitesse durant le déplacement de l&rsquo;oeil (du scroll donc), créant une impression de profondeur.</small></p>
<p>Et je m&rsquo;offusque qu&rsquo;on parle de développement Front-end pour ces sites. Oui monsieur, car cela n&rsquo;est pas du développement d&rsquo;interface mais bel et bien de l&rsquo;animation d&rsquo;interface.</p>
<h2>« Animateur HTML » pardi !</h2>
<p>Oui, vous me lisez bien et je vous vois tous lever un doigt accusateur dans ma direction: BOOOOOUUUUH. Qu&rsquo;à cela ne tienne, je fais fis de vos railleries.</p>
<p>Si nous réfléchissons bien, nous sommes tous des intégrateurs mais nous avons aussi nos spécialités, par conséquent certains deviennent développeurs d&rsquo;interfaces, d&rsquo;autres des développeurs javascript , d&rsquo;autres s&rsquo;orientent vers l&rsquo;accessibilité et certains même repartent vers le design pur <strong>forts de leur expérience d&rsquo;intégrateur</strong>.</p>
<p>Alors, pour tous les animateurs qui me liront, je vous le dis messieurs, et mesdames, : je n&rsquo;ai pas la patience ni le courage nécessaire à créer ce genre de comportement donc je ne vous juge en nul point et vous salue même pour votre patience (sisi), je ne cherche qu&rsquo;à rétablir un bon ordre des choses entre plusieurs spécialités qui mériteraient de devenir des titres à part entière car selon moi, l&rsquo;intégrateur a encore de longs jours devant lui tant qu&rsquo;il n&rsquo;aura pas pris exactement conscience de ce qu&rsquo;il fait et à quel degré il s&rsquo;implique dans son devoir d&rsquo;intégrateur et beaucoup travaillant en agence réalisent encore du (très bon même) travail d&rsquo;intégrateur quand certains sont de magnifiques animateurs HTML et d&rsquo;autres sont de très compétents développeurs d&rsquo;interfaces.</p>
<p>Et on peut même le sentir, que certains ont déjà prévu ces changements, n&rsquo;avons-nous pas, chez les intégristes, posté une note sur <a title="On ne parle pas encore du métier d'animateur HTML..." href="/notes/on-ne-parle-pas-encore-du-metier-danimateur-html/">Adobe Edge</a> ?</p>
<p>Soyez donc fiers de vos compétences et ne tombez pas dans le piège de mettre à jour le titre de votre C.V., respectons les spécialités de chacun et apprenons à nos chers collègues (une fois de plus) l&rsquo;utilité de la bonne appellation. Au final, le seul titre que toute personne normalement constituée se doit d&rsquo;obtenir dans une vie, c&rsquo;est bel et bien celui de « Chevalier de l&rsquo; Internet ».</p>
<p>J&rsquo;espère donc que beaucoup partageront mon avis, que beaucoup d&rsquo;autres ne le partageront pas et viendront amener leur petite brique (ou leur grand troll) à cet édifice, cette tâche qui nous incombe: savoir définir et, enfin, professionnaliser, que dis-je, assumer nos métiers.</p>
<h2>Mon mot de la fin</h2>
<p>Ce n&rsquo;est pas pour nous brosser dans le sens du poil mais ce qui est formidable avec nos métiers issus de « l&rsquo;intégration française »<img src="https://s.w.org/images/core/emoji/14.0.0/72x72/2122.png" alt="™" class="wp-smiley" style="height: 1em; max-height: 1em;" />, c&rsquo;est que pouvons être au four et au moulin puisque nous sommes constamment à mi-chemin entre les deux, essayant de faire communiquer le meunier et le boulanger, aidant à la réalisation d&rsquo;un produit fini, répondant à plusieurs normes de qualité, mettant notre nez chez l&rsquo;un et l&rsquo;autre, amenant nos recommandations à droite et à gauche sur divers sujets tels que, et pour n&rsquo;en citer que quelques-uns: la typographie, la sémantique, les bonnes pratiques et l&rsquo;accessibilité.</p>
<p>Alors, il me vient l&rsquo;idée qu&rsquo;il est finalement inutile de rajouter des mots pompeux lors de notre recherche d&#8217;emploi pour se justifier de faire ce qu&rsquo;on fait. Non, il n&rsquo;y a pas de ninja du CSS, de samouraï du jQuery, ni d&rsquo; Intégrateur++ mais bien des intégrateurs qui se spécialisent, apprennent, testent et veillent.</p>
<p>Et par conséquent, nous ne sommes pas tous des développeurs d&rsquo;interface, des animateurs et des intégrateurs confirmés, l&rsquo;artisan en chacun de nous le sait.</p>
]]></content:encoded>
					
					<wfw:commentRss>/2012/10/22/developpeur-dintegration-interfacante-et-animee-le-wtf/feed/</wfw:commentRss>
			<slash:comments>20</slash:comments>
		
		
			</item>
		<item>
		<title>Firefox 16, qu’y a-t-il pour nous là-dedans ?</title>
		<link>/2012/10/10/firefox-16-qu-y-a-t-il-pour-nous-la-dedans/</link>
					<comments>/2012/10/10/firefox-16-qu-y-a-t-il-pour-nous-la-dedans/#comments</comments>
		
		<dc:creator><![CDATA[Pierre Bertet]]></dc:creator>
		<pubDate>Wed, 10 Oct 2012 16:30:47 +0000</pubDate>
				<category><![CDATA[Front-end]]></category>
		<guid isPermaLink="false">/?p=3556</guid>

					<description><![CDATA[Firefox 16 est sorti hier ! Voici une sélection des nouveautés qui me semblent intéressantes pour les développeurs Web (si vous êtes très motivé, ruez-vous sur les 1989 améliorations et corrections de cette version). La liste qui suit a été constituée à partir de la page Changes for Web developers du Mozilla Developer Network.
Developer Toolbar
La Developer Toolbar est disponible ! Elle regroupe les outils de développement existants dans Firefox (l’inspecteur, la console Web, le débogueur), auxquels vient s’ajouter une console. Celle-ci peut assez facilement être étendue pour y ajouter de nouvelles commandes : cet outil va certainement se&#160;[&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Firefox 16 est sorti hier ! Voici une sélection des nouveautés qui me semblent intéressantes pour les développeurs Web (si vous êtes très motivé, ruez-vous sur <a href="http://www.mozilla.org/en-US/firefox/16.0/releasenotes/buglist.html">les 1989 améliorations et corrections</a> de cette version). La liste qui suit a été constituée à partir de la page <a lang="en" href="https://developer.mozilla.org/en-US/docs/Firefox_16_for_developers">Changes for Web developers</a> du Mozilla Developer Network.</p>
<h2>Developer Toolbar</h2>
<p>La <a href="https://blog.mozilla.org/blog/2012/10/09/firefox-debuts-new-developer-toolbar/" lang="en">Developer Toolbar</a> est disponible ! Elle regroupe les outils de développement existants dans Firefox (l’inspecteur, la console Web, le débogueur), auxquels vient s’ajouter une console. Celle-ci peut assez facilement <a href="https://developer.mozilla.org/en-US/docs/Tools/GCLI#Extending_the_Command_Line" lang="en">être étendue</a> pour y ajouter de nouvelles commandes : cet outil va certainement se retrouver indispensable d’ici peu de temps.</p>
<div id="attachment_3643" style="width: 604px" class="wp-caption aligncenter"><a href="/wp-content/uploads/2012/10/dev-toolbar.png"><img aria-describedby="caption-attachment-3643" loading="lazy" src="/wp-content/uploads/2012/10/dev-toolbar.png" alt="" title="Barre d’outils de développement" width="594" height="588" class="size-full wp-image-3643" srcset="/wp-content/uploads/2012/10/dev-toolbar.png 594w, /wp-content/uploads/2012/10/dev-toolbar-300x296.png 300w" sizes="(max-width: 594px) 100vw, 594px" /></a><p id="caption-attachment-3643" class="wp-caption-text">La nouvelle barre de développement de Firefox 16</p></div>
<h2>HTML</h2>
<h3>L’élément <code>meter</code> est supporté</h3>
<p>Un petit rappel du rôle de cet élément :</p>
<blockquote lang="en"><p>
The meter element represents a scalar measurement within a known range, or a fractional value; for example disk usage, the relevance of a query result, or the fraction of a voting population to have selected a particular candidate. This is also known as a gauge.<br />
— <a href="http://developers.whatwg.org/the-button-element.html#the-meter-element">The meter element &mdash; HTML5</a></p></blockquote>
<p>Traduction :</p>
<blockquote><p>
L’élément <em lang="en">meter</em> représente une mesure scalaire à l’intérieur de limites connues, ou une valeur fractionnaire. Par exemple : le niveau d’utilisation d’un disque, la pertinence du résultat d’une requête, ou la fraction de votants ayant sélectionné un candidat. Le mot « jauge » peut également définir cet élément.
</p></blockquote>
<p>Je vous invite également à consulter la documentation de l’élément meter <a href="https://developer.mozilla.org/en-US/docs/HTML/Element/meter">sur le <abbr title="Mozilla Developer Network">MDN</abbr></a>, et <a href="http://html5doctor.com/measure-up-with-the-meter-tag/" lang="en">l’article de HTML5 Doctor</a>. Un petit exemple :</p>
<pre><code class="language-markup">16/30 &lt;meter value="16" max="30" min="10"&gt;&lt;/meter&gt;
45/50 &lt;meter value="45" max="50" min="0"&gt;&lt;/meter&gt;</code></pre>
<p>Rendu : 16/30 <meter value="16" max="30" min="10">(meter n’est pas supporté sur votre navigateur)</meter>, 45/50 <meter value="45" max="50" min="0">(meter n’est pas supporté sur votre navigateur)</meter>.</p>
<p>Trois pseudo-classes CSS ont également été ajoutées pour nous permettre de styler cet élément : <code>:-moz-meter-optimum</code>, <code>:-moz-meter-sub-optimum</code> et <code>:-moz-meter-sub-sub-optimum</code>.</p>
<h3>L’API HTML Microdata est supportée</h3>
<p>Quelques liens de référence :</p>
<ul>
<li><a lang="en" href="http://dev.opera.com/articles/view/microdata-and-the-microdata-dom-api/">Un article d’introduction à Microdata et son API sur Dev.Opera</a></li>
<li><a lang="en" href="http://html5doctor.com/microdata/">L’article Microdota sur HTML5 Doctor</a></li>
<li><a lang="en" href="http://dev.w3.org/html5/spec-author-view/microdata.html">La spécification Microdata à destination des auteurs</a></li>
</ul>
<h3>Le champ <code>&lt;input&gt;</code> autorise tous les <a href="http://fr.wikipedia.org/wiki/Type_MIME">types MIME</a></h3>
<p>Avant cette version, seules ces valeurs étaient disponibles :</p>
<pre><code class="language-markup">&lt;input type="file" accept="audio/*"&gt;
&lt;input type="file" accept="video/*"&gt;
&lt;input type="file" accept="image/*"&gt;</code></pre>
<p>Il est maintenant possible d’être plus précis :</p>
<pre><code class="language-markup">&lt;input type="file" accept="audio/mpeg"&gt;
&lt;input type="file" accept="video/*,image/*"&gt;
&lt;input type="file" accept="image/*,.autre-extension"&gt;</code></pre>
<p>Pardonnez-moi, mais je me sens obligé de rappeler qu’<strong>aucune validation dans le navigateur n’est destinée à remplacer une validation côté serveur.</strong> Ça va mieux, merci !</p>
<h2>CSS</h2>
<h3>Adieu préfixes</h3>
<p>Beaucoup, beaucoup de préfixes ont été supprimés. Voyez :</p>
<p>Les animations : <code>animation</code>, <code>animation-delay</code>, <code>animation-direction</code>, <code>animation-duration</code>, <code>animation-iteration-count</code>, <code>animation-name</code>, <code>animation-play-state</code>, <code>animation-timing-function</code>, <code>animation-fill-mode</code>.</p>
<p>Les transformations : <code>transform-origin</code>, <code>transform</code>.</p>
<p>Les dégradés : <code>linear-gradient</code>, <code>radial-gradient</code>, <code>repeating-linear-gradient</code>, <code>repeating-radial-gradient</code>.</p>
<p>La fonction <code>calc()</code>. Le potentiel de cette fonction CSS est énorme (<a href="https://developer.mozilla.org/en-US/docs/CSS/calc" lang="en">documentation MDN</a>), et une version non préfixée facilitera son utilisation. Seul Opera supporte pas <code>calc()</code> aujourd’hui.</p>
<h3>Animations CSS : reverse</h3>
<p>Il est maintenant possible d’utiliser les valeurs reverse et alternate-reverse pour la propriété animation-direction (<a lang="en" href="https://developer.mozilla.org/en-US/docs/CSS/animation-direction">documentation MDN</a>).</p>
<p>Si vous vous souhaitez voir en quoi ces nouvelles valeurs de direction influent sur une animation CSS, <a href="http://code.lesintegristes.net/animation-direction/" title="La propriété animation-direction">je vous ai concocté une petite démonstration</a>. Allez-donc y jeter un œil avec votre Firefox flambant neuf !</p>
<h3>box-sizing sur les cellules de tableaux</h3>
<p>Cette propriété, devenue récemment assez populaire (voir <a href="http://paulirish.com/2012/box-sizing-border-box-ftw/" lang="en">l’article de Paul Irish</a>), s’applique maintenant correctement aux cellules de tableaux.</p>
<h3>Media queries</h3>
<p>Le type de donnée <em>resolution</em> (<a href="https://developer.mozilla.org/en-US/docs/CSS/resolution" lang="en">documentation MDN</a>) permet d’utiliser une nouvelle unité, le <code>dppx</code> (<em lang="en">dots per CSS pixel</em>). Il s’agit du nombre de points (sur l’écran) par pixel CSS (virtuel).</p>
<p>Les unités <code>dppx</code>, <code>dpi</code>, et <code>dpcm</code> font maintenant référence à des valeurs CSS (virtuelles), et non plus à des valeurs physiques.</p>
<h3>Flex Layout</h3>
<p>Il est maintenant possible d’utiliser la valeur <code>auto</code> pour les propriétés <code>min-width</code> et <code>min-height</code> (voir la spécification CSS3 Flexbox : <a lang="en" href="http://dev.w3.org/csswg/css3-flexbox/#min-size-auto">Implied Minimum Size of Flex Items</a>).</p>
<h2>DOM : adieu préfixes</h2>
<ul>
<li>IndexedDB n’est plus préfixé (<a href="https://developer.mozilla.org/en-US/docs/IndexedDB" lang="en">documentation MDN</a>)</li>
<li>L’API Battery n’est plus préfixée (<a href="https://developer.mozilla.org/en-US/docs/DOM/window.navigator.battery" lang="en">documentation MDN</a>)</li>
<li>L’API Vibration n’est plus préfixée (<a lang="en" href="https://hacks.mozilla.org/2012/01/using-the-vibrator-api-part-of-webapi/">Mozilla Hacks: Using the Vibration API</a>)</li>
</ul>
<h2>JavaScript</h2>
<p>Trois nouvelles méthodes ont été ajoutées sur l’objet <code>Number</code> : <code>isFinite()</code>, <code>toInteger()</code> et <code>isInteger()</code>.</p>
<h3>L’opérateur Spread</h3>
<p>Il est maintenant possible de convertir un tableau en paramètres de fonction, à l’aide de <a href="http://wiki.ecmascript.org/doku.php?id=harmony:spread" lang="en">l’opérateur <em lang="en">spread</em> du projet Harmony</a>.</p>
<p>Évidemment, n’utilisez pas cette fonctionnalité pour l’instant pour du Web, c’est totalement incompatible avec les autres navigateurs. Mais si vous développez une commande pour la nouvelle Developer Toolbar de Firefox, il serait dommage de vous en priver !</p>
<p>Un exemple :</p>
<pre><code class="language-javascript">// Pour appeler cette fonction
function nousIrons(a, b, c, lieu) {
  var str = a + ', ' + b + ', ' + c + ', nous irons ' + lieu;
  return str;
}

// Avec ce tableau
var data = [1, 2, 3];

// Et ce lieu
var lieu = 'au bois';

// Avant, nous devions faire
nousIrons(data[0], data[1], data[2], lieu);

// Ou encore, avec Array.apply()
nousIrons.call(this, data.concat(lieu));

// Mais maintenant, avec la syntaxe spread
nousIrons(...data, lieu);

// Cool non ?</code></pre>
<h2>La conclusion ! La conclusion !</h2>
<p>Pour cet article, j’ai essayé prendre les notes de version de Firefox et d’y ajouter, en vrac, des informations complémentaires, quelques démos, et mes réactions. J’espère que le résultat sera plus digeste qu’une simple liste : n’hésitez pas à me faire part de vos impressions dans les commentaires !</p>
]]></content:encoded>
					
					<wfw:commentRss>/2012/10/10/firefox-16-qu-y-a-t-il-pour-nous-la-dedans/feed/</wfw:commentRss>
			<slash:comments>12</slash:comments>
		
		
			</item>
		<item>
		<title>L’attribut placeholder sur OS X et iOS, comme autrefois.</title>
		<link>/2012/10/09/l-attribut-placeholder-sur-os-x-et-ios-comme-autrefois/</link>
					<comments>/2012/10/09/l-attribut-placeholder-sur-os-x-et-ios-comme-autrefois/#comments</comments>
		
		<dc:creator><![CDATA[Pierre Bertet]]></dc:creator>
		<pubDate>Tue, 09 Oct 2012 08:30:47 +0000</pubDate>
				<category><![CDATA[Front-end]]></category>
		<guid isPermaLink="false">/?p=3408</guid>

					<description><![CDATA[Depuis quelques temps, l’attribut placeholder est supporté par l’ensemble des navigateurs modernes. Cette fonctionnalité, implémentée de mille (mauvaises) manières en détournant l’attribut value, a enfin trouvé la place qui lui revenait dans HTML.
Il est même possible de styler ce texte sur la plupart des navigateurs, si l’on veut bien concéder l’utilisation de sélecteurs quelque peu pimpants :
::-webkit-input-placeholder{}
:-ms-input-placeholder{}
:-moz-placeholder{}
Le comportement est simple : un texte d’aide apparaît dans le champ de texte, lorsque celui-ci est vide. Ce libellé disparaît dès que le focus est placé dans le champ. 
Cet attribut n’a pas vocation à remplacer l’élément &#60;label&#62;.&#160;[&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Depuis quelques temps, l’attribut <code>placeholder</code> est supporté par l’ensemble des navigateurs modernes. Cette fonctionnalité, implémentée de mille (mauvaises) manières en détournant l’attribut <code>value</code>, a enfin trouvé la place qui lui revenait dans HTML.</p>
<p>Il est même possible de styler ce texte sur la plupart des navigateurs, si l’on veut bien concéder l’utilisation de sélecteurs quelque peu pimpants :</p>
<pre><code class="language-css">::-webkit-input-placeholder{}
:-ms-input-placeholder{}
:-moz-placeholder{}</code></pre>
<p>Le comportement est simple : un texte d’aide apparaît dans le champ de texte, lorsque celui-ci est vide. Ce libellé disparaît dès que le focus est placé dans le champ. </p>
<p>Cet attribut n’a pas vocation à remplacer l’élément <code>&lt;label&gt;</code>. Il s’agit d’un indice, d’une aide supplémentaire, et pas d’un intitulé :</p>
<blockquote lang="en"><p>The placeholder attribute represents a short hint (a word or short phrase) intended to aid the user with data entry. A hint could be a sample value or a brief description of the expected format. […] For a longer hint or other advisory text, the title attribute is more appropriate. <strong>The placeholder attribute should not be used as an alternative to a label.</strong><br />
— <a href="http://developers.whatwg.org/common-input-element-attributes.html#attr-input-placeholder">Common input element attributes &mdash; HTML5</a>
</p></blockquote>
<p>Traduction (rapide) :</p>
<blockquote><p>L’attribut placeholder représente un indice (mot ou phrase courte) dont le but est d’aider l’utilisateur à entrer ses données. Cet indice peut être une valeur d’exemple ou une brève description du format attendu. […] Pour un texte d’aide plus long, ou toute autre indication, l’attribut title sera plus approprié. L’attribut placeholder ne devrait pas être utilisé comme alternative à l’élément label.</p></blockquote>
<p>Sur iOS et OS X (depuis 10.7), une petite variante a été introduite, qui me semble tout à fait intéressante. Le libellé reste affiché au focus, jusqu’au premier caractère tapé. Ce comportement est visible sur Firefox, Chrome et Safari (pas Opera, qui semble implémenter ses propres widgets).</p>
<div id="attachment_3456" style="width: 212px" class="wp-caption aligncenter"><img aria-describedby="caption-attachment-3456" loading="lazy" src="/wp-content/uploads/2012/10/placeholder-left.gif" alt="" title="Placeholder OS X" width="202" height="41" class="size-full wp-image-3456" /><p id="caption-attachment-3456" class="wp-caption-text">L’attribut placeholder sur OS X</p></div>
<p>Je trouve ce nouveau comportement intéressant. Il permet d’afficher l’aide plus longtemps, et le risque de confondre le <em lang="en">placeholder</em> avec la valeur du champ est le même que sans focus, puisqu’ils sont censés être clairement distingués visuellement.</p>
<p>Seulement voilà : chaque projet est particulier, et une solution, même élégante, ne correspond pas toujours aux besoins du moment. Il peut arriver, par exemple, que le comportement du système ne soit pas celui qui est désiré. Nous avons tous connu ce problème n’est-ce pas ?</p>
<p>Prenons un champ dont le texte est centré. Regardez comme le curseur se faufile, l’air de rien, au beau milieu d’un caractère :</p>
<div id="attachment_3449" style="width: 212px" class="wp-caption aligncenter"><img aria-describedby="caption-attachment-3449" loading="lazy" src="/wp-content/uploads/2012/10/placeholder.gif" alt="Placeholder centré" title="Placeholder centré sur OS X 10.7 et Firefox 16 beta" width="202" height="41" class="size-full wp-image-3449" /><p id="caption-attachment-3449" class="wp-caption-text">Placeholder centré</p></div>
<p>Mais enfin Curseur, tu fais n’importe quoi ! La solution est simple, la décision est prise : il faut revenir à l’ancien comportement. Mais il va falloir trouver une ruse, car il est hors de question de revenir à une solution basée sur l’attribut value, avec des classes pour distinguer le focus.</p>
<h2>La solution à deux francs</h2>
<p>Une solution pourrait être de modifier dynamiquement l’attribut placeholder au focus, à l’aide d’un script. Et pourquoi pas en CSS ? En combinant <code>:focus</code> et <code>:-xx-input-placeholder</code>, il devrait être possible de modifier la couleur du placeholder pour qu’elle corresponde à celle du fond ! Voyons cela :</p>
<pre><code class="language-css">input:focus::-webkit-input-placeholder { color: #fff; }
input:focus:-moz-placeholder           { color: #fff; }</code></pre>
<div id="attachment_3447" style="width: 212px" class="wp-caption aligncenter"><img aria-describedby="caption-attachment-3447" loading="lazy" src="/wp-content/uploads/2012/10/placeholder-fff.gif" alt="Placeholder blanc" title="Placeholder blanc sur OS X 10.7 et Firefox 16 beta" width="202" height="41" class="size-full wp-image-3447" /><p id="caption-attachment-3447" class="wp-caption-text">Placeholder blanc</p></div>
<p>Ce comportement peut être observé avec Firefox et Safari. La couleur du curseur clignotant correspond à la couleur du champ, ici un gris foncé. Mais pour permettre une bonne lisibilité du texte, ces deux navigateurs vont faire en sorte d’inverser la couleur du texte à l’endroit où se trouve le curseur :</p>
<div id="attachment_3534" style="width: 365px" class="wp-caption aligncenter"><img aria-describedby="caption-attachment-3534" loading="lazy" src="/wp-content/uploads/2012/10/placeholder-fff-zoom.gif" alt="" title="Placeholder OS X - Couleur blanche agrandi" width="355" height="120" class="size-full wp-image-3534" /><p id="caption-attachment-3534" class="wp-caption-text">Placeholder blanc, agrandi</p></div>
<p>Ce qui est tout à fait indésirable dans notre cas.</p>
<h2>La solution à trois francs</h2>
<p>La solution est maintenant évidente, et permet également d’obtenir une meilleure portabilité, puisqu’elle ne dépend plus de la couleur du fond. Il s’agit de la couleur spéciale <code>transparent</code>.</p>
<pre><code class="language-css">input:focus::-webkit-input-placeholder { color: transparent; }
input:focus:-moz-placeholder           { color: transparent; }</code></pre>
<div id="attachment_3448" style="width: 212px" class="wp-caption aligncenter"><img aria-describedby="caption-attachment-3448" loading="lazy" src="/wp-content/uploads/2012/10/placeholder-transparent.gif" alt="Placeholder transparent" title="Placeholder transparent sur OS X 10.7 et Firefox 16 beta" width="202" height="41" class="size-full wp-image-3448" /><p id="caption-attachment-3448" class="wp-caption-text">Placeholder transparent</p></div>
<h2>Accessibilité</h2>
<p>Si vous avez pour habitude de traquer les problèmes d’accessibilité, cette technique devrait vous déranger un peu : rendre un texte transparent en CSS, voilà qui sonne faux. Mais n’oublions pas qu’il ne s’agit, encore une fois, que d’un <code>placeholder</code>, une invitation à entrer une valeur, rien d’autre. Ce n’est pas un <code>title</code>, et encore moins un  <code>&lt;label&gt;</code>.</p>
<p>Le seul problème que je vois serait plutôt d’ordre ergonomique : un utilisateur d’iOS ou OS X s’attend à voir le placeholder au focus, jusqu’au premier caractère tapé.</p>
<h2>Démonstration</h2>
<p>Vous pouvez retrouver ces tests sur la page dédiée :</p>
<p style="text-align:center"><a class="button" href="http://code.lesintegristes.net/placeholder/"><span><span>Démonstration</span></span></a></p>
<p>Cette page inaugure également un nouvel espace, <a href="http://code.lesintegristes.net/">code.lesintegristes.net</a>, sur lequel nous publierons désormais nos démonstrations. Ce sous-domaine est <a href="https://github.com/lesintegristes/lesintegristes-code" lang="en">hébergé par GitHub</a>, et son contenu est bien entendu sous licence libre.</p>
]]></content:encoded>
					
					<wfw:commentRss>/2012/10/09/l-attribut-placeholder-sur-os-x-et-ios-comme-autrefois/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
			</item>
		<item>
		<title>La vie des intégrateurs, chapitre V : et plus si affinités&#8230;</title>
		<link>/2012/09/06/la-vie-des-integrateurs-chapitre-v-et-plus-si-affinites/</link>
					<comments>/2012/09/06/la-vie-des-integrateurs-chapitre-v-et-plus-si-affinites/#comments</comments>
		
		<dc:creator><![CDATA[Eric Le Bihan]]></dc:creator>
		<pubDate>Thu, 06 Sep 2012 13:20:34 +0000</pubDate>
				<category><![CDATA[Front-end]]></category>
		<guid isPermaLink="false">/?p=2299</guid>

					<description><![CDATA[Si vous êtes un tant soit peu à l&#8217;écoute du marché ou à la recherche de missions en freelance, vous aurez certainement remarqué la débauche de surenchères dans les compétences demandées pour un poste d&#8217;intégrateur html, oups, je voulais dire développeur front-end (je vous fais grâce du débat stérile sur le sujet&#8230;).
Avec l&#8217;arrivée de html5 et tout le cortège de nouveautés &#8211; la plupart du temps non applicables dans un environnement de production, le pauvre intégrateur doit se muer en véritable couteau suisse : en plus de maitriser html5 et css3, sans perdre de vue l&#8217;accessibilité et la compatibilité&#160;[&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Si vous êtes un tant soit peu <em>à l&rsquo;écoute du marché</em> ou à la recherche de missions en freelance, vous aurez certainement remarqué la débauche de surenchères dans les compétences demandées pour un poste d&rsquo;intégrateur html, oups, je voulais dire développeur front-end (je vous fais grâce du débat stérile sur le sujet&#8230;).</p>
<p>Avec l&rsquo;arrivée de html5 et tout le cortège de nouveautés &#8211; la plupart du temps non applicables dans un environnement de production, le pauvre intégrateur doit se muer en véritable couteau suisse : en plus de maitriser html5 et css3, sans perdre de vue l&rsquo;accessibilité et la compatibilité multi-navigateurs, il doit être un crack en javascript et un utilisateur averti des principales bibliothèques basées sur ce langage, il doit avoir de bonnes connaissances en design, en ergonomie, en expérience utilisateur, maitriser les technos pour le mobile et le <em>responsive design</em>, les préprocesseurs CSS, savoir optimiser son code pour le SEO et/ou booster les temps d&rsquo;affichage d&rsquo;une page web, connaitre plusieurs langages de templating, avoir de solides connaissances en PHP et des notions en administration de serveurs, n&rsquo;en jetez plus la coupe est pleine ! Quel autre métier a une telle exigence envers ses professionnels et exige une telle étendue de connaissances ? L&rsquo;intégrateur est-il en train de devenir le pendant du webmaster du début des années 2000 ? De deux choses l&rsquo;une ou vous êtes un stakhanoviste de l&rsquo;intégration et il est fort probable que vous ayez dit adieu à toute vie privée, sociale ou affective ou vos connaissances sont vouées à rester superficielles dans tous ces domaines.</p>
<p>Je pose donc la question de la formation. A quel moment ce processus indispensable à tout métier, et à plus forte raison à un métier dont la matière évolue très rapidement, intervient-il ? Comment est organisée cette formation ? Est-ce que parce qu&rsquo;un intégrateur est souvent décrit comme une autodidacte passionné, il doit prendre ce temps de formation sur son temps libre &#8211; tout benef pour l&#8217;employeur ? Quelle est la politique des entreprises à leur égard, si dans certains cas le temps d&rsquo;auto-formation et de veille est inscrit au contrat, la plupart du temps il est difficile dans le rush des projets à boucler de prendre le temps de se former convenablement. La veille se limitant à quelques articles lus en diagonale et quelques tweets échangés sur le sujet. Ce qui n&#8217;empêche pas les agences de vendre des prestations sur des technos non maitrisées et non éprouvées. la formation se fait souvent en cours de projet, selon le vieil adage c&rsquo;est en forgeant qu&rsquo;on devient forgeron.</p>
<p>Au-delà de la question de la formation, se pose la question de la valorisation des ces compétences. Quand je vois le niveau de salaire offert dans certaines annonces, je me dis qu&rsquo;il y a maldonne&#8230; Soit vous voulez un junior qui débute et c&rsquo;est tout ce que vous pourrez vous offrir pour le maigre salaire que vous êtes prêt à verser, soit il va falloir sortir la monnaie ! Oui on n&rsquo;a pas fait tout ça pour rien ! (Pour ceux qui ne travaillent pas pour l&rsquo;argent, mais pour la gloire, rien ne vous empêche de négocier vos talents à leur juste valeur et reverser une partie de vos revenus à des œuvres caritatives&#8230;). Il est bien entendu que nous parlons d&rsquo;un contexte commercial et non de projets communautaires ou de bénévolat, quoique certaines entreprises commerciales proposent des postes proches du bénévolat au niveau de la rémunération&#8230;</p>
<p>Le besoin de reconnaissance est tel chez les intégrateurs que j&rsquo;ai pu côtoyer dans ma vie professionnelle, que je suis prêt à me demander s&rsquo;il n&rsquo;y a pas un profil psychologique particulier pour ce métier, à ce point là c&rsquo;est pathologique. Non mais vous en connaissez vous des intégrateurs qui ne râlent pas, qui ne se sentent pas incompris, ou reconnu à leur juste valeur ? A croire qu&rsquo;en entreprise on s&rsquo;acharne sur eux ! Alors que ces types sont des experts dans leur domaine, on continue à ignorer nombre de leurs recommandations en matière de conception d&rsquo;interface ! Pire on leur mets dans les pattes des chefs de projets persuadés d&rsquo;en connaitre autant si ce n&rsquo;est plus qu&rsquo;eux (voir <a title="L'effet Dunning-Kruger" href="/2011/11/09/leffet-dunning-kruger/">l&rsquo;effet Dunning Kruger</a>)</p>
<p>Savez-vous que dans les pays anglo-saxons il y a des <em>chasseurs de têtes</em> qui sont spécialisés dans le recrutement des développeurs front-end ? Qu&rsquo;il y a des annonces qui ne demande que, et seulement que, les compétences nécessaires à un développeur front-end ? Ça laisse songeur&#8230;</p>
<p>Quelques citations d&rsquo;annonces qui m&rsquo;ont amusé ou fait bondir, (qui rédige ces annonces, sérieusement ?) :</p>
<p>« Diplômé d&rsquo;une Ecole d&rsquo;Ingénieurs ou d&rsquo;un Master 2, vous justifiez d&rsquo;au moins deux ans d&rsquo;expérience sur un poste similaire. »<br />
<a href="http://www.meteojob.com/candidat/offres/offre-d-emploi-developpeur-h-f-ile-de-france-cdi-1701396">http://www.meteojob.com/candidat/offres/offre-d-emploi-developpeur-h-f-ile-de-france-cdi-1701396<br />
</a></p>
<p>« Vous êtes capable d&rsquo;architecturer convenablement une application web et modéliser une base de données MySQL (Merise / UML / MVC »<br />
<a href="https://remixjobs.com/emploi/Developpement/Developpeur-web-Front-End-H-F/7302">https://remixjobs.com/emploi/Developpement/Developpeur-web-Front-End-H-F/7302</a></p>
<p>« Vous êtes jeune et dynamique » (So 90&rsquo;s &amp; si discriminatoire&#8230;)<br />
<a href=" http://emploi.alsacreations.com/offre-512983-Developpeur-js---integrateur-web.html">http://emploi.alsacreations.com/offre-512983-Developpeur-js&#8212;integrateur-web.html</a></p>
<p>« Intérêts:<br />
• Ambiance internationale<br />
• Structure jeune et dynamique<br />
• Poste basé à Paris »<br />
<a href="http://emploi.frenchweb.fr/offre-emploi/developpeur-front-end-senior-pour-une-agence-digitale/">http://emploi.frenchweb.fr/offre-emploi/developpeur-front-end-senior-pour-une-agence-digitale/<br />
</a></p>
<p>« Nous voulons quelqu&rsquo;un capable d&rsquo;aller au delà des appréhensions »<br />
<a href="http://www.jobintree.com/offre-emploi/le-crew-4355/developpeur-web-1664536">http://www.jobintree.com/offre-emploi/le-crew-4355/developpeur-web-1664536</a></p>
<p>Pour le dernier, c&rsquo;est vraiment du niveau senior, mais pas impossible, combien de profils correspondent ?<br />
<a href=" http://tbe.taleo.net/NA2/ats/careers/requisition.jsp?org=NURUN&amp;cws=2&amp;rid=1278">http://tbe.taleo.net/NA2/ats/careers/requisition.jsp?org=NURUN&amp;cws=2&amp;rid=1278</a></p>
]]></content:encoded>
					
					<wfw:commentRss>/2012/09/06/la-vie-des-integrateurs-chapitre-v-et-plus-si-affinites/feed/</wfw:commentRss>
			<slash:comments>31</slash:comments>
		
		
			</item>
		<item>
		<title>À propos des outils d’animation pour le web</title>
		<link>/2011/10/04/a-propos-des-outils-danimation-pour-le-web/</link>
					<comments>/2011/10/04/a-propos-des-outils-danimation-pour-le-web/#comments</comments>
		
		<dc:creator><![CDATA[Pierre Bertet]]></dc:creator>
		<pubDate>Tue, 04 Oct 2011 15:07:52 +0000</pubDate>
				<category><![CDATA[Front-end]]></category>
		<guid isPermaLink="false">/?p=2003</guid>

					<description><![CDATA[Une bataille importante est en train de se jouer, celle des outils permettant d’exploiter les nouvelles technologies web. Parmi les attentes, la partie la plus importante est peut-être celle qui concerne les animations. Je vais mentionner Flash dans cet article, mais il s’agit de l’IDE Flash, pas du Flash Player.
L’outil de création ultime, le « Flash du web », n’est pas arrivé, et tous les regards se tournent évidemment vers Adobe. À la différence d’un outil dédié au Flash Player, la création d’un outil pour le web est beaucoup plus complexe, car il s’agit d’un « environnement ouvert ».&#160;[&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Une bataille importante est en train de se jouer, celle des outils permettant d’exploiter les nouvelles technologies web. Parmi les attentes, la partie la plus importante est peut-être celle qui concerne les animations. Je vais mentionner Flash dans cet article, mais il s’agit de <a href="http://www.adobe.com/fr/products/flash.html">l’<abbr title="Integrated Development Environment" lang="en">IDE</abbr> Flash</a>, pas du <a href="http://get.adobe.com/fr/flashplayer/">Flash Player</a>.</p>
<p>L’outil de création ultime, le « Flash du web », n’est pas arrivé, et tous les regards se tournent évidemment vers Adobe. À la différence d’un outil dédié au Flash Player, la création d’un outil pour le web est beaucoup plus complexe, car il s’agit d’un « environnement ouvert ». Les technologies permettant l’animation sur le web sont nombreuses et très différentes.</p>
<h2>HTML</h2>
<p>Il est bien sûr possible d’animer les éléments HTML en JavaScript, comme cela se fait depuis des années. On définit un timer, et on modifie des propriétés CSS au fil du temps. Il est aujourd’hui possible de profiter des optimisations que le navigateur peut proposer, avec la méthode <a href="http://paulirish.com/2011/requestanimationframe-for-smart-animating/" lang="en"><code>window.requestAnimationFrame</code></a>.</p>
<p>CSS peut également être directement utilisé pour animer les éléments d’une page, et il n’est pas rare de combiner plusieurs modules :</p>
<ul>
<li>Pour l’apparence, l’ensemble des propriétés CSS, ainsi que <a href="http://www.w3.org/TR/css3-2d-transforms/" lang="en">CSS 2D Transforms</a> et <a href="http://www.w3.org/TR/css3-3d-transforms/" lang="en">CSS 3D Transforms</a>.</li>
<li>Pour les animations elles-mêmes, <a href="http://www.w3.org/TR/css3-transitions/" lang="en">CSS Transitions</a> et <a href="http://www.w3.org/TR/css3-animations/" lang="en">CSS Animations</a>.</li>
<li>…et <a href="http://www.adobe.com/devnet/html5/articles/css-shaders.html">les shaders arrivent</a>. Devinez qui a fait cette proposition et l’a implémentée ? Adobe bien sûr !</li>
</ul>
<h2>SVG</h2>
<p>Pour animer du SVG, il y a également plusieurs possibilités : du simple JavaScript, comme pour les éléments HTML (les éléments SVG sont intégrés de manière transparente au document HTML). Ensuite, l’ensemble des technologies CSS citées pour le HTML peuvent (ou pourront) également être utilisées pour le SVG. Enfin, SVG peut utiliser une technologie d’animation spécifique, <a href="http://www.w3.org/TR/smil/" lang="en"><abbr title="Synchronized Multimedia Integration Language">SMIL</abbr></a>.</p>
<p>Rappelons qu’Adobe a misé sur cette technologie autrefois, mais ils ont arrêté le développement de leur plugin SVG après le rachat de Macromedia ; peut-être préparent-ils leur grand retour sur cette technologie ?</p>
<h2>Canvas</h2>
<p>Canvas (2D) est une zone de pixels qui peut être directement dessinée en JavaScript, on ne manipule plus de document comme en HTML ou SVG. Les animations se font donc directement avec JavaScript, mais là aussi, il est possible d’utiliser <code>window.requestAnimationFrame</code> pour optimiser ces animations.</p>
<h2>WebGL</h2>
<p>WebGL, ou Canvas 3D, c’est le roi. Cette technologie permet de dialoguer directement avec la carte graphique, à l’aide d’une API OpenGL simplifiée (WebGL donc). C’est toujours l’élément canvas qui est utilisé, nous avons donc une zone de pixels qui n’attendent plus qu’à être dessinés !</p>
<h2>Les outils</h2>
<p>Vous le voyez, il existe beaucoup de technologies très différentes, et elles peuvent interagir les unes avec les autres. C’est toute la puissance du web ! Mais cette puissance est difficile à maîtriser, et il est nécessaire de revoir la plupart des concepts proposés (notamment par Flash) ces dernières années pour l’exploiter efficacement. Un seul outil ne peut pas se charger de tout, et il faudra certainement passer d’un outil spécialisé à un autre selon les technologies utilisées.</p>
<p>Chez Adobe, pour l’instant, nous avons une pré-version du logiciel <a href="http://labs.adobe.com/technologies/edge/" lang="en">Edge</a>, en cours de développement, qui permet d’animer des éléments (CSS transitions) et même d’ajouter des actions (fonctions JavaScript), mais il y a encore beaucoup de travail pour passer d’un petit outil d’animation simple à quelque chose de beaucoup plus riche, comme la partie animation de Flash. Toujours dans les labs d’Adobe, nous avons également <a href="http://labs.adobe.com/technologies/muse/" lang="en">Muse</a>, qui permet de créer des pages web sans écrire une ligne de code. Pas de gestion des animations, et la version actuelle déçoit un peu, en passant complètement à côté de la sémantique.</p>
<p><a href="http://www.sencha.com/" lang="en">Sencha</a> (ExtJS, Sencha Touch) vient de sortir la version finale de son outil d’animation CSS, <a href="http://www.sencha.com/blog/sencha-animator-released/" lang="en">Sencha Animator</a>. <a href="http://www.sencha.com/products/animator/demos/" lang="en">Les démonstrations</a> me semblent très prometteuses, mais l’outil se positionne sur le mobile, et se limite volontairement au support de Webkit pour cette raison, dommage.</p>
<p><a href="http://animatable.com/">Animatable</a> semble également très intéressant, mais la sortie du soft (qui sera disponible sous la forme d’une application web) commence à se faire attendre.</p>
<p>Pas grand chose à ma connaissance pour créer de manière graphique du Canvas 2D ou du WebGL. Ces technologies sont très différentes de HTML et SVG puisqu’elles ne reposent pas sur la manipulation de documents. Je les vois beaucoup plus s’orienter vers un outil complet de type IDE, ou vers des environnements dédiés à certaines librairies (et là je rêve d’un IDE basé sur <a href="http://mrdoob.github.com/three.js/" lang="en">three.js</a>).</p>
<p>Je n’ai pas mentionné les <span lang="en">librairies</span> JavaScript dédiées à l’animation, évidemment nombreuses, mais certaines offrent des approches intéressantes qui pourraient servir de base pour la création d’outils. J’ai notamment été bluffé par <a href="http://mbostock.github.com/d3/">d3.js</a>, qui s’affranchit (presque, puisque l’outil tourne essentiellement autour de la manipulation d’attributs et d’éléments) de la technologie de rendu utilisée pour permettre d’exploiter des données dans le cadre de visualisations. Il est ainsi très facile de passer de SVG à HTML/CSS, puisque l’outil fournit l’animation, les états, les manipulations de données, mais ne se préoccupe pas de la manière dont les changements de style vont être appliqués pendant l’animation. Il est tout de même possible d’utiliser un ensemble d’aides pour manipuler le SVG, mais c’est totalement optionnel.</p>
<p>Voilà, un peu en vrac, ce que j’avais en tête sur le sujet. N’hésitez pas à indiquer d’autres outils dans les commentaires (j’en ai certainement oublié un paquet !), et à partager vos idées sur les évolutions récentes et à venir de nos outils.</p>
]]></content:encoded>
					
					<wfw:commentRss>/2011/10/04/a-propos-des-outils-danimation-pour-le-web/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Le Web c’est pas en 72 dpi, coco!</title>
		<link>/2011/05/06/web-resolution-72dpi/</link>
					<comments>/2011/05/06/web-resolution-72dpi/#comments</comments>
		
		<dc:creator><![CDATA[Florent Verschelde]]></dc:creator>
		<pubDate>Fri, 06 May 2011 21:00:27 +0000</pubDate>
				<category><![CDATA[Front-end]]></category>
		<guid isPermaLink="false">/?p=1839</guid>

					<description><![CDATA[Nous vous proposons de dézinguer ensemble un mythe de l’infographie: le Web n’est pas en 72 dpi, et encore moins en 96 dpi. Et lorsque votre collègue, chef de projet ou client vous demanderont des images optimisées en 72 points par pouce, alors même que ça n’a aucun sens, vous pourrez les gratifier d’un beau et généreux sourire de compassion. C’est qu’à l’école on les embêtait toujours dans la cour de récréation et puis ils étaient pas là le jour du cours sur les divisions alors les mathématiques élémentaires ça leur pose des soucis pas drôles bichette on va pas leur jeter la pierre hein.]]></description>
										<content:encoded><![CDATA[<p>Pour fêter ma présence sur ce blog — youloulou, foule en liesse! — je vous propose de dézinguer un mythe du petit monde de l’informatique et du graphisme. Ce mythe dans sa plus simple expression:</p>
<blockquote><p>Le <em>print</em> c’est en 300 dpi, et pis le <em>web</em> c’est en 72 dpi.</p></blockquote>
<p>Et donc, ça c’est faux. <strong>Le Web n’est pas en 72 dpi</strong> (ou ppi ou pixels par pouce), et il n’est pas non plus en 96 dpi. Le Web n’a pas de résolution fixe, car chaque périphérique d’affichage a une densité de pixels qui lui est propre, et il n’y a pas de standard en la matière. J’y reviendrai avec quelques exemples, mais avant ça on va expliquer un peu à quoi correspondent ces fameux pixels par pouce.</p>
<h2>Densité des pixels d’un écran: à vos calculettes!</h2>
<p>Petit exercice pratique: nous allons calculer ensemble la densité de pixels d’un écran. Cette densité est exprimée le plus souvent en pixels par pouce (en anglais <em lang="en">pixels per inch</em>, abrégé <em>ppi</em>). On notera que l’abréviation <em>dpi</em> correspond à <em lang="en">dots per inch</em> (points par pouce) et que son utilisation pour des pixels est abusive; donc on va l’éviter, mais remplacez «ppi» par «dpi» dans votre tête si vraiment ça vous bloque.</p>
<div id="attachment_1851" style="width: 610px" class="wp-caption alignnone"><img aria-describedby="caption-attachment-1851" loading="lazy" class="size-full wp-image-1851" title="ppi-screen-macro" src="/wp-content/uploads/2011/05/ppi-screen-macro.png" alt="Photo macro d’un écran, avec les dimensions 1 pixel et 1 millimètre en exergue" width="600" height="282" srcset="/wp-content/uploads/2011/05/ppi-screen-macro.png 600w, /wp-content/uploads/2011/05/ppi-screen-macro-300x141.png 300w" sizes="(max-width: 600px) 100vw, 600px" /><p id="caption-attachment-1851" class="wp-caption-text">Sur cet écran, 1 mm correspond à un peu moins de 4 pixels.<br />On aura un résultat différent sur d’autres écrans.</p></div>
<p>Pour notre exercice, prenons par exemple l’écran de mon iMac (<em>insérez ici un troll de votre choix</em>). Que sais-je à son sujet?</p>
<ul>
<li>Sa diagonale est de 20 pouces (à peu près, c’est probablement une valeur arrondie).</li>
<li>Sa <em>définition</em> native est de 1680 pixels en largeur, et 1050 en hauteur.</li>
</ul>
<p>Pour savoir quelle est la densité de pixels de mon écran, je peux diviser la longueur de la diagonale en pixels par cette même longueur en pouces, et j’obtiendrai un résultat en pixels par pouce. Je n’ai pas la longueur de la diagonale en pixels (qui est une valeur théorique bien sûr, car les pixels ne sont pas sagement alignés dans le sens de la diagonale!), mais je peux utiliser le théorème de Pythagore pour la retrouver. Attention les yeux, mathématiques de niveau classe de cinquième:</p>
<pre><code>√(1680² + 1050²) ÷ 20 ≈ 99,057</code></pre>
<p>Mon écran a <strong>une densité de pixels d’à peu près 99 pixels par pouce</strong> (99 ppi).</p>
<p>Pour être vraiment sûr de mon coup, j’ai pris un mètre et j’ai mesuré la largeur de mon écran: <a href="http://www.google.com/search?q=43.3+cm+to+in">43,3 cm, soit 17,05 pouces d’après Google</a>. Comme j’ai aussi cette largeur en pixels (1680), je peux faire un calcul plus simple.</p>
<pre><code>1680 ÷ 17,05 ≈ 98,534</code></pre>
<p>Je sens que vous allez me dire, <q>Bah tu vois, à peu de choses près on est bien à 96 ppi!</q>, bande de petits malins. Mais vous allez voir que les écrans ont des résolutions très variables, et rares sont ceux qui s’approchent de 96 ou 72 ppi.</p>
<h2>Chaque écran est différent</h2>
<p><strong>Les résolutions d’écran ne sont pas standardisées.</strong> On peut imaginer que les constructeurs de matériel informatique se seraient mis d’accord, genre <q>Bon les gars, je propose qu’on fasse des écrans de Classe A à 72 ppi, des écrans de Classe B à 96 ppi, et des écrans de classe C super haute résolution de ouf à 128 ppi. Deal?</q> Ben en fait non, chaque constructeur fait ce qui lui plait.</p>
<p>Ça nous donne des résultats comme ces quelques exemples (arrondis à l’unité):</p>
<ul>
<li><em>61 ppi:</em> écran de 21 pouces configuré en 1024×768</li>
<li><em>132 ppi:</em> écran de 9,7 pouces en 1024×768</li>
<li><em>135 ppi:</em> écran de 11,6 pouces en 1366×768</li>
<li><em>165 ppi:</em> écran de 3,5 pouces en 480×320</li>
<li><em>217 ppi:</em> écran de 4,3 pouces en 800×480</li>
<li><em>330 ppi:</em> écran de 3,5 pouces en 960×640</li>
</ul>
<p>Vous aurez peut-être reconnu, en vrac: le MacBook Air 11&Prime;, l’iPad (1 &amp; 2), l&rsquo;iPhone (premières générations), l’iPhone 4, et le HTC Evo 4G. (Les résultats sont imprécis car les diagonales d’écran en pouces données par les constructeurs sont arrondies.)</p>
<p>Si on se limite aux écrans d’ordinateurs classiques, en excluant les tablettes et téléphones, et en oubliant certains cas limites, on a des résolutions qui s’étalent, à la louche, entre 60 et 140 ppi. Et nous ne sommes qu’en 2011… possible que d’ici quelques années tous les écrans neufs affichent du 200 ppi et plus.</p>
<h2>Laissez tomber les DPI, pensez en pixels</h2>
<p>Pour du <strong>webdesign classique</strong>, ne réfléchissez pas en <em>dpi</em>, ça ne sert à rien. Pensez plutôt en pixels. Si un chef de projet, un client ou un graphiste commence à vous parler d’images optimisées en 72dpi, souriez benoitement.</p>
<div id="attachment_1854" style="width: 310px" class="wp-caption alignright"><img aria-describedby="caption-attachment-1854" loading="lazy" class="size-medium wp-image-1854" title="ppi-photoshop-lol" src="/wp-content/uploads/2011/05/ppi-photoshop-lol.png" alt="Dialogue de création de fichier dans Photoshop. Par défaut, la résolution pour les formats «web» est 72 ppi." width="300" height="170" srcset="/wp-content/uploads/2011/05/ppi-photoshop-lol.png 590w, /wp-content/uploads/2011/05/ppi-photoshop-lol-300x170.png 300w" sizes="(max-width: 300px) 100vw, 300px" /><p id="caption-attachment-1854" class="wp-caption-text">Photoshop, toujours plus de lol.</p></div>
<p><strong>Au fait, d’où vient cette valeur de 72 dpi?</strong> Eh bien dans les années 1990 les infographistes qui utilisaient Adobe Photoshop ou QuarkXPress devaient, pour chaque nouveau document, indiquer les dimensions du papier (en pouces en en centimètres) et la résolution d’impression (300dpi, 600dpi, etc.). Le logiciel calculait alors le nombre de pixels nécessaires pour le document ou les éléments bitmap.</p>
<p>Avec l’arrivée des cédéroms interactifs (woohoo!) et du Web, on a parfois gardé ces habitudes: on définissait une taille de document physique, et une résolution. Par convention, cette résolution c’était 72 ppi, pour deux raisons:</p>
<ol>
<li>Une bonne partie des écrans avaient une résolution réelle proche de cette valeur.</li>
<li>En faisant semblant de croire que la résolution de l’écran est 72 ppi (quelle que soit la vraie valeur), cela permet de faire des équivalences pratiques, notamment l’équivalence <em>1 point typographique = 1 pixel</em>.</li>
</ol>
<p>En 2011, la plupart des systèmes d’exploitation et logiciels qui font des équivalences arbitraire entre unités physiques (point, centimètre, pouce…) et pixels utilisent la résolution fictive de 96 ppi. Ainsi si vous demandez à votre navigateur web un texte en <code>12pt</code>, il affichera un texte de <code>16px</code>. Dans l’idéal les logiciels devraient être capable de détecter la résolution <em>réelle</em> de l’écran, et donc d’afficher correctement des éléments dimensionnés avec des unités absolues… mais la plupart des systèmes d’exploitation ne partagent pas cette information.</p>
<h2>Laissez tomber les pixels, pensez en… euh en quoi au juste?</h2>
<p>On a vu que la résolution d’un écran d’ordinateur (hors périphériques mobiles) peut varier entre 60 et 150 ppi (et sans doute plus à l’avenir). Concrètement, cela veut dire que lorsque vous définissez un <code>font-size: 16px</code> en CSS, vous allez obtenir les tailles de texte suivantes:</p>
<ul>
<li>6,8 mm à 60 ppi,</li>
<li>4,5 mm à 90 ppi,</li>
<li>3,4 mm à 120 ppi,</li>
<li>2,7 mm à 150 ppi.</li>
</ul>
<p>On aura donc un texte énorme sur certains écrans, minuscules sur d’autres, optimal sur certains, un peu trop petit pour une lecture confortable sur d’autres, ou encore un peu trop grand pour conserver le caractère voulu du design, etc. Si vous jonglez régulièrement entre un grand écran de bureau confortable et un portable de 12 ou 13 pouces récent, vous avez sans doute remarqué ces différences dans les tailles de texte.</p>
<p>C’est un problème qui devient de plus en plus pressant, mais qui est difficile à tester car on a rarement accès à des dizaines de postes, périphériques et configurations différents pour tester un design et réaliser l’ampleur du problème. Ce problème est aujourd’hui limité, mais pourrait s’amplifier dans les années à venir. Comment allons nous gérer les différences croissantes de résolution d’écran?</p>
<p>Je n’ai pas de réponse précise, mais voici quelques pistes:</p>
<ol>
<li>Il va falloir diminuer la dépendance aux graphismes bitmap. Donc utiliser les propriétés CSS3 de décoration, les Web Fonts plutôt que des images, SVG pour les pictogrammes et différents éléments de décoration.</li>
<li>Côté mise en page, les Media Queries seront utiles. Mais leur utilisation est encore balbutiante, presque toujours combinée avec l’unité <code>px</code>, et je ne suis pas emballé par la stratégie qui consiste à définir plusieurs largeurs de site web fixes en pixels et à basculer sur l’une ou l’autre en fonction de la largeur du viewport.</li>
<li>Pour la taille du texte, il faut peut-être faire confiance aux navigateurs et systèmes d’exploitation pour proposer une taille de texte par défaut «optimale» sur chaque périphérique. Dans ce cas, on pourra définir les tailles de texte uniquement <a href="http://snook.ca/archives/html_and_css/font-size-with-rem">à l’aide de l’unité <code>rem</code></a> (<em lang="en">root em</em> en CSS3).</li>
<li>Peut-être penser à utiliser les Media Queries pour augmenter la taille du texte sur les écrans les plus larges?</li>
<li>Enfin, il est peut-être temps de tanner les éditeurs de navigateur et d’OS pour que les unités CSS absolues (<code>cm</code>, <code>mm</code>, <code>pt</code>, etc.) soient enfin appliquées correctement! C’est je pense une solution d’avenir, mais il faut corriger le problème au plus tôt si on veut pouvoir compter sur cette solution dans quatre ou cinq ans…</li>
</ol>
<p>Hey, vous avez vu comment je glisse un nouveau troll en douce? Le <a href="http://www.mariejulien.com/?post/2011/04/21/Rendus-navigateurs-pixel-perfect-et-standards-:-comme-une-l%C3%A9g%C3%A8re-schizophr%C3%A9nie">pixel-perfect</a> est has been, <strong>réclamons le point-perfect!</strong></p>
<p>La semaine prochaine, si vous n’avez pas tout cassé en trollant dans les commentaires, on parlera codage de caractères et je vous expliquerai pourquoi la notion de «caractère spécial» est une vaste fumisterie.</p>
]]></content:encoded>
					
					<wfw:commentRss>/2011/05/06/web-resolution-72dpi/feed/</wfw:commentRss>
			<slash:comments>55</slash:comments>
		
		
			</item>
		<item>
		<title>Pourquoi Flash a tué HTML5</title>
		<link>/2010/11/02/pourquoi-flash-a-tue-html5/</link>
					<comments>/2010/11/02/pourquoi-flash-a-tue-html5/#comments</comments>
		
		<dc:creator><![CDATA[Pierre Bertet]]></dc:creator>
		<pubDate>Tue, 02 Nov 2010 13:42:17 +0000</pubDate>
				<category><![CDATA[Front-end]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[humour]]></category>
		<guid isPermaLink="false">/?p=1446</guid>

					<description><![CDATA[…en 10 points parce que ça envoie plus. Activetuts+, un blog de tutoriels Flash, éclaire nos esprits en proposant une liste de 10 choses que permet de faire Flash, mais pas HTML5. Voilà qui est fort plaisant à lire : après la mise sous perfusion de Silverlight, il est temps de redonner au plugin propriétaire ses lettres de noblesses. Malheureusement, les rabats-joie de service, défenseurs des standards ouverts, ne manqueront pas de hurler au FUD, voire au mensonge ! Parce qu’il n’est pas question de les laisser faire, voici un petit guide en complément de l’article d’Activetuts+, qui vous permettra&#160;[&#8230;]]]></description>
										<content:encoded><![CDATA[<p>…en 10 points parce que ça envoie plus. <a href="http://active.tutsplus.com/">Activetuts+</a>, un blog de tutoriels Flash, éclaire nos esprits en proposant <a href="http://active.tutsplus.com/articles/roundups/10-flash-things-you-can%E2%80%99t-do-with-html5/" lang="en">une liste de 10 choses que permet de faire Flash, mais pas HTML5</a>. Voilà qui est fort plaisant à lire : après la <a href="http://www.zdnet.com/blog/microsoft/microsoft-our-strategy-with-silverlight-has-shifted/7834" lang="en">mise sous perfusion de Silverlight</a>, il est temps de redonner au plugin propriétaire ses lettres de noblesses. Malheureusement, les rabats-joie de service, défenseurs des standards ouverts, ne manqueront pas de hurler au <a href="http://fr.wikipedia.org/wiki/Fear,_uncertainty_and_doubt"><abbr title="Fear, uncertainty and doubt" lang="en">FUD</abbr></a>, voire au mensonge ! Parce qu’il n’est pas question de les laisser faire, voici un petit guide en complément de l’article d’Activetuts+, qui vous permettra de rétablir la vérité. Vous verrez que les amoureux du web, aveuglés par leur passion, ne tarissent pas d’arguments et autres exemples. Quoi qu’il arrive, ne vous laissez jamais convaincre : <strong>ils ont tort</strong>.</p>
<h2>1. HTML5 ne peut pas interagir avec une webcam</h2>
<p>L’article souligne également que ce n’est pas près d’arriver, en raison de problèmes liés au respect de la vie privée. Bien sûr, Flash n’est pas concerné par ce problème, contrairement à HTML5, qui l’est (répétez plusieurs fois cette phrase intérieurement, jusqu’à l’assimiler complètement).</p>
<p>Une des premières inepties que pourrait utiliser votre interlocuteur sera de vous dire qu’<a href="http://www.w3.org/TR/media-capture-api/" lang="en">une spécification existe à ce sujet</a>. On ne peut donc pas dire que HTML5 ne permet pas d’utiliser la webcam ! FAUX. Rejetez fermement cet argument. Ce document est un document de travail, il n’a donc officiellement aucune existence. Comme CSS 2.1, il n’a pas encore obtenu le précieux statut de <em>Recommandation</em> (au besoin, précisez à votre interlocuteur que CSS 2.1 n’est pas encore une technologie mature). Cet argument constitue l’une des fondations de votre défense, n’hésitez pas à l’utiliser dès que vous êtes à court d’arguments.</p>
<p>Une personne bien informée pourra aller jusqu’à vous citer un exemple d’implémentation, comme <a href="https://labs.ericsson.com/developer-community/blog/beyond-html5-implementing-device-and-stream-management-webkit" lang="en">celle de Ericsson dans Webkit</a>, en proposant d’associer cette technologie à canvas pour manipuler vos vidéos à la volée. Je vous recommande de rejeter cet argument à l’aide d’un revers de main, une tentative d’explication risquerait de vous embarrasser, voire même de vous faire douter (voyez comme les standards sont vicieux !).</p>
<h2>2. La vidéo en HTML5 ne peut pas être utilisée en 3D</h2>
<p>Si l’on vous parle des CSS Transforms 2D et 3D, précisez à votre interlocuteur que CSS3 n’est pas HTML5 ! Ha ! L’affirmation est donc vraie : HTML5 ne permet pas d’afficher une vidéo sur un plan 3D. Si votre interlocuteur insiste, ne vous laissez pas tromper par <a href="http://hacks.mozilla.org/2009/06/3d-transforms-isocube/" lang="en">ce genre de démonstration</a> : il y a certainement du Flash quelque part. Si l’on tente de vous prouver que cette démonstration n’utilise que des technologies web ouvertes, expliquez calmement que votre choix de <em>ne pas croire</em> doit être respecté.</p>
<p>Si l’on vous parle de Canvas, WebGL, SVG et autres inepties, vous devrez faire preuve d’imagination : vos interlocuteurs ont tort, mais sauront se montrer convaincants. Le plus simple reste de simuler une allergie au changement, mais vous pouvez également trouver d’autres manières d’esquiver cette discussion gênante. Soyez imaginatif, et n’hésitez pas à laisser vos idées dans les commentaires !</p>
<h2>3. HTML5 ne peut pas enregistrer le son de votre microphone</h2>
<p>Si votre arrogant compagnon vous ressert,  comme pour la webcam, sa soi-disante Media Capture API, la discussion est malheureusement arrivée à son terme. Cassez-lui la gueule.</p>
<h2>4. HTML5 ne propose rien pour la vidéoconférence</h2>
<p>Absolument rien. <a href="http://ajaxian.com/archives/video-conferencing-with-the-html5-device-element" lang="en">Quelques rabats-joie isolés</a> pourraient, à tort, <a href="https://labs.ericsson.com/developer-community/blog/beyond-html5-conversational-voice-and-video-implemented-webkit-gtk" lang="en">vous faire douter à ce sujet</a>. N’en croyez rien. Posez vos mains sur vos yeux, et répétez tout haut « Flash, c’est l’avenir, HTML5 est mort. » jusqu’à oublier ce à quoi vous pensiez (cette technique est très efficace).</p>
<h2>5. HTML5 ne permet pas d’ajouter des éléments au-dessus des vidéos, comme des sous-titres, des informations contextuelles, ou encore des boutons de navigation</h2>
<p>Cet exemple peut sembler embarrassant. Des initiatives comme <a href="http://universalsubtitles.org/" lang="en">Universal Subtitles</a> existent, et la superposition d’éléments n’est pas vraiment quelque chose de neuf en CSS. Soyons réalistes : vous ne pourrez pas convaincre qui que ce soit sur ce seul exemple. Ne vous attardez pas dessus, passez directement au point suivant.</p>
<h2>6. HTML5 ne peut pas enregistrer votre webcam</h2>
<p>Comme vous le voyez, la répétition est l’une des clés de notre argumentation. Voici déjà la troisième déclinaison de l’argument de la webcam, mais cette liste n’est qu’un exemple, vous pouvez décliner l’idée à l’infini : est-il possible de changer le monde <em>avec</em> une webcam <em>en</em> HTML5 ? Non. Peut-on réparer une webcam avec HTML5 ? Non ! Une webcam peut-elle tenir une discussion cohérente en HTML5 ? Non, non, NON !</p>
<h2>7. HTML5 ne peut pas créer d’applications « <span lang="en">desktop</span> »</h2>
<p>On essaiera de vous rétorquer que Flash non plus. Si vous parlez d’Adobe Air, on pourra vous rétorquer que cette technologie embarque un moteur Webkit, ce qui permet de se passer de Flash pour n’utiliser que HTML, CSS et JavaScript. On vous parlera des widgets de Mac OS X réalisés en HTML, de <a href="https://mozillalabs.com/prism" lang="en">Mozilla Prism</a>, de <a href="http://fluidapp.com/" lang="en">Fluid</a>. On vous dira que cette question n’a pas de sens, car si des initiatives existent, HTML5 n’a pas été conçu pour ça, tout comme Flash. Les défenseurs des standards ouverts n’ont aucune pitié, ils ne vous feront pas de cadeau. Prenez quelques jours de repos pour oublier tout ça.</p>
<h2>8. HTML5 ne permet pas d’afficher des vidéos avec des niveaux de transparence</h2>
<p>Flash non plus, en fait. Il s’agit d’une particularité du bon vieux codec vidéo VP6, qui peut toujours être utilisé avec Flash. Pas d’inquiétude, votre adversaire n’en saura rien. Mélangez tout : affirmez que Flash permet de faire des vidéos transparentes, voire même qu’il a été conçu pour ça (testez les connaissances de votre interlocuteur pour éviter tout malaise). Expliquez que HTML a été conçu pour structurer des documents, pas pour afficher des vidéos transparentes. Si l’on vous parle de <a href="http://hacks.mozilla.org/2009/06/pop-art-video/" lang="en">manipulation de flux vidéo en temps réel</a> à l’aide de canvas, faites comprendre à votre interlocuteur que le sujet vous ennuie, et avant même qu’il ne vous réponde, montrez-lui quelques exemples <a href="http://catgifpage.blogspot.com/">d’images animées de chats</a>.</p>
<h2>9. HTML5 ne supporte pas encore le P2P</h2>
<p>L’auteur de l’article de l’article d’Activetuts+ nous montre ici qu’il n’est pas dupe : entre l’API <a href="http://dev.w3.org/html5/websockets/">Websockets</a> et <a href="http://stackoverflow.com/questions/1032006/will-html5-allow-web-apps-to-make-peer-to-peer-http-connections">les autres technologies associées à ce besoin</a>, nous savons déjà que ça va bientôt arriver dans les navigateurs. Et alors ? Ce n’est pas implémenté aujourd’hui, profitez de cette petite avance ! Flash doit être utilisé pour faire du P2P, donc Flash n’est pas mort, donc Flash ne mourra pas. <abbr title="ce qu'il fallait démontrer">CQFD</abbr>.</p>
<h2>10. HTML5 ne propose pas de mode plein écran</h2>
<p>Certes, les navigateurs proposaient du plein écran bien avant Flash, et sans avoir à l’implémenter dans votre application. Mais HTML5 permet-il de passer en plein écran en cliquant sur une petite tortue animée ? Non. Enfin <a href="http://ajaxian.com/archives/fullscreen-api-coming-to-browsers-near-you" lang="en">presque non</a>. Toute avancée, même mineure de Flash doit être amplifiée et répétée jusqu’à convaincre.</p>
<h2>Derniers rappels</h2>
<p>Nous l’avons vu, il est parfois difficile d’expliquer aux non-initiés que HTML5 va mourir, car Flash le surpassera pour toujours, dans tous les domaines. Ne vous laissez pas convaincre. Utilisez de gros titres. Présentez votre point de vue en 10 étapes, ce sera plus impactant. Remplacez vos arguments par de grosses images, comme dans l’article d’Activetuts+. Au besoin, fermez les commentaires de votre blog.</p>
<p>Ne doutez plus. Flash sera toujours là. HTML n’est qu’une mode. Soyez patients, ça va passer.</p>
]]></content:encoded>
					
					<wfw:commentRss>/2010/11/02/pourquoi-flash-a-tue-html5/feed/</wfw:commentRss>
			<slash:comments>46</slash:comments>
		
		
			</item>
	</channel>
</rss>
