Regen after devel-clean
This commit is contained in:
parent
042dd69bf7
commit
cd3448b73a
19 changed files with 1056 additions and 6144 deletions
75
content/html/en/blog/Higher-order-function-in-zsh.md
Normal file
75
content/html/en/blog/Higher-order-function-in-zsh.md
Normal 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?
|
|
@ -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:
|
||||||
|
|
88
content/html/fr/blog/Higher-order-function-in-zsh.md
Normal file
88
content/html/fr/blog/Higher-order-function-in-zsh.md
Normal 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
238
output/Scratch/en/blog/Higher-order-function-in-zsh/index.html
Normal file
238
output/Scratch/en/blog/Higher-order-function-in-zsh/index.html
Normal 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">↓ Menu ↓</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">&&</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">></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">></span>/dev/null<span class="Keyword">;</span> <span class="Keyword">then</span>
|
||||||
|
print -- <span class="String"><span class="String">"</span>X <span class="StringVariable"><span class="StringVariable">$</span>toResource</span><span class="String">"</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 =></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">"</span>print -- X<span class="String">"</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> Programming Language Experience</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="previous_article">
|
||||||
|
<a href="/Scratch/en/blog/Learn-Vim-Progressively/"><span class="nicer">«</span> Learn Vim Progressively</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="previous_article">
|
||||||
|
<a href="/Scratch/en/blog/Password-Management/"><span class="nicer">«</span> 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>
|
|
@ -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> A more convenient diff</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="previous_article">
|
|
||||||
<a href="/Scratch/en/blog/Haskell-Mandelbrot/"><span class="nicer">«</span> ASCII Haskell Mandelbrot</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="previous_article">
|
<div class="previous_article">
|
||||||
<a href="/Scratch/en/blog/Password-Management/"><span class="nicer">«</span> 40 character's passwords</a>
|
<a href="/Scratch/en/blog/Password-Management/"><span class="nicer">«</span> 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 <span class="nicer">»</span></a>
|
<a href="/Scratch/en/blog/programming-language-experience/">Programming Language Experience <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 <span class="nicer">»</span></a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -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> 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> 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> 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 <span class="nicer">»</span></a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="next_article">
|
|
||||||
<a href="/Scratch/en/blog/A-more-convenient-diff/">A more convenient diff <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 <span class="nicer">»</span></a>
|
<a href="/Scratch/en/blog/Learn-Vim-Progressively/">Learn Vim Progressively <span class="nicer">»</span></a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="next_article">
|
||||||
|
<a href="/Scratch/en/blog/programming-language-experience/">Programming Language Experience <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 <span class="nicer">»</span></a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="flush"></div>
|
<div class="flush"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -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"><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></pre></p></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"><p><img alt="Title image" src="/Scratch/img/blog/programming-language-experience/main.png" /></p>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="intro">
|
||||||
|
|
||||||
|
<span class="sc"><abbr title="Too long; didn't read">tl;dr</abbr>: </span> My feelings about programming languages I used.
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<h3 id="basic">BASIC</h3>
|
||||||
|
|
||||||
|
<p>The language of my firsts programs!
|
||||||
|
I was about 10, with an <code>MO5</code> and <code>Amstrad CPC 6128</code> and even with my <code>Atari STe</code>.
|
||||||
|
This is the language of <code>GOTO</code>s.
|
||||||
|
Ô nostalgia.
|
||||||
|
Unfortunately this might be the only interesting part of this language.</p>
|
||||||
|
|
||||||
|
<p>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.</p>
|
||||||
|
|
||||||
|
<pre class="twilight">
|
||||||
|
READY
|
||||||
|
10 PRINT </pre></p></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.</p>
|
||||||
<ol>
|
<ol>
|
||||||
<li>Survive</li>
|
<li>Survive</li>
|
||||||
...</ol></p></content>
|
...</ol></p></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"><p>Diff is a very useful tool. But it is not so easy to read for us, simple mortal.</p>
|
|
||||||
|
|
||||||
<p>This is why, when you use <code>git</code> it will use a better formatting and colorize it.</p>
|
|
||||||
|
|
||||||
<p>Here is the script I use when I want to use human readable <code>diff</code> à la git. </p>
|
|
||||||
|
|
||||||
<div class="code"><div class="file"><a href="/Scratch/en/blog/A-more-convenient-diff/code/ydiff"> &#x27A5; ydiff </a></div><div class="withfile">
|
|
||||||
<pre class="twilight">
|
|
||||||
<span class="Comment"><span class="Comment">#</span>!/usr/bin/env zsh</span>
|
|
||||||
|
|
||||||
<span class="Comment"><span class="Comment">#</span> Load colors helpers</span>
|
|
||||||
autoload -U colors <span class="Keyword">&amp;&amp;</span> colors
|
|
||||||
|
|
||||||
function colorize_diff {
|
|
||||||
<span class="Keyword">while</span> read line<span class="Keyword">;</span> </pre></div></div></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"><p>Here is the obfuscated code:</p>
|
|
||||||
|
|
||||||
<div class="code"><div class="file"><a href="/Scratch/en/blog/Haskell-Mandelbrot/code/animandel.hs"> &#x27A5; animandel.hs </a></div><div class="withfile">
|
|
||||||
<pre class="twilight">
|
|
||||||
a=27;b=79;c=<span class="Constant">C</span>(-2.0,-1.0);d=<span class="Constant">C</span>(1.0,1.0);e=<span class="Constant">C</span>(-2.501,-1.003)
|
|
||||||
<span class="Keyword">newtype</span> <span class="Constant">C</span> = <span class="Constant">C</span> (<span class="Constant">Double</span>,<span class="Constant">Double</span>) <span class="Keyword">deriving</span> (<span class="Constant">Show</span>,<span class="Constant">Eq</span>)
|
|
||||||
<span class="Keyword">instance</span> <span class="Constant">Num</span> <span class="Constant">C</span> <span class="Keyword">where</span> </pre></div></div></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.</p>
|
||||||
|
|
||||||
<p>If you just want to <em>use</em> the tools without searching to understand why it is safe, just jump at the </p></p></div></p></content>
|
<p>If you just want to <em>use</em> the tools without searching to understand why it is safe, just jump at the </p></p></div></p></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"><p><img alt="Title image" src="/Scratch/img/blog/2011-04-20-Now-hosted-on-github/main.png" /></p>
|
|
||||||
|
|
||||||
<p>I am now hosted on github.</p>
|
|
||||||
</p></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"><p><img alt="Title image" src="/Scratch/img/blog/2011-01-03-Why-I-sadly-won-t-use-coffeescript/main.png" /></p>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="encadre">
|
|
||||||
|
|
||||||
|
|
||||||
<p><em>Update</em>: I might change my mind now. Why?
|
|
||||||
I just discovered a <a href="https://github.com/rstacruz/js2coffee">js2coffee converter</a>. Furthermore Denis Knauf told me about a <code>CoffeeScript.eval</code> function.
|
|
||||||
And as Denis said: &ldquo;it is time to use Coffeescript as a javascript with Ruby-like syntax not a Ruby-like programming language&rdquo;.</p>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="intro">
|
|
||||||
|
|
||||||
|
|
||||||
<p><span class="sc"><abbr title="Too long; didn't read">tl;dr</abbr>: </span> I would have loved to program client side using a Ruby-like syntax. But in the end, CoffeScript raised more disavantages than advantages.</p>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<p>Recently I read </p></p></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"><p>Happy New Year!</p>
|
|
||||||
|
|
||||||
<p>I was busy during the last months.
|
|
||||||
But I will revive a bit this blog.</p>
|
|
||||||
|
|
||||||
<p>I made a project to write book in markdown syntax and generating HTML and high quality PDF. I am not finished with this.</p>
|
|
||||||
|
|
||||||
<p>I had written an efficient <em>&amp;</em> simplistic MVC javascript framework.</p>
|
|
||||||
|
|
||||||
<p>Best wishes for <em>2011</em>!</p>
|
|
||||||
</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">
|
|
||||||
<div class="intro">
|
|
||||||
|
|
||||||
|
|
||||||
<p><span class="sc"><abbr title="Too long; didn't read">tl;dr</abbr>: </span> I made a simple macro system for my blog. Now I juste have to write %<span />latex and it show as <span style="text-transform: uppercase">L<sup style="vertical-align: 0.15em; margin-left: -0.36em; margin-right: -0.15em; font-size: .85em">a</sup>T<sub style="vertical-align: -0.5ex; margin-left: -0.1667em; margin-right: -0.125em; font-size: 1em">e</sub>X</span>.</p>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<p>I added a macro system for my blog system.
|
|
||||||
When we are used to <span style="text-transform: uppercase">L<sup style="vertical-align: 0.15em; margin-left: -0.36em; margin-right: -0.15em; font-size: .85em">a</sup>T<sub style="vertical-align: -0.5ex; margin-left: -0.1667em; margin-right: -0.125em; font-size: 1em">e</sub></span></p></div></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">
|
|
||||||
<div class="intro">
|
|
||||||
|
|
||||||
|
|
||||||
<p><span class="sc"><abbr title="Too long; didn't read">tl;dr</abbr>: </span> Played to process a <code>wav</code> file. <code>C</code> was easier and cleaner than Ruby.</p>
|
|
||||||
|
|
||||||
<p>edit: I wanted this program to work only on one specific machine (a x86 on a 32 bit Ubuntu). Therefore I didn&rsquo;t had any portability consideration. This is only a <em>hack</em>.</p>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<p>I had to compute the sum of the absolute values of data of a <code>.wav</code> file.
|
|
||||||
For efficiency (and fun) reasons, I had chosen <code>C</code> language.</p>
|
|
||||||
|
|
||||||
<p>I didn&rsquo;t programmed in <code>C</code> 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...</p></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"><p><img alt="Title image" src="/Scratch/img/blog/2010-10-10-Secure-eMail-on-Mac-in-few-steps/main.png" class="clean" /></p>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="intro">
|
|
||||||
|
|
||||||
|
|
||||||
<p><span class="sc"><abbr title="Too long; didn't read">tl;dr</abbr>: </span> <em>on Mac</em></p>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li>Get a certificate signed by a CA: <a href="http://www.instantssl.com/ssl-certificate-products/free-email-certificate.html">click here for a free one</a>,</li>
|
|
||||||
<li>open the file,</li>
|
|
||||||
<li>delete securely the file,</li>
|
|
||||||
<li>use Mail instead of online gmail.</li>
|
|
||||||
<li>???</li>
|
|
||||||
<li>Profit</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<p>I&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&rsquo;m able to sign and encrypt my emails.</p>
|
|
||||||
|
|
||||||
</p></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"><p>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 <a href="/Scratch/en/blog/2010-07-07-CSS-rendering-problems-by-navigator">blog entry</a>.
|
|
||||||
But the major problem came from, <code>font-shadow</code> and gradients.
|
|
||||||
Then my new design obey to the following rules:</p>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li>no CSS element begining by &lsquo;-moz&rsquo; or &lsquo;-webkit&rsquo;, etc&hellip;,</li>
|
|
||||||
<li>no text shadow,</li>
|
|
||||||
<li>clean (I mean delete) most javascript.</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<p>I hope the new design please you.</p>
|
|
||||||
</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"><p>You can remark at the bottom of each page I provide a last modification date.
|
|
||||||
This label was first calculated using the <code>mtime</code> of the file on the file system.
|
|
||||||
But many times I modify this date just to force some recompilation.
|
|
||||||
Therefore the date wasn&rsquo;t a date of <em>real</em> modification.</p>
|
|
||||||
|
|
||||||
<p>I use <a href="http://git-scm.org">git</a> to version my website.
|
|
||||||
And fortunately I can know the last date of <em>real</em> change of a file.
|
|
||||||
This is how I do this with <a href="http://nanoc.stoneship.org">nanoc</a>:</p>
|
|
||||||
|
|
||||||
<div class="code"><div class="file"><a href="/Scratch/en/blog/2010-09-02-Use-git-to-calculate-trusted-mtimes/code/gitmtime.rb"> &#x27A5; gitmtime.rb </a></div><div class="withfile">
|
|
||||||
<pre class="twilight">
|
|
||||||
<span class="Keyword">def</span> </pre></div></div></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"><p>Lets be straight:
|
|
||||||
here are two functions to add to your code to have <code>base64</code> and <code>hexadecimal</code> version of the <code>sha1</code> hash of an NSString.</p>
|
|
||||||
|
|
||||||
<p>To use it, simply copy the code in your class and use as this:</p>
|
|
||||||
|
|
||||||
<pre class="twilight">
|
|
||||||
<span class="CCCPreprocessorLine">#<span class="CCCPreprocessorDirective">import</span> <span class="String"><span class="String">&lt;</span>CommonCrypto/CommonDigest.h<span class="String">&gt;</span></span></span>
|
|
||||||
...
|
|
||||||
<span class="Support">NSString</span> *b64_hash = [<span class="Variable">self</span> <span class="SupportFunction">b64_sha1<span class="SupportFunction">:</span></span><span class="String"><span class="String">@&quot;</span>some NSString to be sha1'ed<span class="String">&quot;</span></span>];
|
|
||||||
...
|
|
||||||
</pre></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"><p>I had to send a mail using only command line.
|
|
||||||
I was surprised it isn&rsquo;t straightforward at all.
|
|
||||||
I didn&rsquo;t had <code>pine</code> nor <code>mutt</code> or anything like that.
|
|
||||||
Just <code>mail</code> and <code>mailx</code>.</p>
|
|
||||||
|
|
||||||
<p>What Internet say (via google) is</p>
|
|
||||||
|
|
||||||
<pre class="twilight">
|
|
||||||
uuencode fic.jpg fic.jpg <span class="Keyword">|</span> mail -s <span class="String"><span class="String">'</span>Subject<span class="String">'</span></span>
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<p>I tried it.
|
|
||||||
And it works almost each times.
|
|
||||||
But for my file, it didn&rsquo;t worked.
|
|
||||||
I compressed it to <code>.gz</code>, <code>.bz2</code> and <code>.zip</code>.
|
|
||||||
Using <code>.bz2</code> format it worked nicely, but not with other formats.
|
|
||||||
Instead of having an attached file I saw this in my email.</p>
|
|
||||||
|
|
||||||
<pre>
|
|
||||||
begin 664 fic....</pre></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"><h1 class="first" id="now-on-herokuhttpherokucom">Now on <a href="http://heroku.com">Heroku</a></h1>
|
|
||||||
|
|
||||||
<p>I now changed my hosting to <a href="http://heroku.com">Heroku</a>.
|
|
||||||
I believe it will be far more reliable.</p>
|
|
||||||
|
|
||||||
<p>But as you should know my website is completely static.
|
|
||||||
I use <a href="http://nanoc.stoneship.org/">nanoc</a> to generate it.
|
|
||||||
But here is the conf to make it work on heroku.</p>
|
|
||||||
|
|
||||||
<p>The root of my files is <code>/output</code>. You only need to create a <code>config.ru</code><sup id="fnref:1"><a href="#fn:1" rel="footnote">1</a></sup> file:</p>
|
|
||||||
|
|
||||||
<div class="code"><div class="file"><a href="/Scratch/en/blog/2010-08-23-Now-heberged-on-heroku/code/config.ru"> &#x27A5; config.ru </a></div><div class="withfile">
|
|
||||||
<pre class="twilight">
|
|
||||||
<span class="Keyword">require</span> </pre></div></div></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">
|
|
||||||
<div class="intro">
|
|
||||||
|
|
||||||
|
|
||||||
<p><span class="sc"><abbr title="Too long; didn't read">tl;dr</abbr>: </span> I pretend to create a world to give examples of different meanings behind the word <em>undecidability</em>:</p>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li>Undecidability due to measure errors, </li>
|
|
||||||
<li>Big errors resulting from small initial measure error,</li>
|
|
||||||
<li>Fractal undecidability&nbsp;;</li>
|
|
||||||
<li>Logic Undecidability.</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="corps">
|
|
||||||
|
|
||||||
|
|
||||||
<h1 class="first" id="the-undecidabilities">The Undecidabilities</h1>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="intro">
|
|
||||||
|
|
||||||
|
|
||||||
<p>If a demiurge made our world, he certainly had a great sense of humor.
|
|
||||||
After this read, you should be convinced.
|
|
||||||
I&rsquo;ll pretend to be him.
|
|
||||||
I&rsquo;ll create a simplified world.
|
|
||||||
A world that obey to simple mathematical rules.
|
|
||||||
And I&rsquo;ll...</p></div></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"><p>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<small>&copy;</small> (the iPhone<small>&copy;</small> application).</p>
|
|
||||||
|
|
||||||
<p>Tell me what you think of this new design.</p>
|
|
||||||
</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"><p>Some <a href="http://reddit.com">Reddit</a> users reported my website was really long to load and to scroll.
|
|
||||||
They thinks it was because of the &lsquo;1px shadow&rsquo; I apply on all the text.
|
|
||||||
I was a bit surprised, because I make some test into a really <em>slow</em> virtual machine. And all have always worked fine. In fact, what slow down so much are by order of importance:</p>
|
|
||||||
|
|
||||||
<ol>
|
|
||||||
<li>Radial gradient on Chrome (not in Safari on Mac)</li>
|
|
||||||
<li>Box shadows on Firefox and Chrome</li>
|
|
||||||
</ol>
|
|
||||||
|
|
||||||
<h2 id="gradient">Gradient</h2>
|
|
||||||
|
|
||||||
<p>On Safari on Mac there is absolutely no rendering time problem. But when I use Chrome under Linux it is almost unusable.</p>
|
|
||||||
|
|
||||||
<p>Safari and Chrome use webkit, when you access my website with javascript enabled, an additionnal browser specific CSS is loaded....</p></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">
|
|
||||||
<div class="intro">
|
|
||||||
|
|
||||||
|
|
||||||
<p><abbr class="sc" title="Too long; didn't read">tl;dr</abbr>:</p>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li>Tried to make <a href="http://yannesposito.com/Softwares/YPassword.html">YPassword</a> in jQuery and with Cappuccino.</li>
|
|
||||||
<li>Cappuccino nice in desktop browser but 1.4MB, not compatible with iPhone.</li>
|
|
||||||
<li>jQuery not as nice as the Cappuccino version but 106KB. iPhone compatible.</li>
|
|
||||||
<li>I&rsquo;ll give a try to Dashcode 3.</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<hr />
|
|
||||||
|
|
||||||
<div class="intro">
|
|
||||||
|
|
||||||
|
|
||||||
<p>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...</p></div></hr></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"><p>Some source code on this blog can be downloaded.
|
|
||||||
Most of time, the code is larger than the <code>div</code> bloc.
|
|
||||||
This is why I use a method to show this code in a large jQuery popup. </p>
|
|
||||||
|
|
||||||
<p>You can try clicking the following code&nbsp;; remark that the content is cutted a bit after <code>z-index</code>:</p>
|
|
||||||
|
|
||||||
<div class="code"><div class="file"><a href="/Scratch/en/blog/2010-06-19-jQuery-popup-the-easy-way/code/essai.js"> &#x27A5; essai.js </a></div><div class="withfile">
|
|
||||||
<pre class="twilight">
|
|
||||||
<span class="Comment"><span class="Comment">//</span> --- code popup ---</span>
|
|
||||||
<span class="Storage">function</span> <span class="Entity">openPopup</span>() {
|
|
||||||
<span class="Keyword">$</span>(<span class="Variable">this</span>).clone(<span class="Constant">false</span>).appendTo(</pre></div></div></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"><p>This is a way not to count your own visits to your blog.
|
|
||||||
First you should look on how <a href="/Scratch/en/blog/2010-06-17-track-events-with-google-analytics">I handle analytics</a>. All analytics are handled in one javascript file, this make things really convenient.</p>
|
|
||||||
|
|
||||||
<p>Then you need to know my method use the <code>jquery-cookie</code>.</p>
|
|
||||||
|
|
||||||
<p>I check if the key <code>admin</code> is not set in the cookie before adding the visit.</p>
|
|
||||||
|
|
||||||
<pre class="twilight">
|
|
||||||
<span class="Storage">var</span> admin <span class="Keyword">=</span> <span class="Keyword">$</span>.<span class="SupportConstant">cookie</span>(<span class="String"><span class="String">'</span>admin<span class="String">'</span></span>);
|
|
||||||
<span class="Keyword">if</span> (<span class="Keyword">!</span> admin) {
|
|
||||||
...</pre></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"><p>Here is how to track all clicks on your website using google analytics asynchronously.</p>
|
|
||||||
|
|
||||||
<p>First in your <span class="sc">html</span> you need to use <a href="http://jquery.com">jQuery</a> and a javscript file I named <code>yga.js</code>:</p>
|
|
||||||
|
|
||||||
<pre class="twilight">
|
|
||||||
<span class="EmbeddedSource"> <span class="EmbeddedSource">&lt;</span><span class="MetaTagInline">script</span> <span class="MetaTagInline">type</span>=<span class="String"><span class="String">&quot;</span>text/javascript<span class="String">&quot;</span></span> <span class="MetaTagInline">src</span>=<span class="String"><span class="String">&quot;</span>jquery.js<span class="String">&quot;</span></span><span class="EmbeddedSource">&gt;</span><span class="EmbeddedSource">&lt;/</span><span class="MetaTagInline">scr...</span></span></pre></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"><p>I published a <em>light</em> version of my blog engine based on <a href="http://nanoc.stoneship.org">nanoc</a> yesterday night. By <em>light</em>, I mean a lighter, more portable CSS (without round border).
|
|
||||||
You can get it on <a href="http://github.com/yogsototh/nanoc3_blog">github.com</a>.</p>
|
|
||||||
|
|
||||||
<p>What this system provide?</p>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li>All <a href="http://nanoc.stoneship.org">nanoc</a> advantages,</li>
|
|
||||||
<li>Easy multi-language handling,</li>
|
|
||||||
<li>Syntax Coloration for most languages,</li>
|
|
||||||
<li><a href="http://intensedebate.org">intenseDebate</a> comments integration (asynchronous)&nbsp;;</li>
|
|
||||||
<li>Portable with and without javascript, XHTML Strict 1.0 / CSS3,</li>
|
|
||||||
<li>Write in markdown format (no HTML editing needed),</li>
|
|
||||||
<li>Typographic ameliorations (no &lsquo;:&rsquo; ...</li></ul></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"><p>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:</p>
|
|
||||||
|
|
||||||
<pre class="twilight">
|
|
||||||
Bonjour,
|
|
||||||
|
|
||||||
voici un exemple de texte en français.
|
|
||||||
[image](url)
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<pre class="twilight">
|
|
||||||
Hello,
|
|
||||||
|
|
||||||
here is an example of english text.
|
|
||||||
[image](url)
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<p>This way of handling translations force you to write completely an article in one language, copy it, and translate it.</p>
|
|
||||||
|
|
||||||
<p>However, most of time, there are common parts like images, source code, etc&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.</p>
|
|
||||||
|
|
||||||
<p>This is why I preferred to handle it differently.
|
|
||||||
I use <em>tags</em> on a single file.
|
|
||||||
Finally my files...</p></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">
|
|
||||||
<div class="intro">
|
|
||||||
|
|
||||||
|
|
||||||
<p><abbr title="Too Long; Don't Read"><span class="sc">tl;dr</span></abbr>: </p>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li>I tried to program a simple filter</li>
|
|
||||||
<li>Was blocked 2 days</li>
|
|
||||||
<li>Then stopped working like an engineer monkey</li>
|
|
||||||
<li>Used a pen and a sheet of paper</li>
|
|
||||||
<li>Made some math.</li>
|
|
||||||
<li>Crushed the problem in 10 minutes</li>
|
|
||||||
<li>Conclusion: The pragmatism shouldn&rsquo;t mean &ldquo;never use theory&rdquo;.</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<h2 id="abstract-longer-than-abbr-titletoo-long-dont-readsctldrscabbr">Abstract (longer than <abbr title="Too Long; Don't Read"><span class="sc">tl;dr</span></abbr>)</h2>
|
|
||||||
|
|
||||||
<p>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 <em>infernal</em>: ...</p></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"><p>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.</p>
|
|
||||||
|
|
||||||
<p>Here is an example:</p>
|
|
||||||
|
|
||||||
<pre class="twilight">
|
|
||||||
<span class="MetaTagAll"><span class="MetaTagAll">&lt;</span><span class="MetaTagAll">div</span> <span class="MetaTagAll">class</span>=<span class="String"><span class="String">&quot;</span>corps<span class="String">&quot;</span></span><span class="MetaTagAll">&gt;</span></span>
|
|
||||||
<span class="MetaTagAll"><span class="MetaTagAll">&lt;</span><span class="MetaTagAll">div</span> <span class="MetaTagAll">class</span>=<span class="String"><span class="String">&quot;</span>intro</span></span></pre></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"><p>Hi all!</p>
|
|
||||||
|
|
||||||
<blockquote cite="http://www.madore.org/~david/weblog/2010-05.html#d.2010-05-12.1752">
|
|
||||||
<p>The more you wait to do something, the more difficult it is to start doing it.</p>
|
|
||||||
</blockquote>
|
|
||||||
|
|
||||||
<p>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&rsquo;ve always said (until now), I&rsquo;ll do this later. What changed my mind is the haunt of this simple remark about how to be productive in programming.
|
|
||||||
&gt; Stop write <code>TODO</code> in your code and make it now!<br />
|
|
||||||
&gt; You&rsquo;ll be surprised by the results.</p>
|
|
||||||
|
|
||||||
<p>In short:
|
|
||||||
&gt; <strong>Just do it!</strong> ou <strong>Juste fait le</strong> comme auraient dit les nuls.</p>
|
|
||||||
|
|
||||||
<p>Finally I&rsquo;ll certainly write blog post more often for a ...</p></p></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"><div class="intro">
|
|
||||||
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.
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<h2 id="how-to-protect-against-your-own-dumb">how to protect against your own dumb</h2>
|
|
||||||
|
|
||||||
<p>I work on a project in which some of my git branches should remain divergent. And divergences should grow.</p>
|
|
||||||
|
|
||||||
<p>I also use some branch to contain what is common between projects.</p>
|
|
||||||
|
|
||||||
<p>Say I have some branches:</p>
|
|
||||||
|
|
||||||
<p>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</p>
|
|
||||||
|
|
||||||
<p>Her...</p></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"><h2 class="first" id="clone-from-github-behind-an-evil-firewall">clone from github behind an evil firewall</h2>
|
|
||||||
|
|
||||||
<p>Standard:</p>
|
|
||||||
|
|
||||||
<div><pre class="twilight">
|
|
||||||
git clone git@github.com:yogsototh/project.git
|
|
||||||
</pre></div>
|
|
||||||
|
|
||||||
<p>Using HTTPS port:</p>
|
|
||||||
|
|
||||||
<div><pre class="twilight">
|
|
||||||
git clone git+ssh://git@github.com:443/yogsototh/project.git
|
|
||||||
</pre></div>
|
|
||||||
|
|
||||||
<h2 id="clone-all-branches">clone all branches</h2>
|
|
||||||
|
|
||||||
<p><code>git clone</code> can only fetch the master branch.</p>
|
|
||||||
|
|
||||||
<p>If you don&rsquo;t have much branches, you can simply use clone your project and then use the following command:</p>
|
|
||||||
|
|
||||||
<div><pre class="twilight">
|
|
||||||
git branch --track local_branch remote_branch
|
|
||||||
</pre></div>
|
|
||||||
|
|
||||||
<p>for example:</p>
|
|
||||||
<div><pre class="twilight">
|
|
||||||
$ git clone git@github:yogsototh/example.git
|
|
||||||
$ git branch
|
|
||||||
master *
|
|
||||||
$ git ...</pre></div></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"><p>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.</p>
|
|
||||||
|
|
||||||
<p>I wanted to know how to get file extension from filename the fastest way possible. There is 3 natural way of doing this:</p>
|
|
||||||
|
|
||||||
<div><pre class="twilight">
|
|
||||||
<span class="Comment"><span class="Comment">#</span> regexp</span>
|
|
||||||
str.<span class="Entity">match</span>(<span class="StringRegexp"><span class="StringRegexp">/</span></span><span class="StringRegexp"><span class="StringRegexp"><span class="StringRegexp">[</span>^.<span class="StringRegexp">]</span></span>*$</span><span class="StringRegexp"><span class="StringRegexp">/</span></span>);
|
|
||||||
ext<span class="Keyword">=</span><span class="Variable"><span class="Variable">...</span></span></pre></div></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"><p>Strangely enough, I didn&rsquo;t find any built-in tool to split a file by keyword. I made one myself in <code>awk</code>. 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 <code>UTC</code>.</p>
|
|
||||||
|
|
||||||
<div><pre class="twilight">
|
|
||||||
<span class="Comment"><span class="Comment">#</span>!/usr/bin/env awk</span>
|
|
||||||
<span class="Entity">BEGIN</span>{i=0;}
|
|
||||||
<span class="StringRegexp"><span class="StringRegexp">/</span>UTC<span class="StringRegexp">/</span></span> {
|
|
||||||
i+=1;
|
|
||||||
FIC=<span class="SupportFunction">sprintf</span>(<span class="String"><span class="String">&quot;</span>fic.%03d<span class="String">&quot;</span></span>,i);
|
|
||||||
}
|
|
||||||
{<span class="SupportFunction">print</span> <span class="Variable"></span></pre></div></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"><p>In my <a href="previouspost">previous post</a> 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 &lsquo;a&rsquo; and &lsquo;b&rsquo;, for example, you want to match:</p>
|
|
||||||
|
|
||||||
<pre class="twilight">
|
|
||||||
a.....<span class="Constant"><strong>a......b</strong></span>..b..a....<span class="Constant"><strong>a....b</strong></span>...
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<p>Here are two common errors and a solution:</p>
|
|
||||||
|
|
||||||
<pre class="twilight">
|
|
||||||
/a.*b/
|
|
||||||
<span class="Constant"><strong>a.....a......b..b..a....a....b</strong></span>...
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<p>The first error is to use the <em>evil</em> <code>.*</code>. Because you will match from the first to the last.</p>
|
|
||||||
|
|
||||||
<pre class="twilight">
|
|
||||||
/a.*?b/
|
|
||||||
<span class="Constant"><strong>...</strong></span></pre></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"><p>Sometimes you cannot simply write:</p>
|
|
||||||
|
|
||||||
<div><pre class="twilight">
|
|
||||||
<span class="Keyword">if</span> str.<span class="Entity">match</span>(regexp) <span class="Keyword">and</span>
|
|
||||||
<span class="Keyword">not</span> str.<span class="Entity">match</span>(other_regexp)
|
|
||||||
do_something
|
|
||||||
</pre></div>
|
|
||||||
|
|
||||||
<p>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.</p>
|
|
||||||
|
|
||||||
<p>But sometimes with some simple regular expression it should be possible<sup><a href="#note1">&dagger;</a></sup>. Say you want to match everything containing the some word say <code>bull</code> but don&rsquo;t want to match <code>bullshit</code>. Here is a nice way to do that:</p>...</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"><p>How to stop using bad Microsoft© font under Ubuntu Linux in order to user nice anti aliased font under Firefox.</p>
|
|
||||||
|
|
||||||
<p>Just modify the <code>/etc/fonts/local.conf</code> with the following code: </p>
|
|
||||||
|
|
||||||
<div>
|
|
||||||
<div class="code"><div class="file"><a href="/Scratch/en/blog/2010-01-12-antialias-font-in-Firefox-under-Ubuntu/code/local.conf"> &#x27A5; local.conf </a></div><div class="withfile">
|
|
||||||
<pre class="twilight">
|
|
||||||
|
|
||||||
<span class="DoctypeXmlProcessing"><span class="DoctypeXmlProcessing">&lt;?</span><span class="DoctypeXmlProcessing">xml</span><span class="DoctypeXmlProcessing"> version</span>=<span class="DoctypeXmlProcessing"><span class="DoctypeXmlProcessing">&quot;</span>1.0<span class="DoctypeXmlProcessing">&quot;</span></span><span class="DoctypeXmlProcessing">?&gt;</span></span>
|
|
||||||
</pre></div></div></div></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"><p>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: </p>
|
|
||||||
|
|
||||||
<div><pre class="twilight">
|
|
||||||
<span class="Keyword">&gt;</span> chsh
|
|
||||||
</pre></div>
|
|
||||||
</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">
|
|
||||||
<div class="intro">
|
|
||||||
|
|
||||||
|
|
||||||
<p>Why even if I believe <code>git</code> has many bad point I believe it is the best DCVS around to work with. This is why I first tell why I prefer <a href="http://bazaar-vcs.org">Bazaar</a> over <a href="http://git-scm.org">Git</a>. Secondly I&rsquo;ll talk about the only advantage of git against Bazaar which lead me to prefer it.</p>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<h2 id="the-dcvs-discovery">The DCVS discovery</h2>
|
|
||||||
|
|
||||||
<p>Before beginning this article, you should know I come from <em>subversion</em>. I find subversion to be a really good CVS. But I was converted to the decentralized ones.</p>
|
|
||||||
|
|
||||||
<p>There is two way of perceive version control system. Either you think in term of branches (see the really good article on </p></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"><p>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.</p>
|
|
||||||
|
|
||||||
<p>I&rsquo;m a λ iPhone&rsquo;s user. The only way to filter your call and to manage blacklist is to <em>jailbreak</em> your iPhone. And I don&rsquo;t want to do that. Then, if like me you find it unacceptable, just write a line to Apple: <a href="http://www.apple.com/feedback/iphone.html">http://www.apple.com/feedback/iphone.html</a></p>
|
|
||||||
</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"><h1 class="first" id="command-list">Command List</h1>
|
|
||||||
|
|
||||||
<h2 id="command-for-each-functionality">Command for each functionality</h2>
|
|
||||||
|
|
||||||
<p>In the first part, we saw the list of resolved problem by <a href="http://git-scm.org" title="Git">Git</a>. To resume <a href="http://git-scm.org" title="Git">Git</a> should do:</p>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li>get others modifications,</li>
|
|
||||||
<li>send modifications to others,</li>
|
|
||||||
<li>get back in time,</li>
|
|
||||||
<li>list differences between each version,</li>
|
|
||||||
<li>name some versions in order to refer easily to them,</li>
|
|
||||||
<li>write an historic of modifications,</li>
|
|
||||||
<li>know who did what and when,</li>
|
|
||||||
<li>manage conflicts,</li>
|
|
||||||
<li>easily manage branches.</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h3 id="get-others-modifications">get others modifications</h3>
|
|
||||||
|
|
||||||
<div><pre class="twilight">
|
|
||||||
$ g...</pre></div></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">
|
|
||||||
<div class="intro">
|
|
||||||
|
|
||||||
|
|
||||||
<p>A detailed tutorial of <a href="http://git-scm.org">Git</a> for people knowing very few about versions systems. You&rsquo;ll understand utility of such program and how we use modern version control system. I try to stay as pragmatic as possible.</p>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="corps">
|
|
||||||
|
|
||||||
|
|
||||||
<h1 class="first" id="begin-with-conclusion">Begin with conclusion</h1>
|
|
||||||
|
|
||||||
<p>Here is the list of sufficient and necessary command to use <a href="http://git-scm.org" title="Git">Git</a>. 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 <a href="http://git-scm.org" title="Git">Git</a> usage is in these 7 commands:</p>
|
|
||||||
|
|
||||||
<p>Get a project from the web: </p>
|
|
||||||
|
|
||||||
<div><pre class="twilight">
|
|
||||||
git clone ssh...</pre></div></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"><h1 class="first" id="here-we-go">Here we go!</h1>
|
|
||||||
|
|
||||||
<p>Here is one from many way to use <a href="http://git-scm.org" title="Git">Git</a>. This method is sufficient to work on a project. Not there is many other <em>workflows</em>.</p>
|
|
||||||
|
|
||||||
<h2 id="basic-usage">Basic usage</h2>
|
|
||||||
|
|
||||||
<p>Work with <a href="http://git-scm.org" title="Git">Git</a> immediately:</p>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li>Get modification done by others <span class="black"><code>git pull</code></span>,</li>
|
|
||||||
<li>See details of these modifications <span class="black"><code>git log</code></span>,</li>
|
|
||||||
<li>Many times:
|
|
||||||
<ul>
|
|
||||||
<li><em>Make an atomic modification</em></li>
|
|
||||||
<li>Verify details of this modification: <span class="black"><code>git status</code></span> and <span class="black"><code>git diff</code></span>,</li>
|
|
||||||
<li>Add ...</li></ul></li></ul></content>
|
|
||||||
</entry>
|
|
||||||
</feed>
|
</feed>
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -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> A more convenient diff</a>
|
<a href="/Scratch/en/blog/Password-Management/"><span class="nicer">«</span> 40 character's passwords</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class="previous_article">
|
|
||||||
<a href="/Scratch/en/blog/Haskell-Mandelbrot/"><span class="nicer">«</span> 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 <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
|
||||||
|
|
|
@ -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
|
||||||
|
|
258
output/Scratch/fr/blog/Higher-order-function-in-zsh/index.html
Normal file
258
output/Scratch/fr/blog/Higher-order-function-in-zsh/index.html
Normal 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">↓ Menu ↓</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> : </span> des fonctions d’ordres supérieurs en zsh.</p>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<p>Tout d’abord, pourquoi c’est important d’avoir ces fonctions.
|
||||||
|
Plus je programmais avec zsh plus j’essayais d’avoir un style fonctionnel.</p>
|
||||||
|
|
||||||
|
<p>Le minimum pour pouvoir avoir du code plus lisible c’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 :</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">&&</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 !
|
||||||
|
Oui, c’est un poil plus difficile à lire pour les non initiés.
|
||||||
|
Mais c’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">></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">></span>/dev/null<span class="Keyword">;</span> <span class="Keyword">then</span>
|
||||||
|
print -- <span class="String"><span class="String">"</span>X <span class="StringVariable"><span class="StringVariable">$</span>toResource</span><span class="String">"</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 =></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">"</span>print -- X<span class="String">"</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> programming language experience</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="previous_article">
|
||||||
|
<a href="/Scratch/fr/blog/Learn-Vim-Progressively/"><span class="nicer">«</span> Apprenez Vim Progressivement</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="previous_article">
|
||||||
|
<a href="/Scratch/fr/blog/Password-Management/"><span class="nicer">«</span> 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>
|
|
@ -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> Un diff plus pratique</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="previous_article">
|
|
||||||
<a href="/Scratch/fr/blog/Haskell-Mandelbrot/"><span class="nicer">«</span> Mandelbrot avec haskell</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="previous_article">
|
<div class="previous_article">
|
||||||
<a href="/Scratch/fr/blog/Password-Management/"><span class="nicer">«</span> Password Management</a>
|
<a href="/Scratch/fr/blog/Password-Management/"><span class="nicer">«</span> 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 <span class="nicer">»</span></a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -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> 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> 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> 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 <span class="nicer">»</span></a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="next_article">
|
|
||||||
<a href="/Scratch/fr/blog/A-more-convenient-diff/">Un diff plus pratique <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 <span class="nicer">»</span></a>
|
<a href="/Scratch/fr/blog/Learn-Vim-Progressively/">Apprenez Vim Progressivement <span class="nicer">»</span></a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="next_article">
|
||||||
|
<a href="/Scratch/fr/blog/programming-language-experience/">programming language experience <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 <span class="nicer">»</span></a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="flush"></div>
|
<div class="flush"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -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"><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>
|
||||||
|
|
||||||
|
</p></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"><p><img alt="Title image" src="/Scratch/img/blog/programming-language-experience/main.png" /></p>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="intro">
|
||||||
|
|
||||||
|
<span class="sc"><abbr title="Trop long à lire">tlàl</abbr>&nbsp;: </span> Mon avis sur les différents languages de programmations que j&rsquo;ai utilisé.
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<h3 id="basic">BASIC</h3>
|
||||||
|
|
||||||
|
<p>Ah&nbsp;! Le language de mes premiers programmes&nbsp;!
|
||||||
|
Je devais avoir 10-11 ans.
|
||||||
|
Sous <code>MO5</code>, <code>Amstrad CPC 6128</code> et même <code>Atari STe</code>.
|
||||||
|
Le langage des <code>GOTO</code>s.
|
||||||
|
Je suis empleint de nostalgie rien que d&rsquo;y penser.
|
||||||
|
C&rsquo;est à peu prêt le seul intérêt de ce langage.</p>
|
||||||
|
|
||||||
|
<p>Aujourd&rsquo;hui ce langage est tombé en désuétude.
|
||||||
|
Ce n&rsquo;est ni un bon langage pour apprendre, ni un bon langage pour faire de vrai prog...</p></p></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 @@
|
||||||
<p>Apprenez <a href="http://www.vim.org">vim</a> et ce sera votre dernier éditeur.
|
<p>Apprenez <a href="http://www.vim.org">vim</a> et ce sera votre dernier éditeur.
|
||||||
Aucun éditeur que je connaisse ne le surpasse.
|
Aucun éditeur que je connaisse ne le surpasse.
|
||||||
Sa prise en mais est difficile, mais p...</p></p></content>
|
Sa prise en mais est difficile, mais p...</p></p></content>
|
||||||
</entry>
|
|
||||||
<entry>
|
|
||||||
<id>tag:yannesposito.com,2011-08-17:/Scratch/fr/blog/A-more-convenient-diff/</id>
|
|
||||||
<title type="html">Un diff plus pratique</title>
|
|
||||||
<published>2011-08-17T09:33:30Z</published>
|
|
||||||
<updated>2011-08-17T09:33:30Z</updated>
|
|
||||||
<link href="http://yannesposito.com/Scratch/fr/blog/A-more-convenient-diff/" rel="alternate"/>
|
|
||||||
<content type="html"><p><code>diff</code> est un utilitaire très pratique, mais il n&rsquo;est pas facile à lire pour nous, les Hommes.</p>
|
|
||||||
|
|
||||||
<p>C&rsquo;est pourquoi, lorsque vous utilisez <code>git</code>, il vous montre un formatage plus agréable avec des couleurs.</p>
|
|
||||||
|
|
||||||
<p>Voici le script que j&rsquo;utilise lorsque je veux avoir un <code>diff</code> à la git.</p>
|
|
||||||
|
|
||||||
<div class="code"><div class="file"><a href="/Scratch/fr/blog/A-more-convenient-diff/code/ydiff"> &#x27A5; ydiff </a></div><div class="withfile">
|
|
||||||
<pre class="twilight">
|
|
||||||
<span class="Comment"><span class="Comment">#</span>!/usr/bin/env zsh</span>
|
|
||||||
|
|
||||||
<span class="Comment"><span class="Comment">#</span> Load colors helpers</span>
|
|
||||||
autoload -U colors <span class="Keyword">&amp;&amp;</span> colors
|
|
||||||
|
|
||||||
function colorize_diff {
|
|
||||||
<span class="Keyword">...</span></pre></div></div></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"><p>Voici le code &ldquo;obfusqué&rdquo;&nbsp;:</p>
|
|
||||||
|
|
||||||
<div class="code"><div class="file"><a href="/Scratch/fr/blog/Haskell-Mandelbrot/code/animandel.hs"> &#x27A5; animandel.hs </a></div><div class="withfile">
|
|
||||||
<pre class="twilight">
|
|
||||||
a=27;b=79;c=<span class="Constant">C</span>(-2.0,-1.0);d=<span class="Constant">C</span>(1.0,1.0);e=<span class="Constant">C</span>(-2.501,-1.003)
|
|
||||||
<span class="Keyword">newtype</span> <span class="Constant">C</span> = <span class="Constant">C</span> (<span class="Constant">Double</span>,<span class="Constant">Double</span>) <span class="Keyword">deriving</span> (<span class="Constant">Show</span>,<span class="Constant">Eq</span>)
|
|
||||||
<span class="Keyword">instance</span> <span class="Constant">Num</span> <span class="Constant">C</span> <span class="Keyword">where...</span></pre></div></div></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&rsquo;utilise des mots de passe différents sur tous les sites.</p&
|
||||||
<p>Vous êtes toujours là&nbsp;?
|
<p>Vous êtes toujours là&nbsp;?
|
||||||
Bon, d&rsquo;accord, même si vous ne téléchargez pas mon application vous pouvez quand même utili...</p></p></div></p></content>
|
Bon, d&rsquo;accord, même si vous ne téléchargez pas mon application vous pouvez quand même utili...</p></p></div></p></content>
|
||||||
</entry>
|
</entry>
|
||||||
<entry>
|
|
||||||
<id>tag:yannesposito.com,2011-04-20:/Scratch/fr/blog/2011-04-20-Now-hosted-on-github/</id>
|
|
||||||
<title type="html">Hébergement github</title>
|
|
||||||
<published>2011-04-20T15:22:15Z</published>
|
|
||||||
<updated>2011-04-20T15:22:15Z</updated>
|
|
||||||
<link href="http://yannesposito.com/Scratch/fr/blog/2011-04-20-Now-hosted-on-github/" rel="alternate"/>
|
|
||||||
<content type="html"><p><img alt="Title image" src="/Scratch/img/blog/2011-04-20-Now-hosted-on-github/main.png" /></p>
|
|
||||||
|
|
||||||
<p>J&rsquo;héberge mon site sur github à partir d&rsquo;aujourd&rsquo;hui.</p>
|
|
||||||
</p></content>
|
|
||||||
</entry>
|
|
||||||
<entry>
|
|
||||||
<id>tag:yannesposito.com,2011-01-03:/Scratch/fr/blog/2011-01-03-Why-I-sadly-won-t-use-coffeescript/</id>
|
|
||||||
<title type="html">Pourquoi je n'utiliserai pas CoffeeScript (malheureusement)</title>
|
|
||||||
<published>2011-01-03T08:37:26Z</published>
|
|
||||||
<updated>2011-01-03T08:37:26Z</updated>
|
|
||||||
<link href="http://yannesposito.com/Scratch/fr/blog/2011-01-03-Why-I-sadly-won-t-use-coffeescript/" rel="alternate"/>
|
|
||||||
<content type="html"><p><img alt="Title image" src="/Scratch/img/blog/2011-01-03-Why-I-sadly-won-t-use-coffeescript/main.png" /></p>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="encadre">
|
|
||||||
|
|
||||||
|
|
||||||
<p><em>Mise à jour&nbsp;:</em> Je pense que je vais finallement changer d&rsquo;avis.
|
|
||||||
Pourquoi&nbsp;?
|
|
||||||
Tout d&rsquo;abord, je viens de découvrir un convertisseur javascript vers coffeescript, ensuite Denis Knauf m&rsquo;a laissé un commentaire et m&rsquo;a appris l&rsquo;existence d&rsquo;une fonction <code>CoffeeScript.eval</code>. De plus, il faut voir CoffeeScript comme javascript avec une syntaxe similaire à Ruby et pas comme un langage similaire à Ruby.</p>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="intro">
|
|
||||||
|
|
||||||
|
|
||||||
<p><span class="sc"><abbr title="Trop long à lire">tlàl</abbr>&nbsp;: </span> Qu&rsquo;est-ce qui n&rsquo;allait pas avec Coffeescript? La meta-programm...</p></div></p></content>
|
|
||||||
</entry>
|
|
||||||
<entry>
|
|
||||||
<id>tag:yannesposito.com,2011-01-01:/Scratch/fr/blog/2011-01-03-Happy-New-Year/</id>
|
|
||||||
<title type="html">Bonne et heureuse année</title>
|
|
||||||
<published>2011-01-01T06:55:54Z</published>
|
|
||||||
<updated>2011-01-01T06:55:54Z</updated>
|
|
||||||
<link href="http://yannesposito.com/Scratch/fr/blog/2011-01-03-Happy-New-Year/" rel="alternate"/>
|
|
||||||
<content type="html"><p>Bonne et heureuse année&nbsp;!</p>
|
|
||||||
|
|
||||||
<p>J&rsquo;étais très occupé ces derniers mois.
|
|
||||||
Maintenant il me semble que je vais pouvoir faire revivre ce blog.</p>
|
|
||||||
|
|
||||||
<p>J&rsquo;ai fait un outil qui permet d&rsquo;écrire des livre en utilisant une syntaxe proche de markdown.
|
|
||||||
C&rsquo;est un markdown avec des macros (essentiel pour les textes longs).
|
|
||||||
De plus le système gère la génération de pages HTML ainsi que du PDF engendré avec du XeLaTeX.
|
|
||||||
Je n&rsquo;en ai pas encore terminé avec ça. Mais si je tarde trop, je communiquerai lorsque j&rsquo;aurai fini le minimum.</p>
|
|
||||||
|
|
||||||
<p>J&rsquo;ai écrit un framework MVC pour application javascript simple mais néanmoins très rapide.</p>
|
|
||||||
|
|
||||||
<p>Meilleurs vœux à tous&nbsp;!</p>
|
|
||||||
</content>
|
|
||||||
</entry>
|
|
||||||
<entry>
|
|
||||||
<id>tag:yannesposito.com,2010-10-26:/Scratch/fr/blog/2010-10-26-LaTeX-like-macro-and-markdown/</id>
|
|
||||||
<title type="html">Des macros LaTeX pour markdown</title>
|
|
||||||
<published>2010-10-26T12:30:58Z</published>
|
|
||||||
<updated>2010-10-26T12:30:58Z</updated>
|
|
||||||
<link href="http://yannesposito.com/Scratch/fr/blog/2010-10-26-LaTeX-like-macro-and-markdown/" rel="alternate"/>
|
|
||||||
<content type="html">
|
|
||||||
<div class="intro">
|
|
||||||
|
|
||||||
|
|
||||||
<p><span class="sc"><abbr title="Trop long à lire">tlàl</abbr>&nbsp;: </span> J&rsquo;ai fait un système simple de macros pour mon blog. Par exemple, il me suffit d&rsquo;écrire %<span />latex et ça affiche <span style="text-transform: uppercase">L<sup style="vertical-align: 0.15em; margin-left: -0.36em; margin-right: -0.15em; font-size: .85em">a</sup>T<sub style="vertical-align: -0.5ex; margin-left: -0.1667em; margin-right: -0.125em; font-size: 1em">e</sub>X</span>.</p>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<p>J&rsquo;ai ajouter un système de macro pour mon système de blog.
|
|
||||||
Lorsqu&rsquo;on est habitué à <span style="text-transform: uppercase">L<sup style="vertical-align: 0.15em; margin-left: -0.36em; margin-right: -0.15em; font-size: .85em">a</sup>T</span></p></div></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">
|
|
||||||
<div class="intro">
|
|
||||||
|
|
||||||
|
|
||||||
<p><span class="sc"><abbr title="Trop long à lire">tlàl</abbr>&nbsp;: </span> Je me suis amusé à lire un fichier <code>wav</code>. Le <code>C</code> fut le langage le mieux adapté à ce traitement. Bien meilleur que Ruby par exemple.</p>
|
|
||||||
|
|
||||||
<p>edit: Je voulais que ce programme fonctionne sur une machine spécifique. En aucun cas je ne pensais publier ce code pour une utilisation autre que celle-ci.</p>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<p>J&rsquo;ai eu besoin de calculer la somme des valeurs absolue des données d&rsquo;un fichier <code>wav</code>.
|
|
||||||
Pour des raison d&rsquo;efficacité (et aussi de fun), j&rsquo;ai fait le programme en <code>C</code>.</p>
|
|
||||||
|
|
||||||
<p>Celà faisait longtemps que je n&rsquo;avais pas programmé en <code>C</code>.
|
|
||||||
De mémoire il était peu aisé de manipuler des ...</p></content>
|
|
||||||
</entry>
|
|
||||||
<entry>
|
|
||||||
<id>tag:yannesposito.com,2010-10-10:/Scratch/fr/blog/2010-10-10-Secure-eMail-on-Mac-in-few-steps/</id>
|
|
||||||
<title type="html">Sécurisez vos emails</title>
|
|
||||||
<published>2010-10-10T16:39:00Z</published>
|
|
||||||
<updated>2010-10-10T16:39:00Z</updated>
|
|
||||||
<link href="http://yannesposito.com/Scratch/fr/blog/2010-10-10-Secure-eMail-on-Mac-in-few-steps/" rel="alternate"/>
|
|
||||||
<content type="html"><p><img alt="Title image" src="/Scratch/img/blog/2010-10-10-Secure-eMail-on-Mac-in-few-steps/main.png" class="clean" /></p>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="intro">
|
|
||||||
|
|
||||||
|
|
||||||
<p><span class="sc"><abbr title="Trop long à lire">tlàl</abbr>&nbsp;: </span> <em>avec un Mac</em> </p>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li>Récupérez un certificat signé par une AC: <a href="http://www.instantssl.com/ssl-certificate-products/free-email-certificate.html">cliquez ici pour un certificat gratuit</a>&nbsp;;</li>
|
|
||||||
<li>ouvrez le fichier&nbsp;;</li>
|
|
||||||
<li>supprimer le fichier en mode sécurisé&nbsp;;</li>
|
|
||||||
<li>utilisez Mail plutôt que l&rsquo;interface web de gmail.</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<p>J&rsquo;ai (re)découvert comment adoptez la norme S/MIME.
|
|
||||||
J&rsquo;ai été surpris de voir à quel point ce fut aisé.
|
|
||||||
Il y a seulement quelques années c&rs...</p></p></content>
|
|
||||||
</entry>
|
|
||||||
<entry>
|
|
||||||
<id>tag:yannesposito.com,2010-10-06:/Scratch/fr/blog/2010-10-06-New-Blog-Design-Constraints/</id>
|
|
||||||
<title type="html">Contraintes du design de ce blog</title>
|
|
||||||
<published>2010-10-06T09:33:03Z</published>
|
|
||||||
<updated>2010-10-06T09:33:03Z</updated>
|
|
||||||
<link href="http://yannesposito.com/Scratch/fr/blog/2010-10-06-New-Blog-Design-Constraints/" rel="alternate"/>
|
|
||||||
<content type="html"><p>Vous avez pu constater que j&rsquo;ai modifié le design de mon blog.
|
|
||||||
Maintenant il doit être beaucoup plus léger qu&rsquo;avant.
|
|
||||||
Je n&rsquo;utilise plus de CSS3 et beaucoup moins de javascript.
|
|
||||||
Bien entendu, même avant, mes pages étaient parfaitement lisibles sans javascript.
|
|
||||||
Mais, je me suis aperçu que les systèmes de CSS3 sont loin d&rsquo;être au point.
|
|
||||||
J&rsquo;utilisait des gradient en CSS3, ainsi que des ombres sous le texte. Ça avait un rendu très sympa. Sauf&hellip;
|
|
||||||
Ce n&rsquo;était pas compatible ie6, sous Chrome le rendu était d&rsquo;une lenteur incroyable.
|
|
||||||
J&rsquo;ai donc décidé de faire un site à minima.
|
|
||||||
Je voulais qu&rsquo;il soit joli <em>et</em> le plus simple possible pour assurer sa compatibilité.
|
|
||||||
Les règles que je me suis fixées sont donc:</p>
|
|
||||||
|
|
||||||
</content>
|
|
||||||
</entry>
|
|
||||||
<entry>
|
|
||||||
<id>tag:yannesposito.com,2010-09-02:/Scratch/fr/blog/2010-09-02-Use-git-to-calculate-trusted-mtimes/</id>
|
|
||||||
<title type="html">Utilisation de git pour calculer les mtimes</title>
|
|
||||||
<published>2010-09-02T13:54:10Z</published>
|
|
||||||
<updated>2010-09-02T13:54:10Z</updated>
|
|
||||||
<link href="http://yannesposito.com/Scratch/fr/blog/2010-09-02-Use-git-to-calculate-trusted-mtimes/" rel="alternate"/>
|
|
||||||
<content type="html"><p>Vous pouvez remarquer qu&rsquo;à la fin de chaque page je donne une date de dernière modification.
|
|
||||||
Précédemment cette date était calculée en utilisant la date du fichier.
|
|
||||||
Mais il arrive fréquemment que je fasse un <code>touch</code> d&rsquo;un fichier pour engendrer tout le site de nouveau.
|
|
||||||
Donc la date n&rsquo;est pas nécessairement la <em>vraie</em> de modification du contenue.</p>
|
|
||||||
|
|
||||||
<p>J&rsquo;utilise <a href="http://git-scm.org">git</a> pour <em>versionner</em> mon site web.
|
|
||||||
Et cet outil me permet de récupérer la dernière date de <em>vraie</em> modification d&rsquo;un fichier.
|
|
||||||
Voici comment je m&rsquo;y prend avec <a href="http://nanoc.stoneship.org">nanoc</a>&nbsp;:</p>
|
|
||||||
|
|
||||||
<div class="code"><div class="file"></div></div></content>
|
|
||||||
</entry>
|
|
||||||
<entry>
|
|
||||||
<id>tag:yannesposito.com,2010-09-02:/Scratch/fr/blog/2010-09-02-base64-and-sha1-on-iPhone/</id>
|
|
||||||
<title type="html">base64 et sha1 sur iPhone</title>
|
|
||||||
<published>2010-09-01T22:02:17Z</published>
|
|
||||||
<updated>2010-09-01T22:02:17Z</updated>
|
|
||||||
<link href="http://yannesposito.com/Scratch/fr/blog/2010-09-02-base64-and-sha1-on-iPhone/" rel="alternate"/>
|
|
||||||
<content type="html"><p>Allons directement à l&rsquo;essentiel&nbsp;:
|
|
||||||
voici deux fonctions à intégrer à votre application iPhone pour afficher l&rsquo;encodage en base64 ou en hexadecimal du hash sha1 d&rsquo;un string en Objective-C pour iPhone.</p>
|
|
||||||
|
|
||||||
<p>Pour l&rsquo;usage c&rsquo;est très simple, copiez le code dans la classe de votre choix.
|
|
||||||
Puis&nbsp;:</p>
|
|
||||||
|
|
||||||
<pre class="twilight">
|
|
||||||
<span class="CCCPreprocessorLine">#<span class="CCCPreprocessorDirective">import</span> <span class="String"><span class="String">&lt;</span>CommonCrypto/CommonDigest.h<span class="String">&gt;</span></span></span>
|
|
||||||
...
|
|
||||||
<span class="Support">NSString</span> *b64_hash = [<span class="Variable">self</span> <span class="SupportFunction">b64_sha1<span class="SupportFunction">:</span></span><span class="String"></span></pre></content>
|
|
||||||
</entry>
|
|
||||||
<entry>
|
|
||||||
<id>tag:yannesposito.com,2010-08-31:/Scratch/fr/blog/2010-08-31-send-mail-from-command-line-with-attached-file/</id>
|
|
||||||
<title type="html">Envoyer un mail en ligne de commande avec un fichier attaché</title>
|
|
||||||
<published>2010-08-31T08:16:04Z</published>
|
|
||||||
<updated>2010-08-31T08:16:04Z</updated>
|
|
||||||
<link href="http://yannesposito.com/Scratch/fr/blog/2010-08-31-send-mail-from-command-line-with-attached-file/" rel="alternate"/>
|
|
||||||
<content type="html"><p>J&rsquo;ai dû envoyer un mail en ligne de commande récemment.
|
|
||||||
Quelle ne fût pas ma surprise lorsque je constatais que ce n&rsquo;était vraiment pas évident.
|
|
||||||
Je n&rsquo;avais ni <code>pine</code> ni <code>mutt</code>. Seulement <code>mail</code> et <code>mailx</code>.</p>
|
|
||||||
|
|
||||||
<p>Ce qu&rsquo;on trouve sur internet pour envoyer un mail avec fichier attaché c&rsquo;est ça&nbsp;:</p>
|
|
||||||
|
|
||||||
<pre class="twilight">
|
|
||||||
uuencode fic.jpg fic.jpg <span class="Keyword">|</span> mail -s <span class="String"><span class="String">'</span>Subject<span class="String">'</span></span>
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<p>Bon, alors, bête et discipliné j&rsquo;ai essayé.
|
|
||||||
Et bien, ça marche <em>presque</em> tout le temps.
|
|
||||||
Pour mon fichier ça n&rsquo;a pas marché du tout.
|
|
||||||
Je l&rsquo;ai compressé au format <code>.gz</code>, </p></content>
|
|
||||||
</entry>
|
|
||||||
<entry>
|
|
||||||
<id>tag:yannesposito.com,2010-08-23:/Scratch/fr/blog/2010-08-23-Now-heberged-on-heroku/</id>
|
|
||||||
<title type="html">Maintenant sur Heroku</title>
|
|
||||||
<published>2010-08-23T13:05:13Z</published>
|
|
||||||
<updated>2010-08-23T13:05:13Z</updated>
|
|
||||||
<link href="http://yannesposito.com/Scratch/fr/blog/2010-08-23-Now-heberged-on-heroku/" rel="alternate"/>
|
|
||||||
<content type="html"><h1 class="first" id="maintenant-sur-herokuhttpherokucom">Maintenant sur <a href="http://heroku.com">Heroku</a></h1>
|
|
||||||
|
|
||||||
<p>J&rsquo;ai changé mon hébergeur. Mobileme n&rsquo;est absolument pas adapté à la diffusion de mon blog. C&rsquo;est pourquoi je suis passé à <a href="http://heroku.com">Heroku</a>.</p>
|
|
||||||
|
|
||||||
<p>Mais comme vous devez le savoir mon blog est un site complètement statique.
|
|
||||||
J&rsquo;utilise <a href="http://nanoc.stoneship.org/">nanoc</a> pour l&rsquo;engendrer.
|
|
||||||
Avoir un site statique amène beaucoup d&rsquo;avantages par rapport à un site dynamique. Surtout en terme de sécurité.
|
|
||||||
Voici comment configurer un site statique sur heroku.</p>
|
|
||||||
|
|
||||||
<p>La racine de mes fichiers est &lsquo;/output&rsquo;. Vous devez simplement créer deux fichiers. Un fichier <code>config.ru</code></p></content>
|
|
||||||
</entry>
|
|
||||||
<entry>
|
|
||||||
<id>tag:yannesposito.com,2010-08-11:/Scratch/fr/blog/2010-07-09-Indecidabilities/</id>
|
|
||||||
<title type="html">Indécidabilités (partie 1)</title>
|
|
||||||
<published>2010-08-11T08:04:31Z</published>
|
|
||||||
<updated>2010-08-11T08:04:31Z</updated>
|
|
||||||
<link href="http://yannesposito.com/Scratch/fr/blog/2010-07-09-Indecidabilities/" rel="alternate"/>
|
|
||||||
<content type="html">
|
|
||||||
<div class="intro">
|
|
||||||
|
|
||||||
|
|
||||||
<p><span class="sc"><abbr title="Trop long à lire">tlàl</abbr>&nbsp;: </span> Je crée un mode mathématique simple pour parler de différents types d&rsquo;<em>indécidabilités</em>&nbsp;:</p>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li>indécidabilité due aux erreurs d&rsquo;observation&nbsp;;</li>
|
|
||||||
<li>grandes erreurs résultant de petites erreurs de mesure&nbsp;;</li>
|
|
||||||
<li>indécidabilité fractales&nbsp;;</li>
|
|
||||||
<li>indécidabilité logique.</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="corps">
|
|
||||||
|
|
||||||
|
|
||||||
<h1 class="first" id="les-indcidabilits">Les indécidabilités</h1>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="intro">
|
|
||||||
|
|
||||||
|
|
||||||
<p>Si le monde a été fabriqué par un démiurge, on peut dire que celui-ci devait avoir le sens de l&rsquo;humour.
|
|
||||||
Et le récit que je vais faire va vous en fournir la preuve.
|
|
||||||
Je vais me mettre à sa p...</p></div></content>
|
|
||||||
</entry>
|
|
||||||
<entry>
|
|
||||||
<id>tag:yannesposito.com,2010-07-31:/Scratch/fr/blog/2010-07-31-New-style-after-holidays/</id>
|
|
||||||
<title type="html">Nouveau style après les vacances</title>
|
|
||||||
<published>2010-07-31T21:59:10Z</published>
|
|
||||||
<updated>2010-07-31T21:59:10Z</updated>
|
|
||||||
<link href="http://yannesposito.com/Scratch/fr/blog/2010-07-31-New-style-after-holidays/" rel="alternate"/>
|
|
||||||
<content type="html"><p>Avant les vacances beaucoup d&rsquo;utilisateurs se sont plaints de la lenteur de rendu de mon site.
|
|
||||||
Il s&rsquo;agit notamment de problèmes avec Chrome en particulier.
|
|
||||||
Mais pour éviter tout problème.
|
|
||||||
J&rsquo;ai complètement modifié le style de mon site web.
|
|
||||||
Il est inspiré du style de l&rsquo;application iBooks<small>&copy;</small> sur iPhone<small>&copy;</small>.</p>
|
|
||||||
|
|
||||||
<p>Dites moi ce que vous pensez de ce nouveau design.</p>
|
|
||||||
</content>
|
|
||||||
</entry>
|
|
||||||
<entry>
|
|
||||||
<id>tag:yannesposito.com,2010-07-07:/Scratch/fr/blog/2010-07-07-CSS-rendering-problems-by-navigator/</id>
|
|
||||||
<title type="html">N'utilisez pas de gradients avec Chrome</title>
|
|
||||||
<published>2010-07-07T13:43:43Z</published>
|
|
||||||
<updated>2010-07-07T13:43:43Z</updated>
|
|
||||||
<link href="http://yannesposito.com/Scratch/fr/blog/2010-07-07-CSS-rendering-problems-by-navigator/" rel="alternate"/>
|
|
||||||
<content type="html"><p>Beaucoup d&rsquo;utilisateurs de <a href="http://reddit.com">Reddit</a> m&rsquo;ont rapporté que mon site était très long à charger et à <em>scroller</em>.
|
|
||||||
Ils pensaient qu&rsquo;il s&rsquo;agissait d&rsquo;un problème dû aux ombres que j&rsquo;applique sur le texte.
|
|
||||||
J&rsquo;étais un peu surpris puisque je fais mes tests sur une machine vraiment très lente et je n&rsquo;avais jamais détecté ces problèmes.
|
|
||||||
En réalité, ce qui ralenti le rendu de ce site est par ordre d&rsquo;importance&nbsp;:</p>
|
|
||||||
|
|
||||||
<ol>
|
|
||||||
<li>Les dégradés sur Chrome (pas dans Safari sur Mac)</li>
|
|
||||||
<li>les <em>box shadows</em> sur Firefox</li>
|
|
||||||
</ol>
|
|
||||||
|
|
||||||
<h2 id="les-dgrads">les dégradés</h2>
|
|
||||||
|
|
||||||
<p>Sur Safari il n&rsquo;y a absolument aucun problème avec les dégradés. Par contre sur Chrome sous Linux le si...</p></content>
|
|
||||||
</entry>
|
|
||||||
<entry>
|
|
||||||
<id>tag:yannesposito.com,2010-07-05:/Scratch/fr/blog/2010-07-05-Cappuccino-and-Web-applications/</id>
|
|
||||||
<title type="html">Cappuccino ou jQuery ?</title>
|
|
||||||
<published>2010-07-05T11:49:04Z</published>
|
|
||||||
<updated>2010-07-05T11:49:04Z</updated>
|
|
||||||
<link href="http://yannesposito.com/Scratch/fr/blog/2010-07-05-Cappuccino-and-Web-applications/" rel="alternate"/>
|
|
||||||
<content type="html">
|
|
||||||
<div class="intro">
|
|
||||||
|
|
||||||
|
|
||||||
<p><abbr title="Trop long à lire">tlàl</abbr>:</p>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li>J&rsquo;ai essayé de faire une version de <a href="http://yannesposito.com/Softwares/YPassword.html">YPassword</a> en jQuery et avec Cappuccino.</li>
|
|
||||||
<li>Cappuccino est très bien sur les navigateurs non mobile mais l&rsquo;application pèse 1.4Mo et n&rsquo;est pas compatible avec l&rsquo;iPhone.</li>
|
|
||||||
<li>la version jQuery n&rsquo;est pas aussi jolie que la version réalisée avec Cappuccino mais elle pèse seulement 106Ko et est compatible avec l&rsquo;iPhone.</li>
|
|
||||||
<li>J&rsquo;essayerai Dashcode 3</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<hr />
|
|
||||||
|
|
||||||
<div class="intro">
|
|
||||||
|
|
||||||
|
|
||||||
<p>Avant de commencer, je dois dire que je sais que Cappuccino et jQuery ne sont pas plus comparable que Cocoa et la <em>standard library</em> en...</p></div></hr></content>
|
|
||||||
</entry>
|
|
||||||
<entry>
|
|
||||||
<id>tag:yannesposito.com,2010-06-19:/Scratch/fr/blog/2010-06-19-jQuery-popup-the-easy-way/</id>
|
|
||||||
<title type="html">Comment faire des popups en jQuery rapidement</title>
|
|
||||||
<published>2010-06-18T22:44:50Z</published>
|
|
||||||
<updated>2010-06-18T22:44:50Z</updated>
|
|
||||||
<link href="http://yannesposito.com/Scratch/fr/blog/2010-06-19-jQuery-popup-the-easy-way/" rel="alternate"/>
|
|
||||||
<content type="html"><p>Sur ce blog, je donne parfois la possibilité de télécharger certaines sources de code.
|
|
||||||
Dans ce cas, le code est souvent plus large que le <code>div</code> qui le contient.
|
|
||||||
Le texte est alors coupé.
|
|
||||||
C&rsquo;est pourquoi, j&rsquo;utilise une méthode qui permet d&rsquo;afficher ces sources dans de grandes <em>popups</em> en jQuery.</p>
|
|
||||||
|
|
||||||
<p>Vous pouvez faire un essai en cliquant le code suivant&nbsp;; remarquez qu&rsquo;un bout du code n&rsquo;est pas visible (après <code>z-index</code> normallement)&nbsp;:</p>
|
|
||||||
|
|
||||||
<div class="code"><div class="file"><a href="/Scratch/fr/blog/2010-06-19-jQuery-popup-the-easy-way/code/essai.js"> &#x27A5; essai.js </a></div><div class="withfile">
|
|
||||||
<pre class="twilight">
|
|
||||||
<span class="Comment"><span class="Comment">//</span> --- code popup ---</span>
|
|
||||||
</pre></div></div></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"><p>Voici un moyen très simple de ne plus être comptabilisé dans les visites de son propre site.
|
|
||||||
Tout d&rsquo;abord, vous devriez jeter un coup d&rsquo;œil sur comment <a href="/Scratch/fr/blog/2010-06-17-track-events-with-google-analytics">je gère les systèmes de récupération de statistiques</a>.
|
|
||||||
Je centralise tout dans un seul fichier javascript ce qui facilite le travail.</p>
|
|
||||||
|
|
||||||
<p>Cette méthode nécessite l&rsquo;utilisation de <code>jquery-cookie</code>.</p>
|
|
||||||
|
|
||||||
<p>Avant de comptabiliser les visites, je vérifie que la clé <code>admin</code> n&rsquo;est pas utilisée dans mes cookies.</p>
|
|
||||||
|
|
||||||
<pre class="twilight">
|
|
||||||
<span class="Storage">var</span> admin <span class="Keyword">=</span> <span class="Keyword">$</span>.<span class="SupportConstant">cookie</span>(</pre></content>
|
|
||||||
</entry>
|
|
||||||
<entry>
|
|
||||||
<id>tag:yannesposito.com,2010-06-17:/Scratch/fr/blog/2010-06-17-track-events-with-google-analytics/</id>
|
|
||||||
<title type="html">Analyser les clicks sur votre Site</title>
|
|
||||||
<published>2010-06-17T12:41:36Z</published>
|
|
||||||
<updated>2010-06-17T12:41:36Z</updated>
|
|
||||||
<link href="http://yannesposito.com/Scratch/fr/blog/2010-06-17-track-events-with-google-analytics/" rel="alternate"/>
|
|
||||||
<content type="html"><p>Voici comment analyser tous les clics que font vos utilisateurs sur votre blog en incluant google analytics de façon asynchrone.</p>
|
|
||||||
|
|
||||||
<p>Dans le html, il faut utiliser <a href="http://jquery.com">jQuery</a> et un fichier que j&rsquo;ai appelé <code>yga.js</code>&nbsp;:</p>
|
|
||||||
|
|
||||||
<pre class="twilight">
|
|
||||||
<span class="EmbeddedSource"> <span class="EmbeddedSource">&lt;</span><span class="MetaTagInline">script</span> <span class="MetaTagInline">type</span>=<span class="String"><span class="String">&quot;</span>text/javascript<span class="String">&quot;</span></span> <span class="MetaTagInline">src</span>=<span class="String"><span class="String">&quot;</span>jquery.js<span class="String">&quot;</span></span><span class="EmbeddedSource">&gt;</span><span class="EmbeddedSource">&lt;/</span></span></pre></content>
|
|
||||||
</entry>
|
|
||||||
<entry>
|
|
||||||
<id>tag:yannesposito.com,2010-06-15:/Scratch/fr/blog/2010-06-15-Get-my-blog-engine/</id>
|
|
||||||
<title type="html">Récupérez mon système de blog</title>
|
|
||||||
<published>2010-06-15T08:56:32Z</published>
|
|
||||||
<updated>2010-06-15T08:56:32Z</updated>
|
|
||||||
<link href="http://yannesposito.com/Scratch/fr/blog/2010-06-15-Get-my-blog-engine/" rel="alternate"/>
|
|
||||||
<content type="html"><p>J&rsquo;ai publié une version <em>light</em> de mon système de blog hier soir. Par <em>light</em> il faut comprendre avec un CSS plus épuré et plus portable (sans les bords ronds).
|
|
||||||
Vous pouvez le récupérer sur <a href="http://github.com/yogsototh/nanoc3_blog">github.com</a>.</p>
|
|
||||||
|
|
||||||
<p>Que pouvez-vous attendre de ce système de blog&nbsp;?</p>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li>Tous les avantages liés à <a href="http://nanoc.stoneship.org">nanoc</a>&nbsp;;</li>
|
|
||||||
<li>Facilité de la gestion de plusieurs langues&nbsp;;</li>
|
|
||||||
<li>coloration syntaxique des codes sources pour la plupart des languages&nbsp;;</li>
|
|
||||||
<li>commentaires gérés avec <a href="http://intensedebate.org">intenseDebate</a> de façon asynchrone&nbsp;;</li>
|
|
||||||
<li>très portable avec ou sans javascript, XHTML Strict 1.0 / CSS3&nbsp;;</li></ul></content>
|
|
||||||
</entry>
|
|
||||||
<entry>
|
|
||||||
<id>tag:yannesposito.com,2010-06-14:/Scratch/fr/blog/2010-06-14-multi-language-choices/</id>
|
|
||||||
<title type="html">choix liés à l'écriture dans plusieurs langues</title>
|
|
||||||
<published>2010-06-14T14:14:57Z</published>
|
|
||||||
<updated>2010-06-14T14:14:57Z</updated>
|
|
||||||
<link href="http://yannesposito.com/Scratch/fr/blog/2010-06-14-multi-language-choices/" rel="alternate"/>
|
|
||||||
<content type="html"><p>Je traduis la plupart de mes articles pour qu&rsquo;ils soient disponibles en français et en anglais.
|
|
||||||
La façon que l&rsquo;on m&rsquo;a conseillé était d&rsquo;avoir un fichier par langue. En général ça donne ça.</p>
|
|
||||||
|
|
||||||
<pre class="twilight">
|
|
||||||
Bonjour,
|
|
||||||
|
|
||||||
voici un exemple de texte en français.
|
|
||||||
[image](url)
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<pre class="twilight">
|
|
||||||
Hello,
|
|
||||||
|
|
||||||
here is an example of english text.
|
|
||||||
[image](url)
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<p>Cette façon de traduire vous impose une certaine façon de traduire.
|
|
||||||
D&rsquo;abord écrire entièrement le texte dans une langue,
|
|
||||||
puis copier le fichier et enfin retraduire dans une nouvelle langue.</p>
|
|
||||||
|
|
||||||
<p>Le problème, c&rsquo;est que très souvent, les articles ont des parties communes non négligeables. Par exemple, les images, les codes sources, etc&hellip;
|
|
||||||
Lorsque je m&...</p></content>
|
|
||||||
</entry>
|
|
||||||
<entry>
|
|
||||||
<id>tag:yannesposito.com,2010-05-24:/Scratch/fr/blog/2010-05-24-Trees--Pragmatism-and-Formalism/</id>
|
|
||||||
<title type="html">Arbres ; Pragmatisme et Formalisme</title>
|
|
||||||
<published>2010-05-24T18:05:14Z</published>
|
|
||||||
<updated>2010-05-24T18:05:14Z</updated>
|
|
||||||
<link href="http://yannesposito.com/Scratch/fr/blog/2010-05-24-Trees--Pragmatism-and-Formalism/" rel="alternate"/>
|
|
||||||
<content type="html">
|
|
||||||
<div class="intro">
|
|
||||||
|
|
||||||
|
|
||||||
<p><abbr title="Trop Long À Lire"><span class="sc">tlàl</span></abbr>&nbsp;:</p>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li>J&rsquo;ai essayé de programmer un simple filtre&nbsp;;</li>
|
|
||||||
<li>J&rsquo;ai été bloqué pendant deux jours&nbsp;;</li>
|
|
||||||
<li>J&rsquo;ai arrêté de penser comme un robot&nbsp;;</li>
|
|
||||||
<li>J&rsquo;ai utilisé un papier et un stylo&nbsp;;</li>
|
|
||||||
<li>J&rsquo;ai fait un peu de maths&nbsp;;</li>
|
|
||||||
<li>J&rsquo;ai résolu le problème en 10 minutes&nbsp;;</li>
|
|
||||||
<li>Conclusion: Pragmatisme n&rsquo;est pas&nbsp;: &laquo;n&rsquo;utilisez jamais la théorie&raquo;.
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h2 id="rsum-plus-long-que-le--abbr-titletrop-long--liresctllscabbr">Résumé (plus long que le <abbr title="Trop Long À Lire"><span class="sc">tlàl</span></abbr>)</h2>
|
|
||||||
|
|
||||||
<p>Je devais résoudre un...</p></div></content>
|
|
||||||
</entry>
|
|
||||||
<entry>
|
|
||||||
<id>tag:yannesposito.com,2010-05-19:/Scratch/fr/blog/2010-05-19-How-to-cut-HTML-and-repair-it/</id>
|
|
||||||
<title type="html">Comment réparer un XML coupé ?</title>
|
|
||||||
<published>2010-05-19T20:20:34Z</published>
|
|
||||||
<updated>2010-05-19T20:20:34Z</updated>
|
|
||||||
<link href="http://yannesposito.com/Scratch/fr/blog/2010-05-19-How-to-cut-HTML-and-repair-it/" rel="alternate"/>
|
|
||||||
<content type="html"><p>Sur ma page d&rsquo;accueil vous pouvez voir la liste des mes derniers articles avec le début de ceux-ci. Pour arriver à faire ça, j&rsquo;ai besoin de couper le code XHTML de mes pages en plein milieu. Il m&rsquo;a donc fallu trouver un moyen de les réparer.</p>
|
|
||||||
|
|
||||||
<p>Prenons un exemple&nbsp;:</p>
|
|
||||||
|
|
||||||
<pre class="twilight">
|
|
||||||
<span class="MetaTagAll"><span class="MetaTagAll">&lt;</span><span class="MetaTagAll">div</span> <span class="MetaTagAll">class</span>=<span class="String"><span class="String">&quot;</span>corps<span class="String">&quot;</span></span><span class="MetaTagAll">&gt;</span></span>
|
|
||||||
<span class="MetaTagAll"><span class="MetaTagAll">&lt;</span><span class="MetaTagAll">div</span> <span class="MetaTagAll">class</span>=<span class="String"><span class="String">&quot;</span></span></span></pre></content>
|
|
||||||
</entry>
|
|
||||||
<entry>
|
|
||||||
<id>tag:yannesposito.com,2010-05-17:/Scratch/fr/blog/2010-05-17-at-least-this-blog-revive/</id>
|
|
||||||
<title type="html">Je reviens à la vie !</title>
|
|
||||||
<published>2010-05-17T11:25:51Z</published>
|
|
||||||
<updated>2010-05-17T11:25:51Z</updated>
|
|
||||||
<link href="http://yannesposito.com/Scratch/fr/blog/2010-05-17-at-least-this-blog-revive/" rel="alternate"/>
|
|
||||||
<content type="html"><p>Bonjour à tous&nbsp;!</p>
|
|
||||||
|
|
||||||
<blockquote cite="http://www.madore.org/~david/weblog/2010-05.html#d.2010-05-12.1752">
|
|
||||||
<p>&hellip;plus on retarde quelque chose, plus il devient difficile de s&rsquo;y mettre&hellip;</p>
|
|
||||||
</blockquote>
|
|
||||||
|
|
||||||
<p>Je devais écrire d&rsquo;autres articles pour ce blog. J&rsquo;ai noté plein d&rsquo;idées dans mes <em>todolist</em>. Mais j&rsquo;avais pas mal d&rsquo;autres choses à faire. Et jusqu&rsquo;ici, j&rsquo;ai toujours dit &laquo;je le ferai plus tard&raquo;. Ce qui m&rsquo;a fait agir, c&rsquo;est la petite réflexion que j&rsquo;avais lu une fois.
|
|
||||||
&gt; Arrétez d&rsquo;écrire des <code>TODO</code> dans votre code est faites le maintenant&nbsp;!<br />
|
|
||||||
&gt; Vous serez surpris de l&rsquo;efficacité de cette mesure.</p>
|
|
||||||
|
|
||||||
<p>En résumé&nbsp;:
|
|
||||||
&gt; </p></p></content>
|
|
||||||
</entry>
|
|
||||||
<entry>
|
|
||||||
<id>tag:yannesposito.com,2010-03-23:/Scratch/fr/blog/2010-03-23-Encapsulate-git/</id>
|
|
||||||
<title type="html">Encapsuler git</title>
|
|
||||||
<published>2010-03-23T20:37:36Z</published>
|
|
||||||
<updated>2010-03-23T20:37:36Z</updated>
|
|
||||||
<link href="http://yannesposito.com/Scratch/fr/blog/2010-03-23-Encapsulate-git/" rel="alternate"/>
|
|
||||||
<content type="html"><p><span class="intro">
|
|
||||||
Voici une solution pour conserver des branches divergentes avec <code>git</code>.
|
|
||||||
Parce qu&rsquo;il est facile de <em>merger</em> par erreur, je propose un script qui encapsule le comportement de <code>git</code> pour interdire certains <em>merges</em> dangereux. Mais qui permet aussi de faire des merges en cascades de la racines vers les autres branches.
|
|
||||||
</span></p>
|
|
||||||
|
|
||||||
<h2 id="se-prmunir-contre-les-erreurs">Se prémunir contre les erreurs</h2>
|
|
||||||
|
|
||||||
<p>Je travaille sur un projet dans lequel certaines de mes branches <code>git</code> doivent rester divergentes. Et les divergences devraient aller en s&rsquo;accentuant.</p>
|
|
||||||
|
|
||||||
<p>J&rsquo;utilise aussi certaines branches qui contiennent la partie commune de ces projets.</p>
|
|
||||||
|
|
||||||
<p>Disons que j&rsquo;ai les branches&nbsp;:</p>
|
|
||||||
|
|
||||||
...</content>
|
|
||||||
</entry>
|
|
||||||
<entry>
|
|
||||||
<id>tag:yannesposito.com,2010-03-22:/Scratch/fr/blog/2010-03-22-Git-Tips/</id>
|
|
||||||
<title type="html">Astuces Git</title>
|
|
||||||
<published>2010-03-22T08:42:27Z</published>
|
|
||||||
<updated>2010-03-22T08:42:27Z</updated>
|
|
||||||
<link href="http://yannesposito.com/Scratch/fr/blog/2010-03-22-Git-Tips/" rel="alternate"/>
|
|
||||||
<content type="html"><h2 class="first" id="cloner-de-github--travers-un-pare-feu">Cloner de github à travers un pare-feu</h2>
|
|
||||||
|
|
||||||
<p>La façon standard:</p>
|
|
||||||
|
|
||||||
<div><pre class="twilight">
|
|
||||||
git clone git@github.com:yogsototh/project.git
|
|
||||||
</pre></div>
|
|
||||||
|
|
||||||
<p>En utilisant le port HTTPS&nbsp;:</p>
|
|
||||||
|
|
||||||
<div><pre class="twilight">
|
|
||||||
git clone git+ssh://git@github.com:443/yogsototh/project.git
|
|
||||||
</pre></div>
|
|
||||||
|
|
||||||
<h2 id="cloner-toutes-les-branches">Cloner toutes les branches</h2>
|
|
||||||
|
|
||||||
<p><code>git clone</code> peut seulement récuper la branche <code>master</code>.</p>
|
|
||||||
|
|
||||||
<p>Si vous n&rsquo;avez pas beaucoup de branches, vous pouvez simplement les clone le project et ensuite pour chacune d&rsquo;entre elle lancer la commande suivante&nbsp;:</p>
|
|
||||||
|
|
||||||
<div><pre class="twilight">
|
|
||||||
git branch --track local_branch remote_branch
|
|
||||||
</pre></div>
|
|
||||||
|
|
||||||
<p>par ...</p></content>
|
|
||||||
</entry>
|
|
||||||
<entry>
|
|
||||||
<id>tag:yannesposito.com,2010-02-23:/Scratch/fr/blog/2010-02-23-When-regexp-is-not-the-best-solution/</id>
|
|
||||||
<title type="html">Quand se passer des expressions régulières ?</title>
|
|
||||||
<published>2010-02-23T08:09:52Z</published>
|
|
||||||
<updated>2010-02-23T08:09:52Z</updated>
|
|
||||||
<link href="http://yannesposito.com/Scratch/fr/blog/2010-02-23-When-regexp-is-not-the-best-solution/" rel="alternate"/>
|
|
||||||
<content type="html"><p>Les expressions régulières sont très utiles. Cependant, elles ne sont pas toujours la meilleure manière d&rsquo;aborder certain problème autour des chaines de caractères.
|
|
||||||
Et surtout quand les transformations que vous voulez accomplir sont simples.</p>
|
|
||||||
|
|
||||||
<p>Je voulais savoir comment récupérer le plus vite possible l&rsquo;extension d&rsquo;un nom de fichier. Il y a trois manière naturelle d&rsquo;accomplir celà&nbsp;:</p>
|
|
||||||
|
|
||||||
<div><pre class="twilight">
|
|
||||||
<span class="Comment"><span class="Comment">#</span> regexp</span>
|
|
||||||
str.<span class="Entity">match</span>(<span class="StringRegexp"><span class="StringRegexp">/</span></span><span class="StringRegexp"><span class="StringRegexp"><span class="StringRegexp">[</span>^.<span class="StringRegexp">]</span></span>*$</span></pre></div></content>
|
|
||||||
</entry>
|
|
||||||
<entry>
|
|
||||||
<id>tag:yannesposito.com,2010-02-18:/Scratch/fr/blog/2010-02-18-split-a-file-by-keyword/</id>
|
|
||||||
<title type="html">découper un fichier par mots clés</title>
|
|
||||||
<published>2010-02-18T13:29:14Z</published>
|
|
||||||
<updated>2010-02-18T13:29:14Z</updated>
|
|
||||||
<link href="http://yannesposito.com/Scratch/fr/blog/2010-02-18-split-a-file-by-keyword/" rel="alternate"/>
|
|
||||||
<content type="html"><p>Assez bizarrement, je n&rsquo;ai trouvé aucun outil UNIX pour découper un fichier par mot clé.
|
|
||||||
Alors j&rsquo;en ai fait un en <code>awk</code>. Je le met ici principalement pour moi, mais ça peut toujours servir à quelqu&rsquo;un d&rsquo;autre.
|
|
||||||
Le code suivant découpe un fichier pour chacune de ses ligne contenant le mot <code>UTC</code>.</p>
|
|
||||||
|
|
||||||
<div><pre class="twilight">
|
|
||||||
<span class="Comment"><span class="Comment">#</span>!/usr/bin/env awk</span>
|
|
||||||
<span class="Entity">BEGIN</span>{i=0;}
|
|
||||||
<span class="StringRegexp"><span class="StringRegexp">/</span>UTC<span class="StringRegexp">/</span></span> {
|
|
||||||
i+=1;
|
|
||||||
FIC=<span class="SupportFunction">sprintf</span>(<span class="String"><span class="String">&quot;</span>fic.%03d<span class="String">&quot;</span></span>,i);
|
|
||||||
}
|
|
||||||
{</pre></div></content>
|
|
||||||
</entry>
|
|
||||||
<entry>
|
|
||||||
<id>tag:yannesposito.com,2010-02-16:/Scratch/fr/blog/2010-02-16-All-but-something-regexp--2-/</id>
|
|
||||||
<title type="html">Tout sauf quelquechose en expression régulière.</title>
|
|
||||||
<published>2010-02-16T08:33:21Z</published>
|
|
||||||
<updated>2010-02-16T08:33:21Z</updated>
|
|
||||||
<link href="http://yannesposito.com/Scratch/fr/blog/2010-02-16-All-but-something-regexp--2-/" rel="alternate"/>
|
|
||||||
<content type="html"><p>Dans mon <a href="previouspost">précédent article</a> j&rsquo;ai donné certaines astuces pour matcher &lsquo;tout sauf quelque chose&rsquo;. De la même manière, un truc pour matcher la chaine de caractère la plus petite possible.
|
|
||||||
Disons que vous voulez matcher la chaine de caractère entre &lsquo;a&rsquo; et &lsquo;b&rsquo;. Par exemple, vous voulez matcher&nbsp;:</p>
|
|
||||||
|
|
||||||
<pre class="twilight">
|
|
||||||
a.....<span class="Constant"><strong>a......b</strong></span>..b..a....<span class="Constant"><strong>a....b</strong></span>...
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<p>Voici les deux erreurs communes et une solution&nbsp;:</p>
|
|
||||||
|
|
||||||
<pre class="twilight">
|
|
||||||
/a.*b/
|
|
||||||
<span class="Constant"><strong>a.....a......b..b..a....a....b</strong></span>...
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<p>La première erreur vient de l&rsquo;utilisation du <em>terrible</em> </p></content>
|
|
||||||
</entry>
|
|
||||||
<entry>
|
|
||||||
<id>tag:yannesposito.com,2010-02-15:/Scratch/fr/blog/2010-02-15-All-but-something-regexp/</id>
|
|
||||||
<title type="html">Expression réguliè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"><p>Parfois vous ne pouvez simplement pas écrire&nbsp;:</p>
|
|
||||||
|
|
||||||
<div><pre class="twilight">
|
|
||||||
<span class="Keyword">if</span> str.<span class="Entity">match</span>(regexp) <span class="Keyword">and</span>
|
|
||||||
<span class="Keyword">not</span> str.<span class="Entity">match</span>(other_regexp)
|
|
||||||
do_something
|
|
||||||
</pre></div>
|
|
||||||
|
|
||||||
<p>et vous devez obtenir le même comportement avec seulement une expression régulière. Le problème c&rsquo;est que le complémentaire des régulier n&rsquo;est pas régulier. Celà peut s&rsquo;avérer impossible.</p>
|
|
||||||
|
|
||||||
<p>Cependant, pour certaines expressions ce peut être possible<sup><a href="#note1">&dagger;</a></sup>. Disons que vous souhaitez <em>matcher</em> toutes les lignes contenant le mot <code>bull</code>, mais que vous ne souhaitez pas matcher <code>bu...</code></p></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"><p>Voici comment faire pour ne plus utiliser les fontes Microsoft© sous Linux Ubuntu pour avoir de belles fontes adoucies (anti aliased) qui ne font pas mal aux yeux sous Firefox.</p>
|
|
||||||
|
|
||||||
<p>modifiez le fichier <code>/etc/fonts/local.conf</code> en y incluant le contenu suivant&nbsp;: </p>
|
|
||||||
|
|
||||||
<div>
|
|
||||||
<div class="code"><div class="file"><a href="/Scratch/fr/blog/2010-01-12-antialias-font-in-Firefox-under-Ubuntu/code/local.conf"> &#x27A5; local.conf </a></div><div class="withfile">
|
|
||||||
<pre class="twilight">
|
|
||||||
|
|
||||||
<span class="DoctypeXmlProcessing"><span class="DoctypeXmlProcessing">&lt;?</span><span class="DoctypeXmlProcessing">xml</span><span class="DoctypeXmlProcessing"> version</span>=<span class="DoctypeXmlProcessing"><span class="DoctypeXmlProcessing">&quot;</span>1.0</span></span></pre></div></div></div></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é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"><p>Je viens de trouver le moyen de changer son shell par défaut sous Mac OS X. Cette note est plus pour moi. Mais elle peut aussi servir à quelqu&rsquo;un d&rsquo;autre. Il suffit de lancer la commande&nbsp;: </p>
|
|
||||||
|
|
||||||
<div><pre class="twilight">
|
|
||||||
<span class="Keyword">&gt;</span> chsh
|
|
||||||
</pre></div>
|
|
||||||
</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">
|
|
||||||
<div class="intro">
|
|
||||||
|
|
||||||
|
|
||||||
<p>Même si je considère que <code>git</code> a beaucoup de points noirs, je pense qu&rsquo;il reste le meilleur DCVS à ce jour avec lequel travailler. C&rsquo;est pourquoi je commencerai par parler des qualité de bazaar qui manquent à git. Ensuite seulement je donnerai le seul avantage de git qui suffit à le rendre préférable à Bazaar.</p>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<h2 id="la-dcouverte-des-dcvs">La découverte des DCVS</h2>
|
|
||||||
|
|
||||||
<p>À savoir avant de débuter l&rsquo;article. Je suis, comme beaucoup, un ancien utilisateur de <em>subversion</em>. Je trouve subversion très bien, mais j&rsquo;ai été conquis par les capacités supplémentaires apportées par les systèmes de versions concurrentes <em>décentralisés</em>.</p>
|
|
||||||
|
|
||||||
<p>Il y a deux façon de percevoir les système...</p></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"><p>Il est vraiment incroyable que le filtrage d&rsquo;appel soit impossible avec un iPhone&nbsp;! Le <em>seul</em> intérêt que j&rsquo;y vois, c&rsquo;est une négociation avec les opérateurs pour interdire aux utilisateurs de passer à travers la publicité. C&rsquo;est tout simplement inacceptable.</p>
|
|
||||||
|
|
||||||
<p>Je suis un utilisateur λ de l&rsquo;iPhone. Le seul moyen de filtrer ses appels, de faire des blacklists ou autre c&rsquo;est de <em>jailbreaker</em> son iPhone. Et je n&rsquo;en ai aucune envie. Alors si comme moi, vous trouvez ça inacceptable, envoyez un mot à Apple&nbsp;: <a href="http://www.apple.com/feedback/iphone.html">http://www.apple.com/feedback/iphone.html</a></p>
|
|
||||||
</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"><h1 class="first" id="et-cest-parti-">Et c&rsquo;est parti&nbsp;!</h1>
|
|
||||||
|
|
||||||
<p>Voici une parmi de nombreuses autres façon d&rsquo;utiliser <a href="http://git-scm.org" title="Git">Git</a>. Cette méthode est nécessaire et suffisante pour travailler seul ou en collaboration sur un projet commun. Cependant, on peut faire beaucoup mieux avec <a href="http://git-scm.org" title="Git">Git</a> que ce <em>workflow</em> (en langage anglo-saxon).</p>
|
|
||||||
|
|
||||||
<h2 id="utilisation-basique">Utilisation basique</h2>
|
|
||||||
|
|
||||||
<p>La façon immédiate de travailler avec <a href="http://git-scm.org" title="Git">Git</a>&nbsp;:</p>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li>récupérer les modifications des autres <span class="black"><code>git pull</code></span></li>
|
|
||||||
<li>voir les détails de ces modifications <span class="black"><code>git log</code></span></li></ul></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">
|
|
||||||
<div class="intro">
|
|
||||||
|
|
||||||
|
|
||||||
<p>Voici un tutoriel <a href="http://git-scm.org">Git</a> détaillé pour ceux qui en connaissent très peu sur les systèmes de versions. Vous comprendrez l&rsquo;utilité de tels systèmes et surtout comment on se sert des systèmes de versions modernes, le tout en restant le plus pragmatique possible.</p>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="corps">
|
|
||||||
|
|
||||||
|
|
||||||
<h1 class="first" id="pour-commencer-la-conclusion">Pour commencer, la conclusion</h1>
|
|
||||||
|
|
||||||
<p>Voici la liste des commandes nécessaires et suffisantes pour utiliser <a href="http://git-scm.org" title="Git">Git</a>. Il y en a très peu. Il est normal de ne pas les comprendre tout de suite mais c&rsquo;est pour vous donner une idée. Malgré la longueur de l&rsquo;article, 95% de l&rsquo;utilisation de </p></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"><h1 class="first" id="pourquoi-git-est-cool-">Pourquoi Git est cool&nbsp;?</h1>
|
|
||||||
|
|
||||||
<p>Parce que grace à <a href="http://git-scm.org" title="Git">Git</a> vous pouvez travailler sur plusieurs partie du projet de façon complètement isolée les unes des autres. Ça c&rsquo;est la partie décentralisée de <a href="http://git-scm.org" title="Git">Git</a>.</p>
|
|
||||||
|
|
||||||
<p>Toutes les branches locales utilisent le même répertoire. Ainsi on peu changer de branche très aisément et rapidement. On peut aussi changer de branche alors que certains fichier sont en cours de modifications. On peut même pousser le vice jusqu&rsquo;à modifier un fichier, changer de branche, commiter une partie seulement des modifications de ce fichier dans la branche courante. Revenir dans l&rsquo;ancienne branche et commi...</p></content>
|
|
||||||
</entry>
|
|
||||||
</feed>
|
</feed>
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -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> Un diff plus pratique</a>
|
<a href="/Scratch/fr/blog/Password-Management/"><span class="nicer">«</span> Password Management</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class="previous_article">
|
|
||||||
<a href="/Scratch/fr/blog/Haskell-Mandelbrot/"><span class="nicer">«</span> 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 <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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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>
|
||||||
|
|
Loading…
Reference in a new issue