1124 lines
58 KiB
XML
1124 lines
58 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<feed xmlns="http://www.w3.org/2005/Atom">
|
|
<id>http://yannesposito.com/</id>
|
|
<title>Yogsototh's last blogs entries</title>
|
|
<updated>2012-06-15T17:16:43Z</updated>
|
|
<link href="http://yannesposito.com/" rel="alternate"/>
|
|
<link href="http://feeds.feedburner.com/yannespositocomfr" rel="self"/>
|
|
<author>
|
|
<name>Yann Esposito</name>
|
|
<uri>http://yannesposito.com</uri>
|
|
</author>
|
|
<entry>
|
|
<id>tag:yannesposito.com,2012-06-15:/Scratch/fr/blog/Haskell-OpenGL-Mandelbrot/</id>
|
|
<title type="html">Un example progressif avec Haskell</title>
|
|
<published>2012-06-15T17:16:43Z</published>
|
|
<updated>2012-06-15T17:16:43Z</updated>
|
|
<author>
|
|
<name>Yann Esposito</name>
|
|
<uri>yannesposito.com</uri>
|
|
</author>
|
|
<link href="http://yannesposito.com/Scratch/fr/blog/Haskell-OpenGL-Mandelbrot/" rel="alternate"/>
|
|
<content type="html"><p><img alt="The B in Benoît B. Mandelbrot stand for Benoît B. Mandelbrot" src="/Scratch/img/blog/Haskell-OpenGL-Mandelbrot/BenoitBMandelbrot.jpg" /></p>
|
|
|
|
|
|
<div class="intro">
|
|
|
|
|
|
<p><span class="sc"><abbr title="Trop long à lire">tlàl</abbr>&nbsp;: </span> Un exemple progressif d&rsquo;utilisation d&rsquo;Haskell.
|
|
Vous pourrez voir un ensemble de Mandelbrot étendu à la troisième dimension.
|
|
De plus le code sera très propre.
|
|
Les détails de rendu sont séparés dans un module externe.
|
|
Le code descriptif intéressant est concentré dans un environnement pur et fonctionnel.
|
|
Vous pouvez vous inspirer de ce code utilisant le paradigme fonctional dans tous les languages.</p>
|
|
|
|
<blockquote>
|
|
<center><hr style="width:30%;float:left;border-color:#CCCCD0;margin-top:1em" /><span class="sc"></span></hr></center></blockquote></div></p></content>
|
|
</entry>
|
|
<entry>
|
|
<id>tag:yannesposito.com,2012-02-08:/Scratch/fr/blog/Haskell-the-Hard-Way/</id>
|
|
<title type="html">Haskell comme un vrai!</title>
|
|
<published>2012-02-08T13:17:53Z</published>
|
|
<updated>2012-02-08T13:17:53Z</updated>
|
|
<author>
|
|
<name>Yann Esposito</name>
|
|
<uri>yannesposito.com</uri>
|
|
</author>
|
|
<link href="http://yannesposito.com/Scratch/fr/blog/Haskell-the-Hard-Way/" rel="alternate"/>
|
|
<content type="html"><p><img alt="Magritte pleasure principle" src="/Scratch/img/blog/Haskell-the-Hard-Way/magritte_pleasure_principle.jpg" /></p>
|
|
|
|
|
|
<div class="intro">
|
|
|
|
|
|
<p><span class="sc"><abbr title="Trop long à lire">tlàl</abbr>&nbsp;: </span> Un tutoriel très court mais très dense pour apprendre Haskell.</p>
|
|
|
|
<blockquote>
|
|
<center><hr style="width:30%;float:left;border-color:#CCCCD0;margin-top:1em" /><span class="sc"><b>Table of Content</b></span><hr style="width:30%;float:right;border-color:#CCCCD0;margin-top:1em" /></center>
|
|
|
|
|
|
<div class="toc">
|
|
|
|
|
|
<ul>
|
|
<li><a href="#introduction">Introduction</a>
|
|
<ul>
|
|
<li><a href="#install">Install</a></li>
|
|
<li><a href="#don-t-be-afraid">Don&rsquo;t be afraid</a></li>
|
|
<li><a href="#very-basic-haskell">Very basic Haskell</a>
|
|
...</li></ul></li></ul></div></hr></center></blockquote></div></p></content>
|
|
</entry>
|
|
<entry>
|
|
<id>tag:yannesposito.com,2012-02-02:/Scratch/fr/blog/Typography-and-the-Web/</id>
|
|
<title type="html">La typography et le Web</title>
|
|
<published>2012-02-02T09:53:00Z</published>
|
|
<updated>2012-02-02T09:53:00Z</updated>
|
|
<author>
|
|
<name>Yann Esposito</name>
|
|
<uri>yannesposito.com</uri>
|
|
</author>
|
|
<link href="http://yannesposito.com/Scratch/fr/blog/Typography-and-the-Web/" rel="alternate"/>
|
|
<content type="html"><p><img alt="Screenshot of first in small caps with and without ligatures." src="/Scratch/img/blog/Typography-and-the-Web/first_sc_screenshot.png" /></p>
|
|
|
|
|
|
<div class="intro">
|
|
|
|
|
|
<p><span class="sc"><abbr title="Trop long à lire">tlàl</abbr>&nbsp;: </span> La typography sur le web est pourrie et nous ne somme pas près de voir ce problème réparé.</p>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<p>Je suis tombé sur ce site: <a href="http://opentypography.org/">open typography</a>. Leur message principal est&nbsp;:</p>
|
|
|
|
<blockquote>
|
|
<p>«There is no reason to wait for browser development to catch up.
|
|
We can all create better web typography ourselves, today.»</p>
|
|
</blockquote>
|
|
|
|
<p>ou en français&nbsp;:</p>
|
|
|
|
<blockquote>
|
|
<p>«Nous ne somme pas obligé d&rsquo;attendre le développement des navigateurs.
|
|
Nous pouv...</p></blockquote></p></content>
|
|
</entry>
|
|
<entry>
|
|
<id>tag:yannesposito.com,2012-01-15:/Scratch/fr/blog/Yesod-tutorial-for-newbies/</id>
|
|
<title type="html">Site en Haskell</title>
|
|
<published>2012-01-15T17:14:40Z</published>
|
|
<updated>2012-01-15T17:14:40Z</updated>
|
|
<author>
|
|
<name>Yann Esposito</name>
|
|
<uri>yannesposito.com</uri>
|
|
</author>
|
|
<link href="http://yannesposito.com/Scratch/fr/blog/Yesod-tutorial-for-newbies/" rel="alternate"/>
|
|
<content type="html"><p><img alt="Neo Flying at warp speed" src="/Scratch/img/blog/Yesod-tutorial-for-newbies/flying_neo.jpg" /></p>
|
|
|
|
|
|
<div class="intro">
|
|
|
|
|
|
<p><em>mise à jour</em>: mise à jour pour la version 0.10 de yesod.</p>
|
|
|
|
<p><span class="sc"><abbr title="Trop long à lire">tlàl</abbr>&nbsp;: </span> Un tutoriel pour yesod, un framework web Haskell.
|
|
Vous ne devriez pas avoir besoin de savoir programmer en Haskell.
|
|
Par contre je suis désolé pour les francophones,
|
|
mais je n&rsquo;ai pas eu le courage de traduire cet article en Français.</p>
|
|
|
|
<blockquote>
|
|
<center><span class="sc"><b>Table of content</b></span></center>
|
|
|
|
<ul id="markdown-toc">
|
|
<li><a href="#before-the-real-start">Before the real start</a> <ul>
|
|
<li><a href="#install">Install</a></li>
|
|
<li><a href="#initialize">In...</a></li></ul></li></ul></blockquote></div></p></content>
|
|
</entry>
|
|
<entry>
|
|
<id>tag:yannesposito.com,2011-10-20:/Scratch/fr/blog/SVG-and-m4-fractals/</id>
|
|
<title type="html">Accroître le pouvoir des languages déficients.</title>
|
|
<published>2011-10-20T09:39:36Z</published>
|
|
<updated>2011-10-20T09:39:36Z</updated>
|
|
<author>
|
|
<name>Yann Esposito</name>
|
|
<uri>yannesposito.com</uri>
|
|
</author>
|
|
<link href="http://yannesposito.com/Scratch/fr/blog/SVG-and-m4-fractals/" rel="alternate"/>
|
|
<content type="html"><p><img alt="Yesod logo made in SVG and m4" src="/Scratch/img/blog/SVG-and-m4-fractals/main.png" /></p>
|
|
|
|
|
|
<div class="intro">
|
|
|
|
|
|
<p><span class="sc"><abbr title="Trop long à lire">tlàl</abbr>&nbsp;: </span> Utiliser m4 pour accroître le pouvoir d&rsquo;<span class="sc">xslt</span> et d&rsquo;<span class="sc">svg</span>. Example cool, les fractales.</p>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<p>Lorsqu&rsquo;<span class="sc">xml</span> fût inventé beaucoup pensaient que c&rsquo;était l&rsquo;avenir.
|
|
Passer de fichiers plat à des fichiers structurés standardisés fût un grand progrès dans beaucoup de domaines.
|
|
Cerain se mirent à voir du <span class="sc">xml</span> de partout.
|
|
À tel point que les les format compatibles <span class="sc">xml</span> naquirent de toute part.
|
|
Non seulement comme format de fichie...</p></p></content>
|
|
</entry>
|
|
<entry>
|
|
<id>tag:yannesposito.com,2011-10-04:/Scratch/fr/blog/Yesod-excellent-ideas/</id>
|
|
<title type="html">Les idées de yesod</title>
|
|
<published>2011-10-04T08:18:59Z</published>
|
|
<updated>2011-10-04T08:18:59Z</updated>
|
|
<author>
|
|
<name>Yann Esposito</name>
|
|
<uri>yannesposito.com</uri>
|
|
</author>
|
|
<link href="http://yannesposito.com/Scratch/fr/blog/Yesod-excellent-ideas/" rel="alternate"/>
|
|
<content type="html"><p><img alt="Title image" src="/Scratch/img/blog/Yesod-excellent-ideas/main.png" /></p>
|
|
|
|
|
|
<div class="intro">
|
|
|
|
|
|
<p><span class="sc"><abbr title="Trop long à lire">tlàl</abbr>&nbsp;: </span></p>
|
|
|
|
<p>Cela fait un moment que je suis la progression du <a href="http://www.yesodweb.com">framework yesod</a>.
|
|
À mon humble avis on peut commencer à l&rsquo;utiliser pour des applications sérieuses (comprendre en prod).
|
|
Avant de vous dire pourquoi vous devriez aussi le considérer, je préfère vous parler de bonnes idées (parmi d&rsquo;autres) introduites par yesod que je n&rsquo;avais jamais vu ailleurs.</p>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<h2 id="types-saufs">Types saufs</h2>
|
|
|
|
<p>Commençons par une BD d&rsquo;<a href="http://xkcd.com">xkcd</a>&nbsp;:</p>
|
|
|
|
<p></p></p></content>
|
|
</entry>
|
|
<entry>
|
|
<id>tag:yannesposito.com,2011-09-28:/Scratch/fr/blog/Higher-order-function-in-zsh/</id>
|
|
<title type="html">Fonctions d'ordre supérieur en zsh</title>
|
|
<published>2011-09-28T13:15:23Z</published>
|
|
<updated>2011-09-28T13:15:23Z</updated>
|
|
<author>
|
|
<name>Yann Esposito</name>
|
|
<uri>yannesposito.com</uri>
|
|
</author>
|
|
<link href="http://yannesposito.com/Scratch/fr/blog/Higher-order-function-in-zsh/" rel="alternate"/>
|
|
<content type="html"><p><img alt="Title image" src="/Scratch/img/blog/Higher-order-function-in-zsh/main.jpg" /></p>
|
|
|
|
|
|
<div class="intro">
|
|
|
|
|
|
<p>UPDATE: <a href="http://nicholassterling.wordpress.com/2012/03/30/a-zsh-map-function/">Nicholas Sterling a découvert un moyen de faire des fonctions anonymes</a>
|
|
et <a href="https://github.com/Tarrasch/zsh_functional">Arash Rouhani a créé un repository sur github qui simplifie l&rsquo;installation</a>.
|
|
Merci à vous deux!</p>
|
|
|
|
<p>Avec cette dernière version vous pouvez utiliser <code>map</code> si vous utilisez
|
|
des fonctions déclarées. <code>mapl</code> pour les fonctions anonymes
|
|
et <code>mapa</code> pour les fonctions arithmétiques.</p>
|
|
|
|
<p>Exemple&nbsp;:</p>
|
|
|
|
<pre><code class="zsh">$ filterl 'echo $1|grep a &gt;/dev/null' ab cd ef ada
|
|
ab
|
|
ada
|
|
|
|
$ folda '$1+...</code></pre></div></p></content>
|
|
</entry>
|
|
<entry>
|
|
<id>tag:yannesposito.com,2011-09-28:/Scratch/fr/blog/programming-language-experience/</id>
|
|
<title type="html">Mon expérience avec les languages de programmation</title>
|
|
<published>2011-09-28T10:21:41Z</published>
|
|
<updated>2011-09-28T10:21:41Z</updated>
|
|
<author>
|
|
<name>Yann Esposito</name>
|
|
<uri>yannesposito.com</uri>
|
|
</author>
|
|
<link href="http://yannesposito.com/Scratch/fr/blog/programming-language-experience/" rel="alternate"/>
|
|
<content type="html"><p><img alt="Title image" src="/Scratch/img/blog/programming-language-experience/dragon.jpg" /></p>
|
|
|
|
|
|
<div class="intro">
|
|
|
|
<span class="sc"><abbr title="Trop long à lire">tlàl</abbr>&nbsp;: </span> Mon avis court et hautement subjectif concernant les différents languages de programmations que j&rsquo;ai utilisé.
|
|
|
|
</div>
|
|
|
|
|
|
<h3 id="basic"><code>BASIC</code></h3>
|
|
|
|
<p><img alt="Title image" src="/Scratch/img/blog/programming-language-experience/basic.gif" class=" left" /></p>
|
|
|
|
<p>Ah&nbsp;! Le language de mes premiers programmes&nbsp;!
|
|
Je devais avoir 10-11 ans.
|
|
Sous <code>MO5</code>, <code>Amstrad CPC 6128</code> et même <code>Atari STe</code>.
|
|
Le langage des <code>GOTO</code>s.
|
|
Je suis empleint de nostalgie rien que d&rsquo;y penser.
|
|
C&rsquo;est à peu prêt le seul intérêt de c...</p></p></p></content>
|
|
</entry>
|
|
<entry>
|
|
<id>tag:yannesposito.com,2011-08-25:/Scratch/fr/blog/Learn-Vim-Progressively/</id>
|
|
<title type="html">Apprenez Vim Progressivement</title>
|
|
<published>2011-08-25T17:28:20Z</published>
|
|
<updated>2011-08-25T17:28:20Z</updated>
|
|
<author>
|
|
<name>Yann Esposito</name>
|
|
<uri>yannesposito.com</uri>
|
|
</author>
|
|
<link href="http://yannesposito.com/Scratch/fr/blog/Learn-Vim-Progressively/" rel="alternate"/>
|
|
<content type="html"><p><img alt="Über leet use vim!" src="/Scratch/img/blog/Learn-Vim-Progressively/uber_leet_use_vim.jpg" /></p>
|
|
|
|
|
|
<div class="intro">
|
|
|
|
|
|
<p><span class="sc"><abbr title="Trop long à lire">tlàl</abbr>&nbsp;: </span> Vous désirez apprendre vim (le meilleur editeur de texte connu à ce jour) le plus rapidement possible. Voici mes conseils pour vous aider. Commencez à apprendre le minimum vital, puis apprenez doucement de nouvelles commandes.</p>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<p><a href="http://www.vim.org">Vim</a> ou l&rsquo;éditeur qui vallait 3 milliards&nbsp;:</p>
|
|
|
|
<blockquote>
|
|
<p>Meilleur, plus fort, plus rapide.</p>
|
|
</blockquote>
|
|
|
|
<p>Apprenez <a href="http://www.vim.org">vim</a> et ce sera votre dernier éditeur.
|
|
Aucun éditeur que je connaisse ne le surpasse.
|
|
Sa prise en mais est difficile, mais p...</p></p></content>
|
|
</entry>
|
|
<entry>
|
|
<id>tag:yannesposito.com,2011-08-17:/Scratch/fr/blog/A-more-convenient-diff/</id>
|
|
<title type="html">Un diff plus pratique</title>
|
|
<published>2011-08-17T09:33:30Z</published>
|
|
<updated>2011-08-17T09:33:30Z</updated>
|
|
<author>
|
|
<name>Yann Esposito</name>
|
|
<uri>yannesposito.com</uri>
|
|
</author>
|
|
<link href="http://yannesposito.com/Scratch/fr/blog/A-more-convenient-diff/" rel="alternate"/>
|
|
<content type="html"><p><code>diff</code> est un utilitaire très pratique, mais il n&rsquo;est pas facile à lire pour nous, les Hommes.</p>
|
|
|
|
<p>C&rsquo;est pourquoi, lorsque vous utilisez <code>git</code>, il vous montre un formatage plus agréable avec des couleurs.</p>
|
|
|
|
<p>Voici le script que j&rsquo;utilise lorsque je veux avoir un <code>diff</code> à la git.</p>
|
|
|
|
<div class="codefile"><a href="/Scratch/fr/blog/A-more-convenient-diff/code/ydiff">&#x27A5; ydiff</a></div>
|
|
|
|
<pre><code class="zsh">#!/usr/bin/env zsh
|
|
|
|
# Load colors helpers
|
|
autoload -U colors &amp;&amp; colors
|
|
|
|
function colorize_diff {
|
|
while read line; do
|
|
case ${line[0]} in
|
|
+) print -n $fg[green];;
|
|
-) print -n $fg[red];;
|
|
@) # Display in cyan the @@ positions @@
|
|
if [[ ${line[1]} = '@' ]]; then
|
|
line=$(pri...</code></pre></content>
|
|
</entry>
|
|
<entry>
|
|
<id>tag:yannesposito.com,2011-07-10:/Scratch/fr/blog/Haskell-Mandelbrot/</id>
|
|
<title type="html">Mandelbrot avec haskell</title>
|
|
<published>2011-07-10T10:41:26Z</published>
|
|
<updated>2011-07-10T10:41:26Z</updated>
|
|
<author>
|
|
<name>Yann Esposito</name>
|
|
<uri>yannesposito.com</uri>
|
|
</author>
|
|
<link href="http://yannesposito.com/Scratch/fr/blog/Haskell-Mandelbrot/" rel="alternate"/>
|
|
<content type="html"><p>Voici le code &ldquo;obfusqué&rdquo;&nbsp;:</p>
|
|
|
|
<div class="codefile"><a href="/Scratch/fr/blog/Haskell-Mandelbrot/code/animandel.hs">&#x27A5; animandel.hs</a></div>
|
|
|
|
<pre><code class="haskell">a=27;b=79;c=C(-2.0,-1.0);d=C(1.0,1.0);e=C(-2.501,-1.003)
|
|
newtype C = C (Double,Double) deriving (Show,Eq)
|
|
instance Num C where C(x,y)*C(z,t)=C(z*x-y*t,y*z+x*t);C(x,y)+C(z,t)=C(x+z,y+t);abs(C(x,y))=C(sqrt(x*x+y*y),0.0)
|
|
r(C(x,y))=x;i(C(x,y))=y
|
|
f c z 0=0;f c z n=if(r(abs(z))&gt;2)then n else f c ((z*z)+c) (n-1)
|
|
h j k = map (\z-&gt;(f (C z) (C(0,0)) 32,(fst z&gt;l - q/2))) [(x,y)|y&lt;-[p,(p+((o-p)/a))..o],x&lt;-[m,(m + q)..l]] where o=i k;p=i j;m=r j;l=r k;q=(l-m)/b
|
|
u j k = concat $ map v $ h j k where v (i,p)=(" .,`'°\":;-+oO0123456789=!%*§&amp;$@#"!!i):rst p;rst True="\n";rst False=""
|
|
main ...</code></pre></content>
|
|
</entry>
|
|
<entry>
|
|
<id>tag:yannesposito.com,2011-05-18:/Scratch/fr/blog/Password-Management/</id>
|
|
<title type="html">Password Management</title>
|
|
<published>2011-05-18T11:14:28Z</published>
|
|
<updated>2011-05-18T11:14:28Z</updated>
|
|
<author>
|
|
<name>Yann Esposito</name>
|
|
<uri>yannesposito.com</uri>
|
|
</author>
|
|
<link href="http://yannesposito.com/Scratch/fr/blog/Password-Management/" rel="alternate"/>
|
|
<content type="html"><p><img alt="Title image" src="/Scratch/img/blog/Password-Management/main.png" /></p>
|
|
|
|
|
|
<div class="intro">
|
|
|
|
|
|
<p><span class="sc"><abbr title="Trop long à lire">tlàl</abbr>&nbsp;: </span> Une méthode de gestion des mots de passes que j&rsquo;utilise avec succès depuis quelques années.<br />
|
|
<strong><code>sha1( mot_de_passe + nom_de_domaine )</code></strong><br />
|
|
Je ne mémorise qu&rsquo;un seul mot de passe de très bonne qualité.
|
|
J&rsquo;utilise des mots de passe différents sur tous les sites.</p>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<p>Avant de commencer, je tiens à préciser qu&rsquo;il s&rsquo;agit d&rsquo;une tentative de vous vendre mon appli iPhone&nbsp;;-).</p>
|
|
|
|
<p>Vous êtes toujours là&nbsp;?
|
|
Bon, d&rsquo;accord, même si vous ne téléchargez pas mon application vous pouvez quand même utili...</p></p></div></p></content>
|
|
</entry>
|
|
<entry>
|
|
<id>tag:yannesposito.com,2011-04-20:/Scratch/fr/blog/2011-04-20-Now-hosted-on-github/</id>
|
|
<title type="html">Hébergement github</title>
|
|
<published>2011-04-20T15:22:15Z</published>
|
|
<updated>2011-04-20T15:22:15Z</updated>
|
|
<author>
|
|
<name>Yann Esposito</name>
|
|
<uri>yannesposito.com</uri>
|
|
</author>
|
|
<link href="http://yannesposito.com/Scratch/fr/blog/2011-04-20-Now-hosted-on-github/" rel="alternate"/>
|
|
<content type="html"><p><img alt="Title image" src="/Scratch/img/blog/2011-04-20-Now-hosted-on-github/main.png" /></p>
|
|
|
|
<p>J&rsquo;héberge mon site sur github à partir d&rsquo;aujourd&rsquo;hui.</p>
|
|
</p></content>
|
|
</entry>
|
|
<entry>
|
|
<id>tag:yannesposito.com,2011-01-03:/Scratch/fr/blog/2011-01-03-Why-I-sadly-won-t-use-coffeescript/</id>
|
|
<title type="html">Pourquoi je n'utiliserai pas CoffeeScript (malheureusement)</title>
|
|
<published>2011-01-03T08:37:26Z</published>
|
|
<updated>2011-01-03T08:37:26Z</updated>
|
|
<author>
|
|
<name>Yann Esposito</name>
|
|
<uri>yannesposito.com</uri>
|
|
</author>
|
|
<link href="http://yannesposito.com/Scratch/fr/blog/2011-01-03-Why-I-sadly-won-t-use-coffeescript/" rel="alternate"/>
|
|
<content type="html"><p><img alt="Title image" src="/Scratch/img/blog/2011-01-03-Why-I-sadly-won-t-use-coffeescript/main.png" /></p>
|
|
|
|
|
|
<div class="encadre">
|
|
|
|
|
|
<p><em>Mise à jour&nbsp;:</em> Je pense que je vais finallement changer d&rsquo;avis.
|
|
Pourquoi&nbsp;?
|
|
Tout d&rsquo;abord, je viens de découvrir un convertisseur javascript vers coffeescript, ensuite Denis Knauf m&rsquo;a laissé un commentaire et m&rsquo;a appris l&rsquo;existence d&rsquo;une fonction <code>CoffeeScript.eval</code>. De plus, il faut voir CoffeeScript comme javascript avec une syntaxe similaire à Ruby et pas comme un langage similaire à Ruby.</p>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="intro">
|
|
|
|
|
|
<p><span class="sc"><abbr title="Trop long à lire">tlàl</abbr>&nbsp;: </span> Qu&rsquo;est-ce qui n&rsquo;allait pas avec Coffeescript? La meta-programm...</p></div></p></content>
|
|
</entry>
|
|
<entry>
|
|
<id>tag:yannesposito.com,2011-01-01:/Scratch/fr/blog/2011-01-03-Happy-New-Year/</id>
|
|
<title type="html">Bonne et heureuse année</title>
|
|
<published>2011-01-01T06:55:54Z</published>
|
|
<updated>2011-01-01T06:55:54Z</updated>
|
|
<author>
|
|
<name>Yann Esposito</name>
|
|
<uri>yannesposito.com</uri>
|
|
</author>
|
|
<link href="http://yannesposito.com/Scratch/fr/blog/2011-01-03-Happy-New-Year/" rel="alternate"/>
|
|
<content type="html"><p>Bonne et heureuse année&nbsp;!</p>
|
|
|
|
<p>J&rsquo;étais très occupé ces derniers mois.
|
|
Maintenant il me semble que je vais pouvoir faire revivre ce blog.</p>
|
|
|
|
<p>J&rsquo;ai fait un outil qui permet d&rsquo;écrire des livre en utilisant une syntaxe proche de markdown.
|
|
C&rsquo;est un markdown avec des macros (essentiel pour les textes longs).
|
|
De plus le système gère la génération de pages HTML ainsi que du PDF engendré avec du XeLaTeX.
|
|
Je n&rsquo;en ai pas encore terminé avec ça. Mais si je tarde trop, je communiquerai lorsque j&rsquo;aurai fini le minimum.</p>
|
|
|
|
<p>J&rsquo;ai écrit un framework MVC pour application javascript simple mais néanmoins très rapide.</p>
|
|
|
|
<p>Meilleurs vœux à tous&nbsp;!</p>
|
|
</content>
|
|
</entry>
|
|
<entry>
|
|
<id>tag:yannesposito.com,2010-10-26:/Scratch/fr/blog/2010-10-26-LaTeX-like-macro-and-markdown/</id>
|
|
<title type="html">Des macros LaTeX pour markdown</title>
|
|
<published>2010-10-26T12:30:58Z</published>
|
|
<updated>2010-10-26T12:30:58Z</updated>
|
|
<author>
|
|
<name>Yann Esposito</name>
|
|
<uri>yannesposito.com</uri>
|
|
</author>
|
|
<link href="http://yannesposito.com/Scratch/fr/blog/2010-10-26-LaTeX-like-macro-and-markdown/" rel="alternate"/>
|
|
<content type="html">
|
|
<div class="intro">
|
|
|
|
|
|
<p><span class="sc"><abbr title="Trop long à lire">tlàl</abbr>&nbsp;: </span> J&rsquo;ai fait un système simple de macros pour mon blog. Par exemple, il me suffit d&rsquo;écrire %<span></span>latex et ça affiche <span style="text-transform: uppercase">L<sup style="vertical-align: 0.15em; margin-left: -0.36em; margin-right: -0.15em; font-size: .85em">a</sup>T<sub style="vertical-align: -0.5ex; margin-left: -0.1667em; margin-right: -0.125em; font-size: 1em">e</sub>X</span>.</p>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<p>J&rsquo;ai ajouter un système de macro pour mon système de blog.
|
|
Lorsqu&rsquo;on est habitué à <span style="text-transform: uppercase">L<sup style="vertical-align: 0.15em; margin-left: -0.36em; margin-right: -0.15em; font-size: .85em">a</sup>T</span></p></content>
|
|
</entry>
|
|
<entry>
|
|
<id>tag:yannesposito.com,2010-10-14:/Scratch/fr/blog/2010-10-14-Fun-with-wav/</id>
|
|
<title type="html">S'amuser avec un .wav</title>
|
|
<published>2010-10-14T09:04:58Z</published>
|
|
<updated>2010-10-14T09:04:58Z</updated>
|
|
<author>
|
|
<name>Yann Esposito</name>
|
|
<uri>yannesposito.com</uri>
|
|
</author>
|
|
<link href="http://yannesposito.com/Scratch/fr/blog/2010-10-14-Fun-with-wav/" rel="alternate"/>
|
|
<content type="html">
|
|
<div class="intro">
|
|
|
|
|
|
<p><span class="sc"><abbr title="Trop long à lire">tlàl</abbr>&nbsp;: </span> Je me suis amusé à lire un fichier <code>wav</code>. Le <code>C</code> fut le langage le mieux adapté à ce traitement. Bien meilleur que Ruby par exemple.</p>
|
|
|
|
<p>edit: Je voulais que ce programme fonctionne sur une machine spécifique. En aucun cas je ne pensais publier ce code pour une utilisation autre que celle-ci.</p>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<p>J&rsquo;ai eu besoin de calculer la somme des valeurs absolue des données d&rsquo;un fichier <code>wav</code>.
|
|
Pour des raison d&rsquo;efficacité (et aussi de fun), j&rsquo;ai fait le programme en <code>C</code>.</p>
|
|
|
|
<p>Celà faisait longtemps que je n&rsquo;avais pas programmé en <code>C</code>.
|
|
De mémoire il était peu aisé de manipuler des ...</p></content>
|
|
</entry>
|
|
<entry>
|
|
<id>tag:yannesposito.com,2010-10-10:/Scratch/fr/blog/2010-10-10-Secure-eMail-on-Mac-in-few-steps/</id>
|
|
<title type="html">Sécurisez vos emails</title>
|
|
<published>2010-10-10T16:39:00Z</published>
|
|
<updated>2010-10-10T16:39:00Z</updated>
|
|
<author>
|
|
<name>Yann Esposito</name>
|
|
<uri>yannesposito.com</uri>
|
|
</author>
|
|
<link href="http://yannesposito.com/Scratch/fr/blog/2010-10-10-Secure-eMail-on-Mac-in-few-steps/" rel="alternate"/>
|
|
<content type="html"><p><img alt="Title image" src="/Scratch/img/blog/2010-10-10-Secure-eMail-on-Mac-in-few-steps/main.png" class="clean " /></p>
|
|
|
|
|
|
<div class="intro">
|
|
|
|
|
|
<p><span class="sc"><abbr title="Trop long à lire">tlàl</abbr>&nbsp;: </span> <em>avec un Mac</em> </p>
|
|
|
|
<ul>
|
|
<li>Récupérez un certificat signé par une AC: <a href="http://www.instantssl.com/ssl-certificate-products/free-email-certificate.html">cliquez ici pour un certificat gratuit</a>&nbsp;;</li>
|
|
<li>ouvrez le fichier&nbsp;;</li>
|
|
<li>supprimer le fichier en mode sécurisé&nbsp;;</li>
|
|
<li>utilisez Mail plutôt que l&rsquo;interface web de gmail.</li>
|
|
</ul>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<p>J&rsquo;ai (re)découvert comment adoptez la norme S/MIME.
|
|
J&rsquo;ai été surpris de voir à quel point ce fut aisé.
|
|
Il y a seulement quelques années c&r...</p></p></content>
|
|
</entry>
|
|
<entry>
|
|
<id>tag:yannesposito.com,2010-10-06:/Scratch/fr/blog/2010-10-06-New-Blog-Design-Constraints/</id>
|
|
<title type="html">Contraintes du design de ce blog</title>
|
|
<published>2010-10-06T09:33:03Z</published>
|
|
<updated>2010-10-06T09:33:03Z</updated>
|
|
<author>
|
|
<name>Yann Esposito</name>
|
|
<uri>yannesposito.com</uri>
|
|
</author>
|
|
<link href="http://yannesposito.com/Scratch/fr/blog/2010-10-06-New-Blog-Design-Constraints/" rel="alternate"/>
|
|
<content type="html"><p>Vous avez pu constater que j&rsquo;ai modifié le design de mon blog.
|
|
Maintenant il doit être beaucoup plus léger qu&rsquo;avant.
|
|
Je n&rsquo;utilise plus de CSS3 et beaucoup moins de javascript.
|
|
Bien entendu, même avant, mes pages étaient parfaitement lisibles sans javascript.
|
|
Mais, je me suis aperçu que les systèmes de CSS3 sont loin d&rsquo;être au point.
|
|
J&rsquo;utilisait des gradient en CSS3, ainsi que des ombres sous le texte. Ça avait un rendu très sympa. Sauf&hellip;
|
|
Ce n&rsquo;était pas compatible ie6, sous Chrome le rendu était d&rsquo;une lenteur incroyable.
|
|
J&rsquo;ai donc décidé de faire un site à minima.
|
|
Je voulais qu&rsquo;il soit joli <em>et</em> le plus simple possible pour assurer sa compatibilité.
|
|
Les règles que je me suis fixées sont donc:</p>
|
|
|
|
</content>
|
|
</entry>
|
|
<entry>
|
|
<id>tag:yannesposito.com,2010-09-02:/Scratch/fr/blog/2010-09-02-Use-git-to-calculate-trusted-mtimes/</id>
|
|
<title type="html">Utilisation de git pour calculer les mtimes</title>
|
|
<published>2010-09-02T13:54:10Z</published>
|
|
<updated>2010-09-02T13:54:10Z</updated>
|
|
<author>
|
|
<name>Yann Esposito</name>
|
|
<uri>yannesposito.com</uri>
|
|
</author>
|
|
<link href="http://yannesposito.com/Scratch/fr/blog/2010-09-02-Use-git-to-calculate-trusted-mtimes/" rel="alternate"/>
|
|
<content type="html"><p>Vous pouvez remarquer qu&rsquo;à la fin de chaque page je donne une date de dernière modification.
|
|
Précédemment cette date était calculée en utilisant la date du fichier.
|
|
Mais il arrive fréquemment que je fasse un <code>touch</code> d&rsquo;un fichier pour engendrer tout le site de nouveau.
|
|
Donc la date n&rsquo;est pas nécessairement la <em>vraie</em> de modification du contenue.</p>
|
|
|
|
<p>J&rsquo;utilise <a href="http://git-scm.org">git</a> pour <em>versionner</em> mon site web.
|
|
Et cet outil me permet de récupérer la dernière date de <em>vraie</em> modification d&rsquo;un fichier.
|
|
Voici comment je m&rsquo;y prend avec <a href="http://nanoc.stoneship.org">nanoc</a>&nbsp;:</p>
|
|
|
|
<div class="codefile"></div></content>
|
|
</entry>
|
|
<entry>
|
|
<id>tag:yannesposito.com,2010-09-02:/Scratch/fr/blog/2010-09-02-base64-and-sha1-on-iPhone/</id>
|
|
<title type="html">base64 et sha1 sur iPhone</title>
|
|
<published>2010-09-01T22:02:17Z</published>
|
|
<updated>2010-09-01T22:02:17Z</updated>
|
|
<author>
|
|
<name>Yann Esposito</name>
|
|
<uri>yannesposito.com</uri>
|
|
</author>
|
|
<link href="http://yannesposito.com/Scratch/fr/blog/2010-09-02-base64-and-sha1-on-iPhone/" rel="alternate"/>
|
|
<content type="html"><p>Allons directement à l&rsquo;essentiel&nbsp;:
|
|
voici deux fonctions à intégrer à votre application iPhone pour afficher l&rsquo;encodage en base64 ou en hexadecimal du hash sha1 d&rsquo;un string en Objective-C pour iPhone.</p>
|
|
|
|
<p>Pour l&rsquo;usage c&rsquo;est très simple, copiez le code dans la classe de votre choix.
|
|
Puis&nbsp;:</p>
|
|
|
|
<pre><code class="objective-c">#import &lt;CommonCrypto/CommonDigest.h&gt;
|
|
...
|
|
NSString *b64_hash = [self b64_sha1:@"some NSString to be sha1'ed"];
|
|
...
|
|
NSString *hex_hash = [self hex_sha1:@"some NSString to be sha1'ed"];
|
|
</code></pre>
|
|
|
|
<p>L&rsquo;algorithme pour l&rsquo;encodage en <code>base64</code> doit être programmé sur iPhone.
|
|
Il n&rsquo;y a pas de librairie officielle qui s&rsquo;occupe de ça.</p>
|
|
|
|
<div class="codefile"></div></content>
|
|
</entry>
|
|
<entry>
|
|
<id>tag:yannesposito.com,2010-08-31:/Scratch/fr/blog/2010-08-31-send-mail-from-command-line-with-attached-file/</id>
|
|
<title type="html">Envoyer un mail en ligne de commande avec un fichier attaché</title>
|
|
<published>2010-08-31T08:16:04Z</published>
|
|
<updated>2010-08-31T08:16:04Z</updated>
|
|
<author>
|
|
<name>Yann Esposito</name>
|
|
<uri>yannesposito.com</uri>
|
|
</author>
|
|
<link href="http://yannesposito.com/Scratch/fr/blog/2010-08-31-send-mail-from-command-line-with-attached-file/" rel="alternate"/>
|
|
<content type="html"><p>J&rsquo;ai dû envoyer un mail en ligne de commande récemment.
|
|
Quelle ne fût pas ma surprise lorsque je constatais que ce n&rsquo;était vraiment pas évident.
|
|
Je n&rsquo;avais ni <code>pine</code> ni <code>mutt</code>. Seulement <code>mail</code> et <code>mailx</code>.</p>
|
|
|
|
<p>Ce qu&rsquo;on trouve sur internet pour envoyer un mail avec fichier attaché c&rsquo;est ça&nbsp;:</p>
|
|
|
|
<pre><code class="zsh">uuencode fic.jpg fic.jpg | mail -s 'Subject'
|
|
</code></pre>
|
|
|
|
<p>Bon, alors, bête et discipliné j&rsquo;ai essayé.
|
|
Et bien, ça marche <em>presque</em> tout le temps.
|
|
Pour mon fichier ça n&rsquo;a pas marché du tout.
|
|
Je l&rsquo;ai compressé au format <code>.gz</code>, <code>.bz2</code> et <code>.zip</code>.
|
|
Avec le format <code>.bz2</code> le mail reçu avait bien un fichie...</p></content>
|
|
</entry>
|
|
<entry>
|
|
<id>tag:yannesposito.com,2010-08-23:/Scratch/fr/blog/2010-08-23-Now-heberged-on-heroku/</id>
|
|
<title type="html">Maintenant sur Heroku</title>
|
|
<published>2010-08-23T13:05:13Z</published>
|
|
<updated>2010-08-23T13:05:13Z</updated>
|
|
<author>
|
|
<name>Yann Esposito</name>
|
|
<uri>yannesposito.com</uri>
|
|
</author>
|
|
<link href="http://yannesposito.com/Scratch/fr/blog/2010-08-23-Now-heberged-on-heroku/" rel="alternate"/>
|
|
<content type="html"><h1 class="first" id="maintenant-sur-herokuhttpherokucom">Maintenant sur <a href="http://heroku.com">Heroku</a></h1>
|
|
|
|
<p>J&rsquo;ai changé mon hébergeur. Mobileme n&rsquo;est absolument pas adapté à la diffusion de mon blog. C&rsquo;est pourquoi je suis passé à <a href="http://heroku.com">Heroku</a>.</p>
|
|
|
|
<p>Mais comme vous devez le savoir mon blog est un site complètement statique.
|
|
J&rsquo;utilise <a href="http://nanoc.stoneship.org/">nanoc</a> pour l&rsquo;engendrer.
|
|
Avoir un site statique amène beaucoup d&rsquo;avantages par rapport à un site dynamique. Surtout en terme de sécurité.
|
|
Voici comment configurer un site statique sur heroku.</p>
|
|
|
|
<p>La racine de mes fichiers est &lsquo;/output&rsquo;. Vous devez simplement créer deux fichiers. Un fichier <code>config.ru</code></p></content>
|
|
</entry>
|
|
<entry>
|
|
<id>tag:yannesposito.com,2010-08-11:/Scratch/fr/blog/2010-07-09-Indecidabilities/</id>
|
|
<title type="html">Indécidabilités (partie 1)</title>
|
|
<published>2010-08-11T08:04:31Z</published>
|
|
<updated>2010-08-11T08:04:31Z</updated>
|
|
<author>
|
|
<name>Yann Esposito</name>
|
|
<uri>yannesposito.com</uri>
|
|
</author>
|
|
<link href="http://yannesposito.com/Scratch/fr/blog/2010-07-09-Indecidabilities/" rel="alternate"/>
|
|
<content type="html">
|
|
</content>
|
|
</entry>
|
|
<entry>
|
|
<id>tag:yannesposito.com,2010-07-31:/Scratch/fr/blog/2010-07-31-New-style-after-holidays/</id>
|
|
<title type="html">Nouveau style après les vacances</title>
|
|
<published>2010-07-31T21:59:10Z</published>
|
|
<updated>2010-07-31T21:59:10Z</updated>
|
|
<author>
|
|
<name>Yann Esposito</name>
|
|
<uri>yannesposito.com</uri>
|
|
</author>
|
|
<link href="http://yannesposito.com/Scratch/fr/blog/2010-07-31-New-style-after-holidays/" rel="alternate"/>
|
|
<content type="html"><p>Avant les vacances beaucoup d&rsquo;utilisateurs se sont plaints de la lenteur de rendu de mon site.
|
|
Il s&rsquo;agit notamment de problèmes avec Chrome en particulier.
|
|
Mais pour éviter tout problème.
|
|
J&rsquo;ai complètement modifié le style de mon site web.
|
|
Il est inspiré du style de l&rsquo;application iBooks<small>&copy;</small> sur iPhone<small>&copy;</small>.</p>
|
|
|
|
<p>Dites moi ce que vous pensez de ce nouveau design.</p>
|
|
</content>
|
|
</entry>
|
|
<entry>
|
|
<id>tag:yannesposito.com,2010-07-07:/Scratch/fr/blog/2010-07-07-CSS-rendering-problems-by-navigator/</id>
|
|
<title type="html">N'utilisez pas de gradients avec Chrome</title>
|
|
<published>2010-07-07T13:43:43Z</published>
|
|
<updated>2010-07-07T13:43:43Z</updated>
|
|
<author>
|
|
<name>Yann Esposito</name>
|
|
<uri>yannesposito.com</uri>
|
|
</author>
|
|
<link href="http://yannesposito.com/Scratch/fr/blog/2010-07-07-CSS-rendering-problems-by-navigator/" rel="alternate"/>
|
|
<content type="html"><p>Beaucoup d&rsquo;utilisateurs de <a href="http://reddit.com">Reddit</a> m&rsquo;ont rapporté que mon site était très long à charger et à <em>scroller</em>.
|
|
Ils pensaient qu&rsquo;il s&rsquo;agissait d&rsquo;un problème dû aux ombres que j&rsquo;applique sur le texte.
|
|
J&rsquo;étais un peu surpris puisque je fais mes tests sur une machine vraiment très lente et je n&rsquo;avais jamais détecté ces problèmes.
|
|
En réalité, ce qui ralenti le rendu de ce site est par ordre d&rsquo;importance&nbsp;:</p>
|
|
|
|
<ol>
|
|
<li>Les dégradés sur Chrome (pas dans Safari sur Mac)</li>
|
|
<li>les <em>box shadows</em> sur Firefox</li>
|
|
</ol>
|
|
|
|
<h2 id="les-dgrads">les dégradés</h2>
|
|
|
|
<p>Sur Safari il n&rsquo;y a absolument aucun problème avec les dégradés. Par contre sur Chrome sous Linux le si...</p></content>
|
|
</entry>
|
|
<entry>
|
|
<id>tag:yannesposito.com,2010-07-05:/Scratch/fr/blog/2010-07-05-Cappuccino-and-Web-applications/</id>
|
|
<title type="html">Cappuccino ou jQuery ?</title>
|
|
<published>2010-07-05T11:49:04Z</published>
|
|
<updated>2010-07-05T11:49:04Z</updated>
|
|
<author>
|
|
<name>Yann Esposito</name>
|
|
<uri>yannesposito.com</uri>
|
|
</author>
|
|
<link href="http://yannesposito.com/Scratch/fr/blog/2010-07-05-Cappuccino-and-Web-applications/" rel="alternate"/>
|
|
<content type="html">
|
|
<div class="intro">
|
|
|
|
|
|
<p><abbr title="Trop long à lire">tlàl</abbr>:</p>
|
|
|
|
<ul>
|
|
<li>J&rsquo;ai essayé de faire une version de <a href="http://yannesposito.com/Softwares/YPassword.html">YPassword</a> en jQuery et avec Cappuccino.</li>
|
|
<li>Cappuccino est très bien sur les navigateurs non mobile mais l&rsquo;application pèse 1.4Mo et n&rsquo;est pas compatible avec l&rsquo;iPhone.</li>
|
|
<li>la version jQuery n&rsquo;est pas aussi jolie que la version réalisée avec Cappuccino mais elle pèse seulement 106Ko et est compatible avec l&rsquo;iPhone.</li>
|
|
<li>J&rsquo;essayerai Dashcode 3</li>
|
|
</ul>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<hr />
|
|
|
|
<div class="intro">
|
|
|
|
|
|
<p>Avant de commencer, je dois dire que je sais que Cappuccino et jQuery ne sont pas plus comparable que Cocoa et la <em>standard library</em> en...</p></div></hr></content>
|
|
</entry>
|
|
<entry>
|
|
<id>tag:yannesposito.com,2010-06-19:/Scratch/fr/blog/2010-06-19-jQuery-popup-the-easy-way/</id>
|
|
<title type="html">Comment faire des popups en jQuery rapidement</title>
|
|
<published>2010-06-18T22:44:50Z</published>
|
|
<updated>2010-06-18T22:44:50Z</updated>
|
|
<author>
|
|
<name>Yann Esposito</name>
|
|
<uri>yannesposito.com</uri>
|
|
</author>
|
|
<link href="http://yannesposito.com/Scratch/fr/blog/2010-06-19-jQuery-popup-the-easy-way/" rel="alternate"/>
|
|
<content type="html"><p>Voici une façon simple et rapide pour faire des popups avec jQuery.</p>
|
|
|
|
<div class="codefile"><a href="/Scratch/fr/blog/2010-06-19-jQuery-popup-the-easy-way/code/essai.js">&#x27A5; essai.js</a></div>
|
|
|
|
<pre><code class="javascript">// --- code popup ---
|
|
function openPopup() {
|
|
$(this).clone(false).appendTo($("#_code"));
|
|
$("#_code").show();
|
|
}
|
|
|
|
function closePopup() {
|
|
$("#_code").html("");
|
|
$("#_code").hide();
|
|
}
|
|
|
|
function initCode() {
|
|
$(".code").click(openPopup);
|
|
$(".code").css({cursor: "pointer"});
|
|
$('body').append('&lt;div id="_code"&gt;&lt;/div&gt;');
|
|
$('#_code').css( { 'text-align': "justify", position: "fixed",
|
|
left:0, top:0, width: "100%", height: "100%",
|
|
"background-color": "rgba(0, 0, 0, 0.8)", 'z-...</code></pre></content>
|
|
</entry>
|
|
<entry>
|
|
<id>tag:yannesposito.com,2010-06-17:/Scratch/fr/blog/2010-06-17-hide-yourself-to-analytics/</id>
|
|
<title type="html">Se cacher de ses statistiques web</title>
|
|
<published>2010-06-17T14:37:22Z</published>
|
|
<updated>2010-06-17T14:37:22Z</updated>
|
|
<author>
|
|
<name>Yann Esposito</name>
|
|
<uri>yannesposito.com</uri>
|
|
</author>
|
|
<link href="http://yannesposito.com/Scratch/fr/blog/2010-06-17-hide-yourself-to-analytics/" rel="alternate"/>
|
|
<content type="html"><p>Voici un moyen très simple de ne plus être comptabilisé dans les visites de son propre site.
|
|
Tout d&rsquo;abord, vous devriez jeter un coup d&rsquo;œil sur comment <a href="/Scratch/fr/blog/2010-06-17-track-events-with-google-analytics">je gère les systèmes de récupération de statistiques</a>.
|
|
Je centralise tout dans un seul fichier javascript ce qui facilite le travail.</p>
|
|
|
|
<p>Cette méthode nécessite l&rsquo;utilisation de <code>jquery-cookie</code>.</p>
|
|
|
|
<p>Avant de comptabiliser les visites, je vérifie que la clé <code>admin</code> n&rsquo;est pas utilisée dans mes cookies.</p>
|
|
|
|
<pre><code class="javascript"> var admin = $.cookie('admin');
|
|
if (! admin) {
|
|
// put your analytics code here
|
|
} else {
|
|
console.log("[WARNING] you're HIDDEN to analy...</code></pre></content>
|
|
</entry>
|
|
<entry>
|
|
<id>tag:yannesposito.com,2010-06-17:/Scratch/fr/blog/2010-06-17-track-events-with-google-analytics/</id>
|
|
<title type="html">Analyser les clicks sur votre Site</title>
|
|
<published>2010-06-17T12:41:36Z</published>
|
|
<updated>2010-06-17T12:41:36Z</updated>
|
|
<author>
|
|
<name>Yann Esposito</name>
|
|
<uri>yannesposito.com</uri>
|
|
</author>
|
|
<link href="http://yannesposito.com/Scratch/fr/blog/2010-06-17-track-events-with-google-analytics/" rel="alternate"/>
|
|
<content type="html"><p>Voici comment analyser tous les clics que font vos utilisateurs sur votre blog en incluant google analytics de façon asynchrone.</p>
|
|
|
|
<p>Dans le html, il faut utiliser <a href="http://jquery.com">jQuery</a> et un fichier que j&rsquo;ai appelé <code>yga.js</code>&nbsp;:</p>
|
|
|
|
<pre><code class="html"> &lt;script type="text/javascript" src="jquery.js"&gt;&lt;/script&gt;
|
|
&lt;script type="text/javascript" src="yga.js"&gt;&lt;/script&gt;
|
|
</code></pre>
|
|
|
|
<p>Voici le contenu du fichier <code>yga.js</code>&nbsp;:</p>
|
|
|
|
<div class="codefile"><a href="/Scratch/fr/blog/2010-06-17-track-events-with-google-analytics/code/yga.js">&#x27A5; yga.js</a></div>
|
|
|
|
<pre><code class="javascript">$(document).ready( function() {
|
|
// add an event to all link for google analytics
|
|
$('a').click(functi...</code></pre></content>
|
|
</entry>
|
|
<entry>
|
|
<id>tag:yannesposito.com,2010-06-15:/Scratch/fr/blog/2010-06-15-Get-my-blog-engine/</id>
|
|
<title type="html">Récupérez mon système de blog</title>
|
|
<published>2010-06-15T08:56:32Z</published>
|
|
<updated>2010-06-15T08:56:32Z</updated>
|
|
<author>
|
|
<name>Yann Esposito</name>
|
|
<uri>yannesposito.com</uri>
|
|
</author>
|
|
<link href="http://yannesposito.com/Scratch/fr/blog/2010-06-15-Get-my-blog-engine/" rel="alternate"/>
|
|
<content type="html"><p>J&rsquo;ai publié une version <em>light</em> de mon système de blog hier soir. Par <em>light</em> il faut comprendre avec un CSS plus épuré et plus portable (sans les bords ronds).
|
|
Vous pouvez le récupérer sur <a href="http://github.com/yogsototh/nanoc3_blog">github.com</a>.</p>
|
|
|
|
<p>Que pouvez-vous attendre de ce système de blog&nbsp;?</p>
|
|
|
|
<ul>
|
|
<li>Tous les avantages liés à <a href="http://nanoc.stoneship.org">nanoc</a>&nbsp;;</li>
|
|
<li>Facilité de la gestion de plusieurs langues&nbsp;;</li>
|
|
<li>coloration syntaxique des codes sources pour la plupart des languages&nbsp;;</li>
|
|
<li>commentaires gérés avec <a href="http://intensedebate.org">intenseDebate</a> de façon asynchrone&nbsp;;</li>
|
|
<li>très portable avec ou sans javascript, XHTML Strict 1.0 / CSS3&nbsp;;</li></ul></content>
|
|
</entry>
|
|
<entry>
|
|
<id>tag:yannesposito.com,2010-06-14:/Scratch/fr/blog/2010-06-14-multi-language-choices/</id>
|
|
<title type="html">choix liés à l'écriture dans plusieurs langues</title>
|
|
<published>2010-06-14T14:14:57Z</published>
|
|
<updated>2010-06-14T14:14:57Z</updated>
|
|
<author>
|
|
<name>Yann Esposito</name>
|
|
<uri>yannesposito.com</uri>
|
|
</author>
|
|
<link href="http://yannesposito.com/Scratch/fr/blog/2010-06-14-multi-language-choices/" rel="alternate"/>
|
|
<content type="html"><p>Je traduis la plupart de mes articles pour qu&rsquo;ils soient disponibles en français et en anglais.
|
|
La façon que l&rsquo;on m&rsquo;a conseillé était d&rsquo;avoir un fichier par langue. En général ça donne ça.</p>
|
|
|
|
<pre class="twilight">
|
|
Bonjour,
|
|
|
|
voici un exemple de texte en français.
|
|
[image](url)
|
|
</pre>
|
|
|
|
<pre class="twilight">
|
|
Hello,
|
|
|
|
here is an example of english text.
|
|
[image](url)
|
|
</pre>
|
|
|
|
<p>Cette façon de traduire vous impose une certaine façon de traduire.
|
|
D&rsquo;abord écrire entièrement le texte dans une langue,
|
|
puis copier le fichier et enfin retraduire dans une nouvelle langue.</p>
|
|
|
|
<p>Le problème, c&rsquo;est que très souvent, les articles ont des parties communes non négligeables. Par exemple, les images, les codes sources, etc&hellip;
|
|
Lorsque je m&...</p></content>
|
|
</entry>
|
|
<entry>
|
|
<id>tag:yannesposito.com,2010-05-24:/Scratch/fr/blog/2010-05-24-Trees--Pragmatism-and-Formalism/</id>
|
|
<title type="html">Arbres ; Pragmatisme et Formalisme</title>
|
|
<published>2010-05-24T18:05:14Z</published>
|
|
<updated>2010-05-24T18:05:14Z</updated>
|
|
<author>
|
|
<name>Yann Esposito</name>
|
|
<uri>yannesposito.com</uri>
|
|
</author>
|
|
<link href="http://yannesposito.com/Scratch/fr/blog/2010-05-24-Trees--Pragmatism-and-Formalism/" rel="alternate"/>
|
|
<content type="html">
|
|
<div class="intro">
|
|
|
|
|
|
<p><span class="sc"><abbr title="Trop long à lire">tlàl</abbr>&nbsp;: </span>&nbsp;:</p>
|
|
|
|
<ul>
|
|
<li>J&rsquo;ai essayé de programmer un simple filtre&nbsp;;</li>
|
|
<li>J&rsquo;ai été bloqué pendant deux jours&nbsp;;</li>
|
|
<li>J&rsquo;ai arrêté de penser comme un robot&nbsp;;</li>
|
|
<li>J&rsquo;ai utilisé un papier et un stylo&nbsp;;</li>
|
|
<li>J&rsquo;ai fait un peu de maths&nbsp;;</li>
|
|
<li>J&rsquo;ai résolu le problème en 10 minutes&nbsp;;</li>
|
|
<li>Conclusion: Pragmatisme n&rsquo;est pas&nbsp;: &laquo;n&rsquo;utilisez jamais la théorie&raquo;.
|
|
|
|
</div>
|
|
|
|
</ul>
|
|
|
|
<h2 id="rsum-plus-long-que-le--span-classscabbr-titletrop-long--liretllabbr--span">Résumé (plus long que le <span class="sc"><abbr title="Trop long à lire">tlàl</abbr>&nbsp;: </span>)</h2></div></content>
|
|
</entry>
|
|
<entry>
|
|
<id>tag:yannesposito.com,2010-05-19:/Scratch/fr/blog/2010-05-19-How-to-cut-HTML-and-repair-it/</id>
|
|
<title type="html">Comment réparer un XML coupé ?</title>
|
|
<published>2010-05-19T20:20:34Z</published>
|
|
<updated>2010-05-19T20:20:34Z</updated>
|
|
<author>
|
|
<name>Yann Esposito</name>
|
|
<uri>yannesposito.com</uri>
|
|
</author>
|
|
<link href="http://yannesposito.com/Scratch/fr/blog/2010-05-19-How-to-cut-HTML-and-repair-it/" rel="alternate"/>
|
|
<content type="html"><p>Sur ma page d&rsquo;accueil vous pouvez voir la liste des mes derniers articles avec le début de ceux-ci. Pour arriver à faire ça, j&rsquo;ai besoin de couper le code XHTML de mes pages en plein milieu. Il m&rsquo;a donc fallu trouver un moyen de les réparer.</p>
|
|
|
|
<p>Prenons un exemple&nbsp;:</p>
|
|
|
|
<pre><code class="html">&lt;div class="corps"&gt;
|
|
&lt;div class="intro"&gt;
|
|
&lt;p&gt;Introduction&lt;/p&gt;
|
|
&lt;/div&gt;
|
|
&lt;p&gt;The first paragraph&lt;/p&gt;
|
|
&lt;img src="/img/img.png" alt="an image"/&gt;
|
|
&lt;p&gt;Another long paragraph&lt;/p&gt;
|
|
&lt;/div&gt;
|
|
</code></pre>
|
|
|
|
<p>Après avoir coupé, j&rsquo;obtiens&nbsp;:</p>
|
|
|
|
<pre><code class="html">&lt;div class="corps"&gt;
|
|
&lt;div class="intro"&gt;
|
|
&lt;p&gt;Introduction&lt;/p&gt;
|
|
&lt;/div&g...</code></pre></content>
|
|
</entry>
|
|
<entry>
|
|
<id>tag:yannesposito.com,2010-05-17:/Scratch/fr/blog/2010-05-17-at-least-this-blog-revive/</id>
|
|
<title type="html">Je reviens à la vie !</title>
|
|
<published>2010-05-17T11:25:51Z</published>
|
|
<updated>2010-05-17T11:25:51Z</updated>
|
|
<author>
|
|
<name>Yann Esposito</name>
|
|
<uri>yannesposito.com</uri>
|
|
</author>
|
|
<link href="http://yannesposito.com/Scratch/fr/blog/2010-05-17-at-least-this-blog-revive/" rel="alternate"/>
|
|
<content type="html"><p>Bonjour à tous&nbsp;!</p>
|
|
|
|
<blockquote cite="http://www.madore.org/~david/weblog/2010-05.html#d.2010-05-12.1752">
|
|
<p>&hellip;plus on retarde quelque chose, plus il devient difficile de s&rsquo;y mettre&hellip;</p>
|
|
</blockquote>
|
|
|
|
<p>Je devais écrire d&rsquo;autres articles pour ce blog. J&rsquo;ai noté plein d&rsquo;idées dans mes <em>todolist</em>. Mais j&rsquo;avais pas mal d&rsquo;autres choses à faire. Et jusqu&rsquo;ici, j&rsquo;ai toujours dit &laquo;je le ferai plus tard&raquo;. Ce qui m&rsquo;a fait agir, c&rsquo;est la petite réflexion que j&rsquo;avais lu une fois.
|
|
&gt; Arrétez d&rsquo;écrire des <code>TODO</code> dans votre code est faites le maintenant&nbsp;!<br />
|
|
&gt; Vous serez surpris de l&rsquo;efficacité de cette mesure.</p>
|
|
|
|
<p>En résumé&nbsp;:
|
|
&gt; </p></p></content>
|
|
</entry>
|
|
<entry>
|
|
<id>tag:yannesposito.com,2010-03-23:/Scratch/fr/blog/2010-03-23-Encapsulate-git/</id>
|
|
<title type="html">Encapsuler git</title>
|
|
<published>2010-03-23T20:37:36Z</published>
|
|
<updated>2010-03-23T20:37:36Z</updated>
|
|
<author>
|
|
<name>Yann Esposito</name>
|
|
<uri>yannesposito.com</uri>
|
|
</author>
|
|
<link href="http://yannesposito.com/Scratch/fr/blog/2010-03-23-Encapsulate-git/" rel="alternate"/>
|
|
<content type="html"><p><span class="intro">
|
|
Voici une solution pour conserver des branches divergentes avec <code>git</code>.
|
|
Parce qu&rsquo;il est facile de <em>merger</em> par erreur, je propose un script qui encapsule le comportement de <code>git</code> pour interdire certains <em>merges</em> dangereux. Mais qui permet aussi de faire des merges en cascades de la racines vers les autres branches.
|
|
</span></p>
|
|
|
|
<h2 id="se-prmunir-contre-les-erreurs">Se prémunir contre les erreurs</h2>
|
|
|
|
<p>Je travaille sur un projet dans lequel certaines de mes branches <code>git</code> doivent rester divergentes. Et les divergences devraient aller en s&rsquo;accentuant.</p>
|
|
|
|
<p>J&rsquo;utilise aussi certaines branches qui contiennent la partie commune de ces projets.</p>
|
|
|
|
<p>Disons que j&rsquo;ai les branches&nbsp;:</p>
|
|
|
|
...</content>
|
|
</entry>
|
|
<entry>
|
|
<id>tag:yannesposito.com,2010-03-22:/Scratch/fr/blog/2010-03-22-Git-Tips/</id>
|
|
<title type="html">Astuces Git</title>
|
|
<published>2010-03-22T08:42:27Z</published>
|
|
<updated>2010-03-22T08:42:27Z</updated>
|
|
<author>
|
|
<name>Yann Esposito</name>
|
|
<uri>yannesposito.com</uri>
|
|
</author>
|
|
<link href="http://yannesposito.com/Scratch/fr/blog/2010-03-22-Git-Tips/" rel="alternate"/>
|
|
<content type="html"><h2 class="first" id="cloner-de-github--travers-un-pare-feu">Cloner de github à travers un pare-feu</h2>
|
|
|
|
<p>La façon standard:</p>
|
|
|
|
<div>
|
|
|
|
<pre><code class="zsh">git clone git@github.com:yogsototh/project.git
|
|
</code></pre>
|
|
|
|
</div>
|
|
|
|
<p>En utilisant le port HTTPS&nbsp;:</p>
|
|
|
|
<div>
|
|
|
|
<pre><code class="zsh">git clone git+ssh://git@github.com:443/yogsototh/project.git
|
|
</code></pre>
|
|
|
|
</div>
|
|
|
|
<h2 id="cloner-toutes-les-branches">Cloner toutes les branches</h2>
|
|
|
|
<p><code>git clone</code> peut seulement récuper la branche <code>master</code>.</p>
|
|
|
|
<p>Si vous n&rsquo;avez pas beaucoup de branches, vous pouvez simplement les clone le project et ensuite pour chacune d&rsquo;entre elle lancer la commande suivante&nbsp;:</p>
|
|
|
|
<div>
|
|
|
|
<pre><code class="zsh">git branch --track local_branch remote_bran...</code></pre></div></content>
|
|
</entry>
|
|
<entry>
|
|
<id>tag:yannesposito.com,2010-02-23:/Scratch/fr/blog/2010-02-23-When-regexp-is-not-the-best-solution/</id>
|
|
<title type="html">Quand se passer des expressions régulières ?</title>
|
|
<published>2010-02-23T08:09:52Z</published>
|
|
<updated>2010-02-23T08:09:52Z</updated>
|
|
<author>
|
|
<name>Yann Esposito</name>
|
|
<uri>yannesposito.com</uri>
|
|
</author>
|
|
<link href="http://yannesposito.com/Scratch/fr/blog/2010-02-23-When-regexp-is-not-the-best-solution/" rel="alternate"/>
|
|
<content type="html"><p>Les expressions régulières sont très utiles. Cependant, elles ne sont pas toujours la meilleure manière d&rsquo;aborder certain problème autour des chaines de caractères.
|
|
Et surtout quand les transformations que vous voulez accomplir sont simples.</p>
|
|
|
|
<p>Je voulais savoir comment récupérer le plus vite possible l&rsquo;extension d&rsquo;un nom de fichier. Il y a trois manière naturelle d&rsquo;accomplir celà&nbsp;:</p>
|
|
|
|
<div>
|
|
|
|
<pre><code class="ruby"># regexp
|
|
str.match(/[^.]*$/);
|
|
ext=$&amp;
|
|
|
|
# split
|
|
ext=str.split('.')[-1]
|
|
|
|
# File module
|
|
ext=File.extname(str)
|
|
</code></pre>
|
|
|
|
</div>
|
|
|
|
<p>A première vue, je pensais que l&rsquo;expression régulière serait plus rapide que le <code>split</code> parce qu&rsquo;il pouvait y avoir plusieurs de <code>.</code> dans un nom de fichie...</p></content>
|
|
</entry>
|
|
<entry>
|
|
<id>tag:yannesposito.com,2010-02-18:/Scratch/fr/blog/2010-02-18-split-a-file-by-keyword/</id>
|
|
<title type="html">découper un fichier par mots clés</title>
|
|
<published>2010-02-18T13:29:14Z</published>
|
|
<updated>2010-02-18T13:29:14Z</updated>
|
|
<author>
|
|
<name>Yann Esposito</name>
|
|
<uri>yannesposito.com</uri>
|
|
</author>
|
|
<link href="http://yannesposito.com/Scratch/fr/blog/2010-02-18-split-a-file-by-keyword/" rel="alternate"/>
|
|
<content type="html"><p>Assez bizarrement, je n&rsquo;ai trouvé aucun outil UNIX pour découper un fichier par mot clé.
|
|
Alors j&rsquo;en ai fait un en <code>awk</code>. Je le met ici principalement pour moi, mais ça peut toujours servir à quelqu&rsquo;un d&rsquo;autre.
|
|
Le code suivant découpe un fichier pour chacune de ses ligne contenant le mot <code>UTC</code>.</p>
|
|
|
|
<div>
|
|
|
|
<pre><code class="perl">#!/usr/bin/env awk
|
|
BEGIN{i=0;}
|
|
/UTC/ {
|
|
i+=1;
|
|
FIC=sprintf("fic.%03d",i);
|
|
}
|
|
{print $0&gt;&gt;FIC}
|
|
</code></pre>
|
|
|
|
</div>
|
|
|
|
<p>En réalité, j&rsquo;avais besoin de cet outils pour avoir un fichier par jour. Chaque ligne contenant UTC ayant le format suivant&nbsp;:</p>
|
|
|
|
<pre class="twilight">
|
|
Mon Dec 7 10:32:30 UTC 2009
|
|
</pre>
|
|
|
|
<p>J&rsquo;en suis finallement arrivé au code suivant&nbsp;:</p>
|
|
|
|
<div>
|
|
...</div></content>
|
|
</entry>
|
|
<entry>
|
|
<id>tag:yannesposito.com,2010-02-16:/Scratch/fr/blog/2010-02-16-All-but-something-regexp--2-/</id>
|
|
<title type="html">Tout sauf quelquechose en expression régulière.</title>
|
|
<published>2010-02-16T08:33:21Z</published>
|
|
<updated>2010-02-16T08:33:21Z</updated>
|
|
<author>
|
|
<name>Yann Esposito</name>
|
|
<uri>yannesposito.com</uri>
|
|
</author>
|
|
<link href="http://yannesposito.com/Scratch/fr/blog/2010-02-16-All-but-something-regexp--2-/" rel="alternate"/>
|
|
<content type="html"><p>Dans mon <a href="previouspost">précédent article</a> j&rsquo;ai donné certaines astuces pour matcher &lsquo;tout sauf quelque chose&rsquo;. De la même manière, un truc pour matcher la chaine de caractère la plus petite possible.
|
|
Disons que vous voulez matcher la chaine de caractère entre &lsquo;a&rsquo; et &lsquo;b&rsquo;. Par exemple, vous voulez matcher&nbsp;:</p>
|
|
|
|
<pre class="twilight">
|
|
a.....<span class="Constant"><strong>a......b</strong></span>..b..a....<span class="Constant"><strong>a....b</strong></span>...
|
|
</pre>
|
|
|
|
<p>Voici les deux erreurs communes et une solution&nbsp;:</p>
|
|
|
|
<pre class="twilight">
|
|
/a.*b/
|
|
<span class="Constant"><strong>a.....a......b..b..a....a....b</strong></span>...
|
|
</pre>
|
|
|
|
<p>La première erreur vient de l&rsquo;utilisation du <em>terrible</em> </p></content>
|
|
</entry>
|
|
</feed>
|