<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">
 
  <title>Phollow.me</title>
  <link href="http://phollow.fr/" />
  
  <updated>2012-05-24T08:52:30+02:00</updated>
  <id>http://phollow.fr/</id>
  <author>
    <name>Jérôme Mahuet</name>
    <email>rydgel@phollow.fr</email>
  </author>

  
  <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/phollow/iuEO" /><feedburner:info uri="phollow/iueo" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>phollow/iuEO</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><entry>
    <id>http://phollow.fr/2012/05/jekyll-heroku-et-mon-blog</id>
    <link type="text/html" rel="alternate" href="http://feedproxy.google.com/~r/phollow/iuEO/~3/QHMy6Ie_LKM/jekyll-heroku-et-mon-blog" />
    <title>Jekyll, Heroku et mon blog</title>
    <published>2012-05-20T01:30:22+02:00</published>
    <updated>2012-05-20T01:30:22+02:00</updated>
    <author>
      <name>Jérôme Mahuet</name>
      <uri>http://phollow.fr/</uri>
    </author>
    <content type="html">&lt;div&gt;
&lt;figure&gt;
&lt;figcaption style="top:-135px;"&gt;&lt;img src="https://s3-eu-west-1.amazonaws.com/phollow/2012/05/heroku.jpeg" title="heroku" class="alignnone size-full"&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;


&lt;p&gt;La migration du blog vers Jekyll était une première étape nécessaire pour une migration complète vers une solution gratuite – &lt;em&gt;ou presque&lt;/em&gt;. Quand le site web n’est plus qu’une collection de fichiers statiques, l’hébergement devient vraiment simple.&lt;/p&gt;

&lt;h3&gt;Heroku&lt;/h3&gt;

&lt;p&gt;Heroku est une plate-forme &lt;em&gt;cloud&lt;/em&gt; qui peut faire tourner des applications Python, Ruby, Scala etc. Le déploiement d’une app n’est pas plus compliqué qu’un &lt;code&gt;git push heroku master&lt;/code&gt;. J’utilise la solution gratuite qui est amplement suffisante pour ce blog. Et si un jour ce blog devient extraordinairement populaire, je pourrai &lt;em&gt;scaler&lt;/em&gt; simplement avec &lt;code&gt;ps:scale web=x&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;Amazon S3&lt;/h3&gt;

&lt;p&gt;J’en avais déjà parlé sur l’article précédent, les images et les uploads divers des articles sont tous stockés sur Amazon S3. C’était pour préparer la migration sur Heroku, car on est limité à 100Mo pour une application donné. Une application dont le code source fait 100Mo, c’est déjà énorme je trouve. Et généralement personne ne stocke les uploads d’une app. web dans un sous-dossier de l’application elle-même.&lt;/p&gt;

&lt;p&gt;Du coup ça peut me permettre de stocker des trucs vraiment énormes sans avoir de limite (sauf les limites de mon porte-monnaie évidemment). D’un point de vue argent justement, S3 est la seule chose que je paie pour héberger ce blog, et pour info j’en suis à $0.03 depuis le début du mois.&lt;/p&gt;

&lt;h3&gt;Sinatra&lt;/h3&gt;

&lt;p&gt;Heroku ne permet pas de déployer juste un tas de fichiers statiques, par contre rien ne nous empêche de développer une application proxy, ici Sinatra, servant seulement à servir ces fichiers. Le code de l’application est simple :&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre&gt;&lt;code class="ruby"&gt;&lt;span class="c1"&gt;# encoding: utf-8&lt;/span&gt;
&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;rubygems&amp;#39;&lt;/span&gt;
&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;sinatra&amp;#39;&lt;/span&gt;

&lt;span class="n"&gt;configure&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
  &lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="ss"&gt;:public_folder&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="no"&gt;Proc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;new&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="no"&gt;File&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;root&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;_site&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="c1"&gt;# Last modification time for browser cache&lt;/span&gt;
  &lt;span class="vi"&gt;@last_mod_time&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Time&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;now&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="n"&gt;before&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
  &lt;span class="n"&gt;headers&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;X-UA-Compatible&amp;quot;&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;IE=Edge,chrome=1&amp;quot;&lt;/span&gt;
  &lt;span class="n"&gt;expires&lt;/span&gt; &lt;span class="mi"&gt;300&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:public&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:must_revalidate&lt;/span&gt;
  &lt;span class="n"&gt;last_modified&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="vi"&gt;@last_mod_time&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="n"&gt;get&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;/&amp;#39;&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
  &lt;span class="n"&gt;send_file&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;_site/index.html&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="n"&gt;get&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;/*&amp;#39;&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
  &lt;span class="n"&gt;file_path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;_site/&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:splat&lt;/span&gt;&lt;span class="o"&gt;].&lt;/span&gt;&lt;span class="n"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;/&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;/index.html&amp;#39;&lt;/span&gt;
  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="no"&gt;FileTest&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;exist?&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;file_path&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;send_file&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;file_path&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;
  &lt;span class="n"&gt;halt&lt;/span&gt; &lt;span class="mi"&gt;404&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="n"&gt;not_found&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
  &lt;span class="n"&gt;send_file&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;_site/404.html&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;p&gt;Le code de l’application a été mise à jour sur le &lt;a href="https://github.com/Rydgel/phollow"&gt;dépôt Github du blog&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Autres solutions&lt;/h3&gt;

&lt;p&gt;Heroku n’est pas la seule manière d’héberger votre blog à moindre coût. On peut utiliser entre autre :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Les pages Github &lt;a href="http://pages.github.com/"&gt;http://pages.github.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Mettre le site en entier dans Amazon S3&lt;/li&gt;
&lt;li&gt;Dropbox&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/8SznzM51Wl2l-EKJ6USZ8ZxBfU4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8SznzM51Wl2l-EKJ6USZ8ZxBfU4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/8SznzM51Wl2l-EKJ6USZ8ZxBfU4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8SznzM51Wl2l-EKJ6USZ8ZxBfU4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/phollow/iuEO/~4/QHMy6Ie_LKM" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://phollow.fr/2012/05/jekyll-heroku-et-mon-blog</feedburner:origLink></entry>
  
  <entry>
    <id>http://phollow.fr/2012/05/css3-et-polices-opentype</id>
    <link type="text/html" rel="alternate" href="http://feedproxy.google.com/~r/phollow/iuEO/~3/E83WxPxFulU/css3-et-polices-opentype" />
    <title>CSS3 et polices OpenType</title>
    <published>2012-05-15T00:00:32+02:00</published>
    <updated>2012-05-15T00:00:32+02:00</updated>
    <author>
      <name>Jérôme Mahuet</name>
      <uri>http://phollow.fr/</uri>
    </author>
    <content type="html">&lt;p&gt;Les polices au format OpenType ont pour avantage de prendre en charge un jeu de caractères étendus et offrent plus d’options au niveau de la présentation. Par exemple on peut gérer les &lt;em&gt;ligatures discrètes&lt;/em&gt;, les &lt;em&gt;fractions&lt;/em&gt;, les &lt;em&gt;petites capitales&lt;/em&gt;… Les graphistes ont longtemps été seuls à pouvoir jouer avec ces fonctionnalités, mais savez-vous que vous pouvez faire la même chose avec un peu de CSS3 ?&lt;/p&gt;

&lt;h3&gt;Exemple des ligatures&lt;/h3&gt;

&lt;p&gt;Prenons par exemple les ligatures. C’est une des choses que je voulais depuis longtemps et qui est maintenant possible sur une page web. Le but d’une ligature est de rendre le texte plus lisible et plus beau aussi, comme en évitant une transition grossière entre un &lt;em&gt;f&lt;/em&gt; et un &lt;em&gt;i&lt;/em&gt;. Les ligatures fusionnent deux caractères et le résultat est vraiment considéré comme un seul.&lt;/p&gt;

&lt;p class="fullsizestuff" style='font-size: 135px; text-rendering: optimizelegibility; -moz-font-feature-settings:"liga=1, dlig=1"; -ms-font-feature-settings:"liga", "dlig"; -o-font-feature-settings:"liga", "dlig"; -webkit-font-feature-settings:"liga", "dlig"; font-feature-settings:"liga", "dlig";'&gt;
fleurs, fille, off.
&lt;/p&gt;


&lt;p&gt;Vous devriez voir trois ligatures ci-dessus si votre navigateur supporte ces réglages, sinon vous pouvez toujours allez voir sur cette &lt;a href="https://s3-eu-west-1.amazonaws.com/phollow/2012/05/ligatures.png" title="ligatures-phollow"&gt;image&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;font-feature-settings&lt;/h3&gt;

&lt;p&gt;Alors, comment en profiter à l’aide du CSS3 ? Il y a une nouvelle propriété utilisée pour ça qui s’appelle &lt;code&gt;font-feature-settings&lt;/code&gt;. Voici le code utilisé pour l’exemple de ce billet.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;p {
    -moz-font-feature-settings:"liga=1, dlig=1"; 
    -ms-font-feature-settings:"liga", "dlig"; 
    -o-font-feature-settings:"liga", "dlig"; 
    -webkit-font-feature-settings:"liga", "dlig"; 
    font-feature-settings:"liga", "dlig";
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Vous avez sûrement remarqué les mots-clefs &lt;code&gt;liga&lt;/code&gt; et &lt;code&gt;dlig&lt;/code&gt;. Chacun possède une signification propre et active une spécificité OpenType, voici la liste complète :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;liga&lt;/code&gt; ligatures communes&lt;/li&gt;
&lt;li&gt;&lt;code&gt;dlig&lt;/code&gt; ligatures discrètes&lt;/li&gt;
&lt;li&gt;&lt;code&gt;smcp&lt;/code&gt; small-caps, petites capitales&lt;/li&gt;
&lt;li&gt;&lt;code&gt;lnum&lt;/code&gt; lining-numeral, c’est ce que j’appelle les &lt;em&gt;chiffres minuscules&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;onum&lt;/code&gt; old-style numeral, les chiffres en mode &lt;em&gt;old-school&lt;/em&gt;, par exemple le &lt;em&gt;1&lt;/em&gt; ressemble un peu à un I.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;swsh n&lt;/code&gt; les swashs, &lt;em&gt;n&lt;/em&gt; étant le numéro de l’index voulu, certaines polices en ayant plusieurs. Ce sont des décorations pour certaines lettres, généralement sur des polices de type &lt;em&gt;script&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ss01–20&lt;/code&gt; styleset (01—20)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Plus d’infos : &lt;a href="https://developer.mozilla.org/en/CSS/-moz-font-feature-settings" title="font-feature-settings"&gt;font-feature-settings sur MDN&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Support navigateurs&lt;/h3&gt;

&lt;p&gt;Le support des navigateurs n’est pas encore parfait, néanmoins rien ne vous empêche de l’utiliser à présent. Rien ne changera pour les navigateurs ne supportant pas cette norme, ils verront le texte… comme d’habitude. Les navigateurs supportant cette règle CSS3 sont Chrome, Safari et Firefox sur Mac. Sur Windows, il y a seulement Chrome et Safari d’après mes tests rapides. J’ai pu voir que cela marchait aussi sur Chrome Linux, je n’ai pas testé les autres. Je parle bien-sûr des &lt;strong&gt;dernières&lt;/strong&gt; versions en date de chaque navigateur.&lt;/p&gt;

&lt;h3&gt;Où trouver des webfonts compatibles ?&lt;/h3&gt;

&lt;p&gt;C'est là que le bât blesse. Après quelques recherches je me suis rendu compte que le service que j’utilise, &lt;a href="http://typekit.com" title="typekit"&gt;Typekit&lt;/a&gt; ne prend pas encore en compte cette fonctionnalité. &lt;em&gt;Du moins sur les polices que j’ai essayé.&lt;/em&gt; Par contre FontDeck commence à répertorier ce genre de police sous le label &lt;a href="http://fontdeck.com/typefaces/all/tags/opentype" title="FontDeck OpenType"&gt;Opentype&lt;/a&gt;. En allant sur le détail d‘une police, on peut voir les options OpenType gérées. Certaine comme &lt;a href="http://fontdeck.com/typeface/magneta" title="Magenta"&gt;Magenta&lt;/a&gt; en possède pas mal !&lt;/p&gt;

&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/62TrE1_R-rt3a92L0uZmzIe5ltA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/62TrE1_R-rt3a92L0uZmzIe5ltA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/62TrE1_R-rt3a92L0uZmzIe5ltA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/62TrE1_R-rt3a92L0uZmzIe5ltA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/phollow/iuEO/~4/E83WxPxFulU" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://phollow.fr/2012/05/css3-et-polices-opentype</feedburner:origLink></entry>
  
  <entry>
    <id>http://phollow.fr/2012/05/de-wordpress-a-jekyll</id>
    <link type="text/html" rel="alternate" href="http://feedproxy.google.com/~r/phollow/iuEO/~3/n9ak9kH3878/de-wordpress-a-jekyll" />
    <title>De Wordpress à Jekyll</title>
    <published>2012-05-06T23:00:00+02:00</published>
    <updated>2012-05-06T23:00:00+02:00</updated>
    <author>
      <name>Jérôme Mahuet</name>
      <uri>http://phollow.fr/</uri>
    </author>
    <content type="html">&lt;div&gt;
&lt;figure&gt;&lt;figcaption style="top:-135px;"&gt;&lt;img src="http://s3-eu-west-1.amazonaws.com/phollow/2012/05/dr_jekyll_mr_hyde_low.jpg" title="jekyll" class="alignnone size-full"&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;




&lt;p class="lettrine"&gt;Cela fait plusieurs mois que j’en avait envie, je l’ai finalement fait ce week-end : une migration &lt;em&gt;complète&lt;/em&gt; de mon blog Wordpress vers Jekyll. Vous ne devriez pas voir énormément de différences… Non, la différence est surtout pour moi, l’écriture et la gestion du site.&lt;/p&gt;


&lt;p&gt;Je n’étais pas vraiment malheureux avec Wordpress, non. Seulement embêté par certaines &lt;em&gt;fonctionnalités&lt;/em&gt;. Par exemple l’édition d’articles est juste infâme, je finissais souvent par utiliser l’éditeur HTML en fait. La performance de Wordpress est minable sans plugin externe (cache), car il fait les mêmes requêtes SQL à chaque pages vues. &lt;em&gt;On ne sait jamais, peut-être que l’article change toutes les 5 minutes ?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Bref, je m’égare en trollant, parlons un peu de cette migration.&lt;/p&gt;

&lt;h3&gt;Jekyll&lt;/h3&gt;

&lt;p&gt;&lt;a href="http://jekyllrb.com/"&gt;Jekyll&lt;/a&gt; est un “générateur de sites statiques”, écrit en Ruby. Il y en a d’autres comme &lt;a href="http://ringce.com/hyde"&gt;Hyde&lt;/a&gt; ou Blatter en Python. J’ai essayé Jekyll et Hyde, j’ai trouvé le premier plus flexible, notamment au niveau de la gestion des filtres Liquid customisé et des permalinks.&lt;/p&gt;

&lt;h3&gt;Pourquoi avoir migré sur un système statique ?&lt;/h3&gt;

&lt;p&gt;Plusieurs raisons à cela mon bon monsieur.&lt;/p&gt;

&lt;h4&gt;Gain de mémoire et performances&lt;/h4&gt;

&lt;p&gt;Ce blog est hébergé sur un petit serveur virtuel. PHP et MySQL étant assez gourmand au niveau mémoire, me passer d’eux est non négligeable avec mes 512mb de RAM.&lt;/p&gt;

&lt;p&gt;N’ayant pas énormément de visites, on ne peut pas dire que mes instances PHP travaillaient beaucoup. Mais on ne peut pas battre la performance de pages .html directement servies par Nginx.&lt;/p&gt;

&lt;h4&gt;Plus simple pour écrire&lt;/h4&gt;

&lt;p&gt;Sur Wordpress quand tu veux écrire un article, tu dois t’identifier dans l’interface d’administration, chercher le lien pour ajouter un article dans &lt;strong&gt;le bordel ambiant&lt;/strong&gt;, cliquer dessus, et là tu peux commencer à t’amuser. Ah et tu dois être connecté aussi.&lt;/p&gt;

&lt;p&gt;Avec Jekyll, mes articles sont de simples fichiers textes en Markdown ou HTML. Je peux écrire et tester le rendu de l’article localement sans avoir besoin d’être connecté aux internets.&lt;/p&gt;

&lt;h4&gt;Backup&lt;/h4&gt;

&lt;p&gt;Le site n’est qu’un ensemble de fichiers, donc &lt;strong&gt;Git&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;Utilisation&lt;/h3&gt;

&lt;p&gt;Généralement un site basique sous Jekyll ressemble à ça :&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre&gt;&lt;code class="sh"&gt;.
|-- _config.yml
|-- _includes
|-- _layouts
|   |-- default.html
|   &lt;span class="sb"&gt;`&lt;/span&gt;-- post.html
|-- _posts
|   |-- 2007-10-29-why-every-programmer-should-play-nethack.textile
|   &lt;span class="sb"&gt;`&lt;/span&gt;-- 2009-04-26-barcamp-boston-4-roundup.textile
|-- _site
&lt;span class="sb"&gt;`&lt;/span&gt;-- index.html
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;h4&gt;_config.yml&lt;/h4&gt;

&lt;p&gt;Diverses variables utilisées pour la configuration, comme les permalinks, le moteur de rendu Markdown et d’autres choses.&lt;/p&gt;

&lt;h4&gt;__includes&lt;/h4&gt;

&lt;p&gt;Généralement des &lt;em&gt;partials&lt;/em&gt; que vous pouvez utiliser dans vos templates. Si vous avez plusieurs bouts de HTML qui se répète un peu partout dans vos pages, c’est bon de les factoriser ici.&lt;/p&gt;

&lt;h4&gt;_layouts&lt;/h4&gt;

&lt;p&gt;Les templates de vos pages web.&lt;/p&gt;

&lt;h4&gt;_posts&lt;/h4&gt;

&lt;p&gt;Vos articles écrits en .html, .markdown ou .textile. Jekyll se basera sur l’extension lors de la compilation.&lt;/p&gt;

&lt;h4&gt;_site&lt;/h4&gt;

&lt;p&gt;Après compilation, toutes les pages iront dans ce dossier. C’est sur ce dossier que vous devez faire pointer votre serveur web.&lt;/p&gt;

&lt;h4&gt;Lancer Jekyll en local&lt;/h4&gt;

&lt;pre&gt;&lt;code&gt;jekyll --server&lt;/code&gt;&lt;/pre&gt;


&lt;h3&gt;Migrations&lt;/h3&gt;

&lt;p&gt;J’avais vraiment envie de garder l’existant, et donc il a fallut trouver des astuces pour la migration. Rentrons dans le vif du sujet.&lt;/p&gt;

&lt;h4&gt;Bouger le contenu&lt;/h4&gt;

&lt;p&gt;Pour rapatrier les articles, j’ai utilisé un utilitaire appelé &lt;a href="https://github.com/thomasf/exitwp"&gt;exitwp&lt;/a&gt;. Je n’ai pas converti les anciens articles en Markdown pour garder au maximum le rendu qu’avaient les anciens articles (oui parce que Wordpress te rajoute plein de merdes en HTML, qui aurait été viré avec la conversion). Heureusement rien ne m’empêche d’écrire les nouveaux billets autrement.&lt;/p&gt;

&lt;p&gt;Wordpress met généralement tout ce que tu uploads dans un dossier. J’ai voulu les mettre sur Amazon pour gagner de l’espace disque. J’ai utilisé cette commande :&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;s3cmd put --acl-public --recursive --guess-mime-type * s3://phollow&lt;/code&gt;&lt;/pre&gt;


&lt;h4&gt;Note sur les commentaires&lt;/h4&gt;

&lt;p&gt;Avec un site statique tu ne peux plus utiliser un système de commentaires &lt;em&gt;server-side&lt;/em&gt;. Du coup on peut se rabattre sur un système comme Disqus ou Livefyre. &lt;strong&gt;Important&lt;/strong&gt; : pour importer les anciens commentaires, il suffit d’installer un de ces systèmes sur Wordpress &lt;strong&gt;avant&lt;/strong&gt; la migration.&lt;/p&gt;

&lt;h3&gt;Code source&lt;/h3&gt;

&lt;p&gt;Je mets à disposition le code source de la nouvelle version du site sur Github à cette &lt;a href="https://github.com/Rydgel/phollow"&gt;adresse&lt;/a&gt;. Il y a quelques trucs sympas, dont un Rakefile qui permet le déploiement des articles au travers de rsync.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;rake deploy&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/6hFBs-VNfW4RGDZKX258rr9QayU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6hFBs-VNfW4RGDZKX258rr9QayU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/6hFBs-VNfW4RGDZKX258rr9QayU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6hFBs-VNfW4RGDZKX258rr9QayU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/phollow/iuEO/~4/n9ak9kH3878" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://phollow.fr/2012/05/de-wordpress-a-jekyll</feedburner:origLink></entry>
  
  <entry>
    <id>http://phollow.fr/2012/03/sass-css-on-fire-that-sucks-less</id>
    <link type="text/html" rel="alternate" href="http://feedproxy.google.com/~r/phollow/iuEO/~3/PsmTFxpGR_4/sass-css-on-fire-that-sucks-less" />
    <title>Sass – CSS on fire that sucks less</title>
    <published>2012-03-04T21:30:32+01:00</published>
    <updated>2012-03-04T21:30:32+01:00</updated>
    <author>
      <name>Jérôme Mahuet</name>
      <uri>http://phollow.fr/</uri>
    </author>
    <content type="html">&lt;figure&gt;&lt;figcaption style="top:-130px;"&gt;&lt;img src="http://s3-eu-west-1.amazonaws.com/phollow/2012/02/sass.gif" alt="" title="sass" width="217" height="238" class="alignnone size-full wp-image-3985"&gt;&lt;/figcaption&gt;&lt;p class="lettrine" style="margin-bottom:0;"&gt;Le &lt;abbr&gt;css&lt;/abbr&gt; permet de définir des styles au travers d’un langage déclaratif, de sélecteurs, propriétés et valeurs. Le tout saupoudrée d’une notion d’héritage basique. Ce qui peut amener certains problèmes sur le long terme : répétition de code et complexification du fichier CSS où les relations entres nos éléments du &lt;abbr&gt;DOM&lt;/abbr&gt; ne sont pas forcément claires.&lt;/p&gt;&lt;/figure&gt;
&lt;p style="text-indent:2.3em"&gt;&lt;abbr&gt;&lt;b&gt;Sass&lt;/b&gt;&lt;/abbr&gt; étend les capacités du &lt;abbr&gt;css&lt;/abbr&gt; en rajoutant la possibilité d’utiliser des variables, des fonctions, l’héritage de sélection… Tout un tas de choses qui permet non seulement de simplifier le code mais aussi, selon moi, de rendre plus &lt;em&gt;logique&lt;/em&gt; les feuilles de styles. La structure du &lt;abbr&gt;dom&lt;/abbr&gt; saute facilement aux yeux.&lt;/p&gt;
&lt;h3&gt;Installation&lt;/h3&gt;
&lt;p&gt;On installe &lt;abbr&gt;sass&lt;/abbr&gt; comme n’importe quelle autre gem Ruby.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;gem install sass
sass --watch default.scss
&gt;&gt;&gt; Sass is watching for changes. Press Ctrl-C to stop.
  overwrite default.css
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Vous l’avez compris, le fichier est &lt;em&gt;automagiquement&lt;/em&gt; compilé en &lt;abbr&gt;css&lt;/abbr&gt; à la volée grâce à l’attribut &lt;strong&gt;watch&lt;/strong&gt;.&lt;/p&gt;
&lt;h3&gt;Les 2 types de syntaxes&lt;/h3&gt;
&lt;p&gt;Il y a deux syntaxes différentes qui n’influent pas sur les fonctionnalités. On va dire que c’est une question de goût. Il y a une version &lt;em&gt;Python-like&lt;/em&gt; (&lt;abbr&gt;sass&lt;/abbr&gt;) qui, historiquement, était la première. La seconde (&lt;abbr&gt;scss&lt;/abbr&gt; – Sassy &lt;abbr&gt;CSS&lt;/abbr&gt;) reprend la syntaxe du &lt;abbr&gt;css&lt;/abbr&gt;. L’avantage de celle-ci étant qu’un fichier &lt;abbr&gt;.css&lt;/abbr&gt; est aussi un fichier &lt;abbr&gt;.scss&lt;/abbr&gt;.&lt;br&gt;La différence se fait par le compilateur sur l’extension.&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre&gt;&lt;code class="css"&gt;&lt;span class="c"&gt;/* SASS */&lt;/span&gt;
&lt;span class="nt"&gt;section&lt;/span&gt;
  &lt;span class="nt"&gt;margin-bottom&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nt"&gt;1em&lt;/span&gt;
  &lt;span class="nc"&gt;.entry&lt;/span&gt;
    &lt;span class="nt"&gt;color&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nt"&gt;red&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;div class="highlight"&gt;&lt;pre&gt;&lt;code class="css"&gt;&lt;span class="c"&gt;/* SCSS */&lt;/span&gt;
