Regen after devel-clean

This commit is contained in:
Yann Esposito (Yogsototh) 2011-09-27 17:11:40 +02:00
parent 042dd69bf7
commit cd3448b73a
19 changed files with 1056 additions and 6144 deletions

View file

@ -0,0 +1,75 @@
-----
isHidden: false
menupriority: 1
kind: article
created_at: 2011-09-27T15:15:23+02:00
title: Higher order function in zsh
author_name: Yann Esposito
author_uri: yannesposito.com
# tags:
-----
<%= blogimage("main.png","Title image") %>
begindiv(intro)
<%= tldr %> some simple implementation of higher order function for zsh.
enddiv
<code class="zsh">
# for each directory in projects dir
for toProject in /path/to/projects/*(/N); do
# toProject is /path/to/projects/foo
# project become foo (:t for tail)
project=${toProject:t}
for toResource in $toProject/resources/*.gif(.N); do
convert $toResource ${toResource:r}.png
\rm -f $toResource
done
done
</code>
<code class="zsh">
gif_to_png() { convert $1 ${1:r}.png && \rm -f $1 }
handle_resources() { map gif_to_png $1/resources/*.gif(.N) }
map handle_resources /path/to/projects/*(/N)
</code>
<code class="zsh">
for toProject in Projects/*; do
project=$toProject:t
if print -- project | grep -v s >/dev/null
then
print $project
for toResource in $toProject/*(.N); do
if print -- ${toResource:t} | grep $project >/dev/null; then
print -- "X $toResource"
fi
done
fi
done
</code>
After =>
<code class="zsh">
contain_no_s() { print $1 | grep -v s }
function verify_file_name {
local project=$1:t
contains_project_name() { print $1:t | grep $project }
map "print -- X" $(filter contains_project_name $1/*(.N))
}
map show_project_matchin_file $( filter contain_no_s Projects/* )
</code>
Also, the first verstion is a bit easier to read.
But the second one is clearly far superior in architecture.
Why?

View file

@ -3,7 +3,7 @@ isHidden: false
menupriority: 1 menupriority: 1
kind: article kind: article
created_at: 2011-09-05T12:21:41+02:00 created_at: 2011-09-05T12:21:41+02:00
title: programming language experience title: Programming Language Experience
author_name: Yann Esposito author_name: Yann Esposito
author_uri: yannesposito.com author_uri: yannesposito.com
# tags: # tags:

View file

@ -0,0 +1,88 @@
-----
isHidden: false
menupriority: 1
kind: article
created_at: 2011-09-27T15:15:23+02:00
title: Higher order function in zsh
author_name: Yann Esposito
author_uri: yannesposito.com
# tags:
-----
<%= blogimage("main.png","Title image") %>
begindiv(intro)
<%= tlal %> des fonctions d'ordres supérieurs en zsh.
enddiv
Tout d'abord, pourquoi c'est important d'avoir ces fonctions.
Plus je programmais avec zsh plus j'essayais d'avoir un style fonctionnel.
Le minimum pour pouvoir avoir du code plus lisible c'est de posséder les fonctions `map`, `filter` et `fold`.
Voici pourquoi avec une comparaison.
Commençons par un programme qui converti tous les gif en png dans plusieurs répertoires projets contenant tous des répertoires resources.
Avant :
<code class="zsh">
# for each directory in projects dir
for toProject in /path/to/projects/*(/N); do
# toProject is /path/to/projects/foo
# project become foo (:t for tail)
project=${toProject:t}
for toResource in $toProject/resources/*.gif(.N); do
convert $toResource ${toResource:r}.png
\rm -f $toResource
done
done
</code>
Après
<code class="zsh">
gif_to_png() { convert $1 ${1:r}.png && \rm -f $1 }
handle_resources() { map gif_to_png $1/resources/*.gif(.N) }
map handle_resources /path/to/projects/*(/N)
</code>
Plus de bloc !
Oui, c'est un poil plus difficile à lire pour les non initiés.
Mais c'est à la fois plus concis et plus robuste.
Et encore ce code ne possède pas de test.
Recommençons sur le même principe.
Trouver les fichiers des projets qui ne contiennent pas de s dans leur nom qui ont le même nom que leur projet.
<code class="zsh">
for toProject in Projects/*; do
project=$toProject:t
if print -- project | grep -v s >/dev/null
then
print $project
for toResource in $toProject/*(.N); do
if print -- ${toResource:t} | grep $project >/dev/null; then
print -- "X $toResource"
fi
done
fi
done
</code>
After =>
<code class="zsh">
contain_no_s() { print $1 | grep -v s }
function verify_file_name {
local project=$1:t
contains_project_name() { print $1:t | grep $project }
map "print -- X" $(filter contains_project_name $1/*(.N))
}
map show_project_matchin_file $( filter contain_no_s Projects/* )
</code>
Also, the first verstion is a bit easier to read.
But the second one is clearly far superior in architecture.
Why?

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,238 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="shortcut icon" type="image/x-icon" href="/Scratch/img/favicon.ico" />
<link rel="stylesheet" type="text/css" href="/Scratch/assets/css/main.css" />
<link rel="stylesheet" type="text/css" href="/Scratch/css/twilight.css" />
<link rel="stylesheet" type="text/css" href="/Scratch/css/idc.css" />
<link rel="alternate" type="application/rss+xml" title="RSS" href="http://feeds.feedburner.com/yannespositocomen"/>
<link rel="alternate" lang="fr" xml:lang="fr" title="Higher order function in zsh" type="text/html" hreflang="fr" href="/Scratch/fr/blog/Higher-order-function-in-zsh/" />
<link rel="alternate" lang="en" xml:lang="en" title="Higher order function in zsh" type="text/html" hreflang="en" href="/Scratch/en/blog/Higher-order-function-in-zsh/" />
<script type="text/javascript" src="/Scratch/js/jquery-1.3.1.min.js"></script>
<script type="text/javascript" src="/Scratch/js/jquery.cookie.js"></script>
<script type="text/javascript" src="/Scratch/js/index.js"></script>
<!--[if lt IE 9]>
<script src="http://ie7-js.googlecode.com/svn/version/2.1(beta4)/IE9.js"></script>
<![endif]-->
<!-- < % if containMaths %>
<script type="text/javascript" src="/Scratch/js/MathJax/MathJax.js"></script>
< % end %>
-->
<title>Higher order function in zsh</title>
</head>
<body lang="en">
<script type="text/javascript">// <![CDATA[
document.write('<div id="blackpage"><img src="/Scratch/img/loading.gif" alt="loading..."/></div>');
// ]]>
</script>
<div id="content">
<div id="choix">
<div class="return"><a href="#entete">&darr; Menu &darr;</a></div>
<div id="choixlang">
<a href="/Scratch/fr/blog/Higher-order-function-in-zsh/" onclick="setLanguage('fr')">en Français</a>
</div>
</div>
<div id="titre">
<h1>
Higher order function in zsh
</h1>
</div>
<div class="flush"></div>
<div class="flush"></div>
<div id="afterheader">
<div class="corps">
<p><img alt="Title image" src="/Scratch/img/blog/Higher-order-function-in-zsh/main.png" /></p>
<div class="intro">
<p><span class="sc"><abbr title="Too long; didn't read">tl;dr</abbr>: </span> some simple implementation of higher order function for zsh.</p>
</div>
<pre class="twilight">
<span class="Comment"><span class="Comment">#</span> for each directory in projects dir</span>
<span class="Keyword">for</span> toProject <span class="Keyword">in</span> /path/to/projects/*(/N)<span class="Keyword">;</span> <span class="Keyword">do</span>
<span class="Comment"><span class="Comment">#</span> toProject is /path/to/projects/foo</span>
<span class="Comment"><span class="Comment">#</span> project become foo (:t for tail)</span>
project=<span class="Variable"><span class="Variable">${</span>toProject:t<span class="Variable">}</span></span>
<span class="Keyword">for</span> toResource <span class="Keyword">in</span> <span class="Variable"><span class="Variable">$</span>toProject</span>/resources/*.gif(.N)<span class="Keyword">;</span> <span class="Keyword">do</span>
convert <span class="Variable"><span class="Variable">$</span>toResource</span> <span class="Variable"><span class="Variable">${</span>toResource:r<span class="Variable">}</span></span>.png
<span class="Constant">\r</span>m -f <span class="Variable"><span class="Variable">$</span>toResource</span>
<span class="Keyword">done</span>
<span class="Keyword">done</span>
</pre>
<pre class="twilight">
<span class="Entity">gif_to_png</span>() { convert <span class="Variable"><span class="Variable">$</span>1</span> <span class="Variable"><span class="Variable">${</span>1:r<span class="Variable">}</span></span>.png <span class="Keyword">&amp;&amp;</span> <span class="Constant">\r</span>m -f <span class="Variable"><span class="Variable">$</span>1</span> }
<span class="Entity">handle_resources</span>() { map gif_to_png <span class="Variable"><span class="Variable">$</span>1</span>/resources/*.gif(.N) }
map handle_resources /path/to/projects/*(/N)
</pre>
<pre class="twilight">
<span class="Keyword">for</span> toProject <span class="Keyword">in</span> Projects/*<span class="Keyword">;</span> <span class="Keyword">do</span>
project=<span class="Variable"><span class="Variable">$</span>toProject</span>:t
<span class="Keyword">if</span> print -- project <span class="Keyword">|</span> grep -v s <span class="Keyword">&gt;</span>/dev/null
<span class="Keyword">then</span>
print <span class="Variable"><span class="Variable">$</span>project</span>
<span class="Keyword">for</span> toResource <span class="Keyword">in</span> <span class="Variable"><span class="Variable">$</span>toProject</span>/*(.N)<span class="Keyword">;</span> <span class="Keyword">do</span>
<span class="Keyword">if</span> print -- <span class="Variable"><span class="Variable">${</span>toResource:t<span class="Variable">}</span></span> <span class="Keyword">|</span> grep <span class="Variable"><span class="Variable">$</span>project</span> <span class="Keyword">&gt;</span>/dev/null<span class="Keyword">;</span> <span class="Keyword">then</span>
print -- <span class="String"><span class="String">&quot;</span>X <span class="StringVariable"><span class="StringVariable">$</span>toResource</span><span class="String">&quot;</span></span>
<span class="Keyword">fi</span>
<span class="Keyword">done</span>
<span class="Keyword">fi</span>
<span class="Keyword">done</span>
</pre>
<p>After =&gt;</p>
<pre class="twilight">
<span class="Entity">contain_no_s</span>() { print <span class="Variable"><span class="Variable">$</span>1</span> <span class="Keyword">|</span> grep -v s }
function verify_file_name {
local project=<span class="Variable"><span class="Variable">$</span>1</span>:t
<span class="Entity">contains_project_name</span>() { print <span class="Variable"><span class="Variable">$</span>1</span>:t <span class="Keyword">|</span> grep <span class="Variable"><span class="Variable">$</span>project</span> }
map <span class="String"><span class="String">&quot;</span>print -- X<span class="String">&quot;</span></span> <span class="String"><span class="String">$(</span>filter contains_project_name <span class="StringVariable"><span class="StringVariable">$</span>1</span>/*<span class="String"><span class="String">(</span>.N<span class="String">)</span></span><span class="String">)</span></span>
}
map show_project_matchin_file <span class="String"><span class="String">$(</span> filter contain_no_s Projects/* <span class="String">)</span></span>
</pre>
<p>Also, the first verstion is a bit easier to read.
But the second one is clearly far superior in architecture.
Why?</p>
</div>
<div id="choixrss">
<a id="rss" href="http://feeds.feedburner.com/yannespositocomen">
Subscribe
</a>
</div>
<script type="text/javascript">
$(document).ready(function(){
$('#comment').hide();
$('#clickcomment').click(showComments);
});
function showComments() {
$('#comment').show();
$('#clickcomment').fadeOut();
}
document.write('<div id="clickcomment">Comments</div>');
</script>
<div class="flush"></div>
<div class="corps" id="comment">
<h2 class="first">comments</h2>
<noscript>
You must enable javascript to comment.
</noscript>
<script type="text/javascript">
var idcomments_acct = 'a307f0044511ff1b5cfca573fc0a52e7';
var idcomments_post_id = '/Scratch/en/blog/Higher-order-function-in-zsh/';
var idcomments_post_url = 'http://yannesposito.com/Scratch/en/blog/Higher-order-function-in-zsh/';
</script>
<span id="IDCommentsPostTitle" style="display:none"></span>
<script type='text/javascript' src='/Scratch/js/genericCommentWrapperV2.js'></script>
</div>
<div id="entete" class="corps_spaced">
<div id="liens">
<ul><li><a href="/Scratch/en/">Home</a></li>
<li><a href="/Scratch/en/blog/">Blog</a></li>
<li><a href="/Scratch/en/softwares/">Softwares</a></li>
<li><a href="/Scratch/en/about/">About</a></li></ul>
</div>
<div class="flush"></div>
<hr/>
<div id="next_before_articles">
<div id="previous_articles">
previous entries
<div class="previous_article">
<a href="/Scratch/en/blog/programming-language-experience/"><span class="nicer">«</span>&nbsp;Programming Language Experience</a>
</div>
<div class="previous_article">
<a href="/Scratch/en/blog/Learn-Vim-Progressively/"><span class="nicer">«</span>&nbsp;Learn Vim Progressively</a>
</div>
<div class="previous_article">
<a href="/Scratch/en/blog/Password-Management/"><span class="nicer">«</span>&nbsp;40 character's passwords</a>
</div>
</div>
<div id="next_articles">
next entries
</div>
<div class="flush"></div>
</div>
</div>
<div id="bottom">
<div>
<a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">Copyright ©, Yann Esposito</a>
</div>
<div id="lastmod">
Created: 09/27/2011
Modified: 09/27/2011
</div>
<div>
Entirely done with
<a href="http://www.vim.org">Vim</a>
and
<a href="http://nanoc.stoneship.org">nanoc</a>
</div>
<div>
<a href="/Scratch/en/validation/">Validation</a>
<a href="http://validator.w3.org/check?uri=referer"> [xhtml] </a>
.
<a href="http://jigsaw.w3.org/css-validator/check/referer?profile=css3"> [css] </a>
.
<a href="http://validator.w3.org/feed/check.cgi?url=http%3A//yannesposito.com/Scratch/en/blog/feed/feed.xml">[rss]</a>
</div>
</div>
<div class="clear"></div>
</div>
<script type="text/javascript">
var clicky = { log: function(){ return; }, goal: function(){ return; }};
var clicky_site_id = 66374971;
(function() {
var s = document.createElement('script');
s.type = 'text/javascript';
s.async = true;
s.src = ( document.location.protocol == 'https:' ? 'https://static.getclicky.com/js' : 'http://static.getclicky.com/js' );
( document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0] ).appendChild( s );
})();
</script>
<noscript><p><img alt="Clicky" width="1" height="1" src="http://in.getclicky.com/66374971ns.gif" /></p></noscript>
</body>
</html>

View file

@ -527,30 +527,26 @@ $(document).ready(function() {
<div id="previous_articles"> <div id="previous_articles">
previous entries previous entries
<div class="previous_article">
<a href="/Scratch/en/blog/A-more-convenient-diff/"><span class="nicer">«</span>&nbsp;A more convenient diff</a>
</div>
<div class="previous_article">
<a href="/Scratch/en/blog/Haskell-Mandelbrot/"><span class="nicer">«</span>&nbsp;ASCII Haskell Mandelbrot</a>
</div>
<div class="previous_article"> <div class="previous_article">
<a href="/Scratch/en/blog/Password-Management/"><span class="nicer">«</span>&nbsp;40 character's passwords</a> <a href="/Scratch/en/blog/Password-Management/"><span class="nicer">«</span>&nbsp;40 character's passwords</a>
</div> </div>
</div> </div>
<div id="next_articles"> <div id="next_articles">
next entries next entries
<div class="next_article"> <div class="next_article">
<a href="/Scratch/en/blog/programming-language-experience/">programming language experience&nbsp;<span class="nicer">»</span></a> <a href="/Scratch/en/blog/programming-language-experience/">Programming Language Experience&nbsp;<span class="nicer">»</span></a>
</div> </div>
<div class="next_article">
<a href="/Scratch/en/blog/Higher-order-function-in-zsh/">Higher order function in zsh&nbsp;<span class="nicer">»</span></a>
</div>
</div> </div>

View file

@ -240,40 +240,28 @@ Further more using shorter password make it even harder for an attaquer to retri
<div id="previous_articles"> <div id="previous_articles">
previous entries previous entries
<div class="previous_article">
<a href="/Scratch/en/blog/2011-04-20-Now-hosted-on-github/"><span class="nicer">«</span>&nbsp;Now hosted on github</a>
</div>
<div class="previous_article">
<a href="/Scratch/en/blog/2011-01-03-Why-I-sadly-won-t-use-coffeescript/"><span class="nicer">«</span>&nbsp;Why I won't use CoffeeScript (sadly)</a>
</div>
<div class="previous_article">
<a href="/Scratch/en/blog/2011-01-03-Happy-New-Year/"><span class="nicer">«</span>&nbsp;Happy New Year</a>
</div>
</div> </div>
<div id="next_articles"> <div id="next_articles">
next entries next entries
<div class="next_article">
<a href="/Scratch/en/blog/Haskell-Mandelbrot/">ASCII Haskell Mandelbrot&nbsp;<span class="nicer">»</span></a>
</div>
<div class="next_article">
<a href="/Scratch/en/blog/A-more-convenient-diff/">A more convenient diff&nbsp;<span class="nicer">»</span></a>
</div>
<div class="next_article"> <div class="next_article">
<a href="/Scratch/en/blog/Learn-Vim-Progressively/">Learn Vim Progressively&nbsp;<span class="nicer">»</span></a> <a href="/Scratch/en/blog/Learn-Vim-Progressively/">Learn Vim Progressively&nbsp;<span class="nicer">»</span></a>
</div> </div>
<div class="next_article">
<a href="/Scratch/en/blog/programming-language-experience/">Programming Language Experience&nbsp;<span class="nicer">»</span></a>
</div>
<div class="next_article">
<a href="/Scratch/en/blog/Higher-order-function-in-zsh/">Higher order function in zsh&nbsp;<span class="nicer">»</span></a>
</div>
</div> </div>
<div class="flush"></div> <div class="flush"></div>
</div> </div>

View file

@ -2,13 +2,71 @@
<feed xmlns="http://www.w3.org/2005/Atom"> <feed xmlns="http://www.w3.org/2005/Atom">
<id>http://yannesposito.com/</id> <id>http://yannesposito.com/</id>
<title>Yogsototh's last blogs entries</title> <title>Yogsototh's last blogs entries</title>
<updated>2011-08-25T17:28:20Z</updated> <updated>2011-09-27T13:15:23Z</updated>
<link href="http://yannesposito.com/" rel="alternate"/> <link href="http://yannesposito.com/" rel="alternate"/>
<link href="http://feeds.feedburner.com/yannespositocomen" rel="self"/> <link href="http://feeds.feedburner.com/yannespositocomen" rel="self"/>
<author> <author>
<name>Yann Esposito</name> <name>Yann Esposito</name>
<uri>http://yannesposito.com</uri> <uri>http://yannesposito.com</uri>
</author> </author>
<entry>
<id>tag:yannesposito.com,2011-09-27:/Scratch/en/blog/Higher-order-function-in-zsh/</id>
<title type="html">Higher order function in zsh</title>
<published>2011-09-27T13:15:23Z</published>
<updated>2011-09-27T13:15:23Z</updated>
<link href="http://yannesposito.com/Scratch/en/blog/Higher-order-function-in-zsh/" rel="alternate"/>
<content type="html">&lt;p&gt;&lt;img alt="Title image" src="/Scratch/img/blog/Higher-order-function-in-zsh/main.png" /&gt;&lt;/p&gt;
&lt;div class="intro"&gt;
&lt;p&gt;&lt;span class="sc"&gt;&lt;abbr title="Too long; didn't read"&gt;tl;dr&lt;/abbr&gt;: &lt;/span&gt; some simple implementation of higher order function for zsh.&lt;/p&gt;
&lt;/div&gt;
&lt;pre class="twilight"&gt;
&lt;span class="Comment"&gt;&lt;span class="Comment"&gt;#&lt;/span&gt; for each directory in projects dir&lt;/span&gt;
&lt;span class="Keyword"&gt;for&lt;/span&gt; toProject &lt;span class="Keyword"&gt;in&lt;/span&gt; /path/to/projects/*(/N)&lt;span class="Keyword"&gt;;&lt;/span&gt; &lt;span class="Keyword"&gt;do&lt;/span&gt;
&lt;span class="Comment"&gt;&lt;span class="Comment"&gt;#&lt;/span&gt; toProject is /path/to/projects/foo&lt;/span&gt;
&lt;span class="Comment"&gt;&lt;span class="Comment"&gt;#&lt;/span&gt; project become foo (:t for tail)&lt;/span&gt;
project=&lt;span class="Variable"&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/p&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2011-09-05:/Scratch/en/blog/programming-language-experience/</id>
<title type="html">Programming Language Experience</title>
<published>2011-09-05T10:21:41Z</published>
<updated>2011-09-05T10:21:41Z</updated>
<link href="http://yannesposito.com/Scratch/en/blog/programming-language-experience/" rel="alternate"/>
<content type="html">&lt;p&gt;&lt;img alt="Title image" src="/Scratch/img/blog/programming-language-experience/main.png" /&gt;&lt;/p&gt;
&lt;div class="intro"&gt;
&lt;span class="sc"&gt;&lt;abbr title="Too long; didn't read"&gt;tl;dr&lt;/abbr&gt;: &lt;/span&gt; My feelings about programming languages I used.
&lt;/div&gt;
&lt;h3 id="basic"&gt;BASIC&lt;/h3&gt;
&lt;p&gt;The language of my firsts programs!
I was about 10, with an &lt;code&gt;MO5&lt;/code&gt; and &lt;code&gt;Amstrad CPC 6128&lt;/code&gt; and even with my &lt;code&gt;Atari STe&lt;/code&gt;.
This is the language of &lt;code&gt;GOTO&lt;/code&gt;s.
&#212; nostalgia.
Unfortunately this might be the only interesting part of this language.&lt;/p&gt;
&lt;p&gt;Today this language is obsolescent.
It not even a good language to learn programming.
I know there exist some compiler now.
But this is not enough to try to learn it.&lt;/p&gt;
&lt;pre class="twilight"&gt;
READY
10 PRINT &lt;/pre&gt;&lt;/p&gt;</content>
</entry>
<entry> <entry>
<id>tag:yannesposito.com,2011-08-25:/Scratch/en/blog/Learn-Vim-Progressively/</id> <id>tag:yannesposito.com,2011-08-25:/Scratch/en/blog/Learn-Vim-Progressively/</id>
<title type="html">Learn Vim Progressively</title> <title type="html">Learn Vim Progressively</title>
@ -42,42 +100,6 @@ Hard to learn, but incredible to use.&lt;/p&gt;
&lt;ol&gt; &lt;ol&gt;
&lt;li&gt;Survive&lt;/li&gt; &lt;li&gt;Survive&lt;/li&gt;
...&lt;/ol&gt;&lt;/p&gt;</content> ...&lt;/ol&gt;&lt;/p&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2011-08-17:/Scratch/en/blog/A-more-convenient-diff/</id>
<title type="html">A more convenient diff</title>
<published>2011-08-17T09:33:30Z</published>
<updated>2011-08-17T09:33:30Z</updated>
<link href="http://yannesposito.com/Scratch/en/blog/A-more-convenient-diff/" rel="alternate"/>
<content type="html">&lt;p&gt;Diff is a very useful tool. But it is not so easy to read for us, simple mortal.&lt;/p&gt;
&lt;p&gt;This is why, when you use &lt;code&gt;git&lt;/code&gt; it will use a better formatting and colorize it.&lt;/p&gt;
&lt;p&gt;Here is the script I use when I want to use human readable &lt;code&gt;diff&lt;/code&gt; &#224; la git. &lt;/p&gt;
&lt;div class="code"&gt;&lt;div class="file"&gt;&lt;a href="/Scratch/en/blog/A-more-convenient-diff/code/ydiff"&gt; &amp;#x27A5; ydiff &lt;/a&gt;&lt;/div&gt;&lt;div class="withfile"&gt;
&lt;pre class="twilight"&gt;
&lt;span class="Comment"&gt;&lt;span class="Comment"&gt;#&lt;/span&gt;!/usr/bin/env zsh&lt;/span&gt;
&lt;span class="Comment"&gt;&lt;span class="Comment"&gt;#&lt;/span&gt; Load colors helpers&lt;/span&gt;
autoload -U colors &lt;span class="Keyword"&gt;&amp;amp;&amp;amp;&lt;/span&gt; colors
function colorize_diff {
&lt;span class="Keyword"&gt;while&lt;/span&gt; read line&lt;span class="Keyword"&gt;;&lt;/span&gt; &lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2011-07-10:/Scratch/en/blog/Haskell-Mandelbrot/</id>
<title type="html">ASCII Haskell Mandelbrot</title>
<published>2011-07-10T10:41:26Z</published>
<updated>2011-07-10T10:41:26Z</updated>
<link href="http://yannesposito.com/Scratch/en/blog/Haskell-Mandelbrot/" rel="alternate"/>
<content type="html">&lt;p&gt;Here is the obfuscated code:&lt;/p&gt;
&lt;div class="code"&gt;&lt;div class="file"&gt;&lt;a href="/Scratch/en/blog/Haskell-Mandelbrot/code/animandel.hs"&gt; &amp;#x27A5; animandel.hs &lt;/a&gt;&lt;/div&gt;&lt;div class="withfile"&gt;
&lt;pre class="twilight"&gt;
a=27;b=79;c=&lt;span class="Constant"&gt;C&lt;/span&gt;(-2.0,-1.0);d=&lt;span class="Constant"&gt;C&lt;/span&gt;(1.0,1.0);e=&lt;span class="Constant"&gt;C&lt;/span&gt;(-2.501,-1.003)
&lt;span class="Keyword"&gt;newtype&lt;/span&gt; &lt;span class="Constant"&gt;C&lt;/span&gt; = &lt;span class="Constant"&gt;C&lt;/span&gt; (&lt;span class="Constant"&gt;Double&lt;/span&gt;,&lt;span class="Constant"&gt;Double&lt;/span&gt;) &lt;span class="Keyword"&gt;deriving&lt;/span&gt; (&lt;span class="Constant"&gt;Show&lt;/span&gt;,&lt;span class="Constant"&gt;Eq&lt;/span&gt;)
&lt;span class="Keyword"&gt;instance&lt;/span&gt; &lt;span class="Constant"&gt;Num&lt;/span&gt; &lt;span class="Constant"&gt;C&lt;/span&gt; &lt;span class="Keyword"&gt;where&lt;/span&gt; &lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</content>
</entry> </entry>
<entry> <entry>
<id>tag:yannesposito.com,2011-05-18:/Scratch/en/blog/Password-Management/</id> <id>tag:yannesposito.com,2011-05-18:/Scratch/en/blog/Password-Management/</id>
@ -108,816 +130,4 @@ It is both safe and easy to use everyday.&lt;/p&gt;
&lt;p&gt;If you just want to &lt;em&gt;use&lt;/em&gt; the tools without searching to understand why it is safe, just jump at the &lt;/p&gt;&lt;/p&gt;&lt;/div&gt;&lt;/p&gt;</content> &lt;p&gt;If you just want to &lt;em&gt;use&lt;/em&gt; the tools without searching to understand why it is safe, just jump at the &lt;/p&gt;&lt;/p&gt;&lt;/div&gt;&lt;/p&gt;</content>
</entry> </entry>
<entry>
<id>tag:yannesposito.com,2011-04-20:/Scratch/en/blog/2011-04-20-Now-hosted-on-github/</id>
<title type="html">Now hosted on github</title>
<published>2011-04-20T15:22:15Z</published>
<updated>2011-04-20T15:22:15Z</updated>
<link href="http://yannesposito.com/Scratch/en/blog/2011-04-20-Now-hosted-on-github/" rel="alternate"/>
<content type="html">&lt;p&gt;&lt;img alt="Title image" src="/Scratch/img/blog/2011-04-20-Now-hosted-on-github/main.png" /&gt;&lt;/p&gt;
&lt;p&gt;I am now hosted on github.&lt;/p&gt;
&lt;/p&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2011-01-03:/Scratch/en/blog/2011-01-03-Why-I-sadly-won-t-use-coffeescript/</id>
<title type="html">Why I won't use CoffeeScript (sadly)</title>
<published>2011-01-03T08:37:26Z</published>
<updated>2011-01-03T08:37:26Z</updated>
<link href="http://yannesposito.com/Scratch/en/blog/2011-01-03-Why-I-sadly-won-t-use-coffeescript/" rel="alternate"/>
<content type="html">&lt;p&gt;&lt;img alt="Title image" src="/Scratch/img/blog/2011-01-03-Why-I-sadly-won-t-use-coffeescript/main.png" /&gt;&lt;/p&gt;
&lt;div class="encadre"&gt;
&lt;p&gt;&lt;em&gt;Update&lt;/em&gt;: I might change my mind now. Why?
I just discovered a &lt;a href="https://github.com/rstacruz/js2coffee"&gt;js2coffee converter&lt;/a&gt;. Furthermore Denis Knauf told me about a &lt;code&gt;CoffeeScript.eval&lt;/code&gt; function.
And as Denis said: &amp;ldquo;it is time to use Coffeescript as a javascript with Ruby-like syntax not a Ruby-like programming language&amp;rdquo;.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="intro"&gt;
&lt;p&gt;&lt;span class="sc"&gt;&lt;abbr title="Too long; didn't read"&gt;tl;dr&lt;/abbr&gt;: &lt;/span&gt; I would have loved to program client side using a Ruby-like syntax. But in the end, CoffeScript raised more disavantages than advantages.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Recently I read &lt;/p&gt;&lt;/p&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2011-01-01:/Scratch/en/blog/2011-01-03-Happy-New-Year/</id>
<title type="html">Happy New Year</title>
<published>2011-01-01T06:55:54Z</published>
<updated>2011-01-01T06:55:54Z</updated>
<link href="http://yannesposito.com/Scratch/en/blog/2011-01-03-Happy-New-Year/" rel="alternate"/>
<content type="html">&lt;p&gt;Happy New Year!&lt;/p&gt;
&lt;p&gt;I was busy during the last months.
But I will revive a bit this blog.&lt;/p&gt;
&lt;p&gt;I made a project to write book in markdown syntax and generating HTML and high quality PDF. I am not finished with this.&lt;/p&gt;
&lt;p&gt;I had written an efficient &lt;em&gt;&amp;amp;&lt;/em&gt; simplistic MVC javascript framework.&lt;/p&gt;
&lt;p&gt;Best wishes for &lt;em&gt;2011&lt;/em&gt;!&lt;/p&gt;
</content>
</entry>
<entry>
<id>tag:yannesposito.com,2010-10-26:/Scratch/en/blog/2010-10-26-LaTeX-like-macro-and-markdown/</id>
<title type="html">LaTeX like macro for markdown</title>
<published>2010-10-26T12:30:58Z</published>
<updated>2010-10-26T12:30:58Z</updated>
<link href="http://yannesposito.com/Scratch/en/blog/2010-10-26-LaTeX-like-macro-and-markdown/" rel="alternate"/>
<content type="html">
&lt;div class="intro"&gt;
&lt;p&gt;&lt;span class="sc"&gt;&lt;abbr title="Too long; didn't read"&gt;tl;dr&lt;/abbr&gt;: &lt;/span&gt; I made a simple macro system for my blog. Now I juste have to write %&lt;span /&gt;latex and it show as &lt;span style="text-transform: uppercase"&gt;L&lt;sup style="vertical-align: 0.15em; margin-left: -0.36em; margin-right: -0.15em; font-size: .85em"&gt;a&lt;/sup&gt;T&lt;sub style="vertical-align: -0.5ex; margin-left: -0.1667em; margin-right: -0.125em; font-size: 1em"&gt;e&lt;/sub&gt;X&lt;/span&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;I added a macro system for my blog system.
When we are used to &lt;span style="text-transform: uppercase"&gt;L&lt;sup style="vertical-align: 0.15em; margin-left: -0.36em; margin-right: -0.15em; font-size: .85em"&gt;a&lt;/sup&gt;T&lt;sub style="vertical-align: -0.5ex; margin-left: -0.1667em; margin-right: -0.125em; font-size: 1em"&gt;e&lt;/sub&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2010-10-14:/Scratch/en/blog/2010-10-14-Fun-with-wav/</id>
<title type="html">Fun with wav</title>
<published>2010-10-14T09:04:58Z</published>
<updated>2010-10-14T09:04:58Z</updated>
<link href="http://yannesposito.com/Scratch/en/blog/2010-10-14-Fun-with-wav/" rel="alternate"/>
<content type="html">
&lt;div class="intro"&gt;
&lt;p&gt;&lt;span class="sc"&gt;&lt;abbr title="Too long; didn't read"&gt;tl;dr&lt;/abbr&gt;: &lt;/span&gt; Played to process a &lt;code&gt;wav&lt;/code&gt; file. &lt;code&gt;C&lt;/code&gt; was easier and cleaner than Ruby.&lt;/p&gt;
&lt;p&gt;edit: I wanted this program to work only on one specific machine (a x86 on a 32 bit Ubuntu). Therefore I didn&amp;rsquo;t had any portability consideration. This is only a &lt;em&gt;hack&lt;/em&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;I had to compute the sum of the absolute values of data of a &lt;code&gt;.wav&lt;/code&gt; file.
For efficiency (and fun) reasons, I had chosen &lt;code&gt;C&lt;/code&gt; language.&lt;/p&gt;
&lt;p&gt;I didn&amp;rsquo;t programmed in &lt;code&gt;C&lt;/code&gt; for a long time.
From my memory it was a pain to read and write to files.
But in the end I was really impressed by the code I get.
It was really clean.
This is even more impressive know...&lt;/p&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2010-10-10:/Scratch/en/blog/2010-10-10-Secure-eMail-on-Mac-in-few-steps/</id>
<title type="html">Secure eMail on Mac in few steps</title>
<published>2010-10-10T16:39:00Z</published>
<updated>2010-10-10T16:39:00Z</updated>
<link href="http://yannesposito.com/Scratch/en/blog/2010-10-10-Secure-eMail-on-Mac-in-few-steps/" rel="alternate"/>
<content type="html">&lt;p&gt;&lt;img alt="Title image" src="/Scratch/img/blog/2010-10-10-Secure-eMail-on-Mac-in-few-steps/main.png" class="clean" /&gt;&lt;/p&gt;
&lt;div class="intro"&gt;
&lt;p&gt;&lt;span class="sc"&gt;&lt;abbr title="Too long; didn't read"&gt;tl;dr&lt;/abbr&gt;: &lt;/span&gt; &lt;em&gt;on Mac&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Get a certificate signed by a CA: &lt;a href="http://www.instantssl.com/ssl-certificate-products/free-email-certificate.html"&gt;click here for a free one&lt;/a&gt;,&lt;/li&gt;
&lt;li&gt;open the file,&lt;/li&gt;
&lt;li&gt;delete securely the file,&lt;/li&gt;
&lt;li&gt;use Mail instead of online gmail.&lt;/li&gt;
&lt;li&gt;???&lt;/li&gt;
&lt;li&gt;Profit&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;I&amp;rsquo;ve (re)discovered how to become S/MIME compliant.
I am now suprised how easy it was.
Some years ago it was far more difficult.
Now I&amp;rsquo;m able to sign and encrypt my emails.&lt;/p&gt;
&lt;/p&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2010-10-06:/Scratch/en/blog/2010-10-06-New-Blog-Design-Constraints/</id>
<title type="html">New Blog Design Constraints</title>
<published>2010-10-06T09:33:03Z</published>
<updated>2010-10-06T09:33:03Z</updated>
<link href="http://yannesposito.com/Scratch/en/blog/2010-10-06-New-Blog-Design-Constraints/" rel="alternate"/>
<content type="html">&lt;p&gt;I changed the design of my blog.
Now it should be far cleaner.
I believe I use no CSS3 feature and far less javascript.
Of course before my website was perfectly browsable without javascript.
Unfortunately some CSS3 feature are not mature enough on some browser.
For more details you can read my older &lt;a href="/Scratch/en/blog/2010-07-07-CSS-rendering-problems-by-navigator"&gt;blog entry&lt;/a&gt;.
But the major problem came from, &lt;code&gt;font-shadow&lt;/code&gt; and gradients.
Then my new design obey to the following rules:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;no CSS element begining by &amp;lsquo;-moz&amp;rsquo; or &amp;lsquo;-webkit&amp;rsquo;, etc&amp;hellip;,&lt;/li&gt;
&lt;li&gt;no text shadow,&lt;/li&gt;
&lt;li&gt;clean (I mean delete) most javascript.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I hope the new design please you.&lt;/p&gt;
</content>
</entry>
<entry>
<id>tag:yannesposito.com,2010-09-02:/Scratch/en/blog/2010-09-02-Use-git-to-calculate-trusted-mtimes/</id>
<title type="html">Use git to calculate trusted mtimes</title>
<published>2010-09-02T13:54:10Z</published>
<updated>2010-09-02T13:54:10Z</updated>
<link href="http://yannesposito.com/Scratch/en/blog/2010-09-02-Use-git-to-calculate-trusted-mtimes/" rel="alternate"/>
<content type="html">&lt;p&gt;You can remark at the bottom of each page I provide a last modification date.
This label was first calculated using the &lt;code&gt;mtime&lt;/code&gt; of the file on the file system.
But many times I modify this date just to force some recompilation.
Therefore the date wasn&amp;rsquo;t a date of &lt;em&gt;real&lt;/em&gt; modification.&lt;/p&gt;
&lt;p&gt;I use &lt;a href="http://git-scm.org"&gt;git&lt;/a&gt; to version my website.
And fortunately I can know the last date of &lt;em&gt;real&lt;/em&gt; change of a file.
This is how I do this with &lt;a href="http://nanoc.stoneship.org"&gt;nanoc&lt;/a&gt;:&lt;/p&gt;
&lt;div class="code"&gt;&lt;div class="file"&gt;&lt;a href="/Scratch/en/blog/2010-09-02-Use-git-to-calculate-trusted-mtimes/code/gitmtime.rb"&gt; &amp;#x27A5; gitmtime.rb &lt;/a&gt;&lt;/div&gt;&lt;div class="withfile"&gt;
&lt;pre class="twilight"&gt;
&lt;span class="Keyword"&gt;def&lt;/span&gt; &lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2010-09-01:/Scratch/en/blog/2010-09-02-base64-and-sha1-on-iPhone/</id>
<title type="html">base64 and sha1 on iPhone</title>
<published>2010-09-01T22:02:17Z</published>
<updated>2010-09-01T22:02:17Z</updated>
<link href="http://yannesposito.com/Scratch/en/blog/2010-09-02-base64-and-sha1-on-iPhone/" rel="alternate"/>
<content type="html">&lt;p&gt;Lets be straight:
here are two functions to add to your code to have &lt;code&gt;base64&lt;/code&gt; and &lt;code&gt;hexadecimal&lt;/code&gt; version of the &lt;code&gt;sha1&lt;/code&gt; hash of an NSString.&lt;/p&gt;
&lt;p&gt;To use it, simply copy the code in your class and use as this:&lt;/p&gt;
&lt;pre class="twilight"&gt;
&lt;span class="CCCPreprocessorLine"&gt;#&lt;span class="CCCPreprocessorDirective"&gt;import&lt;/span&gt; &lt;span class="String"&gt;&lt;span class="String"&gt;&amp;lt;&lt;/span&gt;CommonCrypto/CommonDigest.h&lt;span class="String"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
...
&lt;span class="Support"&gt;NSString&lt;/span&gt; *b64_hash = [&lt;span class="Variable"&gt;self&lt;/span&gt; &lt;span class="SupportFunction"&gt;b64_sha1&lt;span class="SupportFunction"&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span class="String"&gt;&lt;span class="String"&gt;@&amp;quot;&lt;/span&gt;some NSString to be sha1'ed&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;];
...
&lt;/pre&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2010-08-31:/Scratch/en/blog/2010-08-31-send-mail-from-command-line-with-attached-file/</id>
<title type="html">send mail from command line with attached file</title>
<published>2010-08-31T08:16:04Z</published>
<updated>2010-08-31T08:16:04Z</updated>
<link href="http://yannesposito.com/Scratch/en/blog/2010-08-31-send-mail-from-command-line-with-attached-file/" rel="alternate"/>
<content type="html">&lt;p&gt;I had to send a mail using only command line.
I was surprised it isn&amp;rsquo;t straightforward at all.
I didn&amp;rsquo;t had &lt;code&gt;pine&lt;/code&gt; nor &lt;code&gt;mutt&lt;/code&gt; or anything like that.
Just &lt;code&gt;mail&lt;/code&gt; and &lt;code&gt;mailx&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;What Internet say (via google) is&lt;/p&gt;
&lt;pre class="twilight"&gt;
uuencode fic.jpg fic.jpg &lt;span class="Keyword"&gt;|&lt;/span&gt; mail -s &lt;span class="String"&gt;&lt;span class="String"&gt;'&lt;/span&gt;Subject&lt;span class="String"&gt;'&lt;/span&gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;p&gt;I tried it.
And it works almost each times.
But for my file, it didn&amp;rsquo;t worked.
I compressed it to &lt;code&gt;.gz&lt;/code&gt;, &lt;code&gt;.bz2&lt;/code&gt; and &lt;code&gt;.zip&lt;/code&gt;.
Using &lt;code&gt;.bz2&lt;/code&gt; format it worked nicely, but not with other formats.
Instead of having an attached file I saw this in my email.&lt;/p&gt;
&lt;pre&gt;
begin 664 fic....&lt;/pre&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2010-08-23:/Scratch/en/blog/2010-08-23-Now-heberged-on-heroku/</id>
<title type="html">Now hosted by heroku</title>
<published>2010-08-23T13:05:13Z</published>
<updated>2010-08-23T13:05:13Z</updated>
<link href="http://yannesposito.com/Scratch/en/blog/2010-08-23-Now-heberged-on-heroku/" rel="alternate"/>
<content type="html">&lt;h1 class="first" id="now-on-herokuhttpherokucom"&gt;Now on &lt;a href="http://heroku.com"&gt;Heroku&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;I now changed my hosting to &lt;a href="http://heroku.com"&gt;Heroku&lt;/a&gt;.
I believe it will be far more reliable.&lt;/p&gt;
&lt;p&gt;But as you should know my website is completely static.
I use &lt;a href="http://nanoc.stoneship.org/"&gt;nanoc&lt;/a&gt; to generate it.
But here is the conf to make it work on heroku.&lt;/p&gt;
&lt;p&gt;The root of my files is &lt;code&gt;/output&lt;/code&gt;. You only need to create a &lt;code&gt;config.ru&lt;/code&gt;&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" rel="footnote"&gt;1&lt;/a&gt;&lt;/sup&gt; file:&lt;/p&gt;
&lt;div class="code"&gt;&lt;div class="file"&gt;&lt;a href="/Scratch/en/blog/2010-08-23-Now-heberged-on-heroku/code/config.ru"&gt; &amp;#x27A5; config.ru &lt;/a&gt;&lt;/div&gt;&lt;div class="withfile"&gt;
&lt;pre class="twilight"&gt;
&lt;span class="Keyword"&gt;require&lt;/span&gt; &lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2010-08-11:/Scratch/en/blog/2010-07-09-Indecidabilities/</id>
<title type="html">Undecidabilities (part 1)</title>
<published>2010-08-11T08:04:31Z</published>
<updated>2010-08-11T08:04:31Z</updated>
<link href="http://yannesposito.com/Scratch/en/blog/2010-07-09-Indecidabilities/" rel="alternate"/>
<content type="html">
&lt;div class="intro"&gt;
&lt;p&gt;&lt;span class="sc"&gt;&lt;abbr title="Too long; didn't read"&gt;tl;dr&lt;/abbr&gt;: &lt;/span&gt; I pretend to create a world to give examples of different meanings behind the word &lt;em&gt;undecidability&lt;/em&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Undecidability due to measure errors, &lt;/li&gt;
&lt;li&gt;Big errors resulting from small initial measure error,&lt;/li&gt;
&lt;li&gt;Fractal undecidability&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;Logic Undecidability.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="corps"&gt;
&lt;h1 class="first" id="the-undecidabilities"&gt;The Undecidabilities&lt;/h1&gt;
&lt;div class="intro"&gt;
&lt;p&gt;If a demiurge made our world, he certainly had a great sense of humor.
After this read, you should be convinced.
I&amp;rsquo;ll pretend to be him.
I&amp;rsquo;ll create a simplified world.
A world that obey to simple mathematical rules.
And I&amp;rsquo;ll...&lt;/p&gt;&lt;/div&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2010-07-31:/Scratch/en/blog/2010-07-31-New-style-after-holidays/</id>
<title type="html">New style after holidays</title>
<published>2010-07-31T21:59:10Z</published>
<updated>2010-07-31T21:59:10Z</updated>
<link href="http://yannesposito.com/Scratch/en/blog/2010-07-31-New-style-after-holidays/" rel="alternate"/>
<content type="html">&lt;p&gt;Before my holidays many visitors tell me my website was too long to scroll.
This is why I completely changed my website design.
Now all should scroll smoothly on all platforms.
I was inspired by Readability and iBooks&lt;small&gt;&amp;copy;&lt;/small&gt; (the iPhone&lt;small&gt;&amp;copy;&lt;/small&gt; application).&lt;/p&gt;
&lt;p&gt;Tell me what you think of this new design.&lt;/p&gt;
</content>
</entry>
<entry>
<id>tag:yannesposito.com,2010-07-07:/Scratch/en/blog/2010-07-07-CSS-rendering-problems-by-navigator/</id>
<title type="html">Do not use CSS gradient with Chrome</title>
<published>2010-07-07T13:43:43Z</published>
<updated>2010-07-07T13:43:43Z</updated>
<link href="http://yannesposito.com/Scratch/en/blog/2010-07-07-CSS-rendering-problems-by-navigator/" rel="alternate"/>
<content type="html">&lt;p&gt;Some &lt;a href="http://reddit.com"&gt;Reddit&lt;/a&gt; users reported my website was really long to load and to scroll.
They thinks it was because of the &amp;lsquo;1px shadow&amp;rsquo; I apply on all the text.
I was a bit surprised, because I make some test into a really &lt;em&gt;slow&lt;/em&gt; virtual machine. And all have always worked fine. In fact, what slow down so much are by order of importance:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Radial gradient on Chrome (not in Safari on Mac)&lt;/li&gt;
&lt;li&gt;Box shadows on Firefox and Chrome&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="gradient"&gt;Gradient&lt;/h2&gt;
&lt;p&gt;On Safari on Mac there is absolutely no rendering time problem. But when I use Chrome under Linux it is almost unusable.&lt;/p&gt;
&lt;p&gt;Safari and Chrome use webkit, when you access my website with javascript enabled, an additionnal browser specific CSS is loaded....&lt;/p&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2010-07-05:/Scratch/en/blog/2010-07-05-Cappuccino-and-Web-applications/</id>
<title type="html">Cappuccino vs jQuery</title>
<published>2010-07-05T11:49:04Z</published>
<updated>2010-07-05T11:49:04Z</updated>
<link href="http://yannesposito.com/Scratch/en/blog/2010-07-05-Cappuccino-and-Web-applications/" rel="alternate"/>
<content type="html">
&lt;div class="intro"&gt;
&lt;p&gt;&lt;abbr class="sc" title="Too long; didn't read"&gt;tl;dr&lt;/abbr&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tried to make &lt;a href="http://yannesposito.com/Softwares/YPassword.html"&gt;YPassword&lt;/a&gt; in jQuery and with Cappuccino.&lt;/li&gt;
&lt;li&gt;Cappuccino nice in desktop browser but 1.4MB, not compatible with iPhone.&lt;/li&gt;
&lt;li&gt;jQuery not as nice as the Cappuccino version but 106KB. iPhone compatible.&lt;/li&gt;
&lt;li&gt;I&amp;rsquo;ll give a try to Dashcode 3.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;hr /&gt;
&lt;div class="intro"&gt;
&lt;p&gt;Before start, I must say I know Cappuccino and jQuery are no more comparable than Cocoa and the C++ standard library. One is oriented for user interface while the other is and helper for low level programming.
Nonetheless I used these two to make the same web application. This is why I compare the exp...&lt;/p&gt;&lt;/div&gt;&lt;/hr&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2010-06-18:/Scratch/en/blog/2010-06-19-jQuery-popup-the-easy-way/</id>
<title type="html">jQuery popup the easy way</title>
<published>2010-06-18T22:44:50Z</published>
<updated>2010-06-18T22:44:50Z</updated>
<link href="http://yannesposito.com/Scratch/en/blog/2010-06-19-jQuery-popup-the-easy-way/" rel="alternate"/>
<content type="html">&lt;p&gt;Some source code on this blog can be downloaded.
Most of time, the code is larger than the &lt;code&gt;div&lt;/code&gt; bloc.
This is why I use a method to show this code in a large jQuery popup. &lt;/p&gt;
&lt;p&gt;You can try clicking the following code&amp;nbsp;; remark that the content is cutted a bit after &lt;code&gt;z-index&lt;/code&gt;:&lt;/p&gt;
&lt;div class="code"&gt;&lt;div class="file"&gt;&lt;a href="/Scratch/en/blog/2010-06-19-jQuery-popup-the-easy-way/code/essai.js"&gt; &amp;#x27A5; essai.js &lt;/a&gt;&lt;/div&gt;&lt;div class="withfile"&gt;
&lt;pre class="twilight"&gt;
&lt;span class="Comment"&gt;&lt;span class="Comment"&gt;//&lt;/span&gt; --- code popup ---&lt;/span&gt;
&lt;span class="Storage"&gt;function&lt;/span&gt; &lt;span class="Entity"&gt;openPopup&lt;/span&gt;() {
&lt;span class="Keyword"&gt;$&lt;/span&gt;(&lt;span class="Variable"&gt;this&lt;/span&gt;).clone(&lt;span class="Constant"&gt;false&lt;/span&gt;).appendTo(&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2010-06-17:/Scratch/en/blog/2010-06-17-hide-yourself-to-analytics/</id>
<title type="html">Hide Yourself to your Analytics</title>
<published>2010-06-17T14:37:22Z</published>
<updated>2010-06-17T14:37:22Z</updated>
<link href="http://yannesposito.com/Scratch/en/blog/2010-06-17-hide-yourself-to-analytics/" rel="alternate"/>
<content type="html">&lt;p&gt;This is a way not to count your own visits to your blog.
First you should look on how &lt;a href="/Scratch/en/blog/2010-06-17-track-events-with-google-analytics"&gt;I handle analytics&lt;/a&gt;. All analytics are handled in one javascript file, this make things really convenient.&lt;/p&gt;
&lt;p&gt;Then you need to know my method use the &lt;code&gt;jquery-cookie&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;I check if the key &lt;code&gt;admin&lt;/code&gt; is not set in the cookie before adding the visit.&lt;/p&gt;
&lt;pre class="twilight"&gt;
&lt;span class="Storage"&gt;var&lt;/span&gt; admin &lt;span class="Keyword"&gt;=&lt;/span&gt; &lt;span class="Keyword"&gt;$&lt;/span&gt;.&lt;span class="SupportConstant"&gt;cookie&lt;/span&gt;(&lt;span class="String"&gt;&lt;span class="String"&gt;'&lt;/span&gt;admin&lt;span class="String"&gt;'&lt;/span&gt;&lt;/span&gt;);
&lt;span class="Keyword"&gt;if&lt;/span&gt; (&lt;span class="Keyword"&gt;!&lt;/span&gt; admin) {
...&lt;/pre&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2010-06-17:/Scratch/en/blog/2010-06-17-track-events-with-google-analytics/</id>
<title type="html">Track Events with Google Analytics</title>
<published>2010-06-17T12:41:36Z</published>
<updated>2010-06-17T12:41:36Z</updated>
<link href="http://yannesposito.com/Scratch/en/blog/2010-06-17-track-events-with-google-analytics/" rel="alternate"/>
<content type="html">&lt;p&gt;Here is how to track all clicks on your website using google analytics asynchronously.&lt;/p&gt;
&lt;p&gt;First in your &lt;span class="sc"&gt;html&lt;/span&gt; you need to use &lt;a href="http://jquery.com"&gt;jQuery&lt;/a&gt; and a javscript file I named &lt;code&gt;yga.js&lt;/code&gt;:&lt;/p&gt;
&lt;pre class="twilight"&gt;
&lt;span class="EmbeddedSource"&gt; &lt;span class="EmbeddedSource"&gt;&amp;lt;&lt;/span&gt;&lt;span class="MetaTagInline"&gt;script&lt;/span&gt; &lt;span class="MetaTagInline"&gt;type&lt;/span&gt;=&lt;span class="String"&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;text/javascript&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class="MetaTagInline"&gt;src&lt;/span&gt;=&lt;span class="String"&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;jquery.js&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class="EmbeddedSource"&gt;&amp;gt;&lt;/span&gt;&lt;span class="EmbeddedSource"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="MetaTagInline"&gt;scr...&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2010-06-15:/Scratch/en/blog/2010-06-15-Get-my-blog-engine/</id>
<title type="html">Get my blog engine</title>
<published>2010-06-15T08:56:32Z</published>
<updated>2010-06-15T08:56:32Z</updated>
<link href="http://yannesposito.com/Scratch/en/blog/2010-06-15-Get-my-blog-engine/" rel="alternate"/>
<content type="html">&lt;p&gt;I published a &lt;em&gt;light&lt;/em&gt; version of my blog engine based on &lt;a href="http://nanoc.stoneship.org"&gt;nanoc&lt;/a&gt; yesterday night. By &lt;em&gt;light&lt;/em&gt;, I mean a lighter, more portable CSS (without round border).
You can get it on &lt;a href="http://github.com/yogsototh/nanoc3_blog"&gt;github.com&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;What this system provide?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;All &lt;a href="http://nanoc.stoneship.org"&gt;nanoc&lt;/a&gt; advantages,&lt;/li&gt;
&lt;li&gt;Easy multi-language handling,&lt;/li&gt;
&lt;li&gt;Syntax Coloration for most languages,&lt;/li&gt;
&lt;li&gt;&lt;a href="http://intensedebate.org"&gt;intenseDebate&lt;/a&gt; comments integration (asynchronous)&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;Portable with and without javascript, XHTML Strict 1.0 / CSS3,&lt;/li&gt;
&lt;li&gt;Write in markdown format (no HTML editing needed),&lt;/li&gt;
&lt;li&gt;Typographic ameliorations (no &amp;lsquo;:&amp;rsquo; ...&lt;/li&gt;&lt;/ul&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2010-06-14:/Scratch/en/blog/2010-06-14-multi-language-choices/</id>
<title type="html">multi language choices</title>
<published>2010-06-14T14:14:57Z</published>
<updated>2010-06-14T14:14:57Z</updated>
<link href="http://yannesposito.com/Scratch/en/blog/2010-06-14-multi-language-choices/" rel="alternate"/>
<content type="html">&lt;p&gt;I translate most of my blog entries in French and English.
Most people advice me to have one file per language. Generally it ends with:&lt;/p&gt;
&lt;pre class="twilight"&gt;
Bonjour,
voici un exemple de texte en fran&#231;ais.
[image](url)
&lt;/pre&gt;
&lt;pre class="twilight"&gt;
Hello,
here is an example of english text.
[image](url)
&lt;/pre&gt;
&lt;p&gt;This way of handling translations force you to write completely an article in one language, copy it, and translate it.&lt;/p&gt;
&lt;p&gt;However, most of time, there are common parts like images, source code, etc&amp;hellip;
When I want to correct some mistake on these parts, I have to make twice the work. With sometimes adding another mistake in only one language.&lt;/p&gt;
&lt;p&gt;This is why I preferred to handle it differently.
I use &lt;em&gt;tags&lt;/em&gt; on a single file.
Finally my files...&lt;/p&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2010-05-24:/Scratch/en/blog/2010-05-24-Trees--Pragmatism-and-Formalism/</id>
<title type="html">Trees; Pragmatism and Formalism</title>
<published>2010-05-24T18:05:14Z</published>
<updated>2010-05-24T18:05:14Z</updated>
<link href="http://yannesposito.com/Scratch/en/blog/2010-05-24-Trees--Pragmatism-and-Formalism/" rel="alternate"/>
<content type="html">
&lt;div class="intro"&gt;
&lt;p&gt;&lt;abbr title="Too Long; Don't Read"&gt;&lt;span class="sc"&gt;tl;dr&lt;/span&gt;&lt;/abbr&gt;: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I tried to program a simple filter&lt;/li&gt;
&lt;li&gt;Was blocked 2 days&lt;/li&gt;
&lt;li&gt;Then stopped working like an engineer monkey&lt;/li&gt;
&lt;li&gt;Used a pen and a sheet of paper&lt;/li&gt;
&lt;li&gt;Made some math.&lt;/li&gt;
&lt;li&gt;Crushed the problem in 10 minutes&lt;/li&gt;
&lt;li&gt;Conclusion: The pragmatism shouldn&amp;rsquo;t mean &amp;ldquo;never use theory&amp;rdquo;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2 id="abstract-longer-than-abbr-titletoo-long-dont-readsctldrscabbr"&gt;Abstract (longer than &lt;abbr title="Too Long; Don't Read"&gt;&lt;span class="sc"&gt;tl;dr&lt;/span&gt;&lt;/abbr&gt;)&lt;/h2&gt;
&lt;p&gt;For my job, I needed to resolve a problem. It first seems not too hard.
Then I started working directly on my program.
I entered in the &lt;em&gt;infernal&lt;/em&gt;: ...&lt;/p&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2010-05-19:/Scratch/en/blog/2010-05-19-How-to-cut-HTML-and-repair-it/</id>
<title type="html">How to repair a cutted XML?</title>
<published>2010-05-19T20:20:34Z</published>
<updated>2010-05-19T20:20:34Z</updated>
<link href="http://yannesposito.com/Scratch/en/blog/2010-05-19-How-to-cut-HTML-and-repair-it/" rel="alternate"/>
<content type="html">&lt;p&gt;For my main page, you can see, a list of my latest blog entry. And you have the first part of each article. To accomplish that, I needed to include the begining of the entry and to cut it somewhere. But now, I had to repair this cutted HTML.&lt;/p&gt;
&lt;p&gt;Here is an example:&lt;/p&gt;
&lt;pre class="twilight"&gt;
&lt;span class="MetaTagAll"&gt;&lt;span class="MetaTagAll"&gt;&amp;lt;&lt;/span&gt;&lt;span class="MetaTagAll"&gt;div&lt;/span&gt; &lt;span class="MetaTagAll"&gt;class&lt;/span&gt;=&lt;span class="String"&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;corps&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class="MetaTagAll"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="MetaTagAll"&gt;&lt;span class="MetaTagAll"&gt;&amp;lt;&lt;/span&gt;&lt;span class="MetaTagAll"&gt;div&lt;/span&gt; &lt;span class="MetaTagAll"&gt;class&lt;/span&gt;=&lt;span class="String"&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;intro&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2010-05-17:/Scratch/en/blog/2010-05-17-at-least-this-blog-revive/</id>
<title type="html">I live again!</title>
<published>2010-05-17T11:25:51Z</published>
<updated>2010-05-17T11:25:51Z</updated>
<link href="http://yannesposito.com/Scratch/en/blog/2010-05-17-at-least-this-blog-revive/" rel="alternate"/>
<content type="html">&lt;p&gt;Hi all!&lt;/p&gt;
&lt;blockquote cite="http://www.madore.org/~david/weblog/2010-05.html#d.2010-05-12.1752"&gt;
&lt;p&gt;The more you wait to do something, the more difficult it is to start doing it.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I had to write another post for this blog. I had added many article idea in my todolist. But, I made many other things, and I&amp;rsquo;ve always said (until now), I&amp;rsquo;ll do this later. What changed my mind is the haunt of this simple remark about how to be productive in programming.
&amp;gt; Stop write &lt;code&gt;TODO&lt;/code&gt; in your code and make it now!&lt;br /&gt;
&amp;gt; You&amp;rsquo;ll be surprised by the results.&lt;/p&gt;
&lt;p&gt;In short:
&amp;gt; &lt;strong&gt;Just do it!&lt;/strong&gt; ou &lt;strong&gt;Juste fait le&lt;/strong&gt; comme auraient dit les nuls.&lt;/p&gt;
&lt;p&gt;Finally I&amp;rsquo;ll certainly write blog post more often for a ...&lt;/p&gt;&lt;/p&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2010-03-23:/Scratch/en/blog/2010-03-23-Encapsulate-git/</id>
<title type="html">Encapsulate git</title>
<published>2010-03-23T20:37:36Z</published>
<updated>2010-03-23T20:37:36Z</updated>
<link href="http://yannesposito.com/Scratch/en/blog/2010-03-23-Encapsulate-git/" rel="alternate"/>
<content type="html">&lt;div class="intro"&gt;
Here is a solution to maintain divergent branches in git. Because it is easy to merge by mistake. I give a script that encapsulate git in order to forbid some merge and warn you some merge should be dangerous.
&lt;/div&gt;
&lt;h2 id="how-to-protect-against-your-own-dumb"&gt;how to protect against your own dumb&lt;/h2&gt;
&lt;p&gt;I work on a project in which some of my git branches should remain divergent. And divergences should grow.&lt;/p&gt;
&lt;p&gt;I also use some branch to contain what is common between projects.&lt;/p&gt;
&lt;p&gt;Say I have some branches:&lt;/p&gt;
&lt;p&gt;master: common to all branches
dev: branch devoted to unstable development
client: branch with features for all client but not general enough for master
clientA: project adapted for client A
clientB: project adapted for client B&lt;/p&gt;
&lt;p&gt;Her...&lt;/p&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2010-03-22:/Scratch/en/blog/2010-03-22-Git-Tips/</id>
<title type="html">Git Tips</title>
<published>2010-03-22T08:42:27Z</published>
<updated>2010-03-22T08:42:27Z</updated>
<link href="http://yannesposito.com/Scratch/en/blog/2010-03-22-Git-Tips/" rel="alternate"/>
<content type="html">&lt;h2 class="first" id="clone-from-github-behind-an-evil-firewall"&gt;clone from github behind an evil firewall&lt;/h2&gt;
&lt;p&gt;Standard:&lt;/p&gt;
&lt;div&gt;&lt;pre class="twilight"&gt;
git clone git@github.com:yogsototh/project.git
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Using HTTPS port:&lt;/p&gt;
&lt;div&gt;&lt;pre class="twilight"&gt;
git clone git+ssh://git@github.com:443/yogsototh/project.git
&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id="clone-all-branches"&gt;clone all branches&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;git clone&lt;/code&gt; can only fetch the master branch.&lt;/p&gt;
&lt;p&gt;If you don&amp;rsquo;t have much branches, you can simply use clone your project and then use the following command:&lt;/p&gt;
&lt;div&gt;&lt;pre class="twilight"&gt;
git branch --track local_branch remote_branch
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;for example:&lt;/p&gt;
&lt;div&gt;&lt;pre class="twilight"&gt;
$ git clone git@github:yogsototh/example.git
$ git branch
master *
$ git ...&lt;/pre&gt;&lt;/div&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2010-02-23:/Scratch/en/blog/2010-02-23-When-regexp-is-not-the-best-solution/</id>
<title type="html">When regexp is not the best solution</title>
<published>2010-02-23T08:09:52Z</published>
<updated>2010-02-23T08:09:52Z</updated>
<link href="http://yannesposito.com/Scratch/en/blog/2010-02-23-When-regexp-is-not-the-best-solution/" rel="alternate"/>
<content type="html">&lt;p&gt;Regular expression are really useful. Unfortunately, they are not always the best way of doing things.
Particularly when transformations you want to make are easy.&lt;/p&gt;
&lt;p&gt;I wanted to know how to get file extension from filename the fastest way possible. There is 3 natural way of doing this:&lt;/p&gt;
&lt;div&gt;&lt;pre class="twilight"&gt;
&lt;span class="Comment"&gt;&lt;span class="Comment"&gt;#&lt;/span&gt; regexp&lt;/span&gt;
str.&lt;span class="Entity"&gt;match&lt;/span&gt;(&lt;span class="StringRegexp"&gt;&lt;span class="StringRegexp"&gt;/&lt;/span&gt;&lt;/span&gt;&lt;span class="StringRegexp"&gt;&lt;span class="StringRegexp"&gt;&lt;span class="StringRegexp"&gt;[&lt;/span&gt;^.&lt;span class="StringRegexp"&gt;]&lt;/span&gt;&lt;/span&gt;*$&lt;/span&gt;&lt;span class="StringRegexp"&gt;&lt;span class="StringRegexp"&gt;/&lt;/span&gt;&lt;/span&gt;);
ext&lt;span class="Keyword"&gt;=&lt;/span&gt;&lt;span class="Variable"&gt;&lt;span class="Variable"&gt;...&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2010-02-18:/Scratch/en/blog/2010-02-18-split-a-file-by-keyword/</id>
<title type="html">split a file by keyword</title>
<published>2010-02-18T13:29:14Z</published>
<updated>2010-02-18T13:29:14Z</updated>
<link href="http://yannesposito.com/Scratch/en/blog/2010-02-18-split-a-file-by-keyword/" rel="alternate"/>
<content type="html">&lt;p&gt;Strangely enough, I didn&amp;rsquo;t find any built-in tool to split a file by keyword. I made one myself in &lt;code&gt;awk&lt;/code&gt;. I put it here mostly for myself. But it could also helps someone else.
The following code split a file for each line containing the word &lt;code&gt;UTC&lt;/code&gt;.&lt;/p&gt;
&lt;div&gt;&lt;pre class="twilight"&gt;
&lt;span class="Comment"&gt;&lt;span class="Comment"&gt;#&lt;/span&gt;!/usr/bin/env awk&lt;/span&gt;
&lt;span class="Entity"&gt;BEGIN&lt;/span&gt;{i=0;}
&lt;span class="StringRegexp"&gt;&lt;span class="StringRegexp"&gt;/&lt;/span&gt;UTC&lt;span class="StringRegexp"&gt;/&lt;/span&gt;&lt;/span&gt; {
i+=1;
FIC=&lt;span class="SupportFunction"&gt;sprintf&lt;/span&gt;(&lt;span class="String"&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;fic.%03d&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;,i);
}
{&lt;span class="SupportFunction"&gt;print&lt;/span&gt; &lt;span class="Variable"&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2010-02-16:/Scratch/en/blog/2010-02-16-All-but-something-regexp--2-/</id>
<title type="html">Pragmatic Regular Expression Exclude (2)</title>
<published>2010-02-16T08:33:21Z</published>
<updated>2010-02-16T08:33:21Z</updated>
<link href="http://yannesposito.com/Scratch/en/blog/2010-02-16-All-but-something-regexp--2-/" rel="alternate"/>
<content type="html">&lt;p&gt;In my &lt;a href="previouspost"&gt;previous post&lt;/a&gt; I had given some trick to match all except something. On the same idea, the trick to match the smallest possible string. Say you want to match the string between &amp;lsquo;a&amp;rsquo; and &amp;lsquo;b&amp;rsquo;, for example, you want to match:&lt;/p&gt;
&lt;pre class="twilight"&gt;
a.....&lt;span class="Constant"&gt;&lt;strong&gt;a......b&lt;/strong&gt;&lt;/span&gt;..b..a....&lt;span class="Constant"&gt;&lt;strong&gt;a....b&lt;/strong&gt;&lt;/span&gt;...
&lt;/pre&gt;
&lt;p&gt;Here are two common errors and a solution:&lt;/p&gt;
&lt;pre class="twilight"&gt;
/a.*b/
&lt;span class="Constant"&gt;&lt;strong&gt;a.....a......b..b..a....a....b&lt;/strong&gt;&lt;/span&gt;...
&lt;/pre&gt;
&lt;p&gt;The first error is to use the &lt;em&gt;evil&lt;/em&gt; &lt;code&gt;.*&lt;/code&gt;. Because you will match from the first to the last.&lt;/p&gt;
&lt;pre class="twilight"&gt;
/a.*?b/
&lt;span class="Constant"&gt;&lt;strong&gt;...&lt;/strong&gt;&lt;/span&gt;&lt;/pre&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2010-02-15:/Scratch/en/blog/2010-02-15-All-but-something-regexp/</id>
<title type="html">Pragmatic Regular Expression Exclude</title>
<published>2010-02-15T09:16:12Z</published>
<updated>2010-02-15T09:16:12Z</updated>
<link href="http://yannesposito.com/Scratch/en/blog/2010-02-15-All-but-something-regexp/" rel="alternate"/>
<content type="html">&lt;p&gt;Sometimes you cannot simply write:&lt;/p&gt;
&lt;div&gt;&lt;pre class="twilight"&gt;
&lt;span class="Keyword"&gt;if&lt;/span&gt; str.&lt;span class="Entity"&gt;match&lt;/span&gt;(regexp) &lt;span class="Keyword"&gt;and&lt;/span&gt;
&lt;span class="Keyword"&gt;not&lt;/span&gt; str.&lt;span class="Entity"&gt;match&lt;/span&gt;(other_regexp)
do_something
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;and you have to make this behaviour with only one regular expression. The problem is the complementary of regular languages is not regular. Then, for some expression it is absolutely not impossible.&lt;/p&gt;
&lt;p&gt;But sometimes with some simple regular expression it should be possible&lt;sup&gt;&lt;a href="#note1"&gt;&amp;dagger;&lt;/a&gt;&lt;/sup&gt;. Say you want to match everything containing the some word say &lt;code&gt;bull&lt;/code&gt; but don&amp;rsquo;t want to match &lt;code&gt;bullshit&lt;/code&gt;. Here is a nice way to do that:&lt;/p&gt;...</content>
</entry>
<entry>
<id>tag:yannesposito.com,2010-01-12:/Scratch/en/blog/2010-01-12-antialias-font-in-Firefox-under-Ubuntu/</id>
<title type="html">antialias font in Firefox under Ubuntu</title>
<published>2010-01-12T14:36:40Z</published>
<updated>2010-01-12T14:36:40Z</updated>
<link href="http://yannesposito.com/Scratch/en/blog/2010-01-12-antialias-font-in-Firefox-under-Ubuntu/" rel="alternate"/>
<content type="html">&lt;p&gt;How to stop using bad Microsoft&#169; font under Ubuntu Linux in order to user nice anti aliased font under Firefox.&lt;/p&gt;
&lt;p&gt;Just modify the &lt;code&gt;/etc/fonts/local.conf&lt;/code&gt; with the following code: &lt;/p&gt;
&lt;div&gt;
&lt;div class="code"&gt;&lt;div class="file"&gt;&lt;a href="/Scratch/en/blog/2010-01-12-antialias-font-in-Firefox-under-Ubuntu/code/local.conf"&gt; &amp;#x27A5; local.conf &lt;/a&gt;&lt;/div&gt;&lt;div class="withfile"&gt;
&lt;pre class="twilight"&gt;
&lt;span class="DoctypeXmlProcessing"&gt;&lt;span class="DoctypeXmlProcessing"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="DoctypeXmlProcessing"&gt;xml&lt;/span&gt;&lt;span class="DoctypeXmlProcessing"&gt; version&lt;/span&gt;=&lt;span class="DoctypeXmlProcessing"&gt;&lt;span class="DoctypeXmlProcessing"&gt;&amp;quot;&lt;/span&gt;1.0&lt;span class="DoctypeXmlProcessing"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class="DoctypeXmlProcessing"&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2010-01-04:/Scratch/en/blog/2010-01-04-Change-default-shell-on-Mac-OS-X/</id>
<title type="html">Change default shell on Mac OS X</title>
<published>2010-01-04T10:31:47Z</published>
<updated>2010-01-04T10:31:47Z</updated>
<link href="http://yannesposito.com/Scratch/en/blog/2010-01-04-Change-default-shell-on-Mac-OS-X/" rel="alternate"/>
<content type="html">&lt;p&gt;I just found a way to change the default shell on Mac OS X. This note is mostly for me, but somebody else should find it useful. Just launch the following command: &lt;/p&gt;
&lt;div&gt;&lt;pre class="twilight"&gt;
&lt;span class="Keyword"&gt;&amp;gt;&lt;/span&gt; chsh
&lt;/pre&gt;&lt;/div&gt;
</content>
</entry>
<entry>
<id>tag:yannesposito.com,2009-12-14:/Scratch/en/blog/2009-12-14-Git-vs--Bzr/</id>
<title type="html">Git vs. Bzr</title>
<published>2009-12-14T08:46:36Z</published>
<updated>2009-12-14T08:46:36Z</updated>
<link href="http://yannesposito.com/Scratch/en/blog/2009-12-14-Git-vs--Bzr/" rel="alternate"/>
<content type="html">
&lt;div class="intro"&gt;
&lt;p&gt;Why even if I believe &lt;code&gt;git&lt;/code&gt; has many bad point I believe it is the best DCVS around to work with. This is why I first tell why I prefer &lt;a href="http://bazaar-vcs.org"&gt;Bazaar&lt;/a&gt; over &lt;a href="http://git-scm.org"&gt;Git&lt;/a&gt;. Secondly I&amp;rsquo;ll talk about the only advantage of git against Bazaar which lead me to prefer it.&lt;/p&gt;
&lt;/div&gt;
&lt;h2 id="the-dcvs-discovery"&gt;The DCVS discovery&lt;/h2&gt;
&lt;p&gt;Before beginning this article, you should know I come from &lt;em&gt;subversion&lt;/em&gt;. I find subversion to be a really good CVS. But I was converted to the decentralized ones.&lt;/p&gt;
&lt;p&gt;There is two way of perceive version control system. Either you think in term of branches (see the really good article on &lt;/p&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2009-12-06:/Scratch/en/blog/2009-12-06-iphone-call-filter/</id>
<title type="html">iphone call filter</title>
<published>2009-12-06T09:35:34Z</published>
<updated>2009-12-06T09:35:34Z</updated>
<link href="http://yannesposito.com/Scratch/en/blog/2009-12-06-iphone-call-filter/" rel="alternate"/>
<content type="html">&lt;p&gt;It is unbelievable you cannot filter your call with an iPhone! The only reason I see for that is a negotiation with phone operator to force users to get phone advertising. It is simple unacceptable.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m a &#955; iPhone&amp;rsquo;s user. The only way to filter your call and to manage blacklist is to &lt;em&gt;jailbreak&lt;/em&gt; your iPhone. And I don&amp;rsquo;t want to do that. Then, if like me you find it unacceptable, just write a line to Apple: &lt;a href="http://www.apple.com/feedback/iphone.html"&gt;http://www.apple.com/feedback/iphone.html&lt;/a&gt;&lt;/p&gt;
</content>
</entry>
<entry>
<id>tag:yannesposito.com,2009-11-12:/Scratch/en/blog/2009-11-12-Git-for-n00b/commandes-avancees/</id>
<title type="html">Git for n00b</title>
<published>2009-11-12T09:39:54Z</published>
<updated>2009-11-12T09:39:54Z</updated>
<link href="http://yannesposito.com/Scratch/en/blog/2009-11-12-Git-for-n00b/commandes-avancees/" rel="alternate"/>
<content type="html">&lt;h1 class="first" id="command-list"&gt;Command List&lt;/h1&gt;
&lt;h2 id="command-for-each-functionality"&gt;Command for each functionality&lt;/h2&gt;
&lt;p&gt;In the first part, we saw the list of resolved problem by &lt;a href="http://git-scm.org" title="Git"&gt;Git&lt;/a&gt;. To resume &lt;a href="http://git-scm.org" title="Git"&gt;Git&lt;/a&gt; should do:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;get others modifications,&lt;/li&gt;
&lt;li&gt;send modifications to others,&lt;/li&gt;
&lt;li&gt;get back in time,&lt;/li&gt;
&lt;li&gt;list differences between each version,&lt;/li&gt;
&lt;li&gt;name some versions in order to refer easily to them,&lt;/li&gt;
&lt;li&gt;write an historic of modifications,&lt;/li&gt;
&lt;li&gt;know who did what and when,&lt;/li&gt;
&lt;li&gt;manage conflicts,&lt;/li&gt;
&lt;li&gt;easily manage branches.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="get-others-modifications"&gt;get others modifications&lt;/h3&gt;
&lt;div&gt;&lt;pre class="twilight"&gt;
$ g...&lt;/pre&gt;&lt;/div&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2009-11-12:/Scratch/en/blog/2009-11-12-Git-for-n00b/</id>
<title type="html">Git for n00b</title>
<published>2009-11-12T09:39:54Z</published>
<updated>2009-11-12T09:39:54Z</updated>
<link href="http://yannesposito.com/Scratch/en/blog/2009-11-12-Git-for-n00b/" rel="alternate"/>
<content type="html">
&lt;div class="intro"&gt;
&lt;p&gt;A detailed tutorial of &lt;a href="http://git-scm.org"&gt;Git&lt;/a&gt; for people knowing very few about versions systems. You&amp;rsquo;ll understand utility of such program and how we use modern version control system. I try to stay as pragmatic as possible.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="corps"&gt;
&lt;h1 class="first" id="begin-with-conclusion"&gt;Begin with conclusion&lt;/h1&gt;
&lt;p&gt;Here is the list of sufficient and necessary command to use &lt;a href="http://git-scm.org" title="Git"&gt;Git&lt;/a&gt;. There is very few. It is normal not to understand immediately but it is to gives you an idea. Even if this article is long, 95% of &lt;a href="http://git-scm.org" title="Git"&gt;Git&lt;/a&gt; usage is in these 7 commands:&lt;/p&gt;
&lt;p&gt;Get a project from the web: &lt;/p&gt;
&lt;div&gt;&lt;pre class="twilight"&gt;
git clone ssh...&lt;/pre&gt;&lt;/div&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2009-11-12:/Scratch/en/blog/2009-11-12-Git-for-n00b/c-est-parti-pour-l-aventure/</id>
<title type="html">Git for n00b</title>
<published>2009-11-12T09:39:54Z</published>
<updated>2009-11-12T09:39:54Z</updated>
<link href="http://yannesposito.com/Scratch/en/blog/2009-11-12-Git-for-n00b/c-est-parti-pour-l-aventure/" rel="alternate"/>
<content type="html">&lt;h1 class="first" id="here-we-go"&gt;Here we go!&lt;/h1&gt;
&lt;p&gt;Here is one from many way to use &lt;a href="http://git-scm.org" title="Git"&gt;Git&lt;/a&gt;. This method is sufficient to work on a project. Not there is many other &lt;em&gt;workflows&lt;/em&gt;.&lt;/p&gt;
&lt;h2 id="basic-usage"&gt;Basic usage&lt;/h2&gt;
&lt;p&gt;Work with &lt;a href="http://git-scm.org" title="Git"&gt;Git&lt;/a&gt; immediately:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Get modification done by others &lt;span class="black"&gt;&lt;code&gt;git pull&lt;/code&gt;&lt;/span&gt;,&lt;/li&gt;
&lt;li&gt;See details of these modifications &lt;span class="black"&gt;&lt;code&gt;git log&lt;/code&gt;&lt;/span&gt;,&lt;/li&gt;
&lt;li&gt;Many times:
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Make an atomic modification&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Verify details of this modification: &lt;span class="black"&gt;&lt;code&gt;git status&lt;/code&gt;&lt;/span&gt; and &lt;span class="black"&gt;&lt;code&gt;git diff&lt;/code&gt;&lt;/span&gt;,&lt;/li&gt;
&lt;li&gt;Add ...&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;</content>
</entry>
</feed> </feed>

File diff suppressed because one or more lines are too long

View file

@ -13,7 +13,7 @@
<link rel="alternate" type="application/rss+xml" title="RSS" href="http://feeds.feedburner.com/yannespositocomen"/> <link rel="alternate" type="application/rss+xml" title="RSS" href="http://feeds.feedburner.com/yannespositocomen"/>
<link rel="alternate" lang="fr" xml:lang="fr" title="programming language experience" type="text/html" hreflang="fr" href="/Scratch/fr/blog/programming-language-experience/" /> <link rel="alternate" lang="fr" xml:lang="fr" title="programming language experience" type="text/html" hreflang="fr" href="/Scratch/fr/blog/programming-language-experience/" />
<link rel="alternate" lang="en" xml:lang="en" title="programming language experience" type="text/html" hreflang="en" href="/Scratch/en/blog/programming-language-experience/" /> <link rel="alternate" lang="en" xml:lang="en" title="Programming Language Experience" type="text/html" hreflang="en" href="/Scratch/en/blog/programming-language-experience/" />
<script type="text/javascript" src="/Scratch/js/jquery-1.3.1.min.js"></script> <script type="text/javascript" src="/Scratch/js/jquery-1.3.1.min.js"></script>
<script type="text/javascript" src="/Scratch/js/jquery.cookie.js"></script> <script type="text/javascript" src="/Scratch/js/jquery.cookie.js"></script>
<script type="text/javascript" src="/Scratch/js/index.js"></script> <script type="text/javascript" src="/Scratch/js/index.js"></script>
@ -24,7 +24,7 @@
<script type="text/javascript" src="/Scratch/js/MathJax/MathJax.js"></script> <script type="text/javascript" src="/Scratch/js/MathJax/MathJax.js"></script>
< % end %> < % end %>
--> -->
<title>programming language experience</title> <title>Programming Language Experience</title>
</head> </head>
<body lang="en"> <body lang="en">
<script type="text/javascript">// <![CDATA[ <script type="text/javascript">// <![CDATA[
@ -42,7 +42,7 @@
</div> </div>
<div id="titre"> <div id="titre">
<h1> <h1>
programming language experience Programming Language Experience
</h1> </h1>
</div> </div>
@ -487,19 +487,19 @@ But I used them all.</p>
<div class="previous_article"> <div class="previous_article">
<a href="/Scratch/en/blog/A-more-convenient-diff/"><span class="nicer">«</span>&nbsp;A more convenient diff</a> <a href="/Scratch/en/blog/Password-Management/"><span class="nicer">«</span>&nbsp;40 character's passwords</a>
</div> </div>
<div class="previous_article">
<a href="/Scratch/en/blog/Haskell-Mandelbrot/"><span class="nicer">«</span>&nbsp;ASCII Haskell Mandelbrot</a>
</div>
</div> </div>
<div id="next_articles"> <div id="next_articles">
next entries next entries
<div class="next_article">
<a href="/Scratch/en/blog/Higher-order-function-in-zsh/">Higher order function in zsh&nbsp;<span class="nicer">»</span></a>
</div>
@ -515,7 +515,7 @@ But I used them all.</p>
</div> </div>
<div id="lastmod"> <div id="lastmod">
Created: 09/05/2011 Created: 09/05/2011
Modified: 07/06/2011 Modified: 09/06/2011
</div> </div>
<div> <div>
Entirely done with Entirely done with

View file

@ -103,7 +103,7 @@
<a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">Copyright ©, Yann Esposito</a> <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">Copyright ©, Yann Esposito</a>
</div> </div>
<div id="lastmod"> <div id="lastmod">
Modified: 09/14/2011 Modified: 09/27/2011
</div> </div>
<div> <div>
Entirely done with Entirely done with

View file

@ -0,0 +1,258 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="shortcut icon" type="image/x-icon" href="/Scratch/img/favicon.ico" />
<link rel="stylesheet" type="text/css" href="/Scratch/assets/css/main.css" />
<link rel="stylesheet" type="text/css" href="/Scratch/css/twilight.css" />
<link rel="stylesheet" type="text/css" href="/Scratch/css/idc.css" />
<link rel="alternate" type="application/rss+xml" title="RSS" href="http://feeds.feedburner.com/yannespositocomfr"/>
<link rel="alternate" lang="fr" xml:lang="fr" title="Higher order function in zsh" type="text/html" hreflang="fr" href="/Scratch/fr/blog/Higher-order-function-in-zsh/" />
<link rel="alternate" lang="en" xml:lang="en" title="Higher order function in zsh" type="text/html" hreflang="en" href="/Scratch/en/blog/Higher-order-function-in-zsh/" />
<script type="text/javascript" src="/Scratch/js/jquery-1.3.1.min.js"></script>
<script type="text/javascript" src="/Scratch/js/jquery.cookie.js"></script>
<script type="text/javascript" src="/Scratch/js/index.js"></script>
<!--[if lt IE 9]>
<script src="http://ie7-js.googlecode.com/svn/version/2.1(beta4)/IE9.js"></script>
<![endif]-->
<!-- < % if containMaths %>
<script type="text/javascript" src="/Scratch/js/MathJax/MathJax.js"></script>
< % end %>
-->
<title>Higher order function in zsh</title>
</head>
<body lang="fr">
<script type="text/javascript">// <![CDATA[
document.write('<div id="blackpage"><img src="/Scratch/img/loading.gif" alt="Chargement en cours..."/></div>');
// ]]>
</script>
<div id="content">
<div id="choix">
<div class="return"><a href="#entete">&darr; Menu &darr;</a></div>
<div id="choixlang">
<a href="/Scratch/en/blog/Higher-order-function-in-zsh/" onclick="setLanguage('en')">in English</a>
</div>
</div>
<div id="titre">
<h1>
Higher order function in zsh
</h1>
</div>
<div class="flush"></div>
<div class="flush"></div>
<div id="afterheader">
<div class="corps">
<p><img alt="Title image" src="/Scratch/img/blog/Higher-order-function-in-zsh/main.png" /></p>
<div class="intro">
<p><span class="sc"><abbr title="Trop long à lire">tlàl</abbr>&nbsp;: </span> des fonctions d&rsquo;ordres supérieurs en zsh.</p>
</div>
<p>Tout d&rsquo;abord, pourquoi c&rsquo;est important d&rsquo;avoir ces fonctions.
Plus je programmais avec zsh plus j&rsquo;essayais d&rsquo;avoir un style fonctionnel.</p>
<p>Le minimum pour pouvoir avoir du code plus lisible c&rsquo;est de posséder les fonctions <code>map</code>, <code>filter</code> et <code>fold</code>.</p>
<p>Voici pourquoi avec une comparaison.
Commençons par un programme qui converti tous les gif en png dans plusieurs répertoires projets contenant tous des répertoires resources.
Avant&nbsp;:</p>
<pre class="twilight">
<span class="Comment"><span class="Comment">#</span> for each directory in projects dir</span>
<span class="Keyword">for</span> toProject <span class="Keyword">in</span> /path/to/projects/*(/N)<span class="Keyword">;</span> <span class="Keyword">do</span>
<span class="Comment"><span class="Comment">#</span> toProject is /path/to/projects/foo</span>
<span class="Comment"><span class="Comment">#</span> project become foo (:t for tail)</span>
project=<span class="Variable"><span class="Variable">${</span>toProject:t<span class="Variable">}</span></span>
<span class="Keyword">for</span> toResource <span class="Keyword">in</span> <span class="Variable"><span class="Variable">$</span>toProject</span>/resources/*.gif(.N)<span class="Keyword">;</span> <span class="Keyword">do</span>
convert <span class="Variable"><span class="Variable">$</span>toResource</span> <span class="Variable"><span class="Variable">${</span>toResource:r<span class="Variable">}</span></span>.png
<span class="Constant">\r</span>m -f <span class="Variable"><span class="Variable">$</span>toResource</span>
<span class="Keyword">done</span>
<span class="Keyword">done</span>
</pre>
<p>Après</p>
<pre class="twilight">
<span class="Entity">gif_to_png</span>() { convert <span class="Variable"><span class="Variable">$</span>1</span> <span class="Variable"><span class="Variable">${</span>1:r<span class="Variable">}</span></span>.png <span class="Keyword">&amp;&amp;</span> <span class="Constant">\r</span>m -f <span class="Variable"><span class="Variable">$</span>1</span> }
<span class="Entity">handle_resources</span>() { map gif_to_png <span class="Variable"><span class="Variable">$</span>1</span>/resources/*.gif(.N) }
map handle_resources /path/to/projects/*(/N)
</pre>
<p>Plus de bloc&nbsp;!
Oui, c&rsquo;est un poil plus difficile à lire pour les non initiés.
Mais c&rsquo;est à la fois plus concis et plus robuste.</p>
<p>Et encore ce code ne possède pas de test.
Recommençons sur le même principe.</p>
<p>Trouver les fichiers des projets qui ne contiennent pas de s dans leur nom qui ont le même nom que leur projet.</p>
<pre class="twilight">
<span class="Keyword">for</span> toProject <span class="Keyword">in</span> Projects/*<span class="Keyword">;</span> <span class="Keyword">do</span>
project=<span class="Variable"><span class="Variable">$</span>toProject</span>:t
<span class="Keyword">if</span> print -- project <span class="Keyword">|</span> grep -v s <span class="Keyword">&gt;</span>/dev/null
<span class="Keyword">then</span>
print <span class="Variable"><span class="Variable">$</span>project</span>
<span class="Keyword">for</span> toResource <span class="Keyword">in</span> <span class="Variable"><span class="Variable">$</span>toProject</span>/*(.N)<span class="Keyword">;</span> <span class="Keyword">do</span>
<span class="Keyword">if</span> print -- <span class="Variable"><span class="Variable">${</span>toResource:t<span class="Variable">}</span></span> <span class="Keyword">|</span> grep <span class="Variable"><span class="Variable">$</span>project</span> <span class="Keyword">&gt;</span>/dev/null<span class="Keyword">;</span> <span class="Keyword">then</span>
print -- <span class="String"><span class="String">&quot;</span>X <span class="StringVariable"><span class="StringVariable">$</span>toResource</span><span class="String">&quot;</span></span>
<span class="Keyword">fi</span>
<span class="Keyword">done</span>
<span class="Keyword">fi</span>
<span class="Keyword">done</span>
</pre>
<p>After =&gt;</p>
<pre class="twilight">
<span class="Entity">contain_no_s</span>() { print <span class="Variable"><span class="Variable">$</span>1</span> <span class="Keyword">|</span> grep -v s }
function verify_file_name {
local project=<span class="Variable"><span class="Variable">$</span>1</span>:t
<span class="Entity">contains_project_name</span>() { print <span class="Variable"><span class="Variable">$</span>1</span>:t <span class="Keyword">|</span> grep <span class="Variable"><span class="Variable">$</span>project</span> }
map <span class="String"><span class="String">&quot;</span>print -- X<span class="String">&quot;</span></span> <span class="String"><span class="String">$(</span>filter contains_project_name <span class="StringVariable"><span class="StringVariable">$</span>1</span>/*<span class="String"><span class="String">(</span>.N<span class="String">)</span></span><span class="String">)</span></span>
}
map show_project_matchin_file <span class="String"><span class="String">$(</span> filter contain_no_s Projects/* <span class="String">)</span></span>
</pre>
<p>Also, the first verstion is a bit easier to read.
But the second one is clearly far superior in architecture.
Why?</p>
</div>
<div id="choixrss">
<a id="rss" href="http://feeds.feedburner.com/yannespositocomfr">
s'abonner
</a>
</div>
<script type="text/javascript">
$(document).ready(function(){
$('#comment').hide();
$('#clickcomment').click(showComments);
});
function showComments() {
$('#comment').show();
$('#clickcomment').fadeOut();
}
document.write('<div id="clickcomment">Commentaires</div>');
</script>
<div class="flush"></div>
<div class="corps" id="comment">
<h2 class="first">commentaires</h2>
<noscript>
Vous devez activer javascript pour commenter.
</noscript>
<script type="text/javascript">
var idcomments_acct = 'a307f0044511ff1b5cfca573fc0a52e7';
var idcomments_post_id = '/Scratch/fr/blog/Higher-order-function-in-zsh/';
var idcomments_post_url = 'http://yannesposito.com/Scratch/fr/blog/Higher-order-function-in-zsh/';
</script>
<span id="IDCommentsPostTitle" style="display:none"></span>
<script type='text/javascript' src='/Scratch/js/genericCommentWrapperV2.js'></script>
</div>
<div id="entete" class="corps_spaced">
<div id="liens">
<ul><li><a href="/Scratch/fr/">Bienvenue</a></li>
<li><a href="/Scratch/fr/blog/">Blog</a></li>
<li><a href="/Scratch/fr/softwares/">Softwares</a></li>
<li><a href="/Scratch/fr/about/">À propos</a></li></ul>
</div>
<div class="flush"></div>
<hr/>
<div id="next_before_articles">
<div id="previous_articles">
articles précédents
<div class="previous_article">
<a href="/Scratch/fr/blog/programming-language-experience/"><span class="nicer">«</span>&nbsp;programming language experience</a>
</div>
<div class="previous_article">
<a href="/Scratch/fr/blog/Learn-Vim-Progressively/"><span class="nicer">«</span>&nbsp;Apprenez Vim Progressivement</a>
</div>
<div class="previous_article">
<a href="/Scratch/fr/blog/Password-Management/"><span class="nicer">«</span>&nbsp;Password Management</a>
</div>
</div>
<div id="next_articles">
articles suivants
</div>
<div class="flush"></div>
</div>
</div>
<div id="bottom">
<div>
<a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/deed.fr">Droits de reproduction ©, Yann Esposito</a>
</div>
<div id="lastmod">
Écrit le : 27/09/2011
modifié le : 27/09/2011
</div>
<div>
Site entièrement réalisé avec
<a href="http://www.vim.org">Vim</a>
et
<a href="http://nanoc.stoneship.org">nanoc</a>
</div>
<div>
<a href="/Scratch/fr/validation/">Validation</a>
<a href="http://validator.w3.org/check?uri=referer"> [xhtml] </a>
.
<a href="http://jigsaw.w3.org/css-validator/check/referer?profile=css3"> [css] </a>
.
<a href="http://validator.w3.org/feed/check.cgi?url=http%3A//yannesposito.com/Scratch/fr/blog/feed/feed.xml">[rss]</a>
</div>
</div>
<div class="clear"></div>
</div>
<script type="text/javascript">
var clicky = { log: function(){ return; }, goal: function(){ return; }};
var clicky_site_id = 66374971;
(function() {
var s = document.createElement('script');
s.type = 'text/javascript';
s.async = true;
s.src = ( document.location.protocol == 'https:' ? 'https://static.getclicky.com/js' : 'http://static.getclicky.com/js' );
( document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0] ).appendChild( s );
})();
</script>
<noscript><p><img alt="Clicky" width="1" height="1" src="http://in.getclicky.com/66374971ns.gif" /></p></noscript>
</body>
</html>

View file

@ -534,21 +534,13 @@ $(document).ready(function() {
<div id="previous_articles"> <div id="previous_articles">
articles précédents articles précédents
<div class="previous_article">
<a href="/Scratch/fr/blog/A-more-convenient-diff/"><span class="nicer">«</span>&nbsp;Un diff plus pratique</a>
</div>
<div class="previous_article">
<a href="/Scratch/fr/blog/Haskell-Mandelbrot/"><span class="nicer">«</span>&nbsp;Mandelbrot avec haskell</a>
</div>
<div class="previous_article"> <div class="previous_article">
<a href="/Scratch/fr/blog/Password-Management/"><span class="nicer">«</span>&nbsp;Password Management</a> <a href="/Scratch/fr/blog/Password-Management/"><span class="nicer">«</span>&nbsp;Password Management</a>
</div> </div>
</div> </div>
<div id="next_articles"> <div id="next_articles">
articles suivants articles suivants
@ -558,6 +550,10 @@ $(document).ready(function() {
</div> </div>
<div class="next_article">
<a href="/Scratch/fr/blog/Higher-order-function-in-zsh/">Higher order function in zsh&nbsp;<span class="nicer">»</span></a>
</div>
</div> </div>

View file

@ -231,40 +231,28 @@ Avec des mots de passes plus petit, il est encore plus difficile pour un attaqua
<div id="previous_articles"> <div id="previous_articles">
articles précédents articles précédents
<div class="previous_article">
<a href="/Scratch/fr/blog/2011-04-20-Now-hosted-on-github/"><span class="nicer">«</span>&nbsp;Hébergement github</a>
</div>
<div class="previous_article">
<a href="/Scratch/fr/blog/2011-01-03-Why-I-sadly-won-t-use-coffeescript/"><span class="nicer">«</span>&nbsp;Pourquoi je n'utiliserai pas CoffeeScript (malheureusement)</a>
</div>
<div class="previous_article">
<a href="/Scratch/fr/blog/2011-01-03-Happy-New-Year/"><span class="nicer">«</span>&nbsp;Bonne et heureuse année</a>
</div>
</div> </div>
<div id="next_articles"> <div id="next_articles">
articles suivants articles suivants
<div class="next_article">
<a href="/Scratch/fr/blog/Haskell-Mandelbrot/">Mandelbrot avec haskell&nbsp;<span class="nicer">»</span></a>
</div>
<div class="next_article">
<a href="/Scratch/fr/blog/A-more-convenient-diff/">Un diff plus pratique&nbsp;<span class="nicer">»</span></a>
</div>
<div class="next_article"> <div class="next_article">
<a href="/Scratch/fr/blog/Learn-Vim-Progressively/">Apprenez Vim Progressivement&nbsp;<span class="nicer">»</span></a> <a href="/Scratch/fr/blog/Learn-Vim-Progressively/">Apprenez Vim Progressivement&nbsp;<span class="nicer">»</span></a>
</div> </div>
<div class="next_article">
<a href="/Scratch/fr/blog/programming-language-experience/">programming language experience&nbsp;<span class="nicer">»</span></a>
</div>
<div class="next_article">
<a href="/Scratch/fr/blog/Higher-order-function-in-zsh/">Higher order function in zsh&nbsp;<span class="nicer">»</span></a>
</div>
</div> </div>
<div class="flush"></div> <div class="flush"></div>
</div> </div>

View file

@ -2,13 +2,70 @@
<feed xmlns="http://www.w3.org/2005/Atom"> <feed xmlns="http://www.w3.org/2005/Atom">
<id>http://yannesposito.com/</id> <id>http://yannesposito.com/</id>
<title>Yogsototh's last blogs entries</title> <title>Yogsototh's last blogs entries</title>
<updated>2011-08-25T17:28:20Z</updated> <updated>2011-09-27T13:15:23Z</updated>
<link href="http://yannesposito.com/" rel="alternate"/> <link href="http://yannesposito.com/" rel="alternate"/>
<link href="http://feeds.feedburner.com/yannespositocomfr" rel="self"/> <link href="http://feeds.feedburner.com/yannespositocomfr" rel="self"/>
<author> <author>
<name>Yann Esposito</name> <name>Yann Esposito</name>
<uri>http://yannesposito.com</uri> <uri>http://yannesposito.com</uri>
</author> </author>
<entry>
<id>tag:yannesposito.com,2011-09-27:/Scratch/fr/blog/Higher-order-function-in-zsh/</id>
<title type="html">Higher order function in zsh</title>
<published>2011-09-27T13:15:23Z</published>
<updated>2011-09-27T13:15:23Z</updated>
<link href="http://yannesposito.com/Scratch/fr/blog/Higher-order-function-in-zsh/" rel="alternate"/>
<content type="html">&lt;p&gt;&lt;img alt="Title image" src="/Scratch/img/blog/Higher-order-function-in-zsh/main.png" /&gt;&lt;/p&gt;
&lt;div class="intro"&gt;
&lt;p&gt;&lt;span class="sc"&gt;&lt;abbr title="Trop long &#224; lire"&gt;tl&#224;l&lt;/abbr&gt;&amp;nbsp;: &lt;/span&gt; des fonctions d&amp;rsquo;ordres sup&#233;rieurs en zsh.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Tout d&amp;rsquo;abord, pourquoi c&amp;rsquo;est important d&amp;rsquo;avoir ces fonctions.
Plus je programmais avec zsh plus j&amp;rsquo;essayais d&amp;rsquo;avoir un style fonctionnel.&lt;/p&gt;
&lt;p&gt;Le minimum pour pouvoir avoir du code plus lisible c&amp;rsquo;est de poss&#233;der les fonctions &lt;code&gt;map&lt;/code&gt;, &lt;code&gt;filter&lt;/code&gt; et &lt;code&gt;fold&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Voici pourquoi avec une comparaison.
Commen&#231;ons par un programme qui converti tous les gif en png dans plusieurs r&#233;pertoires projets contenant tous des r&#233;pertoires resources.
Avant&amp;nbsp;:&lt;/p&gt;
&lt;/p&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2011-09-05:/Scratch/fr/blog/programming-language-experience/</id>
<title type="html">programming language experience</title>
<published>2011-09-05T10:21:41Z</published>
<updated>2011-09-05T10:21:41Z</updated>
<link href="http://yannesposito.com/Scratch/fr/blog/programming-language-experience/" rel="alternate"/>
<content type="html">&lt;p&gt;&lt;img alt="Title image" src="/Scratch/img/blog/programming-language-experience/main.png" /&gt;&lt;/p&gt;
&lt;div class="intro"&gt;
&lt;span class="sc"&gt;&lt;abbr title="Trop long &#224; lire"&gt;tl&#224;l&lt;/abbr&gt;&amp;nbsp;: &lt;/span&gt; Mon avis sur les diff&#233;rents languages de programmations que j&amp;rsquo;ai utilis&#233;.
&lt;/div&gt;
&lt;h3 id="basic"&gt;BASIC&lt;/h3&gt;
&lt;p&gt;Ah&amp;nbsp;! Le language de mes premiers programmes&amp;nbsp;!
Je devais avoir 10-11 ans.
Sous &lt;code&gt;MO5&lt;/code&gt;, &lt;code&gt;Amstrad CPC 6128&lt;/code&gt; et m&#234;me &lt;code&gt;Atari STe&lt;/code&gt;.
Le langage des &lt;code&gt;GOTO&lt;/code&gt;s.
Je suis empleint de nostalgie rien que d&amp;rsquo;y penser.
C&amp;rsquo;est &#224; peu pr&#234;t le seul int&#233;r&#234;t de ce langage.&lt;/p&gt;
&lt;p&gt;Aujourd&amp;rsquo;hui ce langage est tomb&#233; en d&#233;su&#233;tude.
Ce n&amp;rsquo;est ni un bon langage pour apprendre, ni un bon langage pour faire de vrai prog...&lt;/p&gt;&lt;/p&gt;</content>
</entry>
<entry> <entry>
<id>tag:yannesposito.com,2011-08-25:/Scratch/fr/blog/Learn-Vim-Progressively/</id> <id>tag:yannesposito.com,2011-08-25:/Scratch/fr/blog/Learn-Vim-Progressively/</id>
<title type="html">Apprenez Vim Progressivement</title> <title type="html">Apprenez Vim Progressivement</title>
@ -36,42 +93,6 @@
&lt;p&gt;Apprenez &lt;a href="http://www.vim.org"&gt;vim&lt;/a&gt; et ce sera votre dernier &#233;diteur. &lt;p&gt;Apprenez &lt;a href="http://www.vim.org"&gt;vim&lt;/a&gt; et ce sera votre dernier &#233;diteur.
Aucun &#233;diteur que je connaisse ne le surpasse. Aucun &#233;diteur que je connaisse ne le surpasse.
Sa prise en mais est difficile, mais p...&lt;/p&gt;&lt;/p&gt;</content> Sa prise en mais est difficile, mais p...&lt;/p&gt;&lt;/p&gt;</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>
<link href="http://yannesposito.com/Scratch/fr/blog/A-more-convenient-diff/" rel="alternate"/>
<content type="html">&lt;p&gt;&lt;code&gt;diff&lt;/code&gt; est un utilitaire tr&#232;s pratique, mais il n&amp;rsquo;est pas facile &#224; lire pour nous, les Hommes.&lt;/p&gt;
&lt;p&gt;C&amp;rsquo;est pourquoi, lorsque vous utilisez &lt;code&gt;git&lt;/code&gt;, il vous montre un formatage plus agr&#233;able avec des couleurs.&lt;/p&gt;
&lt;p&gt;Voici le script que j&amp;rsquo;utilise lorsque je veux avoir un &lt;code&gt;diff&lt;/code&gt; &#224; la git.&lt;/p&gt;
&lt;div class="code"&gt;&lt;div class="file"&gt;&lt;a href="/Scratch/fr/blog/A-more-convenient-diff/code/ydiff"&gt; &amp;#x27A5; ydiff &lt;/a&gt;&lt;/div&gt;&lt;div class="withfile"&gt;
&lt;pre class="twilight"&gt;
&lt;span class="Comment"&gt;&lt;span class="Comment"&gt;#&lt;/span&gt;!/usr/bin/env zsh&lt;/span&gt;
&lt;span class="Comment"&gt;&lt;span class="Comment"&gt;#&lt;/span&gt; Load colors helpers&lt;/span&gt;
autoload -U colors &lt;span class="Keyword"&gt;&amp;amp;&amp;amp;&lt;/span&gt; colors
function colorize_diff {
&lt;span class="Keyword"&gt;...&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</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>
<link href="http://yannesposito.com/Scratch/fr/blog/Haskell-Mandelbrot/" rel="alternate"/>
<content type="html">&lt;p&gt;Voici le code &amp;ldquo;obfusqu&#233;&amp;rdquo;&amp;nbsp;:&lt;/p&gt;
&lt;div class="code"&gt;&lt;div class="file"&gt;&lt;a href="/Scratch/fr/blog/Haskell-Mandelbrot/code/animandel.hs"&gt; &amp;#x27A5; animandel.hs &lt;/a&gt;&lt;/div&gt;&lt;div class="withfile"&gt;
&lt;pre class="twilight"&gt;
a=27;b=79;c=&lt;span class="Constant"&gt;C&lt;/span&gt;(-2.0,-1.0);d=&lt;span class="Constant"&gt;C&lt;/span&gt;(1.0,1.0);e=&lt;span class="Constant"&gt;C&lt;/span&gt;(-2.501,-1.003)
&lt;span class="Keyword"&gt;newtype&lt;/span&gt; &lt;span class="Constant"&gt;C&lt;/span&gt; = &lt;span class="Constant"&gt;C&lt;/span&gt; (&lt;span class="Constant"&gt;Double&lt;/span&gt;,&lt;span class="Constant"&gt;Double&lt;/span&gt;) &lt;span class="Keyword"&gt;deriving&lt;/span&gt; (&lt;span class="Constant"&gt;Show&lt;/span&gt;,&lt;span class="Constant"&gt;Eq&lt;/span&gt;)
&lt;span class="Keyword"&gt;instance&lt;/span&gt; &lt;span class="Constant"&gt;Num&lt;/span&gt; &lt;span class="Constant"&gt;C&lt;/span&gt; &lt;span class="Keyword"&gt;where...&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</content>
</entry> </entry>
<entry> <entry>
<id>tag:yannesposito.com,2011-05-18:/Scratch/fr/blog/Password-Management/</id> <id>tag:yannesposito.com,2011-05-18:/Scratch/fr/blog/Password-Management/</id>
@ -99,732 +120,4 @@ J&amp;rsquo;utilise des mots de passe diff&#233;rents sur tous les sites.&lt;/p&
&lt;p&gt;Vous &#234;tes toujours l&#224;&amp;nbsp;? &lt;p&gt;Vous &#234;tes toujours l&#224;&amp;nbsp;?
Bon, d&amp;rsquo;accord, m&#234;me si vous ne t&#233;l&#233;chargez pas mon application vous pouvez quand m&#234;me utili...&lt;/p&gt;&lt;/p&gt;&lt;/div&gt;&lt;/p&gt;</content> Bon, d&amp;rsquo;accord, m&#234;me si vous ne t&#233;l&#233;chargez pas mon application vous pouvez quand m&#234;me utili...&lt;/p&gt;&lt;/p&gt;&lt;/div&gt;&lt;/p&gt;</content>
</entry> </entry>
<entry>
<id>tag:yannesposito.com,2011-04-20:/Scratch/fr/blog/2011-04-20-Now-hosted-on-github/</id>
<title type="html">H&#233;bergement github</title>
<published>2011-04-20T15:22:15Z</published>
<updated>2011-04-20T15:22:15Z</updated>
<link href="http://yannesposito.com/Scratch/fr/blog/2011-04-20-Now-hosted-on-github/" rel="alternate"/>
<content type="html">&lt;p&gt;&lt;img alt="Title image" src="/Scratch/img/blog/2011-04-20-Now-hosted-on-github/main.png" /&gt;&lt;/p&gt;
&lt;p&gt;J&amp;rsquo;h&#233;berge mon site sur github &#224; partir d&amp;rsquo;aujourd&amp;rsquo;hui.&lt;/p&gt;
&lt;/p&gt;</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>
<link href="http://yannesposito.com/Scratch/fr/blog/2011-01-03-Why-I-sadly-won-t-use-coffeescript/" rel="alternate"/>
<content type="html">&lt;p&gt;&lt;img alt="Title image" src="/Scratch/img/blog/2011-01-03-Why-I-sadly-won-t-use-coffeescript/main.png" /&gt;&lt;/p&gt;
&lt;div class="encadre"&gt;
&lt;p&gt;&lt;em&gt;Mise &#224; jour&amp;nbsp;:&lt;/em&gt; Je pense que je vais finallement changer d&amp;rsquo;avis.
Pourquoi&amp;nbsp;?
Tout d&amp;rsquo;abord, je viens de d&#233;couvrir un convertisseur javascript vers coffeescript, ensuite Denis Knauf m&amp;rsquo;a laiss&#233; un commentaire et m&amp;rsquo;a appris l&amp;rsquo;existence d&amp;rsquo;une fonction &lt;code&gt;CoffeeScript.eval&lt;/code&gt;. De plus, il faut voir CoffeeScript comme javascript avec une syntaxe similaire &#224; Ruby et pas comme un langage similaire &#224; Ruby.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="intro"&gt;
&lt;p&gt;&lt;span class="sc"&gt;&lt;abbr title="Trop long &#224; lire"&gt;tl&#224;l&lt;/abbr&gt;&amp;nbsp;: &lt;/span&gt; Qu&amp;rsquo;est-ce qui n&amp;rsquo;allait pas avec Coffeescript? La meta-programm...&lt;/p&gt;&lt;/div&gt;&lt;/p&gt;</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&#233;e</title>
<published>2011-01-01T06:55:54Z</published>
<updated>2011-01-01T06:55:54Z</updated>
<link href="http://yannesposito.com/Scratch/fr/blog/2011-01-03-Happy-New-Year/" rel="alternate"/>
<content type="html">&lt;p&gt;Bonne et heureuse ann&#233;e&amp;nbsp;!&lt;/p&gt;
&lt;p&gt;J&amp;rsquo;&#233;tais tr&#232;s occup&#233; ces derniers mois.
Maintenant il me semble que je vais pouvoir faire revivre ce blog.&lt;/p&gt;
&lt;p&gt;J&amp;rsquo;ai fait un outil qui permet d&amp;rsquo;&#233;crire des livre en utilisant une syntaxe proche de markdown.
C&amp;rsquo;est un markdown avec des macros (essentiel pour les textes longs).
De plus le syst&#232;me g&#232;re la g&#233;n&#233;ration de pages HTML ainsi que du PDF engendr&#233; avec du XeLaTeX.
Je n&amp;rsquo;en ai pas encore termin&#233; avec &#231;a. Mais si je tarde trop, je communiquerai lorsque j&amp;rsquo;aurai fini le minimum.&lt;/p&gt;
&lt;p&gt;J&amp;rsquo;ai &#233;crit un framework MVC pour application javascript simple mais n&#233;anmoins tr&#232;s rapide.&lt;/p&gt;
&lt;p&gt;Meilleurs v&#339;ux &#224; tous&amp;nbsp;!&lt;/p&gt;
</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>
<link href="http://yannesposito.com/Scratch/fr/blog/2010-10-26-LaTeX-like-macro-and-markdown/" rel="alternate"/>
<content type="html">
&lt;div class="intro"&gt;
&lt;p&gt;&lt;span class="sc"&gt;&lt;abbr title="Trop long &#224; lire"&gt;tl&#224;l&lt;/abbr&gt;&amp;nbsp;: &lt;/span&gt; J&amp;rsquo;ai fait un syst&#232;me simple de macros pour mon blog. Par exemple, il me suffit d&amp;rsquo;&#233;crire %&lt;span /&gt;latex et &#231;a affiche &lt;span style="text-transform: uppercase"&gt;L&lt;sup style="vertical-align: 0.15em; margin-left: -0.36em; margin-right: -0.15em; font-size: .85em"&gt;a&lt;/sup&gt;T&lt;sub style="vertical-align: -0.5ex; margin-left: -0.1667em; margin-right: -0.125em; font-size: 1em"&gt;e&lt;/sub&gt;X&lt;/span&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;J&amp;rsquo;ai ajouter un syst&#232;me de macro pour mon syst&#232;me de blog.
Lorsqu&amp;rsquo;on est habitu&#233; &#224; &lt;span style="text-transform: uppercase"&gt;L&lt;sup style="vertical-align: 0.15em; margin-left: -0.36em; margin-right: -0.15em; font-size: .85em"&gt;a&lt;/sup&gt;T&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</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>
<link href="http://yannesposito.com/Scratch/fr/blog/2010-10-14-Fun-with-wav/" rel="alternate"/>
<content type="html">
&lt;div class="intro"&gt;
&lt;p&gt;&lt;span class="sc"&gt;&lt;abbr title="Trop long &#224; lire"&gt;tl&#224;l&lt;/abbr&gt;&amp;nbsp;: &lt;/span&gt; Je me suis amus&#233; &#224; lire un fichier &lt;code&gt;wav&lt;/code&gt;. Le &lt;code&gt;C&lt;/code&gt; fut le langage le mieux adapt&#233; &#224; ce traitement. Bien meilleur que Ruby par exemple.&lt;/p&gt;
&lt;p&gt;edit: Je voulais que ce programme fonctionne sur une machine sp&#233;cifique. En aucun cas je ne pensais publier ce code pour une utilisation autre que celle-ci.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;J&amp;rsquo;ai eu besoin de calculer la somme des valeurs absolue des donn&#233;es d&amp;rsquo;un fichier &lt;code&gt;wav&lt;/code&gt;.
Pour des raison d&amp;rsquo;efficacit&#233; (et aussi de fun), j&amp;rsquo;ai fait le programme en &lt;code&gt;C&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Cel&#224; faisait longtemps que je n&amp;rsquo;avais pas programm&#233; en &lt;code&gt;C&lt;/code&gt;.
De m&#233;moire il &#233;tait peu ais&#233; de manipuler des ...&lt;/p&gt;</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&#233;curisez vos emails</title>
<published>2010-10-10T16:39:00Z</published>
<updated>2010-10-10T16:39:00Z</updated>
<link href="http://yannesposito.com/Scratch/fr/blog/2010-10-10-Secure-eMail-on-Mac-in-few-steps/" rel="alternate"/>
<content type="html">&lt;p&gt;&lt;img alt="Title image" src="/Scratch/img/blog/2010-10-10-Secure-eMail-on-Mac-in-few-steps/main.png" class="clean" /&gt;&lt;/p&gt;
&lt;div class="intro"&gt;
&lt;p&gt;&lt;span class="sc"&gt;&lt;abbr title="Trop long &#224; lire"&gt;tl&#224;l&lt;/abbr&gt;&amp;nbsp;: &lt;/span&gt; &lt;em&gt;avec un Mac&lt;/em&gt; &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;R&#233;cup&#233;rez un certificat sign&#233; par une AC: &lt;a href="http://www.instantssl.com/ssl-certificate-products/free-email-certificate.html"&gt;cliquez ici pour un certificat gratuit&lt;/a&gt;&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;ouvrez le fichier&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;supprimer le fichier en mode s&#233;curis&#233;&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;utilisez Mail plut&#244;t que l&amp;rsquo;interface web de gmail.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;J&amp;rsquo;ai (re)d&#233;couvert comment adoptez la norme S/MIME.
J&amp;rsquo;ai &#233;t&#233; surpris de voir &#224; quel point ce fut ais&#233;.
Il y a seulement quelques ann&#233;es c&amp;rs...&lt;/p&gt;&lt;/p&gt;</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>
<link href="http://yannesposito.com/Scratch/fr/blog/2010-10-06-New-Blog-Design-Constraints/" rel="alternate"/>
<content type="html">&lt;p&gt;Vous avez pu constater que j&amp;rsquo;ai modifi&#233; le design de mon blog.
Maintenant il doit &#234;tre beaucoup plus l&#233;ger qu&amp;rsquo;avant.
Je n&amp;rsquo;utilise plus de CSS3 et beaucoup moins de javascript.
Bien entendu, m&#234;me avant, mes pages &#233;taient parfaitement lisibles sans javascript.
Mais, je me suis aper&#231;u que les syst&#232;mes de CSS3 sont loin d&amp;rsquo;&#234;tre au point.
J&amp;rsquo;utilisait des gradient en CSS3, ainsi que des ombres sous le texte. &#199;a avait un rendu tr&#232;s sympa. Sauf&amp;hellip;
Ce n&amp;rsquo;&#233;tait pas compatible ie6, sous Chrome le rendu &#233;tait d&amp;rsquo;une lenteur incroyable.
J&amp;rsquo;ai donc d&#233;cid&#233; de faire un site &#224; minima.
Je voulais qu&amp;rsquo;il soit joli &lt;em&gt;et&lt;/em&gt; le plus simple possible pour assurer sa compatibilit&#233;.
Les r&#232;gles que je me suis fix&#233;es sont donc:&lt;/p&gt;
</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>
<link href="http://yannesposito.com/Scratch/fr/blog/2010-09-02-Use-git-to-calculate-trusted-mtimes/" rel="alternate"/>
<content type="html">&lt;p&gt;Vous pouvez remarquer qu&amp;rsquo;&#224; la fin de chaque page je donne une date de derni&#232;re modification.
Pr&#233;c&#233;demment cette date &#233;tait calcul&#233;e en utilisant la date du fichier.
Mais il arrive fr&#233;quemment que je fasse un &lt;code&gt;touch&lt;/code&gt; d&amp;rsquo;un fichier pour engendrer tout le site de nouveau.
Donc la date n&amp;rsquo;est pas n&#233;cessairement la &lt;em&gt;vraie&lt;/em&gt; de modification du contenue.&lt;/p&gt;
&lt;p&gt;J&amp;rsquo;utilise &lt;a href="http://git-scm.org"&gt;git&lt;/a&gt; pour &lt;em&gt;versionner&lt;/em&gt; mon site web.
Et cet outil me permet de r&#233;cup&#233;rer la derni&#232;re date de &lt;em&gt;vraie&lt;/em&gt; modification d&amp;rsquo;un fichier.
Voici comment je m&amp;rsquo;y prend avec &lt;a href="http://nanoc.stoneship.org"&gt;nanoc&lt;/a&gt;&amp;nbsp;:&lt;/p&gt;
&lt;div class="code"&gt;&lt;div class="file"&gt;&lt;/div&gt;&lt;/div&gt;</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>
<link href="http://yannesposito.com/Scratch/fr/blog/2010-09-02-base64-and-sha1-on-iPhone/" rel="alternate"/>
<content type="html">&lt;p&gt;Allons directement &#224; l&amp;rsquo;essentiel&amp;nbsp;:
voici deux fonctions &#224; int&#233;grer &#224; votre application iPhone pour afficher l&amp;rsquo;encodage en base64 ou en hexadecimal du hash sha1 d&amp;rsquo;un string en Objective-C pour iPhone.&lt;/p&gt;
&lt;p&gt;Pour l&amp;rsquo;usage c&amp;rsquo;est tr&#232;s simple, copiez le code dans la classe de votre choix.
Puis&amp;nbsp;:&lt;/p&gt;
&lt;pre class="twilight"&gt;
&lt;span class="CCCPreprocessorLine"&gt;#&lt;span class="CCCPreprocessorDirective"&gt;import&lt;/span&gt; &lt;span class="String"&gt;&lt;span class="String"&gt;&amp;lt;&lt;/span&gt;CommonCrypto/CommonDigest.h&lt;span class="String"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
...
&lt;span class="Support"&gt;NSString&lt;/span&gt; *b64_hash = [&lt;span class="Variable"&gt;self&lt;/span&gt; &lt;span class="SupportFunction"&gt;b64_sha1&lt;span class="SupportFunction"&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span class="String"&gt;&lt;/span&gt;&lt;/pre&gt;</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&#233;</title>
<published>2010-08-31T08:16:04Z</published>
<updated>2010-08-31T08:16:04Z</updated>
<link href="http://yannesposito.com/Scratch/fr/blog/2010-08-31-send-mail-from-command-line-with-attached-file/" rel="alternate"/>
<content type="html">&lt;p&gt;J&amp;rsquo;ai d&#251; envoyer un mail en ligne de commande r&#233;cemment.
Quelle ne f&#251;t pas ma surprise lorsque je constatais que ce n&amp;rsquo;&#233;tait vraiment pas &#233;vident.
Je n&amp;rsquo;avais ni &lt;code&gt;pine&lt;/code&gt; ni &lt;code&gt;mutt&lt;/code&gt;. Seulement &lt;code&gt;mail&lt;/code&gt; et &lt;code&gt;mailx&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Ce qu&amp;rsquo;on trouve sur internet pour envoyer un mail avec fichier attach&#233; c&amp;rsquo;est &#231;a&amp;nbsp;:&lt;/p&gt;
&lt;pre class="twilight"&gt;
uuencode fic.jpg fic.jpg &lt;span class="Keyword"&gt;|&lt;/span&gt; mail -s &lt;span class="String"&gt;&lt;span class="String"&gt;'&lt;/span&gt;Subject&lt;span class="String"&gt;'&lt;/span&gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;p&gt;Bon, alors, b&#234;te et disciplin&#233; j&amp;rsquo;ai essay&#233;.
Et bien, &#231;a marche &lt;em&gt;presque&lt;/em&gt; tout le temps.
Pour mon fichier &#231;a n&amp;rsquo;a pas march&#233; du tout.
Je l&amp;rsquo;ai compress&#233; au format &lt;code&gt;.gz&lt;/code&gt;, &lt;/p&gt;</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>
<link href="http://yannesposito.com/Scratch/fr/blog/2010-08-23-Now-heberged-on-heroku/" rel="alternate"/>
<content type="html">&lt;h1 class="first" id="maintenant-sur-herokuhttpherokucom"&gt;Maintenant sur &lt;a href="http://heroku.com"&gt;Heroku&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;J&amp;rsquo;ai chang&#233; mon h&#233;bergeur. Mobileme n&amp;rsquo;est absolument pas adapt&#233; &#224; la diffusion de mon blog. C&amp;rsquo;est pourquoi je suis pass&#233; &#224; &lt;a href="http://heroku.com"&gt;Heroku&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Mais comme vous devez le savoir mon blog est un site compl&#232;tement statique.
J&amp;rsquo;utilise &lt;a href="http://nanoc.stoneship.org/"&gt;nanoc&lt;/a&gt; pour l&amp;rsquo;engendrer.
Avoir un site statique am&#232;ne beaucoup d&amp;rsquo;avantages par rapport &#224; un site dynamique. Surtout en terme de s&#233;curit&#233;.
Voici comment configurer un site statique sur heroku.&lt;/p&gt;
&lt;p&gt;La racine de mes fichiers est &amp;lsquo;/output&amp;rsquo;. Vous devez simplement cr&#233;er deux fichiers. Un fichier &lt;code&gt;config.ru&lt;/code&gt;&lt;/p&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2010-08-11:/Scratch/fr/blog/2010-07-09-Indecidabilities/</id>
<title type="html">Ind&#233;cidabilit&#233;s (partie 1)</title>
<published>2010-08-11T08:04:31Z</published>
<updated>2010-08-11T08:04:31Z</updated>
<link href="http://yannesposito.com/Scratch/fr/blog/2010-07-09-Indecidabilities/" rel="alternate"/>
<content type="html">
&lt;div class="intro"&gt;
&lt;p&gt;&lt;span class="sc"&gt;&lt;abbr title="Trop long &#224; lire"&gt;tl&#224;l&lt;/abbr&gt;&amp;nbsp;: &lt;/span&gt; Je cr&#233;e un mode math&#233;matique simple pour parler de diff&#233;rents types d&amp;rsquo;&lt;em&gt;ind&#233;cidabilit&#233;s&lt;/em&gt;&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ind&#233;cidabilit&#233; due aux erreurs d&amp;rsquo;observation&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;grandes erreurs r&#233;sultant de petites erreurs de mesure&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;ind&#233;cidabilit&#233; fractales&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;ind&#233;cidabilit&#233; logique.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="corps"&gt;
&lt;h1 class="first" id="les-indcidabilits"&gt;Les ind&#233;cidabilit&#233;s&lt;/h1&gt;
&lt;div class="intro"&gt;
&lt;p&gt;Si le monde a &#233;t&#233; fabriqu&#233; par un d&#233;miurge, on peut dire que celui-ci devait avoir le sens de l&amp;rsquo;humour.
Et le r&#233;cit que je vais faire va vous en fournir la preuve.
Je vais me mettre &#224; sa p...&lt;/p&gt;&lt;/div&gt;</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&#232;s les vacances</title>
<published>2010-07-31T21:59:10Z</published>
<updated>2010-07-31T21:59:10Z</updated>
<link href="http://yannesposito.com/Scratch/fr/blog/2010-07-31-New-style-after-holidays/" rel="alternate"/>
<content type="html">&lt;p&gt;Avant les vacances beaucoup d&amp;rsquo;utilisateurs se sont plaints de la lenteur de rendu de mon site.
Il s&amp;rsquo;agit notamment de probl&#232;mes avec Chrome en particulier.
Mais pour &#233;viter tout probl&#232;me.
J&amp;rsquo;ai compl&#232;tement modifi&#233; le style de mon site web.
Il est inspir&#233; du style de l&amp;rsquo;application iBooks&lt;small&gt;&amp;copy;&lt;/small&gt; sur iPhone&lt;small&gt;&amp;copy;&lt;/small&gt;.&lt;/p&gt;
&lt;p&gt;Dites moi ce que vous pensez de ce nouveau design.&lt;/p&gt;
</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>
<link href="http://yannesposito.com/Scratch/fr/blog/2010-07-07-CSS-rendering-problems-by-navigator/" rel="alternate"/>
<content type="html">&lt;p&gt;Beaucoup d&amp;rsquo;utilisateurs de &lt;a href="http://reddit.com"&gt;Reddit&lt;/a&gt; m&amp;rsquo;ont rapport&#233; que mon site &#233;tait tr&#232;s long &#224; charger et &#224; &lt;em&gt;scroller&lt;/em&gt;.
Ils pensaient qu&amp;rsquo;il s&amp;rsquo;agissait d&amp;rsquo;un probl&#232;me d&#251; aux ombres que j&amp;rsquo;applique sur le texte.
J&amp;rsquo;&#233;tais un peu surpris puisque je fais mes tests sur une machine vraiment tr&#232;s lente et je n&amp;rsquo;avais jamais d&#233;tect&#233; ces probl&#232;mes.
En r&#233;alit&#233;, ce qui ralenti le rendu de ce site est par ordre d&amp;rsquo;importance&amp;nbsp;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Les d&#233;grad&#233;s sur Chrome (pas dans Safari sur Mac)&lt;/li&gt;
&lt;li&gt;les &lt;em&gt;box shadows&lt;/em&gt; sur Firefox&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="les-dgrads"&gt;les d&#233;grad&#233;s&lt;/h2&gt;
&lt;p&gt;Sur Safari il n&amp;rsquo;y a absolument aucun probl&#232;me avec les d&#233;grad&#233;s. Par contre sur Chrome sous Linux le si...&lt;/p&gt;</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>
<link href="http://yannesposito.com/Scratch/fr/blog/2010-07-05-Cappuccino-and-Web-applications/" rel="alternate"/>
<content type="html">
&lt;div class="intro"&gt;
&lt;p&gt;&lt;abbr title="Trop long &#224; lire"&gt;tl&#224;l&lt;/abbr&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;J&amp;rsquo;ai essay&#233; de faire une version de &lt;a href="http://yannesposito.com/Softwares/YPassword.html"&gt;YPassword&lt;/a&gt; en jQuery et avec Cappuccino.&lt;/li&gt;
&lt;li&gt;Cappuccino est tr&#232;s bien sur les navigateurs non mobile mais l&amp;rsquo;application p&#232;se 1.4Mo et n&amp;rsquo;est pas compatible avec l&amp;rsquo;iPhone.&lt;/li&gt;
&lt;li&gt;la version jQuery n&amp;rsquo;est pas aussi jolie que la version r&#233;alis&#233;e avec Cappuccino mais elle p&#232;se seulement 106Ko et est compatible avec l&amp;rsquo;iPhone.&lt;/li&gt;
&lt;li&gt;J&amp;rsquo;essayerai Dashcode 3&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;hr /&gt;
&lt;div class="intro"&gt;
&lt;p&gt;Avant de commencer, je dois dire que je sais que Cappuccino et jQuery ne sont pas plus comparable que Cocoa et la &lt;em&gt;standard library&lt;/em&gt; en...&lt;/p&gt;&lt;/div&gt;&lt;/hr&gt;</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>
<link href="http://yannesposito.com/Scratch/fr/blog/2010-06-19-jQuery-popup-the-easy-way/" rel="alternate"/>
<content type="html">&lt;p&gt;Sur ce blog, je donne parfois la possibilit&#233; de t&#233;l&#233;charger certaines sources de code.
Dans ce cas, le code est souvent plus large que le &lt;code&gt;div&lt;/code&gt; qui le contient.
Le texte est alors coup&#233;.
C&amp;rsquo;est pourquoi, j&amp;rsquo;utilise une m&#233;thode qui permet d&amp;rsquo;afficher ces sources dans de grandes &lt;em&gt;popups&lt;/em&gt; en jQuery.&lt;/p&gt;
&lt;p&gt;Vous pouvez faire un essai en cliquant le code suivant&amp;nbsp;; remarquez qu&amp;rsquo;un bout du code n&amp;rsquo;est pas visible (apr&#232;s &lt;code&gt;z-index&lt;/code&gt; normallement)&amp;nbsp;:&lt;/p&gt;
&lt;div class="code"&gt;&lt;div class="file"&gt;&lt;a href="/Scratch/fr/blog/2010-06-19-jQuery-popup-the-easy-way/code/essai.js"&gt; &amp;#x27A5; essai.js &lt;/a&gt;&lt;/div&gt;&lt;div class="withfile"&gt;
&lt;pre class="twilight"&gt;
&lt;span class="Comment"&gt;&lt;span class="Comment"&gt;//&lt;/span&gt; --- code popup ---&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</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>
<link href="http://yannesposito.com/Scratch/fr/blog/2010-06-17-hide-yourself-to-analytics/" rel="alternate"/>
<content type="html">&lt;p&gt;Voici un moyen tr&#232;s simple de ne plus &#234;tre comptabilis&#233; dans les visites de son propre site.
Tout d&amp;rsquo;abord, vous devriez jeter un coup d&amp;rsquo;&#339;il sur comment &lt;a href="/Scratch/fr/blog/2010-06-17-track-events-with-google-analytics"&gt;je g&#232;re les syst&#232;mes de r&#233;cup&#233;ration de statistiques&lt;/a&gt;.
Je centralise tout dans un seul fichier javascript ce qui facilite le travail.&lt;/p&gt;
&lt;p&gt;Cette m&#233;thode n&#233;cessite l&amp;rsquo;utilisation de &lt;code&gt;jquery-cookie&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Avant de comptabiliser les visites, je v&#233;rifie que la cl&#233; &lt;code&gt;admin&lt;/code&gt; n&amp;rsquo;est pas utilis&#233;e dans mes cookies.&lt;/p&gt;
&lt;pre class="twilight"&gt;
&lt;span class="Storage"&gt;var&lt;/span&gt; admin &lt;span class="Keyword"&gt;=&lt;/span&gt; &lt;span class="Keyword"&gt;$&lt;/span&gt;.&lt;span class="SupportConstant"&gt;cookie&lt;/span&gt;(&lt;/pre&gt;</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>
<link href="http://yannesposito.com/Scratch/fr/blog/2010-06-17-track-events-with-google-analytics/" rel="alternate"/>
<content type="html">&lt;p&gt;Voici comment analyser tous les clics que font vos utilisateurs sur votre blog en incluant google analytics de fa&#231;on asynchrone.&lt;/p&gt;
&lt;p&gt;Dans le html, il faut utiliser &lt;a href="http://jquery.com"&gt;jQuery&lt;/a&gt; et un fichier que j&amp;rsquo;ai appel&#233; &lt;code&gt;yga.js&lt;/code&gt;&amp;nbsp;:&lt;/p&gt;
&lt;pre class="twilight"&gt;
&lt;span class="EmbeddedSource"&gt; &lt;span class="EmbeddedSource"&gt;&amp;lt;&lt;/span&gt;&lt;span class="MetaTagInline"&gt;script&lt;/span&gt; &lt;span class="MetaTagInline"&gt;type&lt;/span&gt;=&lt;span class="String"&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;text/javascript&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class="MetaTagInline"&gt;src&lt;/span&gt;=&lt;span class="String"&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;jquery.js&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class="EmbeddedSource"&gt;&amp;gt;&lt;/span&gt;&lt;span class="EmbeddedSource"&gt;&amp;lt;/&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;</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&#233;cup&#233;rez mon syst&#232;me de blog</title>
<published>2010-06-15T08:56:32Z</published>
<updated>2010-06-15T08:56:32Z</updated>
<link href="http://yannesposito.com/Scratch/fr/blog/2010-06-15-Get-my-blog-engine/" rel="alternate"/>
<content type="html">&lt;p&gt;J&amp;rsquo;ai publi&#233; une version &lt;em&gt;light&lt;/em&gt; de mon syst&#232;me de blog hier soir. Par &lt;em&gt;light&lt;/em&gt; il faut comprendre avec un CSS plus &#233;pur&#233; et plus portable (sans les bords ronds).
Vous pouvez le r&#233;cup&#233;rer sur &lt;a href="http://github.com/yogsototh/nanoc3_blog"&gt;github.com&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Que pouvez-vous attendre de ce syst&#232;me de blog&amp;nbsp;?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tous les avantages li&#233;s &#224; &lt;a href="http://nanoc.stoneship.org"&gt;nanoc&lt;/a&gt;&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;Facilit&#233; de la gestion de plusieurs langues&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;coloration syntaxique des codes sources pour la plupart des languages&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;commentaires g&#233;r&#233;s avec &lt;a href="http://intensedebate.org"&gt;intenseDebate&lt;/a&gt; de fa&#231;on asynchrone&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;tr&#232;s portable avec ou sans javascript, XHTML Strict 1.0 / CSS3&amp;nbsp;;&lt;/li&gt;&lt;/ul&gt;</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&#233;s &#224; l'&#233;criture dans plusieurs langues</title>
<published>2010-06-14T14:14:57Z</published>
<updated>2010-06-14T14:14:57Z</updated>
<link href="http://yannesposito.com/Scratch/fr/blog/2010-06-14-multi-language-choices/" rel="alternate"/>
<content type="html">&lt;p&gt;Je traduis la plupart de mes articles pour qu&amp;rsquo;ils soient disponibles en fran&#231;ais et en anglais.
La fa&#231;on que l&amp;rsquo;on m&amp;rsquo;a conseill&#233; &#233;tait d&amp;rsquo;avoir un fichier par langue. En g&#233;n&#233;ral &#231;a donne &#231;a.&lt;/p&gt;
&lt;pre class="twilight"&gt;
Bonjour,
voici un exemple de texte en fran&#231;ais.
[image](url)
&lt;/pre&gt;
&lt;pre class="twilight"&gt;
Hello,
here is an example of english text.
[image](url)
&lt;/pre&gt;
&lt;p&gt;Cette fa&#231;on de traduire vous impose une certaine fa&#231;on de traduire.
D&amp;rsquo;abord &#233;crire enti&#232;rement le texte dans une langue,
puis copier le fichier et enfin retraduire dans une nouvelle langue.&lt;/p&gt;
&lt;p&gt;Le probl&#232;me, c&amp;rsquo;est que tr&#232;s souvent, les articles ont des parties communes non n&#233;gligeables. Par exemple, les images, les codes sources, etc&amp;hellip;
Lorsque je m&amp;...&lt;/p&gt;</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>
<link href="http://yannesposito.com/Scratch/fr/blog/2010-05-24-Trees--Pragmatism-and-Formalism/" rel="alternate"/>
<content type="html">
&lt;div class="intro"&gt;
&lt;p&gt;&lt;abbr title="Trop Long &#192; Lire"&gt;&lt;span class="sc"&gt;tl&#224;l&lt;/span&gt;&lt;/abbr&gt;&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;J&amp;rsquo;ai essay&#233; de programmer un simple filtre&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;J&amp;rsquo;ai &#233;t&#233; bloqu&#233; pendant deux jours&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;J&amp;rsquo;ai arr&#234;t&#233; de penser comme un robot&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;J&amp;rsquo;ai utilis&#233; un papier et un stylo&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;J&amp;rsquo;ai fait un peu de maths&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;J&amp;rsquo;ai r&#233;solu le probl&#232;me en 10 minutes&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;Conclusion: Pragmatisme n&amp;rsquo;est pas&amp;nbsp;: &amp;laquo;n&amp;rsquo;utilisez jamais la th&#233;orie&amp;raquo;.
&lt;/div&gt;
&lt;/ul&gt;
&lt;h2 id="rsum-plus-long-que-le--abbr-titletrop-long--liresctllscabbr"&gt;R&#233;sum&#233; (plus long que le &lt;abbr title="Trop Long &#192; Lire"&gt;&lt;span class="sc"&gt;tl&#224;l&lt;/span&gt;&lt;/abbr&gt;)&lt;/h2&gt;
&lt;p&gt;Je devais r&#233;soudre un...&lt;/p&gt;&lt;/div&gt;</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&#233;parer un XML coup&#233; ?</title>
<published>2010-05-19T20:20:34Z</published>
<updated>2010-05-19T20:20:34Z</updated>
<link href="http://yannesposito.com/Scratch/fr/blog/2010-05-19-How-to-cut-HTML-and-repair-it/" rel="alternate"/>
<content type="html">&lt;p&gt;Sur ma page d&amp;rsquo;accueil vous pouvez voir la liste des mes derniers articles avec le d&#233;but de ceux-ci. Pour arriver &#224; faire &#231;a, j&amp;rsquo;ai besoin de couper le code XHTML de mes pages en plein milieu. Il m&amp;rsquo;a donc fallu trouver un moyen de les r&#233;parer.&lt;/p&gt;
&lt;p&gt;Prenons un exemple&amp;nbsp;:&lt;/p&gt;
&lt;pre class="twilight"&gt;
&lt;span class="MetaTagAll"&gt;&lt;span class="MetaTagAll"&gt;&amp;lt;&lt;/span&gt;&lt;span class="MetaTagAll"&gt;div&lt;/span&gt; &lt;span class="MetaTagAll"&gt;class&lt;/span&gt;=&lt;span class="String"&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;corps&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class="MetaTagAll"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="MetaTagAll"&gt;&lt;span class="MetaTagAll"&gt;&amp;lt;&lt;/span&gt;&lt;span class="MetaTagAll"&gt;div&lt;/span&gt; &lt;span class="MetaTagAll"&gt;class&lt;/span&gt;=&lt;span class="String"&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;</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 &#224; la vie !</title>
<published>2010-05-17T11:25:51Z</published>
<updated>2010-05-17T11:25:51Z</updated>
<link href="http://yannesposito.com/Scratch/fr/blog/2010-05-17-at-least-this-blog-revive/" rel="alternate"/>
<content type="html">&lt;p&gt;Bonjour &#224; tous&amp;nbsp;!&lt;/p&gt;
&lt;blockquote cite="http://www.madore.org/~david/weblog/2010-05.html#d.2010-05-12.1752"&gt;
&lt;p&gt;&amp;hellip;plus on retarde quelque chose, plus il devient difficile de s&amp;rsquo;y mettre&amp;hellip;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Je devais &#233;crire d&amp;rsquo;autres articles pour ce blog. J&amp;rsquo;ai not&#233; plein d&amp;rsquo;id&#233;es dans mes &lt;em&gt;todolist&lt;/em&gt;. Mais j&amp;rsquo;avais pas mal d&amp;rsquo;autres choses &#224; faire. Et jusqu&amp;rsquo;ici, j&amp;rsquo;ai toujours dit &amp;laquo;je le ferai plus tard&amp;raquo;. Ce qui m&amp;rsquo;a fait agir, c&amp;rsquo;est la petite r&#233;flexion que j&amp;rsquo;avais lu une fois.
&amp;gt; Arr&#233;tez d&amp;rsquo;&#233;crire des &lt;code&gt;TODO&lt;/code&gt; dans votre code est faites le maintenant&amp;nbsp;!&lt;br /&gt;
&amp;gt; Vous serez surpris de l&amp;rsquo;efficacit&#233; de cette mesure.&lt;/p&gt;
&lt;p&gt;En r&#233;sum&#233;&amp;nbsp;:
&amp;gt; &lt;/p&gt;&lt;/p&gt;</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>
<link href="http://yannesposito.com/Scratch/fr/blog/2010-03-23-Encapsulate-git/" rel="alternate"/>
<content type="html">&lt;p&gt;&lt;span class="intro"&gt;
Voici une solution pour conserver des branches divergentes avec &lt;code&gt;git&lt;/code&gt;.
Parce qu&amp;rsquo;il est facile de &lt;em&gt;merger&lt;/em&gt; par erreur, je propose un script qui encapsule le comportement de &lt;code&gt;git&lt;/code&gt; pour interdire certains &lt;em&gt;merges&lt;/em&gt; dangereux. Mais qui permet aussi de faire des merges en cascades de la racines vers les autres branches.
&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="se-prmunir-contre-les-erreurs"&gt;Se pr&#233;munir contre les erreurs&lt;/h2&gt;
&lt;p&gt;Je travaille sur un projet dans lequel certaines de mes branches &lt;code&gt;git&lt;/code&gt; doivent rester divergentes. Et les divergences devraient aller en s&amp;rsquo;accentuant.&lt;/p&gt;
&lt;p&gt;J&amp;rsquo;utilise aussi certaines branches qui contiennent la partie commune de ces projets.&lt;/p&gt;
&lt;p&gt;Disons que j&amp;rsquo;ai les branches&amp;nbsp;:&lt;/p&gt;
...</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>
<link href="http://yannesposito.com/Scratch/fr/blog/2010-03-22-Git-Tips/" rel="alternate"/>
<content type="html">&lt;h2 class="first" id="cloner-de-github--travers-un-pare-feu"&gt;Cloner de github &#224; travers un pare-feu&lt;/h2&gt;
&lt;p&gt;La fa&#231;on standard:&lt;/p&gt;
&lt;div&gt;&lt;pre class="twilight"&gt;
git clone git@github.com:yogsototh/project.git
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;En utilisant le port HTTPS&amp;nbsp;:&lt;/p&gt;
&lt;div&gt;&lt;pre class="twilight"&gt;
git clone git+ssh://git@github.com:443/yogsototh/project.git
&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id="cloner-toutes-les-branches"&gt;Cloner toutes les branches&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;git clone&lt;/code&gt; peut seulement r&#233;cuper la branche &lt;code&gt;master&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Si vous n&amp;rsquo;avez pas beaucoup de branches, vous pouvez simplement les clone le project et ensuite pour chacune d&amp;rsquo;entre elle lancer la commande suivante&amp;nbsp;:&lt;/p&gt;
&lt;div&gt;&lt;pre class="twilight"&gt;
git branch --track local_branch remote_branch
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;par ...&lt;/p&gt;</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&#233;guli&#232;res ?</title>
<published>2010-02-23T08:09:52Z</published>
<updated>2010-02-23T08:09:52Z</updated>
<link href="http://yannesposito.com/Scratch/fr/blog/2010-02-23-When-regexp-is-not-the-best-solution/" rel="alternate"/>
<content type="html">&lt;p&gt;Les expressions r&#233;guli&#232;res sont tr&#232;s utiles. Cependant, elles ne sont pas toujours la meilleure mani&#232;re d&amp;rsquo;aborder certain probl&#232;me autour des chaines de caract&#232;res.
Et surtout quand les transformations que vous voulez accomplir sont simples.&lt;/p&gt;
&lt;p&gt;Je voulais savoir comment r&#233;cup&#233;rer le plus vite possible l&amp;rsquo;extension d&amp;rsquo;un nom de fichier. Il y a trois mani&#232;re naturelle d&amp;rsquo;accomplir cel&#224;&amp;nbsp;:&lt;/p&gt;
&lt;div&gt;&lt;pre class="twilight"&gt;
&lt;span class="Comment"&gt;&lt;span class="Comment"&gt;#&lt;/span&gt; regexp&lt;/span&gt;
str.&lt;span class="Entity"&gt;match&lt;/span&gt;(&lt;span class="StringRegexp"&gt;&lt;span class="StringRegexp"&gt;/&lt;/span&gt;&lt;/span&gt;&lt;span class="StringRegexp"&gt;&lt;span class="StringRegexp"&gt;&lt;span class="StringRegexp"&gt;[&lt;/span&gt;^.&lt;span class="StringRegexp"&gt;]&lt;/span&gt;&lt;/span&gt;*$&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;</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&#233;couper un fichier par mots cl&#233;s</title>
<published>2010-02-18T13:29:14Z</published>
<updated>2010-02-18T13:29:14Z</updated>
<link href="http://yannesposito.com/Scratch/fr/blog/2010-02-18-split-a-file-by-keyword/" rel="alternate"/>
<content type="html">&lt;p&gt;Assez bizarrement, je n&amp;rsquo;ai trouv&#233; aucun outil UNIX pour d&#233;couper un fichier par mot cl&#233;.
Alors j&amp;rsquo;en ai fait un en &lt;code&gt;awk&lt;/code&gt;. Je le met ici principalement pour moi, mais &#231;a peut toujours servir &#224; quelqu&amp;rsquo;un d&amp;rsquo;autre.
Le code suivant d&#233;coupe un fichier pour chacune de ses ligne contenant le mot &lt;code&gt;UTC&lt;/code&gt;.&lt;/p&gt;
&lt;div&gt;&lt;pre class="twilight"&gt;
&lt;span class="Comment"&gt;&lt;span class="Comment"&gt;#&lt;/span&gt;!/usr/bin/env awk&lt;/span&gt;
&lt;span class="Entity"&gt;BEGIN&lt;/span&gt;{i=0;}
&lt;span class="StringRegexp"&gt;&lt;span class="StringRegexp"&gt;/&lt;/span&gt;UTC&lt;span class="StringRegexp"&gt;/&lt;/span&gt;&lt;/span&gt; {
i+=1;
FIC=&lt;span class="SupportFunction"&gt;sprintf&lt;/span&gt;(&lt;span class="String"&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;fic.%03d&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;,i);
}
{&lt;/pre&gt;&lt;/div&gt;</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&#233;guli&#232;re.</title>
<published>2010-02-16T08:33:21Z</published>
<updated>2010-02-16T08:33:21Z</updated>
<link href="http://yannesposito.com/Scratch/fr/blog/2010-02-16-All-but-something-regexp--2-/" rel="alternate"/>
<content type="html">&lt;p&gt;Dans mon &lt;a href="previouspost"&gt;pr&#233;c&#233;dent article&lt;/a&gt; j&amp;rsquo;ai donn&#233; certaines astuces pour matcher &amp;lsquo;tout sauf quelque chose&amp;rsquo;. De la m&#234;me mani&#232;re, un truc pour matcher la chaine de caract&#232;re la plus petite possible.
Disons que vous voulez matcher la chaine de caract&#232;re entre &amp;lsquo;a&amp;rsquo; et &amp;lsquo;b&amp;rsquo;. Par exemple, vous voulez matcher&amp;nbsp;:&lt;/p&gt;
&lt;pre class="twilight"&gt;
a.....&lt;span class="Constant"&gt;&lt;strong&gt;a......b&lt;/strong&gt;&lt;/span&gt;..b..a....&lt;span class="Constant"&gt;&lt;strong&gt;a....b&lt;/strong&gt;&lt;/span&gt;...
&lt;/pre&gt;
&lt;p&gt;Voici les deux erreurs communes et une solution&amp;nbsp;:&lt;/p&gt;
&lt;pre class="twilight"&gt;
/a.*b/
&lt;span class="Constant"&gt;&lt;strong&gt;a.....a......b..b..a....a....b&lt;/strong&gt;&lt;/span&gt;...
&lt;/pre&gt;
&lt;p&gt;La premi&#232;re erreur vient de l&amp;rsquo;utilisation du &lt;em&gt;terrible&lt;/em&gt; &lt;/p&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2010-02-15:/Scratch/fr/blog/2010-02-15-All-but-something-regexp/</id>
<title type="html">Expression r&#233;guli&#232;re pour tout sauf quelquechose</title>
<published>2010-02-15T09:16:12Z</published>
<updated>2010-02-15T09:16:12Z</updated>
<link href="http://yannesposito.com/Scratch/fr/blog/2010-02-15-All-but-something-regexp/" rel="alternate"/>
<content type="html">&lt;p&gt;Parfois vous ne pouvez simplement pas &#233;crire&amp;nbsp;:&lt;/p&gt;
&lt;div&gt;&lt;pre class="twilight"&gt;
&lt;span class="Keyword"&gt;if&lt;/span&gt; str.&lt;span class="Entity"&gt;match&lt;/span&gt;(regexp) &lt;span class="Keyword"&gt;and&lt;/span&gt;
&lt;span class="Keyword"&gt;not&lt;/span&gt; str.&lt;span class="Entity"&gt;match&lt;/span&gt;(other_regexp)
do_something
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;et vous devez obtenir le m&#234;me comportement avec seulement une expression r&#233;guli&#232;re. Le probl&#232;me c&amp;rsquo;est que le compl&#233;mentaire des r&#233;gulier n&amp;rsquo;est pas r&#233;gulier. Cel&#224; peut s&amp;rsquo;av&#233;rer impossible.&lt;/p&gt;
&lt;p&gt;Cependant, pour certaines expressions ce peut &#234;tre possible&lt;sup&gt;&lt;a href="#note1"&gt;&amp;dagger;&lt;/a&gt;&lt;/sup&gt;. Disons que vous souhaitez &lt;em&gt;matcher&lt;/em&gt; toutes les lignes contenant le mot &lt;code&gt;bull&lt;/code&gt;, mais que vous ne souhaitez pas matcher &lt;code&gt;bu...&lt;/code&gt;&lt;/p&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2010-01-12:/Scratch/fr/blog/2010-01-12-antialias-font-in-Firefox-under-Ubuntu/</id>
<title type="html">Fontes adoucies sous Ubuntu Firefox</title>
<published>2010-01-12T14:36:40Z</published>
<updated>2010-01-12T14:36:40Z</updated>
<link href="http://yannesposito.com/Scratch/fr/blog/2010-01-12-antialias-font-in-Firefox-under-Ubuntu/" rel="alternate"/>
<content type="html">&lt;p&gt;Voici comment faire pour ne plus utiliser les fontes Microsoft&#169; sous Linux Ubuntu pour avoir de belles fontes adoucies (anti aliased) qui ne font pas mal aux yeux sous Firefox.&lt;/p&gt;
&lt;p&gt;modifiez le fichier &lt;code&gt;/etc/fonts/local.conf&lt;/code&gt; en y incluant le contenu suivant&amp;nbsp;: &lt;/p&gt;
&lt;div&gt;
&lt;div class="code"&gt;&lt;div class="file"&gt;&lt;a href="/Scratch/fr/blog/2010-01-12-antialias-font-in-Firefox-under-Ubuntu/code/local.conf"&gt; &amp;#x27A5; local.conf &lt;/a&gt;&lt;/div&gt;&lt;div class="withfile"&gt;
&lt;pre class="twilight"&gt;
&lt;span class="DoctypeXmlProcessing"&gt;&lt;span class="DoctypeXmlProcessing"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="DoctypeXmlProcessing"&gt;xml&lt;/span&gt;&lt;span class="DoctypeXmlProcessing"&gt; version&lt;/span&gt;=&lt;span class="DoctypeXmlProcessing"&gt;&lt;span class="DoctypeXmlProcessing"&gt;&amp;quot;&lt;/span&gt;1.0&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2010-01-04:/Scratch/fr/blog/2010-01-04-Change-default-shell-on-Mac-OS-X/</id>
<title type="html">Changer le shell par d&#233;faut sous Mac OS X</title>
<published>2010-01-04T10:31:47Z</published>
<updated>2010-01-04T10:31:47Z</updated>
<link href="http://yannesposito.com/Scratch/fr/blog/2010-01-04-Change-default-shell-on-Mac-OS-X/" rel="alternate"/>
<content type="html">&lt;p&gt;Je viens de trouver le moyen de changer son shell par d&#233;faut sous Mac OS X. Cette note est plus pour moi. Mais elle peut aussi servir &#224; quelqu&amp;rsquo;un d&amp;rsquo;autre. Il suffit de lancer la commande&amp;nbsp;: &lt;/p&gt;
&lt;div&gt;&lt;pre class="twilight"&gt;
&lt;span class="Keyword"&gt;&amp;gt;&lt;/span&gt; chsh
&lt;/pre&gt;&lt;/div&gt;
</content>
</entry>
<entry>
<id>tag:yannesposito.com,2009-12-14:/Scratch/fr/blog/2009-12-14-Git-vs--Bzr/</id>
<title type="html">Git ou Bazaar ?</title>
<published>2009-12-14T08:46:36Z</published>
<updated>2009-12-14T08:46:36Z</updated>
<link href="http://yannesposito.com/Scratch/fr/blog/2009-12-14-Git-vs--Bzr/" rel="alternate"/>
<content type="html">
&lt;div class="intro"&gt;
&lt;p&gt;M&#234;me si je consid&#232;re que &lt;code&gt;git&lt;/code&gt; a beaucoup de points noirs, je pense qu&amp;rsquo;il reste le meilleur DCVS &#224; ce jour avec lequel travailler. C&amp;rsquo;est pourquoi je commencerai par parler des qualit&#233; de bazaar qui manquent &#224; git. Ensuite seulement je donnerai le seul avantage de git qui suffit &#224; le rendre pr&#233;f&#233;rable &#224; Bazaar.&lt;/p&gt;
&lt;/div&gt;
&lt;h2 id="la-dcouverte-des-dcvs"&gt;La d&#233;couverte des DCVS&lt;/h2&gt;
&lt;p&gt;&#192; savoir avant de d&#233;buter l&amp;rsquo;article. Je suis, comme beaucoup, un ancien utilisateur de &lt;em&gt;subversion&lt;/em&gt;. Je trouve subversion tr&#232;s bien, mais j&amp;rsquo;ai &#233;t&#233; conquis par les capacit&#233;s suppl&#233;mentaires apport&#233;es par les syst&#232;mes de versions concurrentes &lt;em&gt;d&#233;centralis&#233;s&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Il y a deux fa&#231;on de percevoir les syst&#232;me...&lt;/p&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2009-12-06:/Scratch/fr/blog/2009-12-06-iphone-call-filter/</id>
<title type="html">Filtrage d'appel avec l'iPhone</title>
<published>2009-12-06T09:35:34Z</published>
<updated>2009-12-06T09:35:34Z</updated>
<link href="http://yannesposito.com/Scratch/fr/blog/2009-12-06-iphone-call-filter/" rel="alternate"/>
<content type="html">&lt;p&gt;Il est vraiment incroyable que le filtrage d&amp;rsquo;appel soit impossible avec un iPhone&amp;nbsp;! Le &lt;em&gt;seul&lt;/em&gt; int&#233;r&#234;t que j&amp;rsquo;y vois, c&amp;rsquo;est une n&#233;gociation avec les op&#233;rateurs pour interdire aux utilisateurs de passer &#224; travers la publicit&#233;. C&amp;rsquo;est tout simplement inacceptable.&lt;/p&gt;
&lt;p&gt;Je suis un utilisateur &#955; de l&amp;rsquo;iPhone. Le seul moyen de filtrer ses appels, de faire des blacklists ou autre c&amp;rsquo;est de &lt;em&gt;jailbreaker&lt;/em&gt; son iPhone. Et je n&amp;rsquo;en ai aucune envie. Alors si comme moi, vous trouvez &#231;a inacceptable, envoyez un mot &#224; Apple&amp;nbsp;: &lt;a href="http://www.apple.com/feedback/iphone.html"&gt;http://www.apple.com/feedback/iphone.html&lt;/a&gt;&lt;/p&gt;
</content>
</entry>
<entry>
<id>tag:yannesposito.com,2009-11-12:/Scratch/fr/blog/2009-11-12-Git-for-n00b/c-est-parti-pour-l-aventure/</id>
<title type="html">Git pour les nuls</title>
<published>2009-11-12T09:39:54Z</published>
<updated>2009-11-12T09:39:54Z</updated>
<link href="http://yannesposito.com/Scratch/fr/blog/2009-11-12-Git-for-n00b/c-est-parti-pour-l-aventure/" rel="alternate"/>
<content type="html">&lt;h1 class="first" id="et-cest-parti-"&gt;Et c&amp;rsquo;est parti&amp;nbsp;!&lt;/h1&gt;
&lt;p&gt;Voici une parmi de nombreuses autres fa&#231;on d&amp;rsquo;utiliser &lt;a href="http://git-scm.org" title="Git"&gt;Git&lt;/a&gt;. Cette m&#233;thode est n&#233;cessaire et suffisante pour travailler seul ou en collaboration sur un projet commun. Cependant, on peut faire beaucoup mieux avec &lt;a href="http://git-scm.org" title="Git"&gt;Git&lt;/a&gt; que ce &lt;em&gt;workflow&lt;/em&gt; (en langage anglo-saxon).&lt;/p&gt;
&lt;h2 id="utilisation-basique"&gt;Utilisation basique&lt;/h2&gt;
&lt;p&gt;La fa&#231;on imm&#233;diate de travailler avec &lt;a href="http://git-scm.org" title="Git"&gt;Git&lt;/a&gt;&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;r&#233;cup&#233;rer les modifications des autres &lt;span class="black"&gt;&lt;code&gt;git pull&lt;/code&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;voir les d&#233;tails de ces modifications &lt;span class="black"&gt;&lt;code&gt;git log&lt;/code&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2009-11-12:/Scratch/fr/blog/2009-11-12-Git-for-n00b/</id>
<title type="html">Git pour les nuls</title>
<published>2009-11-12T09:39:54Z</published>
<updated>2009-11-12T09:39:54Z</updated>
<link href="http://yannesposito.com/Scratch/fr/blog/2009-11-12-Git-for-n00b/" rel="alternate"/>
<content type="html">
&lt;div class="intro"&gt;
&lt;p&gt;Voici un tutoriel &lt;a href="http://git-scm.org"&gt;Git&lt;/a&gt; d&#233;taill&#233; pour ceux qui en connaissent tr&#232;s peu sur les syst&#232;mes de versions. Vous comprendrez l&amp;rsquo;utilit&#233; de tels syst&#232;mes et surtout comment on se sert des syst&#232;mes de versions modernes, le tout en restant le plus pragmatique possible.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="corps"&gt;
&lt;h1 class="first" id="pour-commencer-la-conclusion"&gt;Pour commencer, la conclusion&lt;/h1&gt;
&lt;p&gt;Voici la liste des commandes n&#233;cessaires et suffisantes pour utiliser &lt;a href="http://git-scm.org" title="Git"&gt;Git&lt;/a&gt;. Il y en a tr&#232;s peu. Il est normal de ne pas les comprendre tout de suite mais c&amp;rsquo;est pour vous donner une id&#233;e. Malgr&#233; la longueur de l&amp;rsquo;article, 95% de l&amp;rsquo;utilisation de &lt;/p&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2009-11-12:/Scratch/fr/blog/2009-11-12-Git-for-n00b/comprendre/</id>
<title type="html">Git pour les nuls</title>
<published>2009-11-12T09:39:54Z</published>
<updated>2009-11-12T09:39:54Z</updated>
<link href="http://yannesposito.com/Scratch/fr/blog/2009-11-12-Git-for-n00b/comprendre/" rel="alternate"/>
<content type="html">&lt;h1 class="first" id="pourquoi-git-est-cool-"&gt;Pourquoi Git est cool&amp;nbsp;?&lt;/h1&gt;
&lt;p&gt;Parce que grace &#224; &lt;a href="http://git-scm.org" title="Git"&gt;Git&lt;/a&gt; vous pouvez travailler sur plusieurs partie du projet de fa&#231;on compl&#232;tement isol&#233;e les unes des autres. &#199;a c&amp;rsquo;est la partie d&#233;centralis&#233;e de &lt;a href="http://git-scm.org" title="Git"&gt;Git&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Toutes les branches locales utilisent le m&#234;me r&#233;pertoire. Ainsi on peu changer de branche tr&#232;s ais&#233;ment et rapidement. On peut aussi changer de branche alors que certains fichier sont en cours de modifications. On peut m&#234;me pousser le vice jusqu&amp;rsquo;&#224; modifier un fichier, changer de branche, commiter une partie seulement des modifications de ce fichier dans la branche courante. Revenir dans l&amp;rsquo;ancienne branche et commi...&lt;/p&gt;</content>
</entry>
</feed> </feed>

File diff suppressed because one or more lines are too long

View file

@ -13,7 +13,7 @@
<link rel="alternate" type="application/rss+xml" title="RSS" href="http://feeds.feedburner.com/yannespositocomfr"/> <link rel="alternate" type="application/rss+xml" title="RSS" href="http://feeds.feedburner.com/yannespositocomfr"/>
<link rel="alternate" lang="fr" xml:lang="fr" title="programming language experience" type="text/html" hreflang="fr" href="/Scratch/fr/blog/programming-language-experience/" /> <link rel="alternate" lang="fr" xml:lang="fr" title="programming language experience" type="text/html" hreflang="fr" href="/Scratch/fr/blog/programming-language-experience/" />
<link rel="alternate" lang="en" xml:lang="en" title="programming language experience" type="text/html" hreflang="en" href="/Scratch/en/blog/programming-language-experience/" /> <link rel="alternate" lang="en" xml:lang="en" title="Programming Language Experience" type="text/html" hreflang="en" href="/Scratch/en/blog/programming-language-experience/" />
<script type="text/javascript" src="/Scratch/js/jquery-1.3.1.min.js"></script> <script type="text/javascript" src="/Scratch/js/jquery-1.3.1.min.js"></script>
<script type="text/javascript" src="/Scratch/js/jquery.cookie.js"></script> <script type="text/javascript" src="/Scratch/js/jquery.cookie.js"></script>
<script type="text/javascript" src="/Scratch/js/index.js"></script> <script type="text/javascript" src="/Scratch/js/index.js"></script>
@ -491,19 +491,19 @@ En tout cas je les ai tous utilisés.</p>
<div class="previous_article"> <div class="previous_article">
<a href="/Scratch/fr/blog/A-more-convenient-diff/"><span class="nicer">«</span>&nbsp;Un diff plus pratique</a> <a href="/Scratch/fr/blog/Password-Management/"><span class="nicer">«</span>&nbsp;Password Management</a>
</div> </div>
<div class="previous_article">
<a href="/Scratch/fr/blog/Haskell-Mandelbrot/"><span class="nicer">«</span>&nbsp;Mandelbrot avec haskell</a>
</div>
</div> </div>
<div id="next_articles"> <div id="next_articles">
articles suivants articles suivants
<div class="next_article">
<a href="/Scratch/fr/blog/Higher-order-function-in-zsh/">Higher order function in zsh&nbsp;<span class="nicer">»</span></a>
</div>
@ -519,7 +519,7 @@ En tout cas je les ai tous utilisés.</p>
</div> </div>
<div id="lastmod"> <div id="lastmod">
Écrit le : 05/09/2011 Écrit le : 05/09/2011
modifié le : 06/07/2011 modifié le : 06/09/2011
</div> </div>
<div> <div>
Site entièrement réalisé avec Site entièrement réalisé avec

View file

@ -148,7 +148,7 @@
<a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/deed.fr">Droits de reproduction ©, Yann Esposito</a> <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/deed.fr">Droits de reproduction ©, Yann Esposito</a>
</div> </div>
<div id="lastmod"> <div id="lastmod">
modifié le : 14/09/2011 modifié le : 27/09/2011
</div> </div>
<div> <div>
Site entièrement réalisé avec Site entièrement réalisé avec

View file

@ -1,695 +1,175 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.google.com/schemas/sitemap/0.84"> <urlset xmlns="http://www.google.com/schemas/sitemap/0.84">
<url>
<loc>http://yannesposito.com/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/about/contact/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2010-06-17-track-events-with-google-analytics/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2010-01-04-Change-default-shell-on-Mac-OS-X/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2010-06-19-jQuery-popup-the-easy-way/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/softwares/ypassword/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/about/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2011-01-03-Why-I-sadly-won-t-use-coffeescript/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2009-09-jQuery-Tag-Cloud/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/Password-Management/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2010-05-19-How-to-cut-HTML-and-repair-it/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2010-05-24-Trees--Pragmatism-and-Formalism/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2010-01-12-antialias-font-in-Firefox-under-Ubuntu/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2010-10-26-LaTeX-like-macro-and-markdown/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2010-09-02-base64-and-sha1-on-iPhone/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/softwares/ypassword/iphoneweb/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2010-10-06-New-Blog-Design-Constraints/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2010-02-18-split-a-file-by-keyword/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2010-06-17-hide-yourself-to-analytics/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2009-11-12-Git-for-n00b/commandes-avancees/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/03_losthighway/03_losthighway_1/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/mvc/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2009-09-replace-all-except-some-part/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/09_Why_I_didn-t_keep_whosamung-us/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2010-02-18-split-a-file-by-keyword/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/03_losthighway/03_losthighway_2/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/softwares/yaquabubbles/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2009-11-12-Git-for-n00b/commandes-avancees/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2009-10-Focus-vs-Minimalism/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/03_losthighway/03_losthighway_3/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2010-10-10-Secure-eMail-on-Mac-in-few-steps/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2010-03-22-Git-Tips/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2010-06-19-jQuery-popup-the-easy-way/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2010-07-09-Indecidabilities/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/03_losthighway/03_losthighway_4/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/01_nanoc/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2010-07-05-Cappuccino-and-Web-applications/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2009-12-06-iphone-call-filter/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/03_losthighway/03_losthighway_1/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/11_Load_Disqus_Asynchronously/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2010-02-15-All-but-something-regexp/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2010-07-05-Cappuccino-and-Web-applications/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/softwares/ypassword/web/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/05_git_create_remote_branch/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2009-10-untaught-git-usage/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/11_Load_Disqus_Asynchronously/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2010-10-26-LaTeX-like-macro-and-markdown/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/about/cv/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/about/technical_details/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/03_losthighway/03_losthighway_2/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2010-09-02-Use-git-to-calculate-trusted-mtimes/</loc>
<lastmod>2011-09-14</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2010-07-07-CSS-rendering-problems-by-navigator/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2010-06-15-Get-my-blog-engine/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/Haskell-Mandelbrot/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/mvc/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/03_losthighway/03_losthighway_3/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/validation/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/03_losthighway/03_losthighway_4/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2009-10-untaught-git-usage/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/08_Configure_ssh_to_listen_the_port_443_on_Snow_Leopard/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/softwares/yclock/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2009-10-How-to-preload-your-site-with-style/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2011-01-03-Happy-New-Year/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/about/old/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2010-05-17-at-least-this-blog-revive/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/02_ackgrep/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2010-09-02-Use-git-to-calculate-trusted-mtimes/</loc>
<lastmod>2011-09-14</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/03_losthighway/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2010-08-31-send-mail-from-command-line-with-attached-file/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2009-09-Disqus-versus-Intense-Debate--Why-I-switched-/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url> <url>
<loc>http://yannesposito.com/Scratch/fr/about/contact/</loc> <loc>http://yannesposito.com/Scratch/fr/about/contact/</loc>
<lastmod>2011-09-12</lastmod> <lastmod>2011-09-27</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2009-10-How-to-preload-your-site-with-style/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2009-10-Focus-vs-Minimalism/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2010-07-07-CSS-rendering-problems-by-navigator/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/07_Screensaver_compilation_option_for_Snow_Leopard/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2010-07-31-New-style-after-holidays/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2009-12-06-iphone-call-filter/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2010-02-23-When-regexp-is-not-the-best-solution/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2009-10-30-How-to-handle-evil-IE/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2010-09-02-base64-and-sha1-on-iPhone/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2009-10-Wait-to-hide-a-menu-in-jQuery/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/07_Screensaver_compilation_option_for_Snow_Leopard/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2010-10-14-Fun-with-wav/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/softwares/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/02_ackgrep/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/08_Configure_ssh_to_listen_the_port_443_on_Snow_Leopard/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/06_How_I_use_git/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2009-09-replace-all-except-some-part/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/10_Synchronize_Custom_WebSite_with_mobileMe/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2010-02-15-All-but-something-regexp/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/about/old/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/about/cv/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2011-04-20-Now-hosted-on-github/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/Password-Management/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/softwares/ypassword/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/A-more-convenient-diff/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/09_Why_I_didn-t_keep_whosamung-us/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/feed/feed.xml</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/validation/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2010-08-23-Now-heberged-on-heroku/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2010-10-14-Fun-with-wav/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2010-06-14-multi-language-choices/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2009-09-Disqus-versus-Intense-Debate--Why-I-switched-/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2009-11-12-Git-for-n00b/Git-pour-quoi-faire/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/A-more-convenient-diff/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2011-01-03-Happy-New-Year/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2010-08-31-send-mail-from-command-line-with-attached-file/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/10_Synchronize_Custom_WebSite_with_mobileMe/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2010-02-16-All-but-something-regexp--2-/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2010-07-31-New-style-after-holidays/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/softwares/yaquabubbles/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2009-12-14-Git-vs--Bzr/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/06_How_I_use_git/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/03_losthighway/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2009-11-12-Git-for-n00b/comprendre/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/rss/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2009-09-jQuery-Tag-Cloud/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2009-11-12-Git-for-n00b/conf-et-install/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2009-10-launch-daemon-from-command-line/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2010-06-15-Get-my-blog-engine/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2010-03-23-Encapsulate-git/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2010-03-22-Git-Tips/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/Haskell-Mandelbrot/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2010-02-16-All-but-something-regexp--2-/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2009-11-12-Git-for-n00b/Git-pour-quoi-faire/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2010-05-24-Trees--Pragmatism-and-Formalism/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2010-02-23-When-regexp-is-not-the-best-solution/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2010-10-06-New-Blog-Design-Constraints/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2010-05-17-at-least-this-blog-revive/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2010-08-23-Now-heberged-on-heroku/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2009-10-launch-daemon-from-command-line/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2009-11-12-Git-for-n00b/conf-et-install/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2010-03-23-Encapsulate-git/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/softwares/ypassword/web/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/Learn-Vim-Progressively/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2010-06-17-track-events-with-google-analytics/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/assets/css/main.css</loc>
<lastmod>2011-09-12</lastmod>
</url> </url>
<url> <url>
<loc>http://yannesposito.com/Scratch/fr/rss/</loc> <loc>http://yannesposito.com/Scratch/fr/rss/</loc>
<lastmod>2011-09-12</lastmod> <lastmod>2011-09-14</lastmod>
</url> </url>
<url> <url>
<loc>http://yannesposito.com/Scratch/fr/blog/2011-04-20-Now-hosted-on-github/</loc> <loc>http://yannesposito.com/Scratch/fr/blog/Password-Management/</loc>
<lastmod>2011-09-12</lastmod> <lastmod>2011-09-27</lastmod>
</url> </url>
<url> <url>
<loc>http://yannesposito.com/Scratch/en/blog/2011-01-03-Why-I-sadly-won-t-use-coffeescript/</loc> <loc>http://yannesposito.com/Scratch/en/blog/programming-language-experience/</loc>
<lastmod>2011-09-12</lastmod> <lastmod>2011-09-27</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/Higher-order-function-in-zsh/</loc>
<lastmod>2011-09-27</lastmod>
</url> </url>
<url> <url>
<loc>http://yannesposito.com/Scratch/fr/blog/</loc> <loc>http://yannesposito.com/Scratch/fr/blog/</loc>
<lastmod>2011-09-12</lastmod> <lastmod>2011-09-27</lastmod>
</url> </url>
<url> <url>
<loc>http://yannesposito.com/Scratch/fr/blog/2009-11-12-Git-for-n00b/</loc> <loc>http://yannesposito.com/Scratch/fr/softwares/ypassword/web/</loc>
<lastmod>2011-09-12</lastmod> <lastmod>2011-09-27</lastmod>
</url> </url>
<url> <url>
<loc>http://yannesposito.com/Scratch/fr/blog/04_drm/</loc> <loc>http://yannesposito.com/Scratch/fr/softwares/yaquabubbles/</loc>
<lastmod>2011-09-12</lastmod> <lastmod>2011-09-27</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/about/technical_details/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2010-06-17-hide-yourself-to-analytics/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2009-10-28-custom-website-synchronisation-with-mobileme--2-/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/Learn-Vim-Progressively/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2009-10-Wait-to-hide-a-menu-in-jQuery/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2009-10-30-How-to-handle-evil-IE/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2010-10-10-Secure-eMail-on-Mac-in-few-steps/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2009-10-28-custom-website-synchronisation-with-mobileme--2-/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2010-07-09-Indecidabilities/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/01_nanoc/</loc>
<lastmod>2011-09-12</lastmod>
</url> </url>
<url> <url>
<loc>http://yannesposito.com/Scratch/en/about/</loc> <loc>http://yannesposito.com/Scratch/en/about/</loc>
<lastmod>2011-09-12</lastmod> <lastmod>2011-09-14</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2010-01-04-Change-default-shell-on-Mac-OS-X/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2010-05-19-How-to-cut-HTML-and-repair-it/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/softwares/ypassword/iphoneweb/</loc>
<lastmod>2011-09-12</lastmod>
</url> </url>
<url> <url>
<loc>http://yannesposito.com/Scratch/en/softwares/</loc> <loc>http://yannesposito.com/Scratch/en/softwares/</loc>
<lastmod>2011-09-12</lastmod> <lastmod>2011-09-27</lastmod>
</url> </url>
<url> <url>
<loc>http://yannesposito.com/Scratch/fr/blog/2009-11-12-Git-for-n00b/comprendre/</loc> <loc>http://yannesposito.com/Scratch/fr/about/cv/</loc>
<lastmod>2011-09-12</lastmod> <lastmod>2011-09-14</lastmod>
</url> </url>
<url> <url>
<loc>http://yannesposito.com/Scratch/en/blog/2009-11-12-Git-for-n00b/c-est-parti-pour-l-aventure/</loc> <loc>http://yannesposito.com/Scratch/fr/softwares/</loc>
<lastmod>2011-09-12</lastmod> <lastmod>2011-09-27</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2010-06-14-multi-language-choices/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2009-11-12-Git-for-n00b/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/05_git_create_remote_branch/</loc>
<lastmod>2011-09-12</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2010-01-12-antialias-font-in-Firefox-under-Ubuntu/</loc>
<lastmod>2011-09-12</lastmod>
</url> </url>
<url> <url>
<loc>http://yannesposito.com/Scratch/en/blog/feed/feed.xml</loc> <loc>http://yannesposito.com/Scratch/en/blog/feed/feed.xml</loc>
<lastmod>2011-09-12</lastmod> <lastmod>2011-09-14</lastmod>
</url> </url>
<url> <url>
<loc>http://yannesposito.com/Scratch/fr/blog/2009-11-12-Git-for-n00b/c-est-parti-pour-l-aventure/</loc> <loc>http://yannesposito.com/</loc>
<lastmod>2011-09-12</lastmod> <lastmod>2011-09-14</lastmod>
</url> </url>
<url> <url>
<loc>http://yannesposito.com/Scratch/sitemap.xml</loc> <loc>http://yannesposito.com/Scratch/fr/about/</loc>
<lastmod>2011-09-12</lastmod> <lastmod>2011-09-14</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/Learn-Vim-Progressively/</loc>
<lastmod>2011-09-27</lastmod>
</url> </url>
<url> <url>
<loc>http://yannesposito.com/Scratch/fr/softwares/yclock/</loc> <loc>http://yannesposito.com/Scratch/fr/softwares/yclock/</loc>
<lastmod>2011-09-12</lastmod> <lastmod>2011-09-27</lastmod>
</url> </url>
<url> <url>
<loc>http://yannesposito.com/Scratch/en/blog/04_drm/</loc> <loc>http://yannesposito.com/Scratch/en/about/cv/</loc>
<lastmod>2011-09-12</lastmod> <lastmod>2011-09-14</lastmod>
</url> </url>
<url> <url>
<loc>http://yannesposito.com/Scratch/en/blog/2009-12-14-Git-vs--Bzr/</loc> <loc>http://yannesposito.com/Scratch/en/about/old/</loc>
<lastmod>2011-09-12</lastmod> <lastmod>2011-09-27</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/Password-Management/</loc>
<lastmod>2011-09-27</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/about/old/</loc>
<lastmod>2011-09-27</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/validation/</loc>
<lastmod>2011-09-14</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/Higher-order-function-in-zsh/</loc>
<lastmod>2011-09-27</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/softwares/ypassword/iphoneweb/</loc>
<lastmod>2011-09-27</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/</loc>
<lastmod>2011-09-27</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/softwares/yaquabubbles/</loc>
<lastmod>2011-09-27</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/Learn-Vim-Progressively/</loc>
<lastmod>2011-09-27</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/softwares/yclock/</loc>
<lastmod>2011-09-27</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/softwares/ypassword/</loc>
<lastmod>2011-09-27</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/sitemap.xml</loc>
<lastmod>2011-09-14</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/assets/css/main.css</loc>
<lastmod>2011-09-27</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/feed/feed.xml</loc>
<lastmod>2011-09-14</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/softwares/ypassword/</loc>
<lastmod>2011-09-27</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/about/technical_details/</loc>
<lastmod>2011-09-14</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/rss/</loc>
<lastmod>2011-09-14</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/validation/</loc>
<lastmod>2011-09-14</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/</loc>
<lastmod>2011-09-27</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/</loc>
<lastmod>2011-09-27</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/about/technical_details/</loc>
<lastmod>2011-09-14</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/softwares/ypassword/iphoneweb/</loc>
<lastmod>2011-09-27</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/programming-language-experience/</loc>
<lastmod>2011-09-27</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/about/contact/</loc>
<lastmod>2011-09-27</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/softwares/ypassword/web/</loc>
<lastmod>2011-09-27</lastmod>
</url> </url>
</urlset> </urlset>