&lt;span class="nt"&gt;section&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;margin-bottom&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1em&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;entry&lt;/span&gt; &lt;span class="err"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;color&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;red&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="err"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;h3&gt;Imbrication&lt;/h3&gt;
&lt;h4&gt;Principe&lt;/h4&gt;
&lt;p&gt;Le meilleur moyen d’éviter la répétition est d’imbriquer les sélecteurs entre eux. Dans la suite de l’article je montrerai le code &lt;abbr&gt;scss&lt;/abbr&gt; et l’équivalent compilé en &lt;abbr&gt;css&lt;/abbr&gt;.&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre&gt;&lt;code class="css"&gt;&lt;span class="c"&gt;/* SCSS */&lt;/span&gt;
&lt;span class="nt"&gt;table&lt;/span&gt;&lt;span class="nc"&gt;.hl&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;margin&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2em&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="n"&gt;td&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ln&lt;/span&gt; &lt;span class="err"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;text-align&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="k"&gt;right&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="err"&gt;}&lt;/span&gt;

&lt;span class="nt"&gt;article&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="n"&gt;header&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;section&lt;/span&gt; &lt;span class="err"&gt;{&lt;/span&gt; &lt;span class="k"&gt;margin-top&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1em&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="err"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;div class="highlight"&gt;&lt;pre&gt;&lt;code class="css"&gt;&lt;span class="c"&gt;/* CSS */&lt;/span&gt;
&lt;span class="nt"&gt;table&lt;/span&gt;&lt;span class="nc"&gt;.hl&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;margin&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2em&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nt"&gt;table&lt;/span&gt;&lt;span class="nc"&gt;.hl&lt;/span&gt; &lt;span class="nt"&gt;td&lt;/span&gt;&lt;span class="nc"&gt;.ln&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;text-align&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="k"&gt;right&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nt"&gt;article&lt;/span&gt; &lt;span class="nt"&gt;header&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nt"&gt;article&lt;/span&gt; &lt;span class="nt"&gt;section&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;margin-top&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1em&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;h4&gt;Le sélecteur parent&lt;/h4&gt;
&lt;p&gt;Pense juste à &lt;span class="code"&gt;self&lt;/span&gt; ou &lt;span class="code"&gt;this&lt;/span&gt; comme dans les langages objets, copain. Dans &lt;abbr&gt;sass&lt;/abbr&gt; on utilise le symbole &lt;span class="code"&gt;&amp;&lt;/span&gt;.&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre&gt;&lt;code class="css"&gt;&lt;span class="c"&gt;/* SCSS */&lt;/span&gt;
&lt;span class="nt"&gt;a&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;color&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#324567&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="o"&gt;&amp;amp;:&lt;/span&gt;&lt;span class="n"&gt;hover&lt;/span&gt; &lt;span class="err"&gt;{&lt;/span&gt; &lt;span class="k"&gt;color&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;red&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="nt"&gt;display&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nt"&gt;inline-block&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
  &lt;span class="nt"&gt;line-height&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nt"&gt;1&lt;/span&gt;&lt;span class="nc"&gt;.6em&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="err"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;div class="highlight"&gt;&lt;pre&gt;&lt;code class="css"&gt;&lt;span class="c"&gt;/* CSS */&lt;/span&gt;
&lt;span class="nt"&gt;a&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;color&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#324567&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;display&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="k"&gt;inline&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="k"&gt;block&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;line-height&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1.6em&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nt"&gt;a&lt;/span&gt;&lt;span class="nd"&gt;:hover&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;color&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;red&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;h4&gt;Media queries&lt;/h4&gt;

&lt;div class="highlight"&gt;&lt;pre&gt;&lt;code class="css"&gt;&lt;span class="c"&gt;/* SCSS */&lt;/span&gt;
&lt;span class="nf"&gt;#content&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;margin&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;2.5em&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="n"&gt;media&lt;/span&gt; &lt;span class="n"&gt;screen&lt;/span&gt; &lt;span class="n"&gt;and&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;max-width&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;460px&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;margin&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;1.5em&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="err"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;div class="highlight"&gt;&lt;pre&gt;&lt;code class="css"&gt;&lt;span class="c"&gt;/* CSS */&lt;/span&gt;
&lt;span class="nf"&gt;#content&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;margin&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;2.5em&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="k"&gt;@media&lt;/span&gt; &lt;span class="nt"&gt;screen&lt;/span&gt; &lt;span class="nt"&gt;and&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;max-width&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nt"&gt;460px&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;#content&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;margin&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;1.5em&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;h3&gt;Les variables&lt;/h3&gt;
&lt;p&gt;J’ai déjà eu la nécessité de changer une ou plusieurs couleurs dans le thème d’un site. C’est donc X lignes que tu dois modifier. Avec les variables on a pas ce problèmes là, il suffit de définir les couleurs une fois seulement. Les variables dans &lt;abbr&gt;sass&lt;/abbr&gt; peuvent aussi stocker des tailles, des chaînes de caractères…&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre&gt;&lt;code class="css"&gt;&lt;span class="c"&gt;/* SCSS */&lt;/span&gt;
&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="nt"&gt;link-color&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nt"&gt;blue&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="nt"&gt;link-hover&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nt"&gt;red&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="nt"&gt;pad&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nt"&gt;3px&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="nt"&gt;a&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;color&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;link&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="k"&gt;color&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="o"&gt;&amp;amp;:&lt;/span&gt;&lt;span class="n"&gt;hover&lt;/span&gt; &lt;span class="err"&gt;{&lt;/span&gt; &lt;span class="k"&gt;color&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;link&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;hover&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="nt"&gt;padding&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="nt"&gt;pad&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="err"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;div class="highlight"&gt;&lt;pre&gt;&lt;code class="css"&gt;&lt;span class="c"&gt;/* CSS */&lt;/span&gt;
&lt;span class="nt"&gt;a&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;color&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;blue&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;padding&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;3px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nt"&gt;a&lt;/span&gt;&lt;span class="nd"&gt;:hover&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;color&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;red&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;h3&gt;@extend&lt;/h3&gt;
&lt;p&gt;Cet attribut permet de spécifier qu’une classe hérite des propriétés d’une autre. Imaginons que vous ayez une classe &lt;span class="code"&gt;.button&lt;/span&gt; contenant le style de base d’un bouton sur votre site et une classe &lt;span class="code"&gt;.button-submit&lt;/span&gt; qui lui aura juste une couleur différente. L’attribut &lt;span class="code"&gt;@extend&lt;/span&gt; vous évite à mettre dans le &lt;abbr&gt;dom&lt;/abbr&gt; les 2 classes sur ce bouton mais uniquement la dernière.&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre&gt;&lt;code class="css"&gt;&lt;span class="c"&gt;/* SCSS */&lt;/span&gt;
&lt;span class="nc"&gt;.button&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;background&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;blue&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;color&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;white&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;padding&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;0.2em&lt;/span&gt; &lt;span class="m"&gt;0.8em&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;border&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;radius&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;0.4em&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.button-submit&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="n"&gt;extend&lt;/span&gt; &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;button&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;background&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;green&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;div class="highlight"&gt;&lt;pre&gt;&lt;code class="css"&gt;&lt;span class="c"&gt;/* CSS */&lt;/span&gt;
&lt;span class="nc"&gt;.button&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;.button-submit&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;background&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;blue&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;color&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;white&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;padding&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;0.2em&lt;/span&gt; &lt;span class="m"&gt;0.8em&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;border&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;radius&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;0.4em&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.button-submit&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;background&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;green&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;h3&gt;Mixins&lt;/h3&gt;
&lt;p&gt;Les mixins ce sont des bouts de codes que tu peux rappeler ensuite ailleurs dans tes classes. Utiles pour éviter la duplication de codes encore une fois. Des valeurs peuvent être envoyés en paramètres, et celles-ci sont nommées et peuvent avoir une valeur par défaut.&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre&gt;&lt;code class="css"&gt;&lt;span class="c"&gt;/* SCSS */&lt;/span&gt;
&lt;span class="k"&gt;@mixin&lt;/span&gt; &lt;span class="nt"&gt;border-radius&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="nt"&gt;amount&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nt"&gt;10px&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nt"&gt;border-radius&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="nt"&gt;amount&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
  &lt;span class="nt"&gt;-webkit-border-radius&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="nt"&gt;amount&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
  &lt;span class="nt"&gt;-moz-border-radius&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="nt"&gt;amount&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.msg&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="n"&gt;include&lt;/span&gt; &lt;span class="k"&gt;border&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;radius&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;5px&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;div class="highlight"&gt;&lt;pre&gt;&lt;code class="css"&gt;&lt;span class="c"&gt;/* CSS */&lt;/span&gt;
&lt;span class="nc"&gt;.msg&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;border&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;radius&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;5px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;webkit&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="k"&gt;border&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;radius&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;5px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;moz&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="k"&gt;border&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;radius&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;5px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;h3&gt;Autres fonctionnalités&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Vous pouvez diviser votre code en plusieurs fichiers et les importer avec &lt;span class="code"&gt;@import&lt;/span&gt;, ils seront combinés avec la compilation&lt;/li&gt;
&lt;li&gt;Des méthodes de calculs sont supportées, vous pouvez additionner, diviser et jouer avec les tailles, couleurs et autres valeurs.&lt;/li&gt;
&lt;li&gt;Des opérateurs &lt;span class="code"&gt;@if&lt;/span&gt;, &lt;span class="code"&gt;@else&lt;/span&gt;, &lt;span class="code"&gt;@else if&lt;/span&gt;, des opérateurs de logique &lt;span class="code"&gt;and&lt;/span&gt;, &lt;span class="code"&gt;or&lt;/span&gt;, &lt;span class="code"&gt;=&lt;/span&gt;, ainsi que des boucles &lt;span class="code"&gt;@for&lt;/span&gt;, &lt;span class="code"&gt;@while&lt;/span&gt; et &lt;span class="code"&gt;@each&lt;/span&gt; sont supportés. Mais je suis moins fan de ce genre de pratiques dans un fichier de style.&lt;/li&gt;
&lt;li&gt;Des méthodes pour jouer sur les couleurs : plus foncé, plus clair…&lt;/li&gt;
&lt;/ul&gt;

&lt;figure&gt;
&lt;figcaption style="top:37px;"&gt;&lt;img src="http://s3-eu-west-1.amazonaws.com/phollow/2012/03/css_sass_compass.jpg" alt="" title="css_sass_compass" width="500" height="360" class="alignnone size-full wp-image-4054" /&gt;&lt;/figcaption&gt;
&lt;h3&gt;Conclusion&lt;/h3&gt;
&lt;/figure&gt;
&lt;p&gt;&lt;abbr&gt;Sass&lt;/abbr&gt; peut rendre l’utilisation du &lt;abbr&gt;css&lt;/abbr&gt; plus sympathique. Si vous voulez en savoir plus je vous conseille de vous rendre sur la &lt;a href="http://sass-lang.com/" title="Sass" target="_blank"&gt;page officielle&lt;/a&gt; de l’application. Vous y trouverez des exemples et de la documentation sur d’autres fonctionnalités non évoquées ici.&lt;/p&gt;
&lt;p style="text-indent:2.3em"&gt;Si Ruby vous rebute, il y a une autre application qui s’appelle &lt;a href="http://lesscss.org/" title="LESS CSS" target="_blank"&gt;LESS&lt;/a&gt; et qui fait en gros la même chose, la syntaxe étant un peu différente.&lt;/p&gt;
&lt;p&gt;En tout cas une chose est sûre, je vais l’utiliser sur mon prochain projet. &lt;em&gt;Reste à trouver le projet.&lt;/em&gt;&lt;/p&gt;
&lt;p style="text-align:center;font-size: 2em;"&gt;❧&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/R4zKc_Kl74jgTjQAyEgcQXMYVHQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/R4zKc_Kl74jgTjQAyEgcQXMYVHQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/R4zKc_Kl74jgTjQAyEgcQXMYVHQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/R4zKc_Kl74jgTjQAyEgcQXMYVHQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/phollow/iuEO/~4/PsmTFxpGR_4" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://phollow.fr/2012/03/sass-css-on-fire-that-sucks-less</feedburner:origLink></entry>
  
  <entry>
    <id>http://phollow.fr/2012/02/enlarge-your-police</id>
    <link type="text/html" rel="alternate" href="http://feedproxy.google.com/~r/phollow/iuEO/~3/klOuOaMIhCM/enlarge-your-police" />
    <title>Enlarge your police</title>
    <published>2012-02-04T22:42:16+01:00</published>
    <updated>2012-02-04T22:42:16+01:00</updated>
    <author>
      <name>Jérôme Mahuet</name>
      <uri>http://phollow.fr/</uri>
    </author>
    <content type="html">&lt;figure&gt;
&lt;figcaption style="top:-96px;"&gt;&lt;img style="margin-top:0;" src="http://s3-eu-west-1.amazonaws.com/phollow/2012/02/necroscope.jpg" alt="" title="necroscope" width="580" height="773" class="alignnone size-full wp-image-3898"&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p class="lettrine"&gt;Rien à voir avec les spams de Viagra. Non. Sous ce titre un peu malicieux, je tenais à vous parler d’une chose que je ne supporte plus : les tailles de texte minuscules dans les pages &lt;abbr&gt;html&lt;/abbr&gt;. Cette impression d’avoir sous les yeux le dictionnaire Édition Larousse en &lt;em&gt;lisant&lt;/em&gt; un article de blog.&lt;/p&gt;
&lt;p&gt;Pourtant je ne pense pas qu’il soit plus difficile de lire sur un écran que de lire un livre. Il suffit de &lt;em&gt;copier&lt;/em&gt; la façon dont les livres mettent en page le texte.&lt;/p&gt;
&lt;p&gt;Pour être un peu plus précis, le problème se situe souvent sur le nombre de caractères que contient une ligne de texte. La taille de la police sera donc à priori proportionnelle à la largeur de son conteneur.&lt;/p&gt;
&lt;h3&gt;Être lu comme on lit un livre&lt;/h3&gt;
&lt;p&gt;Partons d’un constat simple : je suppose que pour vous aussi il est plus facile de lire un bouquin que de lire pendant pas mal de temps sur votre écran d’ordinateur. Le premier argument pour ça est de dire que c’est l’écran qui fatigue les yeux. Pour moi la vraie raison est la taille minuscule des typos sur le net.&lt;/p&gt;
&lt;p&gt;Depuis plusieurs jours j’ai une &lt;em&gt;obsession&lt;/em&gt;. Je compare les articles de blog à des livres de ma bibliothèque. Et souvent je vois la même chose : on est largement &lt;strong&gt;en dessous des 16px&lt;/strong&gt; par défaut des navigateurs. À croire que les designers cherchent à mettre le plus d’informations possible dans le moins d’espace possible. Ça peut marcher pour quelques applications web mais pas pour une longue lecture.&lt;/p&gt;
&lt;h3&gt;Le nombre optimal de caractères par lignes&lt;/h3&gt;
&lt;p&gt;Tout est une histoire de rythme. Si une ligne est trop longue, le lecteur aura du mal à bien voir où une ligne commence et termine. Ça sera plus difficile de trouver la prochaine ligne sur de long bloc de texte. Pas top pour se concentrer dessus.&lt;/p&gt;
&lt;p&gt;Inversement, des lignes trop courtes cassent le rythme de lecture. Elle se retrouve artificiellement accélérée et le lecteur sautera parfois des mots (pouvant être important à la compréhension).&lt;/p&gt;

&lt;blockquote style="margin-bottom:0"&gt;Anything from 45 to 75 characters is widely regarded as a satisfactory length of line for a single-column page set in a serifed text face in a text size. The 66-character line (counting both letters and spaces) is widely regarded as ideal. For multiple column work, a better average is 40 to 50 characters.&lt;/blockquote&gt;
&lt;cite style="color:#99968A; display: block;"&gt;— The Elements &lt;em&gt;of&lt;/em&gt; Typographic Style Applied &lt;em&gt;to the&lt;/em&gt; Web &lt;sup style="height: 0;line-height: 1;vertical-align: baseline;position: relative;bottom:1ex;"&gt;*&lt;/sup&gt;&lt;/cite&gt;
&lt;br&gt;
&lt;p&gt;La bonne pratique est donc d’avoir environ &lt;strong&gt;66 caractères par lignes&lt;/strong&gt;, en comptant les espaces aussi. Le &lt;abbr&gt;css&lt;/abbr&gt; avec les media-queries deviennent indispensables sur une page fluide, la largeur des colonnes de texte pouvant changer selon la résolution.&lt;br&gt;&lt;em&gt;Je dois d’ailleurs améliorer pas mal ça sur mon blog.&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;Autres considérations&lt;/h3&gt;
&lt;p&gt;Ne pas hésiter à utiliser des interlignes amples dans vos textes. En utilisant la propriété &lt;abbr&gt;css&lt;/abbr&gt; &lt;span class="code"&gt;line-height&lt;/span&gt; avec un coefficient sans unité. Par exemple 1.5 est une bonne base, à ajuster suivant la police.&lt;/p&gt;
&lt;p&gt;Les nouveaux paragraphes doivent être bien marqués. On peut utiliser des lettrines, de l’indentation, un pied-de-mouche (❡) ou simplement un saut de ligne.&lt;/p&gt;
&lt;p&gt;Éviter la justification sur des colonnes de textes minces. Mais généralement la justification sur le web ne &lt;em&gt;fonctionne pas&lt;/em&gt;. À cause du support des &lt;a href="http://phollow.fr/2011/10/les-cesures-dans-le-web/" title="césures"&gt;césures&lt;/a&gt; encore aléatoire, du manque de crénage (kerning) automatique et des ligatures (on y vient avec Firefox &lt;sup style="height: 0;line-height: 1;vertical-align: baseline;position: relative;bottom:0.5ex;"&gt;†&lt;/sup&gt;).&lt;/p&gt;
&lt;p style="text-indent: 2.3em;"&gt;Enfin les polices &lt;strong&gt;serifs&lt;/strong&gt; facilitent la lecture. Boudées pendant un temps à cause des résolutions assez basses de nos écrans, elles sont parfaitement &lt;a href="http://phollow.fr/2011/10/mes-polices-web-preferees-serifs/" title="serifs"&gt;utilisables&lt;/a&gt; de nos jours.&lt;/p&gt;
&lt;h3&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;Voilà pourquoi j’ai augmenté la taille du texte ici. Si votre navigateur à une taille de police de 16px par défaut, alors ce texte devrait faire 20px. Et si vous avez lu mon article jusque ici, j’aurai gagné une partie de mon pari.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Et promis j’arrête de vous faire chier avec la typographie avant un bout de temps.&lt;/em&gt;&lt;/p&gt;
&lt;p style="text-align:center;font-size: 2em;"&gt;❧&lt;/p&gt;
&lt;ul class="footnotes" style="color:#99968A;font-size:0.8em;"&gt;
&lt;li&gt;&lt;sup style="height: 0;line-height: 1;vertical-align: baseline;position: relative;bottom:1ex;"&gt;*&lt;/sup&gt; Une lecture que je conseille fortement, plein de conseils et de bonnes pratiques sur la typographie adaptée à l’usage du web – &lt;a href="http://webtypography.net/Rhythm_and_Proportion/Horizontal_Motion/2.1.2/" title="Choose a comfortable measure" target="_blank"&gt;source&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;sup style="height: 0;line-height: 1;vertical-align: baseline;position: relative;bottom:1ex;"&gt;†&lt;/sup&gt; Using OpenType font features with CSS 3: Part 1 – &lt;a href="http://blog.fontdeck.com/post/15777165734/opentype-1" target="_blank"&gt;source&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/zg8GO_fA7qIHU2HPxWeRoweTMc0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zg8GO_fA7qIHU2HPxWeRoweTMc0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/zg8GO_fA7qIHU2HPxWeRoweTMc0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zg8GO_fA7qIHU2HPxWeRoweTMc0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/phollow/iuEO/~4/klOuOaMIhCM" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://phollow.fr/2012/02/enlarge-your-police</feedburner:origLink></entry>
  
  <entry>
    <id>http://phollow.fr/2011/11/mes-polices-web-preferees-sans-serif</id>
    <link type="text/html" rel="alternate" href="http://feedproxy.google.com/~r/phollow/iuEO/~3/9IkMMYtxkgk/mes-polices-web-preferees-sans-serif" />
    <title>Mes polices web préférées [sans-serif]</title>
    <published>2011-11-30T13:35:38+01:00</published>
    <updated>2011-11-30T13:35:38+01:00</updated>
    <author>
      <name>Jérôme Mahuet</name>
      <uri>http://phollow.fr/</uri>
    </author>
    <content type="html">&lt;p&gt;Après un &lt;a title="Mes polices web preferees serifs" href="http://phollow.fr/2011/10/mes-polices-web-preferees-serifs/"&gt;premier article&lt;/a&gt; sur les polices de types &lt;strong&gt;serif&lt;/strong&gt;, je continue sur ma lancée avec cette fois-ci les &lt;strong&gt;sans-serifs&lt;/strong&gt;. Ce type de police n’a pas d’empattements, &lt;em&gt;d’où leur nom&lt;/em&gt;. En français on les appellent aussi polices &lt;strong&gt;linéales&lt;/strong&gt;. Elles ont été longuement privilégiées pour le corps de texte sur les écrans, car à l’époque les écrans analogiques et la basse résolution ne rendaient pas l’affichage d‘une serif optimale. La nature simple des polices linéales fait qu’elles sont mieux lisibles sur ce type d’écran. De nos jours avec nos écrans LCD, l’antialiasing etc., ce n'est plus vrai je trouve.&lt;/p&gt;

&lt;p&gt;Aujourd’hui je vais donc vous montrer quelques polices sans empattements que je trouve plutôt cool. Donc si vous en avez un peu marre &lt;em&gt;d’Helvetica&lt;/em&gt; ou &lt;em&gt;d’Arial&lt;/em&gt;, n’hésitez pas à les tester. Ces fonts ont été trouvés, à l’image de l’article précédent, sur &lt;a title="Typekit" href="http://typekit.com"&gt;Typekit&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;LFT Etica Web &amp;amp; PT Sans&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;LFT Etica Web&lt;/strong&gt; est une police moins froide que ces consoeurs, presque de type humaniste. Elle se décline sous 16 graisses/styles différents et peut être utilisée pour du texte ou des &lt;em&gt;headings&lt;/em&gt;.&lt;/p&gt;
&lt;img style="margin-bottom: 20px;"  src="http://s3-eu-west-1.amazonaws.com/phollow/2011/11/LFTEtica_0-640x285.gif" alt="" title="LFTEtica_0" width="640" height="285" class="alignnone size-medium wp-image-3788"&gt;
&lt;p&gt;&lt;strong&gt;PT Sans&lt;/strong&gt; est une font au look moderne et humaniste. Là encore, elle possède plusieurs familles et styles et peut donc s’adapter à l’usage. Par exemple la famille &lt;em&gt;caption&lt;/em&gt; sera utilisée pour les petits textes.&lt;/p&gt;
&lt;img src="http://s3-eu-west-1.amazonaws.com/phollow/2011/11/Capture-d’écran-2011-11-29-à-13.27.532.jpg" alt="" title="Capture d’écran 2011-11-29 à 13.27.53" class="alignnone size-full wp-image-3793"&gt;
&lt;figure&gt;
&lt;p&gt;&lt;a href="http://jonikorpi.com" target="_blank"&gt;&lt;img src="http://s3-eu-west-1.amazonaws.com/phollow/2011/11/Capture-d’écran-2011-11-29-à-13.06.37-640x463.jpg" alt="" title="Joni Korpi" width="640" height="463" class="alignnone size-medium wp-image-3782"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;figcaption&gt;Sur le site web de Joni Korpi, on peut voir l’utilisation de ces deux polices. Avec LFT Etica Web pour les titres et PT Sans pour le corps de texte.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h3&gt;Proxima Nova&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Proxima Nova&lt;/strong&gt; (2005) est une refonte complète de Sans Proxima (1994). Les six polices originales (trois poids avec italique) ont été élargies à 42 polices OpenType complet. Proxima Nova chevauche l'écart entre les fontes comme Futura et Akzidenz Grotesk. Le résultat est un hybride combinant des proportions humanistes avec un aspect un peu géométrique.&lt;/p&gt;
&lt;figure&gt;
&lt;a href="http://sparrowmailapp.com/" title="Sparrow Mail" target="_blank"&gt;&lt;img src="http://s3-eu-west-1.amazonaws.com/phollow/2011/11/Capture-d’écran-2011-11-29-à-13.36.23-640x297.jpg" alt="" title="Proxima Nova" width="640" height="297" class="alignnone size-medium wp-image-3797"&gt;&lt;/a&gt;

&lt;a href="http://penguincreative.com/" target="_blank"&gt;&lt;img src="http://s3-eu-west-1.amazonaws.com/phollow/2011/11/Capture-d’écran-2011-11-30-à-00.42.44-640x380.jpg" alt="" title="Capture d’écran 2011-11-30 à 00.42.44" width="640" height="380" class="alignnone size-medium wp-image-3817"&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;h3&gt;FF Dagny Web Pro&lt;/h3&gt;
&lt;p&gt;En 2002, le journal suédois Dagens Nyheter (DN) a migré du format broadsheet vers un format tabloïde. Le changement au format tabloïde a rendu le cadre plus compact et Pangea a été mandaté pour produire un correspondant sans-serif pour le journal Suédois. Cela est devenu DN Grotesk, qui a maintenant évolué en &lt;strong&gt;FF Dagny&lt;/strong&gt;. Conçu par Örjan Nordling et Söderström Göran.&lt;/p&gt;
&lt;figure&gt;
&lt;p&gt;&lt;a href="http://www.thedesigncubicle.com/" title="The Design Cubicle"&gt;&lt;img src="http://s3-eu-west-1.amazonaws.com/phollow/2011/11/Capture-d’écran-2011-11-30-à-00.37.09-640x515.jpg" alt="" title="The Design Cubicle" width="640" height="515" class="alignnone size-medium wp-image-3815"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/figure&gt;

&lt;h3&gt;Myriad Pro&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Myriad Pro&lt;/strong&gt;, un grand classique d‘Adobe est aussi disponible sur Typekit. 10 fonts au total (5 graisses différentes).&lt;/p&gt;
&lt;figure&gt;
&lt;p&gt;&lt;a href="http://www.warbyparker.com/" title="Warby Parker" target="_blank"&gt;&lt;img src="http://s3-eu-west-1.amazonaws.com/phollow/2011/11/Capture-d’écran-2011-11-30-à-00.50.48-640x355.jpg" alt="" title="Warby Parker" width="640" height="355" class="alignnone size-medium wp-image-3820"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;figcaption&gt;Principalement utilisée sur ce site pour le corps de texte et quelques &lt;em&gt;headlines&lt;/em&gt;.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h3&gt;Ratio&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Ratio&lt;/strong&gt; est disponible en 6 graisses allant de minces à lourdes avec les italiques pour chaques. Que ce soit sur ​​papier ou sur écran, Ratio ajoute un niveau de sophistication et de polyvalence qui fait ressortir le meilleur dans n’importe quel design.&lt;/p&gt;
&lt;figure&gt;
&lt;p&gt;&lt;a href="http://cargocollective.com/pstype#39674/Ratio" title="Ratio" target="_blank"&gt;&lt;img src="http://s3-eu-west-1.amazonaws.com/phollow/2011/11/Capture-d’écran-2011-11-30-à-01.00.40.jpg" alt="" title="Ratio" width="640" height="564" class="alignnone size-full wp-image-3822"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;figcaption&gt;Disponible aussi sur Typekit, avec la variante &lt;a href="http://cargocollective.com/pstype#197264/Ratio-Display-new" title="Ratio Display" target="_blank"&gt;Ratio Display&lt;/a&gt;.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Et voilà. Ce n’est qu’un petit échantillon des polices disponibles pour &lt;em&gt;font-face&lt;/em&gt;, à l’heure où j’écris ces lignes, je compte plus de 140 sans-serifs sur Typekit. Pour le prochain article, je prépare une collection de &lt;strong&gt;slab-serifs&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/kdg1t9W0tl__XcPp3n04QpCPzS8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kdg1t9W0tl__XcPp3n04QpCPzS8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/kdg1t9W0tl__XcPp3n04QpCPzS8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kdg1t9W0tl__XcPp3n04QpCPzS8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/phollow/iuEO/~4/9IkMMYtxkgk" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://phollow.fr/2011/11/mes-polices-web-preferees-sans-serif</feedburner:origLink></entry>
  
  <entry>
    <id>http://phollow.fr/2011/11/7-frameworks-css-pour-developper-en-responsivec2a0webc2a0design</id>
    <link type="text/html" rel="alternate" href="http://feedproxy.google.com/~r/phollow/iuEO/~3/qpx3OzNPIHQ/7-frameworks-css-pour-developper-en-responsivec2a0webc2a0design" />
    <title>7 frameworks CSS pour développer en Responsive Web Design</title>
    <published>2011-11-21T13:51:19+01:00</published>
    <updated>2011-11-21T13:51:19+01:00</updated>
    <author>
      <name>Jérôme Mahuet</name>
      <uri>http://phollow.fr/</uri>
    </author>
    <content type="html">&lt;p&gt;
Je commence une série d'article à propos d'outils permettant de faciliter le développement d’un site internet &lt;em&gt;responsive&lt;/em&gt;, s’adaptant dynamiquement à la taille de l’écran du média. Dans cet article, je vais parler uniquement de tout ce qui a un rapport avec le CSS. En particulier des &lt;strong&gt;grids&lt;/strong&gt; et des &lt;strong&gt;templates&lt;/strong&gt; CSS.
&lt;/p&gt;
&lt;h3&gt;320 and up&lt;/h3&gt;
&lt;figure&gt;
&lt;p&gt;
&lt;img src="http://s3-eu-west-1.amazonaws.com/phollow/2011/11/Capture-d’écran-2011-11-21-à-12.57.571-822x450.jpg" alt="" title="320-and-up" width="822" height="450" class="alignnone size-medium wp-image-3729"&gt;
&lt;/p&gt;
&lt;figcaption&gt;
&lt;strong&gt;320 and up&lt;/strong&gt; est un template basé sur &lt;strong&gt;HTML5 Boilerplate&lt;/strong&gt; et la grid de &lt;strong&gt;Less Framework 4&lt;/strong&gt;. 
&lt;/figcaption&gt;
&lt;p&gt;&lt;a href="http://stuffandnonsense.co.uk/projects/320andup/" title="320 and up" target="_blank"&gt;320 and up&lt;/a&gt;&lt;/p&gt;
&lt;/figure&gt;
&lt;h3&gt;1140 CSS Grid&lt;/h3&gt;
&lt;figure&gt;
&lt;p&gt;
&lt;img src="http://s3-eu-west-1.amazonaws.com/phollow/2011/11/Capture-d’écran-2011-11-21-à-13.08.58-832x376.jpg" alt="" title="1140" width="832" height="376" class="alignnone size-medium wp-image-3739"&gt;
&lt;/p&gt;
&lt;figcaption&gt;
&lt;strong&gt;1140 CSS Grid&lt;/strong&gt; se base sur la résolution d’un moniteur de 1280 de large, et se réduit de manière &lt;strong&gt;fluide&lt;/strong&gt; sur les plus petites résolutions.
&lt;/figcaption&gt;
&lt;p&gt;&lt;a href="http://cssgrid.net/" title="1140 CSS Grid" target="_blank"&gt;1140 CSS Grid&lt;/a&gt;&lt;/p&gt;
&lt;/figure&gt;
&lt;h3&gt;Less Framework 4&lt;/h3&gt;
&lt;figure&gt;
&lt;p&gt;
&lt;img src="http://s3-eu-west-1.amazonaws.com/phollow/2011/11/Capture-d’écran-2011-11-21-à-13.15.03-832x399.jpg" alt="" title="Less Framework 4" width="832" height="399" class="alignnone size-medium wp-image-3742"&gt;
&lt;/p&gt;
&lt;figcaption&gt;
&lt;strong&gt;Less Framework 4&lt;/strong&gt; permet de construire des sites web qui s’adaptent aux différents devices grâce à 4 templates et 3 pré-réglages typographiques.
&lt;/figcaption&gt;
&lt;p&gt;&lt;a href="http://lessframework.com/" title="Less Framework 4" target="_blank"&gt;Less Framework 4&lt;/a&gt;&lt;/p&gt;
&lt;/figure&gt;
&lt;h3&gt;Mobile Boilerplate&lt;/h3&gt;
&lt;figure&gt;
&lt;p&gt;
&lt;img src="http://s3-eu-west-1.amazonaws.com/phollow/2011/11/Capture-d’écran-2011-11-21-à-13.21.14-832x442.jpg" alt="" title="Mobile Boilerplate" width="832" height="442" class="alignnone size-medium wp-image-3745"&gt;
&lt;/p&gt;
&lt;figcaption&gt;
&lt;strong&gt;Mobile Boilerplate&lt;/strong&gt; est une collection de CSS, HTML et diverses bibliothèques Javascript permettant de bien démarrer un projet web mobile.
&lt;/figcaption&gt;
&lt;p&gt;&lt;a href="http://html5boilerplate.com/mobile" title="Mobile Boilerplate" target="_blank"&gt;Mobile Boilerplate&lt;/a&gt;&lt;/p&gt;
&lt;/figure&gt;
&lt;h3&gt;Skeleton&lt;/h3&gt;
&lt;figure&gt;
&lt;p&gt;
&lt;img src="http://s3-eu-west-1.amazonaws.com/phollow/2011/11/Capture-d’écran-2011-11-21-à-13.24.19-750x450.jpg" alt="" title="Skeleton" width="750" height="450" class="alignnone size-medium wp-image-3747"&gt;
&lt;/p&gt;
&lt;figcaption&gt;
&lt;strong&gt;Skeleton&lt;/strong&gt; contient une grille CSS et un style de base (typographie, formulaire, boutons…) pour commencer un projet.
&lt;/figcaption&gt;
&lt;p&gt;&lt;a href="http://www.getskeleton.com/" title="Skeleton" target="_blank"&gt;Skeleton&lt;/a&gt;&lt;/p&gt;
&lt;/figure&gt;
&lt;h3&gt;Golden Grid System&lt;/h3&gt;
&lt;figure&gt;
&lt;p&gt;
&lt;img src="http://s3-eu-west-1.amazonaws.com/phollow/2011/11/Capture-d’écran-2011-11-21-à-13.28.08-832x344.jpg" alt="" title="Golden Grid System" width="832" height="344" class="alignnone size-medium wp-image-3750" /&gt;
&lt;/p&gt;
&lt;figcaption&gt;
&lt;strong&gt;Golden Grid System&lt;/strong&gt; : Pour moi une des grilles adaptatives les plus propres. L’avantage de celle-ci est qu’elle conserve plusieurs colonnes tout le temps, même au format mobile.
&lt;/figcaption&gt;
&lt;p&gt;&lt;a href="http://goldengridsystem.com/" title="Golden Grid System" target="_blank"&gt;Golden Grid System&lt;/a&gt;&lt;/p&gt;
&lt;/figure&gt;
&lt;h3&gt;The Semantic Grid System&lt;/h3&gt;
&lt;figure&gt;
&lt;p&gt;
&lt;img src="http://s3-eu-west-1.amazonaws.com/phollow/2011/11/Capture-d’écran-2011-11-21-à-13.36.24-832x386.jpg" alt="" title="The Semantic Grid System" width="832" height="386" class="alignnone size-medium wp-image-3754"&gt;
&lt;/p&gt;
&lt;figcaption&gt;
&lt;strong&gt;The Semantic Grid System&lt;/strong&gt; est intéressante dans le sens où c’est vous qui choisissez le nombres de colonnes, la taille des marges etc.
&lt;/figcaption&gt;
&lt;p&gt;&lt;a href="http://semantic.gs/" title="The Semantic Grid System" target="_blank"&gt;The Semantic Grid System&lt;/a&gt;&lt;/p&gt;
&lt;/figure&gt;
&lt;p&gt;Je vous conseille aussi de ne pas hésiter à modifier ces divers frameworks pour votre utilisation. Par exemple le thème de ce blog tourne sur une version modifiée de &lt;strong&gt;Skeleton&lt;/strong&gt; — &lt;em&gt;j’ai rendu la grille fluide&lt;/em&gt; – et les bibliothèques Javascript de &lt;strong&gt;320 and up&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;En regardant le code de ces projets vous allez avoir une meilleure vision de ce qui se passe avec les &lt;strong&gt;media queries&lt;/strong&gt;. Et ainsi adapter leurs fonctionnements à votre propre projet.&lt;/p&gt;
&lt;p&gt;Si vous en connaissez d’autres, n’hésitez pas à en parler aux gens avec les commentaires.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Ov03zjUKgjI94XKAh61lzhyO-x8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Ov03zjUKgjI94XKAh61lzhyO-x8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Ov03zjUKgjI94XKAh61lzhyO-x8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Ov03zjUKgjI94XKAh61lzhyO-x8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/phollow/iuEO/~4/qpx3OzNPIHQ" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://phollow.fr/2011/11/7-frameworks-css-pour-developper-en-responsivec2a0webc2a0design</feedburner:origLink></entry>
  
  <entry>
    <id>http://phollow.fr/2011/11/homebrew-un-gestionnaire-de-paquet-pour-mac-osx</id>
    <link type="text/html" rel="alternate" href="http://feedproxy.google.com/~r/phollow/iuEO/~3/ievOOnELgiQ/homebrew-un-gestionnaire-de-paquet-pour-mac-osx" />
    <title>Homebrew, un gestionnaire de paquet pour Mac OS/X</title>
    <published>2011-11-01T20:12:51+01:00</published>
    <updated>2011-11-01T20:12:51+01:00</updated>
    <author>
      <name>Jérôme Mahuet</name>
      <uri>http://phollow.fr/</uri>
    </author>
    <content type="html">&lt;img style="margin-top:0; margin-bottom: 20px;" src="http://s3-eu-west-1.amazonaws.com/phollow/2011/11/formula.png" alt="" title="formula" width="700" height="300" class="alignnone size-full wp-image-3677"&gt;
&lt;p&gt;Quand on a pris la &lt;strong&gt;bonne&lt;/strong&gt; habitude de travailler sous un environnement Unix, il y a certains outils qui vous manquent &lt;em&gt;cruellement&lt;/em&gt; quand on se retrouve par exemple sur Mac OS/X. Ce système d’exploitation ne possède pas de gestionnaire de paquet comme &lt;span class="code"&gt;apt-get&lt;/span&gt; sous Debian ou &lt;span class="code"&gt;yum&lt;/span&gt; sous CentOS. Il existe heureusement des solutions, comme par exemple &lt;strong&gt;Macports&lt;/strong&gt;. J’en avais parlé &lt;a href="http://phollow.fr/2009/08/les-macports/" title="Macports"&gt;sur ce billet&lt;/a&gt; il y a quelques temps déjà.&lt;/p&gt;
&lt;p&gt;Aujourd’hui j’utilise un autre gestionnaire de paquet s'appelant &lt;strong&gt;Homebrew&lt;/strong&gt;. Il se veut plus simple que Macports et diffère un peu dans sa manière de faire. Pour faire simple Homebrew va toujours essayer d'utiliser les librairies déjà sur le système pour compiler nos paquets. Cette manière de procéder possède des avantages et des inconvénients. L'avantage c'est que pour compiler un paquet, on ne va pas devoir compiler X librairies avant. L'inconvénient c'est que nos exécutables risquent grandement de planter après une mise à jour de l’OS ; les librairies de Mac OS/X étant mises à jour.&lt;/p&gt;
&lt;p&gt;C'est donc un choix à faire. Et j’ai choisit Homebrew car je n'ai pas non plus 50 paquets à maintenir, une vingtaine tout au plus, et je ne mets pas mon système d’exploitation à jour tous les quatre matins.&lt;/p&gt;
&lt;h3&gt;Pré-requis&lt;/h3&gt;
&lt;p&gt;Il faut savoir que par défaut il n’y a pas les outils de compilation dans Mac OS/X. Alors on va devoir installer &lt;span class="code"&gt;gcc&lt;/span&gt; et ses potes, et ça se fait &lt;em&gt;simplement&lt;/em&gt; en installant &lt;a href="http://itunes.apple.com/us/app/xcode/id448457090" title="Xcode" target="_blank"&gt;Xcode&lt;/a&gt;. Pour certains paquets vous allez peut-être avoir besoin du « Java Developer Update ». On peut trouver ce qu’il faut sur &lt;a href="https://developer.apple.com/downloads/index.action" title="Mac - Java Developer Update" target="_blank"&gt;cette page&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Installation&lt;/h3&gt;
&lt;p&gt;L'installation à proprement parler du gestionnaire de paquets peut maintenant commencer. Homebrew est écrit en &lt;strong&gt;Ruby&lt;/strong&gt; et son script d’installation aussi.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/usr/bin/ruby -e "$(curl -fsSL https://raw.github.com/gist/323731)"&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Il va faire son &lt;em&gt;nid&lt;/em&gt; dans &lt;span class="code"&gt;/usr/local&lt;/span&gt;, ce qui nous permettra d’installer des paquets sans passer par &lt;strong&gt;sudo&lt;/strong&gt;. De plus cet endroit est assez indépendant du système, on pourra donc facilement tout enlever si besoin. Il est bien sûr toujours possible de mettre tout ça ailleurs si vous préférez.&lt;/p&gt;
&lt;h3&gt;Et ensuite on peut RTFM&lt;/h3&gt;
&lt;figure&gt;&lt;p&gt;&lt;img style="margin-top:0;" src="http://s3-eu-west-1.amazonaws.com/phollow/2011/11/RTFM.jpg" alt="" title="RTFM" width="700" height="464" class="alignnone size-full wp-image-3704" /&gt;&lt;/p&gt;&lt;figcaption&gt;J'admets avoir la flemme de tout vous expliquer, mais franchement il suffit de lire.&lt;/figcaption&gt;&lt;figure&gt;
&lt;p&gt;Pour avoir la liste complète de ce qu’il est possible d’installer, on peut se rendre sur GitHub, sur &lt;a href="https://github.com/mxcl/homebrew/tree/master/Library/Formula/" title="Homebrew Formula List" target="_blank"&gt;cette page&lt;/a&gt;. À savoir que vous pouvez créer vos propres formules et la proposer à la communauté si vous voyez un manque. Homebrew m’a servi pour installer quelques paquets toujours pratiques comme &lt;span class="code"&gt;git&lt;/span&gt;, &lt;span class="code"&gt;ffmpeg&lt;/span&gt;, &lt;span class="code"&gt;x264&lt;/span&gt;, &lt;span class="code"&gt;mongodb&lt;/span&gt;, &lt;span class="code"&gt;redis&lt;/span&gt;, &lt;span class="code"&gt;htop&lt;/span&gt;, &lt;span class="code"&gt;wget&lt;/span&gt;…
&lt;p&gt;&lt;a href="http://mxcl.github.com/homebrew/" title="Homebrew" target="_blank"&gt;Site web de Homebrew&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/f8FVsr1euacOJXaSGeFRJXg15D4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/f8FVsr1euacOJXaSGeFRJXg15D4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/f8FVsr1euacOJXaSGeFRJXg15D4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/f8FVsr1euacOJXaSGeFRJXg15D4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/phollow/iuEO/~4/ievOOnELgiQ" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://phollow.fr/2011/11/homebrew-un-gestionnaire-de-paquet-pour-mac-osx</feedburner:origLink></entry>
  
  <entry>
    <id>http://phollow.fr/2011/10/mes-polices-web-preferees-serifs</id>
    <link type="text/html" rel="alternate" href="http://feedproxy.google.com/~r/phollow/iuEO/~3/6Df6unpl6Os/mes-polices-web-preferees-serifs" />
    <title>Mes polices web préférées [serifs]</title>
    <published>2011-10-23T22:04:59+02:00</published>
    <updated>2011-10-23T22:04:59+02:00</updated>
    <author>
      <name>Jérôme Mahuet</name>
      <uri>http://phollow.fr/</uri>
    </author>
    <content type="html">&lt;p&gt;Le marché des &lt;em&gt;« web fonts »&lt;/em&gt; ne s'est jamais aussi bien porté. Et son avenir le semble tout autant. La quantité et la qualité des polices croissent tous les jours et avec l'aide des services comme &lt;a title="typekit" href="http://typekit.com" target="_blank"&gt;Adobe Typekit&lt;/a&gt; et &lt;a title="Google WebFonts" href="http://www.google.com/webfonts" target="_blank"&gt;Google WebFonts&lt;/a&gt;, l'intégration est simple.&lt;/p&gt;

&lt;p&gt;Le processus de création d'une police pour le format web est moins simple que l'on peut le penser au premier abord. Il ne suffit pas de prendre une simple .ttf et de la convertir au format &lt;span class="code"&gt;@font-face&lt;/span&gt;. La police doit être retravaillée complètement pour être lisible sur les différents OS/Navigateur. Un processus appelé en anglais &lt;em&gt;« hinting »&lt;/em&gt; et très bien expliqué &lt;a title="Type rendering" href="http://blog.typekit.com/2010/10/05/type-rendering-on-the-web/" target="_blank"&gt;ici&lt;/a&gt; et &lt;a title="Type rendering" href="http://blog.typekit.com/2010/10/15/type-rendering-operating-systems/" target="_blank"&gt;là&lt;/a&gt; par Typekit. Les grandes fonderies travaillent donc à convertir leurs grands classiques au format web, pour mon plus grand plaisir !
J'ai donc décidé dans cet article de vous présenter ma série de polices web préférées du moment, en me concentrant uniquement aujourd'hui sur la famille des &lt;strong&gt;serifs&lt;/strong&gt;. Vous l'aurez compris d'autres articles viendront plus tard dans le même style.&lt;/p&gt;

&lt;h3&gt;FF Meta Serif Web Pro&lt;/h3&gt;
&lt;p&gt;Cette police a été créee en partant de la version sans-serif de base (FF Meta). Elle a été développée en 3 ans par 3 designers Erik Spiekermann, Christian Schwartz &lt;em&gt;&amp;amp;&lt;/em&gt; Kris Sowersby.&lt;/p&gt;

&lt;figure&gt;&lt;a title="Trent Walton" href="http://trentwalton.com/info/" target="_blank"&gt;&lt;img class="alignnone size-full wp-image-3607" title="Trent Walton" src="http://s3-eu-west-1.amazonaws.com/phollow/2011/10/Capture-d’écran-2011-10-23-à-19.34.42.jpg" alt="Trent Walton" width="700" height="339" /&gt;&lt;/a&gt;

&lt;figcaption&gt;&lt;strong&gt;Fig. 1:&lt;/strong&gt; Le blog personnel de Trent Walton utilise cette police à 100%. Elle rend bien à n'importe quelle taille que ça soit pour les paragraphes ou les headings grâce notamment à son « x-height » élevé.&lt;/figcaption&gt; &lt;/figure&gt;
&lt;h3&gt;Adobe Minion Pro&lt;/h3&gt;
&lt;p&gt;Une police Adobe désignée par Robert Slimbach dans les années 90. Elle a le style des polices utilisées dans les livres pendant la Renaissance. Minion est élégante et très lisible.&lt;/p&gt;

&lt;figure&gt;&lt;a href="http://robweychert.com/"&gt;&lt;img class="alignnone size-full wp-image-3616" title="http://robweychert.com/" src="http://s3-eu-west-1.amazonaws.com/phollow/2011/10/Capture-d’écran-2011-10-23-à-20.00.43.jpg" alt="http://robweychert.com/" width="701" height="465" /&gt;&lt;/a&gt;

&lt;figcaption&gt;&lt;strong&gt;Fig. 2:&lt;/strong&gt; Le blog de Rob Weychert l'utilise dans ces paragraphes.&lt;/figcaption&gt; &lt;/figure&gt;
&lt;h3&gt;FF Tisa Web Pro&lt;/h3&gt;
&lt;p&gt;Dessinée par Mitja Miklavčič pour l'usage dans des magazines modernes. Un &lt;em&gt;« x-height »&lt;/em&gt; large et des serifs prononcés améliorent la lisibilité. Et je trouve vraiment la version italique jolie.&lt;/p&gt;

&lt;figure&gt;&lt;a href="http://simplebits.com/"&gt;&lt;img class="alignnone size-full wp-image-3621" title="Simplebits" src="http://s3-eu-west-1.amazonaws.com/phollow/2011/10/Capture-d’écran-2011-10-23-à-20.23.03.jpg" alt="Simplebits" width="700" height="340" /&gt;&lt;/a&gt;

&lt;figcaption&gt;&lt;strong&gt;Fig. 3:&lt;/strong&gt; Dan Cederholm l'utilise dans les paragraphes de ces articles.&lt;/figcaption&gt; &lt;/figure&gt;
&lt;h3&gt;Skolar Web&lt;/h3&gt;
&lt;p&gt;Skolar, la police primée conçue par David Březina, est une serif qui a été désignée à l'origine pour des publications savantes et multilingues. La police maintient sa crédibilité tout en incorporant un style subtil personnel.&lt;/p&gt;

&lt;figure&gt;&lt;a href="http://elliotjaystocks.com/about/"&gt;&lt;img class="alignnone size-full wp-image-3626" title="http://elliotjaystocks.com/about/" src="http://s3-eu-west-1.amazonaws.com/phollow/2011/10/Capture-d’écran-2011-10-23-à-20.39.34.jpg" alt="http://elliotjaystocks.com/about/" width="700" height="345" /&gt;&lt;/a&gt;

&lt;figcaption&gt;&lt;strong&gt;Fig. 4:&lt;/strong&gt; Elliot Jay Stocks utilise cette police à toutes les sauces. Dans les paragraphes ou les titres en majuscules avec un letter-spacing etc.&lt;/figcaption&gt; &lt;/figure&gt;
&lt;h3&gt;FF Scala Web&lt;/h3&gt;
&lt;blockquote style="margin-bottom:0"&gt;FF Scala is an old style, humanist, serif typeface designed by Dutch typeface designer Martin Majoor in 1990 for the Vredenburg Music Center in Utrecht, the Netherlands. The FF Scala font family was named for the Teatro alla Scala (1776–78) in Milan. Like many contemporary Dutch serif faces, FF Scala is not an academic revival of a single historic typeface but shows influences of several historic models. Similarities can be seen with William Addison Dwiggins' 1935 design Electra in its clarity of form, and rhythmic, highly calligraphic italics. Eric Gill's 1931 typeface Joanna (released by Monotype in 1937), with its old style armature but nearly square serifs is also similar in its nearly mono-weighted stroke width.&lt;/blockquote&gt;
&lt;cite style="color:#99968A;margin-bottom: 20px;display: block;"&gt;— Wikipedia, &lt;a title="FF Scala" href="http://en.wikipedia.org/wiki/FF_Scala" target="_blank"&gt;source&lt;/a&gt;&lt;/cite&gt;

&lt;p&gt;C'est la police que j'utilise dans les paragraphes de ce blog. J'aime beaucoup les détails calligraphiques. Il existe plusieurs familles dont une &lt;em&gt;condensée&lt;/em&gt; et une &lt;em&gt;« small-caps »&lt;/em&gt;. Et aussi une version sans-serif.
Toutes ces &lt;em&gt;fonts&lt;/em&gt; sont disponibles sur &lt;a title="Typekit" href="http://typekit.com" target="_blank"&gt;Typekit&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;C'est d'ailleurs ce service que j'utilise, parce que c'est là où toutes les polices professionnelles se trouvent. J'ai testé un peu Google WebFonts et à vrai dire je n'en trouve pas beaucoup de bonne qualité. À part peut-être la famille de fonts Droid ou Lobster la nouvelle Comic Sans de nos chers &lt;em&gt;designerfags&lt;/em&gt; en herbe — &lt;em&gt;Mais c'est cool ça fait retro !&lt;/em&gt; — Bref je m'égare, je garde ma haine pour la mauvaise utilisation de Lobster dans un article à part.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/L6AK6nJ3Vt7OylNiR-2PSdrX3fU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/L6AK6nJ3Vt7OylNiR-2PSdrX3fU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/L6AK6nJ3Vt7OylNiR-2PSdrX3fU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/L6AK6nJ3Vt7OylNiR-2PSdrX3fU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/phollow/iuEO/~4/6Df6unpl6Os" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://phollow.fr/2011/10/mes-polices-web-preferees-serifs</feedburner:origLink></entry>
  
  <entry>
    <id>http://phollow.fr/2011/10/les-cesures-dans-le-web</id>
    <link type="text/html" rel="alternate" href="http://feedproxy.google.com/~r/phollow/iuEO/~3/tdgDvM0Hfnk/les-cesures-dans-le-web" />
    <title>Les césures dans le web</title>
    <published>2011-10-10T23:59:14+02:00</published>
    <updated>2011-10-10T23:59:14+02:00</updated>
    <author>
      <name>Jérôme Mahuet</name>
      <uri>http://phollow.fr/</uri>
    </author>
    <content type="html">&lt;p&gt;En typographie, la &lt;strong&gt;césure&lt;/strong&gt; est l'art de couper un mot de telle manière à ce qu'il entre dans la justification. Cette pratique est utilisée dans les livres et depuis peu de temps possible aussi sur le web.&lt;/p&gt;
&lt;p&gt;On a inventé ce système pour pouvoir mettre plus de mots sur une page donc économiser du papier à l'imprimerie et améliorer la justification. Même si on n'utilise pas de papier sur le web, on peut toujours gagner de la place et améliorer l'aspect général de la typographie.&lt;/p&gt;
&lt;p&gt;Parfois les textes justifiés sont vraiment horribles sur les pages web, avec des &lt;em&gt;rivières&lt;/em&gt; monstrueuses. Les &lt;strong&gt;césures&lt;/strong&gt; améliorent nettement ça, donc passons maintenant au code.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://s3-eu-west-1.amazonaws.com/phollow/2011/10/books-900x600.jpg" alt="" title="books" width="900" height="600" class="alignnone size-large wp-image-3563" /&gt;&lt;/p&gt;
&lt;h3&gt;Nouvelle méthode CSS3&lt;/h3&gt;
&lt;pre&gt;
&lt;code&gt;
p {
    hyphens: auto;
    -webkit-hyphens: auto;
    -moz-hyphens: auto;
}
&lt;/code&gt;
&lt;/pre&gt;
&lt;p&gt;À l'heure où j'écris ces lignes, les navigateurs supportant ces propriétés sont &lt;strong&gt;Firefox&lt;/strong&gt; 6+ et &lt;strong&gt;Safari&lt;/strong&gt; 5.1+. Pour les désactiver il suffit de passer &lt;span class="code"&gt;auto&lt;/span&gt; en &lt;span class="code"&gt;manual&lt;/span&gt;. En mode manuel, les &lt;span class="code"&gt;&amp;amp;shy;&lt;/span&gt; sont néanmoins toujours respectés.&lt;/p&gt;
&lt;p&gt;Les césures ont des règles strictes d'utilisation, règles changeant suivant la langue. Le navigateur doit savoir dans quelle langue vous écrivez, donc vous devez la renseigner. Un &lt;span class="code"&gt;lang="fr"&lt;/span&gt; dans la balise &lt;span class="code"&gt;&amp;lt;html&amp;gt;&lt;/span&gt; suffit par exemple.&lt;/p&gt;
&lt;h3&gt;Hyphenator&lt;/h3&gt;
&lt;p&gt;Cette bibliothèque javascript permet d'activer les césures sur tous les navigateurs supportant le « &lt;em&gt;trait d'union conditionnel&lt;/em&gt; ». Ce caractère &lt;span class="code"&gt;&amp;amp;shy;&lt;/span&gt; est invisible quand on le place mais il sert à déterminer l'endroit où une césure peut avoir lieu.&lt;/p&gt;
&lt;p&gt;L'avantage de ce script est qu'il privilégie l'utilisation de la méthode CSS3 sur les navigateurs la supportant.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://code.google.com/p/hyphenator/" title="hyphenator.js" target="_blank"&gt;http://code.google.com/p/hyphenator/&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Examples&lt;/h3&gt;
&lt;p&gt;Les paragraphes de mon blog devraient maintenant tous fonctionner avec ce système de césures — &lt;em&gt;depuis la mise à jour du thème en fait&lt;/em&gt; — et donc vous devriez les voir sur cet article (et les autres) — à condition d'avoir un navigateur assez récent, mais je ne me fais pas de soucis pour vous.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Q2Gs9Ljlgeqt_HuSi0yry3MVd9A/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Q2Gs9Ljlgeqt_HuSi0yry3MVd9A/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Q2Gs9Ljlgeqt_HuSi0yry3MVd9A/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Q2Gs9Ljlgeqt_HuSi0yry3MVd9A/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/phollow/iuEO/~4/tdgDvM0Hfnk" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://phollow.fr/2011/10/les-cesures-dans-le-web</feedburner:origLink></entry>
  
  <entry>
    <id>http://phollow.fr/2011/10/css-multi-columns</id>
    <link type="text/html" rel="alternate" href="http://feedproxy.google.com/~r/phollow/iuEO/~3/m9_tSle5BtE/css-multi-columns" />
    <title>CSS Multi-Columns</title>
    <published>2011-10-07T00:28:43+02:00</published>
    <updated>2011-10-07T00:28:43+02:00</updated>
    <author>
      <name>Jérôme Mahuet</name>
      <uri>http://phollow.fr/</uri>
    </author>
    <content type="html">&lt;img style="margin-top:0;" class="alignnone size-full wp-image-3503" title="css" src="http://s3-eu-west-1.amazonaws.com/phollow/2011/10/css.png" alt="" width="832" height="300" /&gt;
&lt;h3&gt;Qu'est-ce que c'est ?&lt;/h3&gt;
&lt;p&gt;Le module CSS &lt;em&gt;multi-colums&lt;/em&gt; permet de diviser un long flux de texte en plusieurs colonnes de manière automatique. Et donc nous n'avons pas besoin, par exemple, pour 3 colonnes de créer 3 conteneurs. Cette technique est beaucoup utilisée dans les journaux ou les magazines mais encore très peu sur le web.&lt;/p&gt;

&lt;p&gt;Ainsi de larges blocs de texte peuvent être divisés facilement en sous-colonnes pour offrir une meilleure lecture et améliorer l'esthétisme d'un site. C'est un avantage aussi d'un point de vue sémantique, car on se passe de balises supplémentaires nécessaires pour avoir le même rendu sans CSS3.&lt;/p&gt;

&lt;p&gt;D'un autre côté la lisibilité d'un site peut être complètement ruinée avec une mauvaise utilisation de ce module. Un site web n'étant pas forcément statique comme le serait la page d'un magazine. Par exemple l'utilisateur ne doit pas avoir à scroller quand il lit la fin de la colonne et passe à la suivante.&lt;/p&gt;

&lt;h3&gt;Compatibilité des navigateurs&lt;/h3&gt;
&lt;ul&gt;
	&lt;li&gt;Opera 11.10+, Opera Mobile 11.10+&lt;/li&gt;
	&lt;li&gt;IE 10+&lt;/li&gt;
	&lt;li&gt;Firefox 3.6+&lt;/li&gt;
	&lt;li&gt;Safari 3.2+&lt;/li&gt;
	&lt;li&gt;Chrome 10+&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Utilisation&lt;/h3&gt;

&lt;p&gt;Il y a deux façons de créer des colonnes, on peut d'une part spécifier un nombre fixe de colonnes à l'aide de la propriété &lt;span class="code"&gt;column-count&lt;/span&gt; ou alors spécifier la largeur des colonnes à l'aide de &lt;span class="code"&gt;column-width&lt;/span&gt; (pixels ou ems, mais pas de pourcentage…). Les deux propriétés peuvent être cumulées, mais le navigateur choisira l'une ou l'autre suivant les cas. Il existe bien sur d'autre propriétés :&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;span class="code"&gt;column-gap&lt;/span&gt; pour gérer l'espacement entres les colonnes&lt;/li&gt;
	&lt;li&gt;&lt;span class="code"&gt;column-rule&lt;/span&gt;, &lt;span class="code"&gt;column-rule-width&lt;/span&gt;, &lt;span class="code"&gt;column-rule-style&lt;/span&gt;, &lt;span class="code"&gt;column-rule-color&lt;/span&gt; pour gérer l'apparence de la séparation des colonnes&lt;/li&gt;
	&lt;li&gt;&lt;span class="code"&gt;break-before&lt;/span&gt;, &lt;span class="code"&gt;break-after&lt;/span&gt;, &lt;span class="code"&gt;break-inside&lt;/span&gt; permet par exemple de forcer le passage d'un élément sur la colonne suivante. Plus d'infos sur le site du &lt;a title="w3c" href="http://www.w3.org/TR/css3-multicol/#column-breaks" target="_blank"&gt;w3c&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Exemples&lt;/h3&gt;
&lt;h4&gt;Séparation en deux colonnes&lt;/h4&gt;

&lt;div style="font-size: 80%; column-count: 2; column-gap: 20px; -moz-column-count: 2; -moz-column-gap: 20px; -o-column-count: 2; -o-column-gap: 20px; -webkit-column-count: 2; -webkit-column-gap: 20px; text-align: justify;"&gt;

&lt;p&gt;Now that we know who you are, I know who I am. I'm not a mistake! It all makes sense! In a comic, you know how you can tell who the arch-villain's going to be? He's the exact opposite of the hero. And most times they're friends, like you and me! I should've known way back when... You know why, David? Because of the kids. They called me Mr Glass.&lt;/p&gt;

&lt;p&gt;Do you see any Teletubbies in here? Do you see a slender plastic tag clipped to my shirt with my name printed on it? Do you see a little Asian child with a blank expression on his face sitting outside on a mechanical helicopter that shakes when you put quarters in it? No? Well, that's what you see at a toy store. And you must think you're in a toy store, because you're here shopping for an infant named Jeb.&lt;/p&gt;

&lt;p&gt;Now that there is the Tec-9, a crappy spray gun from South Miami. This gun is advertised as the most popular gun in American crime. Do you believe that shit? It actually says that in the little book that comes with it: the most popular gun in American crime. Like they're actually proud of that shit.&lt;/p&gt;

&lt;p&gt;Now that we know who you are, I know who I am. I'm not a mistake! It all makes sense! In a comic, you know how you can tell who the arch-villain's going to be? He's the exact opposite of the hero. And most times they're friends, like you and me! I should've known way back when... You know why, David? Because of the kids. They called me Mr Glass.&lt;/p&gt;

&lt;p&gt;Look, just because I don't be givin' no man a foot massage don't make it right for Marsellus to throw Antwone into a glass motherfuckin' house, fuckin' up the way the nigger talks. Motherfucker do that shit to me, he better paralyze my ass, 'cause I'll kill the motherfucker, know what I'm sayin'?&lt;/p&gt;

&lt;p&gt;Well, the way they make shows is, they make one show. That show's called a pilot. Then they show that show to the people who make shows, and on the strength of that one show they decide if they're going to make more shows. Some pilots get picked and become television programs. Some don't, become nothing. She starred in one of the ones that became nothing.&lt;/p&gt;

&lt;/div&gt;
&lt;h4&gt;Code&lt;/h4&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;code class="css"&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="nc"&gt;.twocol&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="n"&gt;column&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="n"&gt;column&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;gap&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;20px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;moz&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;column&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;moz&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;column&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;gap&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;20px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="err"&gt;o&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;column&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="err"&gt;o&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;column&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;gap&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;20px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;webkit&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;column&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;webkit&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;column&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;gap&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;20px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;h4&gt;Séparation en trois colonnes + style&lt;/h4&gt;
&lt;div style="font-size: 75%; column-count: 3; column-gap: 10px; column-rule-color: #ccc; column-rule-style: dotted; column-rule-width: 2px; -moz-column-count: 3; -moz-column-gap: 10px; -moz-column-rule-color: #ccc; -moz-column-rule-style: dotted; -moz-column-rule-width: 2px; -o-column-count: 3; -o-column-gap: 10px; -o-column-rule-color: #ccc; -o-column-rule-style: dotted; -o-column-rule-width: 2px; -webkit-column-count: 3; -webkit-column-gap: 10px; -webkit-column-rule-color: #ccc; -webkit-column-rule-style: dotted; -webkit-column-rule-width: 2px; text-align: justify;"&gt;

&lt;p&gt;The path of the righteous man is beset on all sides by the iniquities of the selfish and the tyranny of evil men. Blessed is he who, in the name of charity and good will, shepherds the weak through the valley of darkness, for he is truly his brother's keeper and the finder of lost children. And I will strike down upon thee with great vengeance and furious anger those who would attempt to poison and destroy My brothers. And you will know My name is the Lord when I lay My vengeance upon thee.&lt;/p&gt;

&lt;p&gt;Look, just because I don't be givin' no man a foot massage don't make it right for Marsellus to throw Antwone into a glass motherfuckin' house, fuckin' up the way the nigger talks. Motherfucker do that shit to me, he better paralyze my ass, 'cause I'll kill the motherfucker, know what I'm sayin'?&lt;/p&gt;

&lt;p&gt;Your bones don't break, mine do. That's clear. Your cells react to bacteria and viruses differently than mine. You don't get sick, I do. That's also clear. But for some reason, you and I react the exact same way to water. We swallow it too fast, we choke. We get some in our lungs, we drown. However unreal it may seem, we are connected, you and I. We're on the same curve, just on opposite ends.&lt;/p&gt;

&lt;p&gt;Now that we know who you are, I know who I am. I'm not a mistake! It all makes sense! In a comic, you know how you can tell who the arch-villain's going to be? He's the exact opposite of the hero. And most times they're friends, like you and me! I should've known way back when... You know why, David? Because of the kids. They called me Mr Glass.&lt;/p&gt;

&lt;p&gt;Well, the way they make shows is, they make one show. That show's called a pilot. Then they show that show to the people who make shows, and on the strength of that one show they decide if they're going to make more shows. Some pilots get picked and become television programs. Some don't, become nothing. She starred in one of the ones that became nothing.&lt;/p&gt;

&lt;p&gt;Normally, both your asses would be dead as fucking fried chicken, but you happen to pull this shit while I'm in a transitional period so I don't wanna kill you, I wanna help you. But I can't give you this case, it don't belong to me. Besides, I've already been through too much shit this morning over this case to hand it over to your dumb ass.&lt;/p&gt;

&lt;/div&gt;
&amp;nbsp;
&lt;h4&gt;Code&lt;/h4&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;code class="css"&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="nc"&gt;.threecol&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
	&lt;span class="n"&gt;column&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
	&lt;span class="n"&gt;column&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;gap&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;10px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
	&lt;span class="n"&gt;column&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;rule&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="k"&gt;color&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#ccc&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
	&lt;span class="n"&gt;column&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;rule&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;style&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="k"&gt;dotted&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
	&lt;span class="n"&gt;column&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;rule&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="k"&gt;width&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
	&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;moz&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;column&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
	&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;moz&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;column&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;gap&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;10px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
	&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;moz&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;column&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;rule&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="k"&gt;color&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#ccc&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
	&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;moz&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;column&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;rule&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;style&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="k"&gt;dotted&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
	&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;moz&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;column&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;rule&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="k"&gt;width&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
	&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="err"&gt;o&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;column&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
	&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="err"&gt;o&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;column&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;gap&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;10px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
	&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="err"&gt;o&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;column&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;rule&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="k"&gt;color&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#ccc&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
	&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="err"&gt;o&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;column&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;rule&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;style&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="k"&gt;dotted&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
	&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="err"&gt;o&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;column&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;rule&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="k"&gt;width&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
	&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;webkit&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;column&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
	&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;webkit&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;column&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;gap&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;10px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
	&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;webkit&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;column&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;rule&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="k"&gt;color&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#ccc&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
	&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;webkit&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;column&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;rule&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;style&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="k"&gt;dotted&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
	&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;webkit&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;column&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;rule&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="k"&gt;width&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;h3&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;La propriété CSS &lt;em&gt;multi-columns&lt;/em&gt; se dégrade assez naturellement sur les navigateurs qui ne supporte pas encore la spécification. On voit simplement qu'une seule colonne. Pouvoir gérer ce genre de layout sans avoir recours à des scripts quelconque est vraiment pratique. À l'heure où les designers donnent de plus en plus d'importance à la lisibilité du contenu, je pense qu'on en verra un peu plus d'ici quelques temps.&lt;/p&gt;

&lt;p&gt;P.S. : Vous avez reconnu les citations des exemples ?&lt;/p&gt;

&lt;p&gt;Réf. : &lt;a href="http://www.w3.org/TR/css3-multicol/" target="_blank"&gt;Spécifications&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ubbUm5OpKXKz8tjB_t5gLglaLOE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ubbUm5OpKXKz8tjB_t5gLglaLOE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ubbUm5OpKXKz8tjB_t5gLglaLOE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ubbUm5OpKXKz8tjB_t5gLglaLOE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/phollow/iuEO/~4/m9_tSle5BtE" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://phollow.fr/2011/10/css-multi-columns</feedburner:origLink></entry>
  
  <entry>
    <id>http://phollow.fr/2011/08/un-exercice-sur-le-responsive-web-design</id>
    <link type="text/html" rel="alternate" href="http://feedproxy.google.com/~r/phollow/iuEO/~3/DKoE-_JrRDw/un-exercice-sur-le-responsive-web-design" />
    <title>Un exercice sur le Responsive Web Design</title>
    <published>2011-08-28T18:44:28+02:00</published>
    <updated>2011-08-28T18:44:28+02:00</updated>
    <author>
      <name>Jérôme Mahuet</name>
      <uri>http://phollow.fr/</uri>
    </author>
    <content type="html">&lt;p&gt;Mon blog est maintenant &lt;em&gt;responsive&lt;/em&gt;. Terme que l'on peut traduire à l'arrache par &lt;em&gt;qui répond bien&lt;/em&gt;. Le thème et le contenu va automatiquement s'adapter à la taille de l'écran. Le concept est intéressant et plus pratique que de faire un thème normal + un thème mobile par exemple. À l'heure actuelle les sites internets ne sont plus seulement affichés sur un ordinateur mais de plus en plus souvent sur des appareils de type mobile, smartphones ou tablettes.&lt;/p&gt;

&lt;h3&gt;S'adapter&lt;/h3&gt;

&lt;p&gt;Au début on avait pas énormément d'appareils &lt;em&gt;exotiques&lt;/em&gt; en dehors du desktop. On voyait souvent un sous-domaine dédié à l'affichage d'un site sous iPhone, avec un thème propre. D'un point de vue conception on était tranquille, le thème mobile était indépendant du thème principal, et on connaissait les contraintes de l'iPhone. Mais maintenant on a beaucoup plus de smartphones et même des tablettes, chaque appareil possédant sa propre résolution. Et là on se rend compte que faire un thème dédié pour chacun de ces appareils est une idée complètement idiote. Donc le site web doit &lt;strong&gt;s'adapter&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;Bonjour media query&lt;/h3&gt;

&lt;p&gt;Vous les avez déjà utilisées. Mais si, &lt;span class="code"&gt;media="print"&lt;/span&gt; pour avoir un CSS dédié à l'impression par exemple. C'est pas nouveau, ça date de la norme CSS 2.1. Ce qui est nouveau se sont les ajouts de la norme CSS3. Des ajouts nous permettant de tester la résolution de l'écran, le type de &lt;em&gt;device&lt;/em&gt; etc.&lt;/p&gt;

&lt;span class="code"&gt;&amp;lt;link rel="stylesheet" type="text/css" media="screen and (max-device-width: 480px)" href="mobile.css"/&amp;gt;&lt;/span&gt;

&lt;p&gt;Si l'appareil à une résolution inférieure ou égale à 480px en largeur, le fichier mobile.css sera lu. L'attribut &lt;span class="code"&gt;@media&lt;/span&gt; du CSS permet de faire la même chose sans avoir à le faire dans la balise &lt;span class="code"&gt;&amp;lt;link&amp;gt;&lt;/span&gt;.&lt;/p&gt;

&lt;p&gt;Par exemple sur ce site quand la résolution devient petite, j'enlève la sidebar sur la gauche pour la placer en dessous du contenu. C'est ce que permettent de faire les &lt;strong&gt;media queries&lt;/strong&gt;. On peut imaginer faire disparaître certains éléments qui n'auraient par leur place sur un petit écran, avec un &lt;span class="code"&gt;display:none;&lt;/span&gt; par exemple.&lt;/p&gt;

&lt;p&gt;Les media queries de ce type ne fonctionnent que sur les navigateurs récents et sur la plupart des navigateurs mobiles (webkit, opera). Il y a donc un script js que j'utilise pour certains navigateurs (&lt;em&gt;Oh hai, Internet Explorer&lt;/em&gt;). Vous pouvez le trouver sur &lt;a title="respond.js" href="https://github.com/scottjehl/respond" target="_blank"&gt;cette page&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Responsive Grid&lt;/h3&gt;

&lt;p&gt;Pour me faciliter le travail j'ai utilisé une Grid CSS réactive. Construite sur les media queries, les différents blocs peuvent se ré-agencer suivant la taille de l'écran. Voici une liste non-exhaustive&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a title="Less Framework 4" href="http://lessframework.com/" target="_blank"&gt;Less Framework 4&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a title="Less+ Framework" href="http://www.angrycreative.se/projekt/less-framework/" target="_blank"&gt;Less+ Framework&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a title="Skeleton" href="http://www.getskeleton.com/" target="_blank"&gt;Skeleton&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a title="320 and up" href="http://stuffandnonsense.co.uk/projects/320andup/" target="_blank"&gt;320 and up&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;FitText&lt;/h3&gt;

&lt;div&gt;&lt;img class="alignnone size-medium wp-image-3487" title="Capture d’écran 2011-09-06 à 11.23.57" src="http://s3-eu-west-1.amazonaws.com/phollow/2011/08/Capture-d’écran-2011-09-06-à-11.23.57-832x415.jpg" alt="" width="832" height="415" /&gt;&lt;/div&gt;
&amp;nbsp;

&lt;p&gt;&lt;a title="FitText.js" href="http://fittextjs.com/" target="_blank"&gt;FitText.js&lt;/a&gt; est un plugin jQuery permettant de rendre les tailles de polices flexibles. Je l'utilise pour certains headers. Ce plugin va les redimensionner par rapport à la taille du conteneur. Pratique.&lt;/p&gt;

&lt;h3&gt;Thème Phollow&lt;/h3&gt;

&lt;p&gt;Je met en ligne la source du thème Wordpress actuel sur Github pour les personnes intéressées. Vous pouvez le trouver sur &lt;a title="Phollow Wordpress Theme" href="https://github.com/Rydgel/Phollow3-Theme" target="_blank"&gt;cette adresse&lt;/a&gt;. Les forks sont fortement encouragés.&lt;p&gt;

&lt;p&gt;Pour moi il est maintenant obligatoire de travailler sur des sites qui fonctionnent sur &lt;em&gt;n'importe quelles&lt;/em&gt; resolutions que sur des sites qui fonctionnent sur les résolutions des appareils actuels.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/dVo4ljgLqzIoqXqbClcbXJA5iYw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dVo4ljgLqzIoqXqbClcbXJA5iYw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/dVo4ljgLqzIoqXqbClcbXJA5iYw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dVo4ljgLqzIoqXqbClcbXJA5iYw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/phollow/iuEO/~4/DKoE-_JrRDw" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://phollow.fr/2011/08/un-exercice-sur-le-responsive-web-design</feedburner:origLink></entry>
  
  <entry>
    <id>http://phollow.fr/2011/08/wallpapers-of-the-week-19</id>
    <link type="text/html" rel="alternate" href="http://feedproxy.google.com/~r/phollow/iuEO/~3/oGtYebm4tnQ/wallpapers-of-the-week-19" />
    <title>Wallpapers of the Week</title>
    <published>2011-08-08T12:04:10+02:00</published>
    <updated>2011-08-08T12:04:10+02:00</updated>
    <author>
      <name>Jérôme Mahuet</name>
      <uri>http://phollow.fr/</uri>
    </author>
    <content type="html">&lt;p style="text-align: justify;"&gt;Wallpapers of the Week : 8 août 2011.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;span id="title_div5055987677" class="upper" style="text-align: justify;"&gt;&lt;a href="http://www.flickr.com/photos/22890143@N04/5055987677/in/photostream/" target="_blank"&gt;NY state of mind vs LA state of mind&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;img class="mainimage alignnone size-large wp-image-3415" title="5055987677_6e9166ddc1_b" src="http://s3-eu-west-1.amazonaws.com/phollow/2011/08/5055987677_6e9166ddc1_b-804x554.jpg" alt="" width="804" height="554" /&gt;&lt;/p&gt;
&lt;!--more--&gt;
&lt;span class="upper"&gt;&lt;a href="http://liqui.deviantart.com/art/green-ish-244638331"&gt;green...ish?&lt;/a&gt; &lt;small&gt;by ~&lt;a href="http://liqui.deviantart.com/"&gt;liqui&lt;/a&gt;&lt;/small&gt;&lt;/span&gt;
&lt;img class="alignnone size-medium wp-image-3416" title="green___ish__by_liqui-d41ng57" src="http://s3-eu-west-1.amazonaws.com/phollow/2011/08/green___ish__by_liqui-d41ng57-537x335.jpg" alt="" width="537" height="335" /&gt;

&lt;span class="upper"&gt;&lt;a href="http://zim2687.deviantart.com/art/Grape-Leaves-214266009"&gt;Grape Leaves&lt;/a&gt; &lt;small&gt;by ~&lt;a href="http://zim2687.deviantart.com/"&gt;Zim2687&lt;/a&gt;&lt;/small&gt;&lt;/span&gt;

&lt;img class="alignnone size-medium wp-image-3420" title="2560x1440 Grape Leaves by Zim2687" src="http://s3-eu-west-1.amazonaws.com/phollow/2011/08/2560x1440-Grape-Leaves-by-Zim2687-537x302.jpg" alt="" width="537" height="302" /&gt;

&lt;span class="upper"&gt;&lt;a href="http://irvinggfm.deviantart.com/art/Icewind-Dale-215409803"&gt;Icewind Dale&lt;/a&gt; &lt;small&gt;by *&lt;a href="http://irvinggfm.deviantart.com/"&gt;IrvingGFM&lt;/a&gt;&lt;/small&gt;&lt;/span&gt;

&lt;img class="alignnone size-medium wp-image-3422" title="Icewind Dale 1440 x 900" src="http://s3-eu-west-1.amazonaws.com/phollow/2011/08/Icewind-Dale-1440-x-900-537x335.jpg" alt="" width="537" height="335" /&gt;

&lt;span class="upper"&gt;&lt;a href="http://katz93.deviantart.com/art/Suong-Dem-212784766"&gt;Suong Dem&lt;/a&gt; &lt;small&gt;by =&lt;a href="http://katz93.deviantart.com/"&gt;kAtz93&lt;/a&gt;&lt;/small&gt;&lt;/span&gt;

&lt;a href="http://www.flickr.com/photos/22890143@N04/5055987677/in/photostream/" target="_blank"&gt;&lt;img title="Suong Dem" src="http://s3-eu-west-1.amazonaws.com/phollow/2011/08/Suong-Dem-537x339.png" alt="" width="537" height="339" /&gt;&lt;/a&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/VEmiFymU9LAfuWn1887SNdu19Mg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/VEmiFymU9LAfuWn1887SNdu19Mg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/VEmiFymU9LAfuWn1887SNdu19Mg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/VEmiFymU9LAfuWn1887SNdu19Mg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/phollow/iuEO/~4/oGtYebm4tnQ" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://phollow.fr/2011/08/wallpapers-of-the-week-19</feedburner:origLink></entry>
  
  <entry>
    <id>http://phollow.fr/2011/08/mockups-des-futures-versions-de-firefox-7-8-e28094-mac-windows</id>
    <link type="text/html" rel="alternate" href="http://feedproxy.google.com/~r/phollow/iuEO/~3/xvF32pUn3RU/mockups-des-futures-versions-de-firefox-7-8-e28094-mac-windows" />
    <title>Mockups des futures versions de Firefox 7 &amp; 8 — Mac, Windows</title>
    <published>2011-08-04T21:15:20+02:00</published>
    <updated>2011-08-04T21:15:20+02:00</updated>
    <author>
      <name>Jérôme Mahuet</name>
      <uri>http://phollow.fr/</uri>
    </author>
    <content type="html">&lt;p style="text-align: justify;"&gt;La team des designers Firefox ne cesse de rechercher à améliorer l'ergonomie du navigateur. Et aujourd'hui ils nous proposent des mockups de ce que pourrait ressembler les futures versions de Firefox 7 ou 8. Firefox 4 avait déjà vu son interface grandement changée, l'histoire risque encore de se répéter — &lt;em&gt;et c'est tant mieux !&lt;/em&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;!--more--&gt;Ces mockups ne seront pas forcément une image exacte des versions finales. Ils ont été réalisés avant tout dans une optique de recherche et de discussions. On peut voir sur ces premiers écrans la disparition de la barre de recherche, &lt;em&gt;que j'avais déjà enlevé personnellement la trouvant inutile&lt;/em&gt;, un nouveau style de menu et un mode plein-écran qui a l'air plutôt sympathique.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;a href="http://s3-eu-west-1.amazonaws.com/phollow/2011/08/01-Firefox-Australis-Mac.jpg"&gt;&lt;img class="mainimage alignnone size-large wp-image-3394" title="Firefox 7 - 1" src="http://s3-eu-west-1.amazonaws.com/phollow/2011/08/01-Firefox-Australis-Mac-804x536.jpg" alt="Firefox 7 - 1" width="804" height="536" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;a href="http://s3-eu-west-1.amazonaws.com/phollow/2011/08/02-Firefox-Australis-Mac-FxMenu.jpg"&gt;&lt;img class="mainimage alignnone size-large wp-image-3395" title="Firefox 7 - 2" src="http://s3-eu-west-1.amazonaws.com/phollow/2011/08/02-Firefox-Australis-Mac-FxMenu-804x536.jpg" alt="Firefox 7 - 2" width="804" height="536" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;a href="http://s3-eu-west-1.amazonaws.com/phollow/2011/08/03-Firefox-Australis-Mac-AddOns.jpg"&gt;&lt;img class="mainimage alignnone size-large wp-image-3396" title="Firefox 7 - 3" src="http://s3-eu-west-1.amazonaws.com/phollow/2011/08/03-Firefox-Australis-Mac-AddOns-804x536.jpg" alt="Firefox 7 - 3" width="804" height="536" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;a href="http://s3-eu-west-1.amazonaws.com/phollow/2011/08/06-Firefox-Australis-Mac-Persona.jpg"&gt;&lt;img class="mainimage alignnone size-large wp-image-3397" title="Firefox 7 - 4" src="http://s3-eu-west-1.amazonaws.com/phollow/2011/08/06-Firefox-Australis-Mac-Persona-804x536.jpg" alt="Firefox 7 - 4" width="804" height="536" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;a href="http://s3-eu-west-1.amazonaws.com/phollow/2011/08/01-Firefox-Australis-Mac-Fullscreen.jpg"&gt;&lt;img class="mainimage alignnone size-large wp-image-3398" title="Firefox 7 - 5" src="http://s3-eu-west-1.amazonaws.com/phollow/2011/08/01-Firefox-Australis-Mac-Fullscreen-804x536.jpg" alt="Firefox 7 - 5" width="804" height="536" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;a href="http://s3-eu-west-1.amazonaws.com/phollow/2011/08/01-Firefox-Australis-Windows.jpg"&gt;&lt;img class="mainimage alignnone size-large wp-image-3400" title="Firefox 7 - 6" src="http://s3-eu-west-1.amazonaws.com/phollow/2011/08/01-Firefox-Australis-Windows-804x536.jpg" alt="Firefox 7 - 6" width="804" height="536" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;a href="http://s3-eu-west-1.amazonaws.com/phollow/2011/08/01-Firefox-Australis-Windows-Fullscreen.jpg"&gt;&lt;img class="mainimage alignnone size-large wp-image-3401" title="Firefox 7 - 7" src="http://s3-eu-west-1.amazonaws.com/phollow/2011/08/01-Firefox-Australis-Windows-Fullscreen-804x536.jpg" alt="Firefox 7 - 7" width="804" height="536" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Comme d'habitude ces expérimentations sont ouvertes et disponibles pour ceux qui veulent les tester. Mozilla a crée un nouveau build appelé Australis et téléchargeable à &lt;a title="Firefox 8 - Australis - UX" href="https://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-ux/" target="_blank"&gt;cette adresse&lt;/a&gt;. Ce build est une nightly, donc tous les jours une update pourra être téléchargée. La team UX Firefox déclare que c'est sur cette version que seront déposé leurs différents tests.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Maintenant je vais faire mon community manager en vous demandant ce que vous pensez de ces premiers concepts ? Pour ma part ça me plaît beaucoup même si on voit encore que Chrome a pas mal inspiré nos designers.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Via &lt;a title="Mozilla" href="http://people.mozilla.com/~shorlander/ux-presentation/ux-presentation.html" target="_blank"&gt;Mozilla&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/C3D-OT9mNwKkXi-jfwvyMh88WGM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/C3D-OT9mNwKkXi-jfwvyMh88WGM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/C3D-OT9mNwKkXi-jfwvyMh88WGM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/C3D-OT9mNwKkXi-jfwvyMh88WGM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/phollow/iuEO/~4/xvF32pUn3RU" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://phollow.fr/2011/08/mockups-des-futures-versions-de-firefox-7-8-e28094-mac-windows</feedburner:origLink></entry>
  
  <entry>
    <id>http://phollow.fr/2011/07/dotshare-it-partage-de-dotfiles</id>
    <link type="text/html" rel="alternate" href="http://feedproxy.google.com/~r/phollow/iuEO/~3/aTTasqvySGQ/dotshare-it-partage-de-dotfiles" />
    <title>Dotshare.it, partage de .dotfiles</title>
    <published>2011-07-27T12:45:31+02:00</published>
    <updated>2011-07-27T12:45:31+02:00</updated>
    <author>
      <name>Jérôme Mahuet</name>
      <uri>http://phollow.fr/</uri>
    </author>
    <content type="html">&lt;p style="text-align: justify;"&gt;Je joue beaucoup avec les dotfiles – ces petits fichiers cachés qui servent généralement à configurer un programme. Si vous aimez justement personnaliser votre système, vous en avez sans doute ouverts déjà pas mal. C'est là ou rentre en jeu &lt;a title="Dotshare.it" href="http://dotshare.it/" target="_blank"&gt;Dotshare.it&lt;/a&gt;, un site web que l'on ma présenté il y a quelques temps.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Généralement il y a toujours un thread &lt;em&gt;Post your screenshot and configs&lt;/em&gt; sur les différents forum des distributions *nix. La config était généralement collée à l'arrache en dessous. Pas pratique pour les retrouver plus tard. Certains utilisent Github, ce qui me semble déjà une bonne évolution mais encore à un niveau en dessous de Dotshare, &lt;em&gt;qui lui est fait seulement pour ça&lt;/em&gt;.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;!--more--&gt;Dotshare.it veut donc faciliter le partage et la recherche de fichiers dotfiles. Ils sont triés par applications, avec une capture du résultat. On peut aller chercher tous les fichiers d'un utilisateur en particulier sur sa page profil, suivre cette personne pour être alerté des updates etc.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;img class="alignnone size-medium wp-image-3376" title="Capture d’écran 2011-07-27 à 13.24.27" src="http://s3-eu-west-1.amazonaws.com/phollow/2011/07/Capture-d’écran-2011-07-27-à-13.24.27-537x376.jpg" alt="" width="537" height="376" /&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Le look du site web est minimaliste et c'est une bonne chose. Ça ne devrait pas trop piquer les yeux des adeptes des CLI tools. L'information est bien présentée et l'essentiel est là. Il y a même des petites références au monde de la ligne de commande, comme &lt;em&gt;scrot&lt;/em&gt; pour voir la capture du logiciel.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;img class="mainimage alignnone size-large wp-image-3378" title="Capture d’écran 2011-07-27 à 13.33.06" src="http://s3-eu-west-1.amazonaws.com/phollow/2011/07/Capture-d’écran-2011-07-27-à-13.33.06-804x365.jpg" alt="" width="804" height="365" /&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;img class="mainimage alignnone size-large wp-image-3379" title="Capture d’écran 2011-07-27 à 13.38.51" src="http://s3-eu-west-1.amazonaws.com/phollow/2011/07/Capture-d’écran-2011-07-27-à-13.38.51-804x302.jpg" alt="" width="804" height="302" /&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;On a donc tout pour avoir un joli petit réseau social pour le partage des fichier de conf. Unix. Reste à voir si les gens vont suivre. Si vous avez des recommendations ou des demandes à faire aux devs vous pouvez toujours allez faire un tour sur &lt;em&gt;#dotshare at freenode.&lt;/em&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Via &lt;a title="Dotshare.it" href="http://dotshare.it/" target="_blank"&gt;dotshare&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Cxe6Nipd6Wf06sLgswMODGYPWt0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Cxe6Nipd6Wf06sLgswMODGYPWt0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Cxe6Nipd6Wf06sLgswMODGYPWt0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Cxe6Nipd6Wf06sLgswMODGYPWt0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/phollow/iuEO/~4/aTTasqvySGQ" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://phollow.fr/2011/07/dotshare-it-partage-de-dotfiles</feedburner:origLink></entry>
  
  <entry>
    <id>http://phollow.fr/2011/05/streaming-twitter-nodejs-socket-io</id>
    <link type="text/html" rel="alternate" href="http://feedproxy.google.com/~r/phollow/iuEO/~3/bgGFUBByems/streaming-twitter-nodejs-socket-io" />
    <title>Streaming Twitter: NodeJS &amp; Socket.IO</title>
    <published>2011-05-15T20:48:38+02:00</published>
    <updated>2011-05-15T20:48:38+02:00</updated>
    <author>
      <name>Jérôme Mahuet</name>
      <uri>http://phollow.fr/</uri>
    </author>
    <content type="html">&lt;img class="alignnone size-full wp-image-3324" title="nodejs" src="http://s3-eu-west-1.amazonaws.com/phollow/2011/05/nodejs.jpg" alt="" width="537" height="300" /&gt;
&lt;br&gt;
&lt;p style="text-align: justify;"&gt;Bonjour les enfants. Aujourd'hui on va s'amuser un peu avec &lt;a title="Node.js" href="http://nodejs.org/" target="_blank"&gt;Node.js&lt;/a&gt; et les Web Sockets. Pour ceux qui vivent encore dans une grotte, &lt;strong&gt;Node.js&lt;/strong&gt; est un framework Javascript côté serveur basé sur &lt;strong&gt;V8&lt;/strong&gt; (Chrome). L'avantage est qu'il gère les entrées/sorties de manière asynchrone et supporte un modèle de programmation événementiel. En gros il est parfait pour les applications web temps réels (notifications, push serveur, streaming…).&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;En quelques lignes de codes on va être capable de faire cette &lt;a title="Twitter streaming - Node.js - Socket.io" href="http://phollow.fr/tweet-stream/tweets.html" target="_blank"&gt;petite démo&lt;/a&gt;. Tu as besoin d'avoir un navigateur &lt;em&gt;à la pointe de la technologie&lt;/em&gt; pour que ça marche mon ami.&lt;/p&gt;

&lt;h1 style="text-align: justify;"&gt;Installation&lt;/h1&gt;
&lt;p style="text-align: justify;"&gt;Pour commencer il nous faut Node.js bien sur. Alors là tu as plusieurs solutions. Tu peux déjà commencer par &lt;a title="Node.js installing manager" href="https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager" target="_blank"&gt;regarder&lt;/a&gt; si il est disponible sous forme de paquet dans ton OS ou distribution GNU/Linux. Sinon tu vas devoir le compiler, mais c'est pas très difficile: &lt;a href="https://github.com/joyent/node/wiki/Installation" target="_blank"&gt;regarde&lt;/a&gt;.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Il est aussi important d'installer &lt;strong&gt;npm&lt;/strong&gt; (Node Package Manager), il va nous simplifier la vie quand on voudra installer des extensions à Node.js.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;code class="sh"&gt;curl http://npmjs.org/install.sh | sh
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;h1 style="text-align: justify;"&gt;Socket.io&lt;/h1&gt;
&lt;p style="text-align: justify;"&gt;&lt;img class="alignnone size-full wp-image-3340" title="socket" src="http://s3-eu-west-1.amazonaws.com/phollow/2011/05/socket.jpg" alt="" width="537" height="260" /&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;a href="http://socket.io/" target="_blank"&gt;Socket.io&lt;/a&gt; est la première extension que l'on va installer pour ce tutorial. Le but de cette librairie est de faciliter le développement d'applications web temps réel dans tous les navigateurs. Parce que tu as certains navigateurs qui gèrent les sockets et d'autres non. Alors cette librairie va décider elle-même quel chemin prendre pour tes échanges parmi ceux-là :&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Websocket&lt;/li&gt;
	&lt;li&gt;Adobe Flash $ocket ©&lt;/li&gt;
	&lt;li&gt;Ajax long polling&lt;/li&gt;
	&lt;li&gt;Multipart XHR&lt;/li&gt;
	&lt;li&gt;Forever iFrame (lol IE)&lt;/li&gt;
	&lt;li&gt;JSONP polling&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;code class="sh"&gt;npm install socket.io
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p style="text-align: justify;"&gt;Et puisque l'on va jouer avec l'API streaming de Twitter, tu peux aussi installer l'excellent &lt;a href="https://github.com/technoweenie/twitter-node" target="_blank"&gt;twitter-node&lt;/a&gt; de la même manière.&lt;/p&gt;

&lt;h1 style="text-align: justify;"&gt;Code serveur&lt;/h1&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;code class="js"&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;config&lt;/span&gt;      &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;pseudo&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;password&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;password&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;action&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;filter&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;track&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;bieber&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]},&lt;/span&gt;
&lt;span class="nx"&gt;sys&lt;/span&gt;         &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;sys&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="nx"&gt;server&lt;/span&gt;      &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;http&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;createServer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
&lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;writeHead&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Content-Type&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;text/html&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;end&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&lt;/span&gt;
&lt;span class="s1"&gt;&amp;lt;h1&amp;gt;Twitter live stream&amp;lt;/h1&amp;gt;&lt;/span&gt;
&lt;span class="s1"&gt;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="nx"&gt;server&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;listen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;8080&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Server running at http://127.0.0.1:8080/&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;socket&lt;/span&gt;      &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;socket.io&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;listen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;server&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="nx"&gt;twitter&lt;/span&gt;     &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;twitter-node&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;TwitterNode&lt;/span&gt;&lt;span class="p"&gt;)(&lt;/span&gt;&lt;span class="nx"&gt;config&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nx"&gt;twitter&lt;/span&gt;
&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;addListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;error&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;addListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;tweet&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;tweet&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
&lt;span class="nx"&gt;socket&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;broadcast&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;tweet&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;addListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;limit&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;limit&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
&lt;span class="nx"&gt;sys&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;puts&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;LIMIT: &amp;#39;&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;sys&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;inspect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;limit&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;addListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;delete&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;del&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
&lt;span class="nx"&gt;sys&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;puts&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;DELETE: &amp;#39;&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;sys&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;inspect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;del&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;addListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;end&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
&lt;span class="nx"&gt;sys&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;puts&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;wave goodbye...&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;statusCode&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;stream&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p style="text-align: justify;"&gt;Au début du code on instancie quelques variables, dont la variable config que l'on passera à notre objet twitter-node. Elle contient les accès Twitter, le fait que l'on veut utiliser l'API Twitter en mode filtre et le mot sur lequel on veut filter. On instancie aussi un serveur Node.js, dans mon cas sur le port 8080.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;On attache un objet socket.io sur notre serveur et on instancie un objet twitter-node. On démarre le stream de Twitter en attachant des fonctions aux évènements que l'on peut recevoir.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;L'évènement du nom de “ tweet ” est appelé à chaque fois que l'on reçoit &lt;strong&gt;un&lt;/strong&gt; tweet. Les évènements limit et delete sont envoyés par l'API Twitter. Par exemple le cas du delete est important à prendre en compte si on construit un client Twitter sur l'API de streaming. Imaginons que quelqu'un poste un tweet et l'efface 2s après. Vous l'aurez déjà reçu et affiché. Mais 2s après vous allez recevoir un signal DELETE sur ce tweet et votre client pourra gérer sa disparition.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Quand on passe dans l'évènement Tweet, je demande à Socket.io d'envoyer en &lt;em&gt;broadcast&lt;/em&gt; (à toutes les personnes connectées sur mon serveur) d'envoyer un objet JSON du tweet reçu.&lt;/p&gt;

&lt;h1 style="text-align: justify;"&gt;Côté Client&lt;/h1&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;code class="html"&gt;&lt;span class="cp"&gt;&amp;lt;!DOCTYPE HTML&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;charset=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;utf-8&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;title&amp;gt;&lt;/span&gt;Twitter live stream : NodeJS + Socket.io&lt;span class="nt"&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;ul&amp;gt;&amp;lt;/ul&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;script&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;undefined&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;script&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;createElement&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;script&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;script&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;src&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;http://code.jquery.com/jquery.min.js&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nx"&gt;script&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;onload&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;getScript&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;http://127.0.0.1:8080/socket.io/socket.io.js&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;socket&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;io&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Socket&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;127.0.0.1&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;port&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;8080&lt;/span&gt;&lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="nx"&gt;socket&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;on&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;message&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;json&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="nx"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;parse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;json&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&amp;lt;li&amp;gt;&amp;lt;/li&amp;gt;&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;@&amp;quot;&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;screen_name&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot; &amp;quot;&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;text&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;prependTo&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;ul&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="nx"&gt;socket&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;connect&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;getElementsByTagName&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;head&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;appendChild&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;script&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;})(&lt;/span&gt;&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p style="text-align: justify;"&gt;Donc là je charge jQuery et une fois que c'est fait je vais chercher le script socket.io.js. Il est automatiquement fournit par le serveur node, donc tu as peut-être le port à changer. Une fois que c'est fait on peut créer un nouveau socket et attacher une fonction à l'évènement &lt;strong&gt;message&lt;/strong&gt;. Cet évènement est appelé à chaque fois que le serveur nous envoi quelque chose. Dans notre cas un tweet, donc je l'affiche.&lt;/p&gt;

&lt;h1 style="text-align: justify;"&gt;Lancement du serveur&lt;/h1&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;code class="sh"&gt;node serveur.js
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p style="text-align: justify;"&gt;Tu n'as plus qu'a ouvrir la partie cliente dans ton navigateur et ça devrait marcher. Je trouve Node.js vraiment intéressant et je n'avais pas pris le temps de le creuser plus que ça. Mais le développement de ce programme est vraiment rapide et s'améliore de jour en jour. Il existe des wrappers node pour Mysql, mongodb et d'autres base de données. Et d'autres plugins aussi utiles que Twitter-node ou socket.io. Il y a même des frameworks de type MVC et cie. On en trouve une bonne liste sur &lt;a href="https://github.com/joyent/node/wiki/modules" target="_blank"&gt;cette page&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Xj-iDQsThiQIF3P6elkGNyQP-gk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Xj-iDQsThiQIF3P6elkGNyQP-gk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Xj-iDQsThiQIF3P6elkGNyQP-gk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Xj-iDQsThiQIF3P6elkGNyQP-gk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/phollow/iuEO/~4/bgGFUBByems" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://phollow.fr/2011/05/streaming-twitter-nodejs-socket-io</feedburner:origLink></entry>
  
  <entry>
    <id>http://phollow.fr/2011/04/cloudflare-retour-experiences</id>
    <link type="text/html" rel="alternate" href="http://feedproxy.google.com/~r/phollow/iuEO/~3/bq9w8_L3-og/cloudflare-retour-experiences" />
    <title>CloudFlare, retour d'expériences</title>
    <published>2011-04-23T15:42:21+02:00</published>
    <updated>2011-04-23T15:42:21+02:00</updated>
    <author>
      <name>Jérôme Mahuet</name>
      <uri>http://phollow.fr/</uri>
    </author>
    <content type="html">&lt;p style="text-align: justify;"&gt;CloudFlare est un reverse proxy, un CDN et un firewall. Tout ça en même temps et c'est &lt;strong&gt;gratuit&lt;/strong&gt;. J'en suis plutôt satisfait et j'aimerai vous en parler un peu plus dans ce billet.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;img class="alignnone size-medium wp-image-3284" title="CloudFlare-logo" src="http://s3-eu-west-1.amazonaws.com/phollow/2011/04/CloudFlare-logo-537x223.png" alt="" width="537" height="223" /&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Le rôle de CloudFlare est d'accélérer et de protéger votre site. J'ai été bluffé par la simplicité de l'installation, à la portée de n'importe qui. Concrètement il faut juste faire pointer son nom de domaine chez CloudFlare. Le reste est géré &lt;em&gt;tout seul&lt;/em&gt;.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;CloudFlare est un &lt;em&gt;reverse-proxy&lt;/em&gt; : Tout le traffic passera donc d'abord par les serveurs de CloudFlare – qui pourront fournir aux visiteurs une page mise en cache et optimisée. Ce qui permet aux pages de s'ouvrir plus rapidement et de faire gagner de la bande-passante.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;!--more--&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;img class="mainimage alignnone size-large wp-image-3297" title="illustrationcf" src="http://s3-eu-west-1.amazonaws.com/phollow/2011/04/illustrationcf-804x321.jpg" alt="" width="804" height="321" /&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Mon serveur se trouve aux États-Unis, le temps de réponse est donc légèrement plus lent pour les européens. Puisque CloudFlare est aussi un &lt;em&gt;CDN&lt;/em&gt;&lt;sup&gt;&lt;a id="footnoter1" title="Allez à la note 1" href="#footnote1"&gt;1&lt;/a&gt;&lt;/sup&gt;, je suis passé de 150ms de ping à 50ms.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Autre avantage : &lt;em&gt;le pare-feu&lt;/em&gt;. Les spammers et autres bots sont bloqués avant même d'atterrir sur votre site. Akismet s'ennui pas mal maintenant. On peut aussi bloquer manuellement des adresses IP.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;img class="mainimage alignnone size-large wp-image-3300" title="Capture d’écran 2011-04-23 à 15.56.33" src="http://s3-eu-west-1.amazonaws.com/phollow/2011/04/Capture-d’écran-2011-04-23-à-15.56.33-804x401.jpg" alt="" width="804" height="401" /&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;On a aussi accès à des statistiques sur les visites —&lt;em&gt; pas aussi pointues que Google Analytics&lt;/em&gt; — qui donnent une vision globale en restant simple. Le plus intéressant est qu'il vous montre ce que CloudFlare vous a fait économiser :&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;img class="alignnone size-medium wp-image-3305" title="Capture d’écran 2011-04-23 à 16.03.59" src="http://s3-eu-west-1.amazonaws.com/phollow/2011/04/Capture-d’écran-2011-04-23-à-16.03.59-537x98.jpg" alt="" width="537" height="98" /&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Les différentes features en plus :&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Gestion du niveau de sécurité&lt;/li&gt;
	&lt;li&gt;Gestion de l'agressivité du cache.&lt;/li&gt;
	&lt;li&gt;Auto-minification du javascript et CSS&lt;/li&gt;
	&lt;li&gt;Rocket Script (peut forcer tous les scripts JS de la page à se charger de manière asynchrones)&lt;/li&gt;
	&lt;li&gt;Personnalisation de la page de blocage (quand l'IP est mauvaise on présente un captcha)&lt;/li&gt;
	&lt;li&gt;Web Application Firewall qui bloque les injections SQL, XSS et autres cochonneries (pro feature)&lt;/li&gt;
	&lt;li&gt;Website Preloader (pro feature)&lt;/li&gt;
	&lt;li&gt;Obfuscation des adresses e-mails.&lt;/li&gt;
	&lt;li&gt;Always online (si ton serveur est mort, CloudFlare continura a servir les pages cachées)&lt;/li&gt;
	&lt;li&gt;Hotlink Protection&lt;/li&gt;
&lt;/ul&gt;
La liste n'est pas complète. En terme de prix il y a une &lt;a href="https://www.cloudflare.com/plans.html"&gt;offre gratuite très complète et une payante avec des petites fonctionnalités en plus&lt;/a&gt;.
&lt;p style="text-align: justify;"&gt;Je suis agréablement surpris par ce service et je vous invite à le tester. C'est réellement simple à mettre en place et à enlever si ça ne vous plaît pas.&lt;/p&gt;

&lt;div class="footnotes"&gt;

&lt;hr /&gt;

&amp;nbsp;
&lt;ol&gt;
	&lt;li id="footnote1"&gt;Content Delivery Network. Réseaux de diffusion de contenus en français. &lt;a href="http://fr.wikipedia.org/wiki/Content_Delivery_Network"&gt;Définition&lt;/a&gt;.  &lt;a title="Retour à la note 1 dans le texte" href="#footnoter1"&gt;↩&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/uktJFF7NCzDX0M3mm2rvAr9umRg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/uktJFF7NCzDX0M3mm2rvAr9umRg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/uktJFF7NCzDX0M3mm2rvAr9umRg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/uktJFF7NCzDX0M3mm2rvAr9umRg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/phollow/iuEO/~4/bq9w8_L3-og" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://phollow.fr/2011/04/cloudflare-retour-experiences</feedburner:origLink></entry>
  
  <entry>
    <id>http://phollow.fr/2011/04/wallpapers-of-the-week-18</id>
    <link type="text/html" rel="alternate" href="http://feedproxy.google.com/~r/phollow/iuEO/~3/3fWvNEoBfF4/wallpapers-of-the-week-18" />
    <title>Wallpapers of the Week</title>
    <published>2011-04-08T13:03:30+02:00</published>
    <updated>2011-04-08T13:03:30+02:00</updated>
    <author>
      <name>Jérôme Mahuet</name>
      <uri>http://phollow.fr/</uri>
    </author>
    <content type="html">&lt;p style="text-align: justify;"&gt;Ça faisait longtemps et c'est reparti pour un tour. Toujours le même principe : des photos / fonds d'écran que je trouve sympathique. D'ailleurs si vous en avez des sympas aussi, vous pouvez toujours les proposer en commentaires.&lt;/p&gt;

&lt;div style="font-size: 16px; letter-spacing: 1px; line-height:22px; margin-bottom: 10px;"&gt;
&lt;span class="upper"&gt;&lt;a href="http://dreamerseven.deviantart.com/art/Dream-Wallpaper-Pack-203093321"&gt;Dream Wallpaper Pack&lt;/a&gt; &lt;/span&gt;&lt;em&gt;by *&lt;/em&gt;&lt;span class="upper"&gt;&lt;a href="http://dreamerseven.deviantart.com/"&gt;DreamerSeven&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;

&lt;img class="alignnone size-medium wp-image-3248" title="dream1280" src="http://s3-eu-west-1.amazonaws.com/phollow/2011/04/dream1280-537x429.jpg" alt="" width="537" height="429" /&gt;
&lt;a href="http://-kol.deviantart.com/art/Subtle-202658478"&gt;&lt;/a&gt;

&lt;div style="font-size: 16px; letter-spacing: 1px; line-height:22px; margin-bottom: 10px;"&gt;
&lt;span class="upper"&gt;&lt;a href="http://-kol.deviantart.com/art/Subtle-202658478"&gt;Subtle&lt;/a&gt;&lt;/span&gt; &lt;em&gt;by `&lt;/em&gt; &lt;span class="upper"&gt;&lt;a href="http://-kol.deviantart.com/"&gt;-kol&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;

&lt;img class="alignnone size-medium wp-image-3251" title="Subtle1_2560x1440" src="http://s3-eu-west-1.amazonaws.com/phollow/2011/04/Subtle1_2560x1440-537x302.png" alt="" width="537" height="302" /&gt;

&lt;!--more--&gt;
&lt;div style="font-size: 16px; letter-spacing: 1px; line-height:22px; margin-bottom: 10px;"&gt;
&lt;span class="upper"&gt;&lt;a href="http://irvinggfm.deviantart.com/art/Deep-Blue-200575866"&gt;Deep Blue&lt;/a&gt; &lt;/span&gt;&lt;em&gt;by *&lt;/em&gt;&lt;span class="upper"&gt;&lt;a href="http://irvinggfm.deviantart.com/"&gt;IrvingGFM&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;

&lt;p style="text-align: justify;"&gt;&lt;img class="alignnone size-medium wp-image-3254" title="Deep Blue 2560x1600" src="http://s3-eu-west-1.amazonaws.com/phollow/2011/04/Deep-Blue-2560x1600-537x335.jpg" alt="" width="537" height="335" /&gt;&lt;/p&gt;
&lt;div style="font-size: 16px; letter-spacing: 1px; line-height:22px; margin-bottom: 10px;"&gt;
&lt;span class="upper"&gt;&lt;a href="http://yingjunjiu.deviantart.com/art/Wrap-Wallpaper-201918059"&gt;Wrap Wallpaper&lt;/a&gt;&lt;/span&gt;&lt;em&gt; by `&lt;/em&gt;&lt;span class="upper"&gt;&lt;a href="http://yingjunjiu.deviantart.com/"&gt;yingjunjiu&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;

&lt;img class="alignnone size-medium wp-image-3256" title="Wrap-1280-800" src="http://s3-eu-west-1.amazonaws.com/phollow/2011/04/Wrap-1280-800-537x335.jpg" alt="" width="537" height="335" /&gt;

&lt;div style="font-size: 16px; letter-spacing: 1px; line-height:22px; margin-bottom: 10px;"&gt;
&lt;span class="upper"&gt;&lt;a href="http://reinspired.deviantart.com/art/SkyScraper-Wallpaper-203444528"&gt;SkyScraper Wallpaper&lt;/a&gt;&lt;/span&gt; &lt;em&gt;by ~&lt;/em&gt;&lt;span class="upper"&gt;&lt;a href="http://reinspired.deviantart.com/"&gt;ReInspired&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;

&lt;img class="alignnone size-medium wp-image-3260" title="skyscraper_ReInspired_1920x1200" src="http://s3-eu-west-1.amazonaws.com/phollow/2011/04/skyscraper_ReInspired_1920x1200-537x335.jpg" alt="" width="537" height="335" /&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/8Ji2sUe8Ld00aJ6dkpXIlFZQ63o/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8Ji2sUe8Ld00aJ6dkpXIlFZQ63o/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/8Ji2sUe8Ld00aJ6dkpXIlFZQ63o/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8Ji2sUe8Ld00aJ6dkpXIlFZQ63o/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/phollow/iuEO/~4/3fWvNEoBfF4" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://phollow.fr/2011/04/wallpapers-of-the-week-18</feedburner:origLink></entry>
  
  <entry>
    <id>http://phollow.fr/2011/03/pacman-3-5-nouveautes</id>
    <link type="text/html" rel="alternate" href="http://feedproxy.google.com/~r/phollow/iuEO/~3/NS3qDfXjr3g/pacman-3-5-nouveautes" />
    <title>Pacman 3.5 : Nouveautés</title>
    <published>2011-03-24T13:33:37+01:00</published>
    <updated>2011-03-24T13:33:37+01:00</updated>
    <author>
      <name>Jérôme Mahuet</name>
      <uri>http://phollow.fr/</uri>
    </author>
    <content type="html">&lt;p style="text-align: justify;"&gt;Pacman est le gestionnaire de paquet de la distribution &lt;strong&gt;Arch Linux&lt;/strong&gt;. De toutes les distributions GNU/Linux que j'ai pu tester, il est de loin le plus rapide et le plus simple à utiliser. Et la branche 3.5 de ce programme pousse encore plus loin sa rapidité. Voyons en détails les nouveautés.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;img class="alignnone size-medium wp-image-3221" title="archlinux-official-gradient" src="http://s3-eu-west-1.amazonaws.com/phollow/2011/03/archlinux-official-gradient-537x178.jpg" alt="" width="537" height="178" /&gt;&lt;/p&gt;

&lt;h3 style="text-align: justify;"&gt;Vitesse&lt;/h3&gt;
&lt;p style="text-align: justify;"&gt;La plus importante est le changement du format de la base de données locale. Quand vous synchronisez pacman avec les dépôts distants, il va stocker en local tout un tas d'informations dans divers fichiers. L'astuce a été de réduire considérablement le nombre de ces fichiers, et même dans certains cas de lire les informations directement dans un &lt;em&gt;tarball&lt;/em&gt; compressé sans avoir à l'extraire. Beaucoup moins d'accès disques, donc plus rapide, à hauteur de 30% d'après les développeurs.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Ce changement de format nécessite une manipulation de votre part. Après avoir mis à jour pacman, il faut lancer en root :&lt;/p&gt;
[cc]pacman-db-upgrade[/cc]
&lt;p style="text-align: justify;"&gt;&amp;nbsp;&lt;/p&gt;

&lt;h3 style="text-align: justify;"&gt;Sécurité&lt;/h3&gt;
&lt;p style="text-align: justify;"&gt;Ensuite on pouvait facilement exploser son système si on ne faisait pas attention à l'espace disque restant quand on installait des paquets. Maintenant pacman peut automatiquement regarder si il y a assez de place pour ce qu'il veut faire. Personnellement j'ai désactivé cette option, car je sais très bien que je vais pas essayer d'installer la suite KDE  avec 300Mo. Pratique pour ceux qui ont l'esprit ailleurs j'imagine..&lt;/p&gt;

&lt;h3 style="text-align: justify;"&gt;Pratique !&lt;/h3&gt;
&lt;p style="text-align: justify;"&gt;Pouvoir choisir les paquets à installer dans un groupe — &lt;em&gt;au lieu d'être obligé d'installer tout le groupe&lt;/em&gt; — est revenu dans cette version.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Au final les développeurs d'Arch Linux ont encore fait du bon boulot en allégeant pas mal le moteur de pacman. Vous pouvez voir la liste complète des nouveautés dans le &lt;a href="http://projects.archlinux.org/pacman.git/tree/NEWS?id=v3.5.0" target="_blank"&gt;changelog&lt;/a&gt;, et aussi dans le &lt;a href="http://projects.archlinux.org/pacman.git/tree/README?id=v3.5.0" target="_blank"&gt;readme&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/H4O1J5kzHBBLC-nasnjbIHXNqWI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/H4O1J5kzHBBLC-nasnjbIHXNqWI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/H4O1J5kzHBBLC-nasnjbIHXNqWI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/H4O1J5kzHBBLC-nasnjbIHXNqWI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/phollow/iuEO/~4/NS3qDfXjr3g" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://phollow.fr/2011/03/pacman-3-5-nouveautes</feedburner:origLink></entry>
  
  <entry>
    <id>http://phollow.fr/2011/03/facebook-like-methode-de-partage</id>
    <link type="text/html" rel="alternate" href="http://feedproxy.google.com/~r/phollow/iuEO/~3/2bD3652xsQQ/facebook-like-methode-de-partage" />
    <title>Facebook Like, méthode de partage</title>
    <published>2011-03-01T23:54:37+01:00</published>
    <updated>2011-03-01T23:54:37+01:00</updated>
    <author>
      <name>Jérôme Mahuet</name>
      <uri>http://phollow.fr/</uri>
    </author>
    <content type="html">&lt;p style="text-align: justify;"&gt;Facebook a rajouté tout récemment de nouvelles fonctionnalités à son bouton &lt;strong&gt;like&lt;/strong&gt;. Ce bouton — &lt;em&gt;un peu le cheval de Troie de Facebook sur le web&lt;/em&gt; — devient maintenant une alternative intéressante, et &lt;em&gt;obligatoire&lt;/em&gt;, au Facebook Share. Il faut dire qu'avant le partage se limitait à une simple ligne sur le profil du &lt;em&gt;likeur&lt;/em&gt;. Voyons ce qui change et comment l'intégrer sur &lt;strong&gt;Wordpress&lt;/strong&gt; par exemple.&lt;/p&gt;
&lt;img class="alignnone size-medium wp-image-3146" title="amis-facebook" src="http://s3-eu-west-1.amazonaws.com/phollow/2011/03/amis-facebook-537x314.jpg" alt="" width="537" height="314" /&gt;
&lt;p style="text-align: justify;"&gt;Désormais le simple fait de “ liker ” une page, pourra poster sur votre profil tout un tas d'informations. Le titre de la page, une description et pourquoi pas une image. En fait c'est exactement le même modèle de ce que faisait le vieux bouton bleu moche &lt;strong&gt;Facebook Share&lt;/strong&gt;.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Le bouton like fonctionne avec le protocole &lt;strong&gt;Open Graph&lt;/strong&gt;. Concrètement ce protocole permet à Facebook de s'insérer dans n'importe quel site web. Dans ce protocole, Facebook a définit certaines balises Meta qui vont contenir la carte d'identité de la page web. Le titre, l'URL, la description, la catégorie etc.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;code class="html"&gt;&lt;span class="nt"&gt;&amp;lt;html&lt;/span&gt; &lt;span class="na"&gt;xmlns=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&lt;/span&gt;
&lt;span class="na"&gt;xmlns:og=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;http://ogp.me/ns#&amp;quot;&lt;/span&gt;
&lt;span class="na"&gt;xmlns:fb=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;http://www.facebook.com/2008/fbml&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;title&amp;gt;&lt;/span&gt;The Rock (1996)&lt;span class="nt"&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;property=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;og:title&amp;quot;&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;The Rock&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;property=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;og:type&amp;quot;&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;movie&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;property=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;og:url&amp;quot;&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;http://www.imdb.com/title/tt0117500/&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;property=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;og:image&amp;quot;&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;http://ia.media-imdb.com/rock.jpg&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;property=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;og:site_name&amp;quot;&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;IMDb&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;property=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;fb:admins&amp;quot;&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;USER_ID&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;property=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;og:description&amp;quot;&lt;/span&gt;&lt;span class="err"&gt; &lt;/span&gt;&lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;A group of U.S. Marines, under command of a renegade general, take over Alcatraz and threaten San Francisco Bay with biological weapons.&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
...
&lt;span class="nt"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
...
&lt;span class="nt"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p style="text-align: justify;"&gt;Vous pouvez trouver une liste exhaustive de ces attributs sur la &lt;a href="http://developers.facebook.com/docs/opengraph/" target="_blank"&gt;documentation&lt;/a&gt; de Facebook.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Ces éléments sont nécessaires pour profiter à 100% du widget Facebook. Le bouton en lui-même s'insère facilement.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;code class="html"&gt;&lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;http://connect.facebook.net/fr_FR/all.js#xfbml=1&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;fb:like&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;http://phollow.fr&amp;quot;&lt;/span&gt; &lt;span class="na"&gt;show_faces=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;true&amp;quot;&lt;/span&gt; &lt;span class="na"&gt;width=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;450&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/fb:like&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p style="text-align: justify;"&gt;L'attribut &lt;em&gt;href&lt;/em&gt;, vous l'avez compris, pointe vers la page à partager. C'est sur cette même page que les balises Open Graph devront être. Maintenant prenant l'exemple d'un blog, sous Wordpress. Chacun de vos articles aura dans le header les balises Meta qui le décriront en gros, et un bouton &lt;em&gt;like&lt;/em&gt; présent à la fin du billet pour le partager. Ce qui peut être sympa, c'est de récupérer une image de l'article en question pour l'afficher lors du partage.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Pour cela il faut modifier un peu le thème du blog. On ouvre functions.php, et on ajoute cette fonction :&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre&gt;&lt;code class="php"&gt;&lt;span class="x"&gt;function premiere_image() {&lt;/span&gt;
&lt;span class="x"&gt;global $post, $posts;&lt;/span&gt;
&lt;span class="x"&gt;$first_img = &amp;#39;&amp;#39;;&lt;/span&gt;
&lt;span class="x"&gt;ob_start();&lt;/span&gt;
&lt;span class="x"&gt;ob_end_clean();&lt;/span&gt;
&lt;span class="x"&gt;$output = preg_match_all(&amp;#39;//i&amp;#39;, $post-&amp;gt;post_content, $matches);&lt;/span&gt;
&lt;span class="x"&gt;$first_img = $matches [1] [0];&lt;/span&gt;

&lt;span class="x"&gt;if(empty($first_img)){ //Si il n&amp;#39;y a pas d&amp;#39;image dans le billet&lt;/span&gt;
&lt;span class="x"&gt;$first_img = &amp;quot;/images/default.jpg&amp;quot;; // On en met une par défaut&lt;/span&gt;
&lt;span class="x"&gt;}&lt;/span&gt;
&lt;span class="x"&gt;return $first_img;&lt;/span&gt;
&lt;span class="x"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p style="text-align: justify;"&gt;Avec cette fonction, on va maintenant éditer le fichier &lt;em&gt;header.php&lt;/em&gt; du thème pour modifier les balises meta.&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre&gt;&lt;code class="html"&gt;&lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;property=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;og:type&amp;quot;&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;blog&amp;quot;&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;property=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;og:site_name&amp;quot;&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&amp;lt;?php bloginfo(&amp;#39;name&amp;#39;); ?&amp;gt;&amp;quot;&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;property=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;og:country_name&amp;quot;&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;French&amp;quot;&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;property=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;fb:admins&amp;quot;&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;rydgel&amp;quot;&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;property=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;fb:app_id&amp;quot;&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;101739241646&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;property=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;og:email&amp;quot;&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;rydgel@phollow.fr&amp;quot;&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="cp"&gt;&amp;lt;?php if(is_single()) :?&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;property=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;og:url&amp;quot;&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&amp;lt;?php the_permalink() ?&amp;gt;&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;property=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;og:image&amp;quot;&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&amp;lt;?php echo premiere_image() ?&amp;gt;&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="cp"&gt;&amp;lt;?php endif; ?&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p style="text-align: justify;"&gt;Et voilà ça devrait suffire !&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Maintenant on peut se poser la question de la pertinence de la chose. On avait à la base l'action de partager et l'action d'aimer. Désormais le simple fait d'aimer un truc, nous le fait partager. Admettons. Mais si je veux partager sans aimer ?&lt;/p&gt;

&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/dZFlnuLPhWq3AeTUksQM7RqMOHI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dZFlnuLPhWq3AeTUksQM7RqMOHI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/dZFlnuLPhWq3AeTUksQM7RqMOHI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dZFlnuLPhWq3AeTUksQM7RqMOHI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/phollow/iuEO/~4/2bD3652xsQQ" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://phollow.fr/2011/03/facebook-like-methode-de-partage</feedburner:origLink></entry>
  
 
</feed>

