Ignore more files

This commit is contained in:
Yann Esposito (Yogsototh) 2010-10-05 17:24:15 +02:00
parent ad8260e5c3
commit fd2ed3ef51
34 changed files with 4 additions and 3731 deletions

4
.gitignore vendored
View file

@ -2,6 +2,10 @@
.DS_Store
output.diff
output/Scratch/map.yrf
output/Scratch/fr
output/Scratch/en
output/Scratch/assets
output/Scratch/sitemap.xml
tmp/
recupen.pl
recupfr.pl

File diff suppressed because one or more lines are too long

View file

@ -1,102 +0,0 @@
<?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="alternate" type="application/rss+xml" title="RSS" href="http://feeds.feedburner.com/yannespositocomen"/>
<link rel="alternate" lang="fr" xml:lang="fr" title="Contact" type="text/html" hreflang="fr" href="/Scratch/fr/about/contact/" />
<link rel="alternate" lang="en" xml:lang="en" title="Contact" type="text/html" hreflang="en" href="/Scratch/en/about/contact/" />
<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>
<title>Contact</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="entete">
<div id="choix">
<div id="choixrss">
<a id="rss" href="http://feeds.feedburner.com/yannespositocomen">
Subscribe
</a>
</div>
<div id="choixlang">
<a href="/Scratch/fr/about/contact/" onclick="setLanguage('fr')">en Français</a>
</div>
<div id="liens">
<ul><li><a href="/Scratch/en/">Homepage</a></li>
<li><a href="/Scratch/en/blog/">Blog</a></li>
<li><a href="/Scratch/en/softwares/">Softwares</a></li></ul>
</div>
</div>
</div>
<img src="/Scratch/img/presentation.png" alt="Presentation drawing"/>
<div id="titre">
<h1>
Contact
</h1>
</div>
<div class="flush"></div>
<div class="flush"></div>
<div id="afterheader">
<div class="corps">
<h1 class="first" id="how-to-contact-me">How to contact me</h1>
<p><img alt="Avatar" class="left" src="/Scratch/img/about/avatar.png" /></p>
<p><span style="font-size: 2em; line-height: 2em" /></p>
<p>follow me on <a href="http://twitter.com/yogsototh">twitter</a><br />
My bookmarks <a href="http://diigo.com/profile/yogsototh">diigo</a><br />
Open Source <a href="http://github.com/yogsototh">github</a><br />
<a href="http://stackoverflow.com/users/40569/yogsototh">stackoverflow</a><br />
</p>
<div class="flush"></div>
<div class="return"><a href="#entete" onclick="fastShowMenu()">&uarr;</a></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">
Modified: 10/05/2010
</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>
</body>
</html>

View file

@ -1,113 +0,0 @@
<?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="alternate" type="application/rss+xml" title="RSS" href="http://feeds.feedburner.com/yannespositocomen"/>
<link rel="alternate" lang="fr" xml:lang="fr" title="Autres sites" type="text/html" hreflang="fr" href="/Scratch/fr/about/old/" />
<link rel="alternate" lang="en" xml:lang="en" title="Other website" type="text/html" hreflang="en" href="/Scratch/en/about/old/" />
<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>
<title>Other website</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="entete">
<div id="choix">
<div id="choixrss">
<a id="rss" href="http://feeds.feedburner.com/yannespositocomen">
Subscribe
</a>
</div>
<div id="choixlang">
<a href="/Scratch/fr/about/old/" onclick="setLanguage('fr')">en Français</a>
</div>
<div id="liens">
<ul><li><a href="/Scratch/en/">Homepage</a></li>
<li><a href="/Scratch/en/blog/">Blog</a></li>
<li><a href="/Scratch/en/softwares/">Softwares</a></li></ul>
</div>
</div>
</div>
<img src="/Scratch/img/presentation.png" alt="Presentation drawing"/>
<div id="titre">
<h1>
Other website
</h1>
</div>
<div class="flush"></div>
<div class="flush"></div>
<div id="afterheader">
<div class="corps">
<div class="block left">
<h3>
<a href="http://yann.esposito.free.fr/recherche.php?css=blue&amp;lang=en"> Research
<span class="nicer">»</span>
</a>
</h3>
<p>
My research activities.
</p>
</div>
<div class="block left">
<h3>
<a href="http://yann.esposito.free.fr/"> Student website
<span class="nicer">»</span>
</a>
</h3>
<p>
My student website. &#x271E; 2007
</p>
</div>
<div class="flush"></div>
<div class="return"><a href="#entete" onclick="fastShowMenu()">&uarr;</a></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">
Modified: 10/05/2010
</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>
</body>
</html>

View file

@ -1,15 +0,0 @@
def gitmtime
filepath=@item.path.sub('/Scratch/','content/html/').sub(/\/$/,'')
ext=%{.#{@item[:extension]}}
filepath<<=ext
if not FileTest.exists?(filepath)
filepath.sub!(ext,%{/index#{ext}})
end
str=`git log -1 --format='%ci' -- #{filepath}`
if str.nil? or str.empty?
return Time.now
else
return DateTime.parse( str )
end
end

View file

@ -1,193 +0,0 @@
<?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" />
<meta name="keywords" content="nanoc, web, git">
<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="Utilisation de git pour calculer les mtimes" type="text/html" hreflang="fr" href="/Scratch/fr/blog/2010-09-02-Use-git-to-calculate-trusted-mtimes/" />
<link rel="alternate" lang="en" xml:lang="en" title="Use git to calculate trusted mtimes" type="text/html" hreflang="en" href="/Scratch/en/blog/2010-09-02-Use-git-to-calculate-trusted-mtimes/" />
<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>
<title>Use git to calculate trusted mtimes</title>
</head>
<body lang="en">
<script type="text/javascript">// <![CDATA[
document.write('<div id="blackpage"><img src="/Scratch/img/loading.gif" alt="loading..."/></div>');
// ]]>
</script>
<div id="content">
<div id="choix">
<div class="return"><a href="#entete">&darr; Menu &darr;</a></div>
<div id="choixlang">
<a href="/Scratch/fr/blog/2010-09-02-Use-git-to-calculate-trusted-mtimes/" onclick="setLanguage('fr')">en Français</a>
</div>
</div>
<img src="/Scratch/img/presentation.png" alt="Presentation drawing"/>
<div id="titre">
<h1>
Use git to calculate trusted mtimes
</h1>
</div>
<div class="flush"></div>
<div class="flush"></div>
<div id="afterheader">
<div class="corps">
<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> <span class="Entity">gitmtime</span>
filepath<span class="Keyword">=</span><span class="Variable"><span class="Variable">@</span>item</span>.<span class="Entity">path</span>.<span class="Entity">sub</span>(<span class="String"><span class="String">'</span>/Scratch/<span class="String">'</span></span>,<span class="String"><span class="String">'</span>content/html/<span class="String">'</span></span>).<span class="Entity">sub</span>(<span class="StringRegexp"><span class="StringRegexp">/</span></span><span class="StringRegexp"><span class="StringRegexpSpecial">\/</span>$</span><span class="StringRegexp"><span class="StringRegexp">/</span></span>,<span class="String"><span class="String">'</span><span class="String">'</span></span>)
ext<span class="Keyword">=</span><span class="String"><span class="String">%{</span>.<span class="StringEmbeddedSource"><span class="StringEmbeddedSource">#{</span><span class="StringVariable"><span class="StringVariable">@</span>item</span><span class="StringEmbeddedSource">[</span><span class="StringConstant"><span class="StringConstant">:</span>extension</span><span class="StringEmbeddedSource">]</span><span class="StringEmbeddedSource">}</span></span><span class="String">}</span></span>
filepath<span class="Keyword">&lt;&lt;=</span>ext
<span class="Keyword">if</span> <span class="Keyword">not</span> <span class="Support">FileTest</span>.<span class="Entity">exists?</span>(filepath)
filepath.<span class="Entity">sub!</span>(ext,<span class="String"><span class="String">%{</span>/index<span class="StringEmbeddedSource"><span class="StringEmbeddedSource">#{</span>ext<span class="StringEmbeddedSource">}</span></span><span class="String">}</span></span>)
<span class="Keyword">end</span>
str<span class="Keyword">=</span><span class="String"><span class="String">`</span>git log -1 --format='%ci' -- <span class="StringEmbeddedSource"><span class="StringEmbeddedSource">#{</span>filepath<span class="StringEmbeddedSource">}</span></span><span class="String">`</span></span>
<span class="Keyword">if</span> str.<span class="Entity">nil?</span> <span class="Keyword">or</span> str.<span class="Entity">empty?</span>
<span class="Keyword">return</span> <span class="Support">Time</span>.<span class="Entity">now</span>
<span class="Keyword">else</span>
<span class="Keyword">return</span> <span class="Support">DateTime</span>.<span class="Entity">parse</span>( str )
<span class="Keyword">end</span>
<span class="Keyword">end</span>
</pre>
</div></div>
<p>Of course I know it is really slow and absolutely not optimized.
But it works as expected.
Now the date you see at the bottom is exactly the date I modified the <em>content</em> of the page.</p>
<p>Thanks to Eric Sunshine to provide me some hints at cleaning my code.</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>
Vous devez activer javascript pour commenter.
</noscript>
<script type="text/javascript">
var idcomments_acct = 'a307f0044511ff1b5cfca573fc0a52e7';
var idcomments_post_id = '/Scratch/en/blog/2010-09-02-Use-git-to-calculate-trusted-mtimes/';
var idcomments_post_url = 'http://yannesposito.com/Scratch/en/blog/2010-09-02-Use-git-to-calculate-trusted-mtimes/';
</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/">Homepage</a></li>
<li><a href="/Scratch/en/blog/">Blog</a></li>
<li><a href="/Scratch/en/softwares/">Softwares</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/2010-09-02-base64-and-sha1-on-iPhone/"><span class="nicer">«</span>&nbsp;base64 and sha1 on iPhone</a>
</div>
<div class="previous_article">
<a href="/Scratch/en/blog/2010-09-02-Use-git-to-calculate-trusted-mtimes/"><span class="nicer">«</span>&nbsp;Use git to calculate trusted mtimes</a>
</div>
<div class="previous_article">
<a href="/Scratch/en/blog/2010-09-02-base64-and-sha1-on-iPhone/"><span class="nicer">«</span>&nbsp;base64 and sha1 on iPhone</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/02/2010
Modified: 10/05/2010
</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>
</body>
</html>

View file

@ -1,43 +0,0 @@
- (unsigned char *)sha1:(NSString *)baseString result:(unsigned char *)result {
char *c_baseString=(char *)[baseString UTF8String];
CC_SHA1(c_baseString, strlen(c_baseString), result);
return result;
}
- (NSString *)base64:(unsigned char *)result {
NSString *password=[[NSString alloc] init];
static const unsigned char cb64[65]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
for (int i=0; i<CC_SHA1_DIGEST_LENGTH; i+=3) {
password=[password stringByAppendingFormat:@"%c%c%c%c",
cb64[(result[i] &0xFC)>>2],
cb64[((result[i] & 0x03) << 4)
| ((result[i + 1] & 0xF0) >> 4)],
cb64[((result[i + 1] & 0x0F) << 2)
| ((result[i + 2] & 0xC0) >> 6)],
cb64[result[i+2]&0x3F]
];
}
return password;
}
- (NSString *)hexadecimalRepresentation:(unsigned char *)result {
NSString *password=[[NSString alloc] init];
for (int i=0; i<CC_SHA1_DIGEST_LENGTH; i++) {
password=[password stringByAppendingFormat:@"%02x", result[i]];
}
return password;
}
- (NSString *)b64_sha1:(NSString *)inputString {
unsigned char result[CC_SHA1_DIGEST_LENGTH+1];
[self sha1:inputString result:result];
return [self base64:result];
}
- (NSString *)hex_sha1:(NSString *)inputString {
unsigned char result[CC_SHA1_DIGEST_LENGTH+1];
[self sha1:inputString result:result];
return [self hexadecimalRepresentation:result];
}

View file

@ -1,221 +0,0 @@
<?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" />
<meta name="keywords" content="iPhone, Objective-C, Programming">
<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="base64 et sha1 sur iPhone" type="text/html" hreflang="fr" href="/Scratch/fr/blog/2010-09-02-base64-and-sha1-on-iPhone/" />
<link rel="alternate" lang="en" xml:lang="en" title="base64 and sha1 on iPhone" type="text/html" hreflang="en" href="/Scratch/en/blog/2010-09-02-base64-and-sha1-on-iPhone/" />
<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>
<title>base64 and sha1 on iPhone</title>
</head>
<body lang="en">
<script type="text/javascript">// <![CDATA[
document.write('<div id="blackpage"><img src="/Scratch/img/loading.gif" alt="loading..."/></div>');
// ]]>
</script>
<div id="content">
<div id="choix">
<div class="return"><a href="#entete">&darr; Menu &darr;</a></div>
<div id="choixlang">
<a href="/Scratch/fr/blog/2010-09-02-base64-and-sha1-on-iPhone/" onclick="setLanguage('fr')">en Français</a>
</div>
</div>
<img src="/Scratch/img/presentation.png" alt="Presentation drawing"/>
<div id="titre">
<h1>
base64 and sha1 on iPhone
</h1>
</div>
<div class="flush"></div>
<div class="flush"></div>
<div id="afterheader">
<div class="corps">
<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>];
...
<span class="Support">NSString</span> *hex_hash = [<span class="Variable">self</span> <span class="SupportFunction">hex_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>
<p>The <code>base64</code> algorithm must be programmed by hand on iPhone!</p>
<div class="code"><div class="file"><a href="/Scratch/en/blog/2010-09-02-base64-and-sha1-on-iPhone/code/iphone_base64_sha1.c"> &#x27A5; iphone_base64_sha1.c </a></div><div class="withfile">
<pre class="twilight">
- (<span class="Storage">unsigned</span> <span class="Storage">char</span> *)sha1:(NSString *)baseString result:(<span class="Storage">unsigned</span> <span class="Storage">char</span> *)result {
<span class="Storage">char</span> *c_baseString=(<span class="Storage">char</span> *)[baseString UTF8String];
CC_SHA1(c_baseString, <span class="SupportFunction">strlen</span>(c_baseString), result);
<span class="Keyword">return</span> result;
}
- (NSString *)base64:(<span class="Storage">unsigned</span> <span class="Storage">char</span> *)result {
NSString *password=[[NSString alloc] init];
<span class="Storage">static</span> <span class="Storage">const</span> <span class="Storage">unsigned</span> <span class="Storage">char</span> cb64[<span class="Constant">65</span>]=<span class="String"><span class="String">&quot;</span>ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/<span class="String">&quot;</span></span>;
<span class="Keyword">for</span> (<span class="Storage">int</span> i=<span class="Constant">0</span>; i&lt;CC_SHA1_DIGEST_LENGTH; i+=<span class="Constant">3</span>) {
password=[password stringByAppendingFormat:@<span class="String"><span class="String">&quot;</span><span class="StringConstant">%c</span><span class="StringConstant">%c</span><span class="StringConstant">%c</span><span class="StringConstant">%c</span><span class="String">&quot;</span></span>,
cb64[(result[i] &amp;<span class="Constant">0xFC</span>)&gt;&gt;<span class="Constant">2</span>],
cb64[((result[i] &amp; <span class="Constant">0x03</span>) &lt;&lt; <span class="Constant">4</span>)
| ((result[i + <span class="Constant">1</span>] &amp; <span class="Constant">0xF0</span>) &gt;&gt; <span class="Constant">4</span>)],
cb64[((result[i + <span class="Constant">1</span>] &amp; <span class="Constant">0x0F</span>) &lt;&lt; <span class="Constant">2</span>)
| ((result[i + <span class="Constant">2</span>] &amp; <span class="Constant">0xC0</span>) &gt;&gt; <span class="Constant">6</span>)],
cb64[result[i+<span class="Constant">2</span>]&amp;<span class="Constant">0x3F</span>]
];
}
<span class="Keyword">return</span> password;
}
- (NSString *)hexadecimalRepresentation:(<span class="Storage">unsigned</span> <span class="Storage">char</span> *)result {
NSString *password=[[NSString alloc] init];
<span class="Keyword">for</span> (<span class="Storage">int</span> i=<span class="Constant">0</span>; i&lt;CC_SHA1_DIGEST_LENGTH; i++) {
password=[password stringByAppendingFormat:@<span class="String"><span class="String">&quot;</span><span class="StringConstant">%02x</span><span class="String">&quot;</span></span>, result[i]];
}
<span class="Keyword">return</span> password;
}
- (NSString *)b64_sha1:(NSString *)inputString {
<span class="Storage">unsigned</span> <span class="Storage">char</span> result[CC_SHA1_DIGEST_LENGTH+<span class="Constant">1</span>];
[self sha1:inputString result:result];
<span class="Keyword">return</span> [self base64:result];
}
- (NSString *)hex_sha1:(NSString *)inputString {
<span class="Storage">unsigned</span> <span class="Storage">char</span> result[CC_SHA1_DIGEST_LENGTH+<span class="Constant">1</span>];
[self sha1:inputString result:result];
<span class="Keyword">return</span> [self hexadecimalRepresentation:result];
}
</pre>
</div></div>
</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>
Vous devez activer javascript pour commenter.
</noscript>
<script type="text/javascript">
var idcomments_acct = 'a307f0044511ff1b5cfca573fc0a52e7';
var idcomments_post_id = '/Scratch/en/blog/2010-09-02-base64-and-sha1-on-iPhone/';
var idcomments_post_url = 'http://yannesposito.com/Scratch/en/blog/2010-09-02-base64-and-sha1-on-iPhone/';
</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/">Homepage</a></li>
<li><a href="/Scratch/en/blog/">Blog</a></li>
<li><a href="/Scratch/en/softwares/">Softwares</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/2010-09-02-Use-git-to-calculate-trusted-mtimes/"><span class="nicer">«</span>&nbsp;Use git to calculate trusted mtimes</a>
</div>
<div class="previous_article">
<a href="/Scratch/en/blog/2010-09-02-base64-and-sha1-on-iPhone/"><span class="nicer">«</span>&nbsp;base64 and sha1 on iPhone</a>
</div>
</div>
<div id="next_articles">
next entries
<div class="next_article">
<a href="/Scratch/en/blog/2010-09-02-Use-git-to-calculate-trusted-mtimes/">Use git to calculate trusted mtimes&nbsp;<span class="nicer">»</span></a>
</div>
</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/02/2010
Modified: 10/05/2010
</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>
</body>
</html>

View file

@ -1,57 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<id>http://yannesposito.com/</id>
<title>Yogsototh's last blogs entries</title>
<updated>2010-09-02T13:54:10Z</updated>
<link rel="alternate" href="http://yannesposito.com/"/>
<link rel="self" href="http://feeds.feedburner.com/yannespositocomen"/>
<author>
<name>Yann Esposito</name>
<uri>http://yannesposito.com</uri>
</author>
<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>
<author>
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link rel="alternate" href="http://yannesposito.com/Scratch/en/blog/2010-09-02-Use-git-to-calculate-trusted-mtimes/"/>
<content type="html">&lt;p&gt;You can remark at the bottom of each page I provide a last modification date.
This label was first calculated using the &lt;code&gt;mtime&lt;/code&gt; of the file on the file system.
But many times I modify this date just to force some recompilation.
Therefore the date wasn&amp;rsquo;t a date of &lt;em&gt;real&lt;/em&gt; modification.&lt;/p&gt;
&lt;p&gt;I use &lt;a href="http://git-scm.org"&gt;git&lt;/a&gt; to version my website.
And fortunately I can know the last date of &lt;em&gt;real&lt;/em&gt; change of a file.
This is how I do this with &lt;a href="http://nanoc.stoneship.org"&gt;nanoc&lt;/a&gt;:&lt;/p&gt;
&lt;div class="code"&gt;&lt;div class="file"&gt;&lt;a href="/Scratch/en/blog/2010-09-02-Use-git-to-calculate-trusted-mtimes/code/gitmtime.rb"&gt; &amp;#x27A5; gitmtime.rb &lt;/a&gt;&lt;/div&gt;&lt;div class="withfile"&gt;
&lt;pre class="twilight"&gt;
&lt;span class="Keyword"&gt;def&lt;/span&gt; &lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2010-09-02:/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>
<author>
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link rel="alternate" href="http://yannesposito.com/Scratch/en/blog/2010-09-02-base64-and-sha1-on-iPhone/"/>
<content type="html">&lt;p&gt;Lets be straight:
here are two functions to add to your code to have &lt;code&gt;base64&lt;/code&gt; and &lt;code&gt;hexadecimal&lt;/code&gt; version of the &lt;code&gt;sha1&lt;/code&gt; hash of an NSString.&lt;/p&gt;
&lt;p&gt;To use it, simply copy the code in your class and use as this:&lt;/p&gt;
&lt;pre class="twilight"&gt;
&lt;span class="CCCPreprocessorLine"&gt;#&lt;span class="CCCPreprocessorDirective"&gt;import&lt;/span&gt; &lt;span class="String"&gt;&lt;span class="String"&gt;&amp;lt;&lt;/span&gt;CommonCrypto/CommonDigest.h&lt;span class="String"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
...
&lt;span class="Support"&gt;NSString&lt;/span&gt; *b64_hash = [&lt;span class="Variable"&gt;self&lt;/span&gt; &lt;span class="SupportFunction"&gt;b64_sha1&lt;span class="SupportFunction"&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span class="String"&gt;&lt;span class="String"&gt;@&amp;quot;&lt;/span&gt;some NSString to be sha1'ed&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;];
...
&lt;/pre&gt;</content>
</entry>
</feed>

View file

@ -1,242 +0,0 @@
<?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="alternate" type="application/rss+xml" title="RSS" href="http://feeds.feedburner.com/yannespositocomen"/>
<link rel="alternate" lang="fr" xml:lang="fr" title="Blog" type="text/html" hreflang="fr" href="/Scratch/fr/blog/" />
<link rel="alternate" lang="en" xml:lang="en" title="Blog" type="text/html" hreflang="en" href="/Scratch/en/blog/" />
<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>
<title>Blog</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="entete">
<div id="choix">
<div id="choixrss">
<a id="rss" href="http://feeds.feedburner.com/yannespositocomen">
Subscribe
</a>
</div>
<div id="choixlang">
<a href="/Scratch/fr/blog/" onclick="setLanguage('fr')">en Français</a>
</div>
<div id="liens">
<ul><li><a href="/Scratch/en/">Homepage</a></li>
<li><span class="active" title="You're here.">Blog</span></li>
<li><a href="/Scratch/en/softwares/">Softwares</a></li></ul>
</div>
</div>
</div>
<img src="/Scratch/img/presentation.png" alt="Presentation drawing"/>
<div id="titre">
<h1>
Blog
</h1>
</div>
<div class="flush"></div>
<div class="flush"></div>
<div id="afterheader">
<div class="corps">
<ul>
<li><a href="#last-20-articles">Last 20 articles <span class="nicer">&dArr;</span></a> </li>
<li><a href="#tagcloud">Tag Cloud <span class="nicer">&dArr;</span></a></li>
<li><a href="#archives">Archives <span class="nicer">&dArr;</span></a></li>
<li><a href="#two-words-about-the-content">Two words about the content <span class="nicer">&dArr;</span></a></li>
</ul>
</div>
<div class="corps">
<h2 class="first" id="last-20-articles">Last 20 articles</h2>
<ul style="list-style-type: none; margin: 0;">
<li style="line-height: 1em; margin: 0;">
<span class="date">
<span class="day">2</span>
<span class="month">Sep</span>
<span class="year">2010</span>
</span>
<a href="/Scratch/en/blog/2010-09-02-Use-git-to-calculate-trusted-mtimes/"><span class="sc">Use git to calculate trusted mtimes</span></a>
</li>
<li style="line-height: 1em; margin: 0;">
<span class="date">
<span class="day">1</span>
<span class="month">Sep</span>
<span class="year">2010</span>
</span>
<a href="/Scratch/en/blog/2010-09-02-base64-and-sha1-on-iPhone/"><span class="sc">base64 and sha1 on iPhone</span></a>
</li>
</ul>
<p><a href="#archives">Archives <span class="nicer">&dArr;</span></a></p>
</div>
<div class="corps">
<div>
<script type="text/javascript">
$(document).ready( function(){$('.list').hide();$('#tagcloud a').removeAttr("href")} );
function tagSelected(id) {
$('.list').hide();
$('#'+id).fadeIn();
$('.tag.selected').removeClass('selected');
$('#tag_'+id).addClass('selected');
}
</script><div id="tagcloud"><a class="tag" href="#git" id="tag_git" onclick="tagSelected('git')" style="font-size: 1.0em;">git</a> <a class="tag" href="#iPhone" id="tag_iPhone" onclick="tagSelected('iPhone')" style="font-size: 1.0em;">iPhone</a> <a class="tag" href="#nanoc" id="tag_nanoc" onclick="tagSelected('nanoc')" style="font-size: 1.0em;">nanoc</a> <a class="tag" href="#Objective_C" id="tag_Objective_C" onclick="tagSelected('Objective_C')" style="font-size: 1.0em;">Objective-C</a> <a class="tag" href="#Programming" id="tag_Programming" onclick="tagSelected('Programming')" style="font-size: 1.0em;">Programming</a> <a class="tag" href="#web" id="tag_web" onclick="tagSelected('web')" style="font-size: 1.0em;">web</a> </div><div id="hiddenDivs"><div class="list" id="git"><h4>git <a href="#tagcloud">&uarr;</a></h4><ul style="list-style-type: none; margin: 0;">
<li style="line-height: 3em; margin: 0;">
<span class="date">
<span class="day">2</span>
<span class="month">Sep</span>
<span class="year">2010</span>
</span>
<a href="/Scratch/en/blog/2010-09-02-Use-git-to-calculate-trusted-mtimes/">Use git to calculate trusted mtimes</a>
</li>
</ul></div><div class="list" id="iPhone"><h4>iPhone <a href="#tagcloud">&uarr;</a></h4><ul style="list-style-type: none; margin: 0;">
<li style="line-height: 3em; margin: 0;">
<span class="date">
<span class="day">1</span>
<span class="month">Sep</span>
<span class="year">2010</span>
</span>
<a href="/Scratch/en/blog/2010-09-02-base64-and-sha1-on-iPhone/">base64 and sha1 on iPhone</a>
</li>
</ul></div><div class="list" id="nanoc"><h4>nanoc <a href="#tagcloud">&uarr;</a></h4><ul style="list-style-type: none; margin: 0;">
<li style="line-height: 3em; margin: 0;">
<span class="date">
<span class="day">2</span>
<span class="month">Sep</span>
<span class="year">2010</span>
</span>
<a href="/Scratch/en/blog/2010-09-02-Use-git-to-calculate-trusted-mtimes/">Use git to calculate trusted mtimes</a>
</li>
</ul></div><div class="list" id="Objective_C"><h4>Objective-C <a href="#tagcloud">&uarr;</a></h4><ul style="list-style-type: none; margin: 0;">
<li style="line-height: 3em; margin: 0;">
<span class="date">
<span class="day">1</span>
<span class="month">Sep</span>
<span class="year">2010</span>
</span>
<a href="/Scratch/en/blog/2010-09-02-base64-and-sha1-on-iPhone/">base64 and sha1 on iPhone</a>
</li>
</ul></div><div class="list" id="Programming"><h4>Programming <a href="#tagcloud">&uarr;</a></h4><ul style="list-style-type: none; margin: 0;">
<li style="line-height: 3em; margin: 0;">
<span class="date">
<span class="day">1</span>
<span class="month">Sep</span>
<span class="year">2010</span>
</span>
<a href="/Scratch/en/blog/2010-09-02-base64-and-sha1-on-iPhone/">base64 and sha1 on iPhone</a>
</li>
</ul></div><div class="list" id="web"><h4>web <a href="#tagcloud">&uarr;</a></h4><ul style="list-style-type: none; margin: 0;">
<li style="line-height: 3em; margin: 0;">
<span class="date">
<span class="day">2</span>
<span class="month">Sep</span>
<span class="year">2010</span>
</span>
<a href="/Scratch/en/blog/2010-09-02-Use-git-to-calculate-trusted-mtimes/">Use git to calculate trusted mtimes</a>
</li>
</ul></div></div>
</div>
</div>
<h2 id="archives">Archives</h2>
<div class="archive" id="sousliens"><h4 onclick="$('#archives_2010').slideToggle()" style="cursor: pointer;">[2010]</h4><ul id="archives_2010"><li><span class="date">
<span class="day">2</span>
<span class="month">Sep</span>
<span class="year">2010</span>
</span> <a href="/Scratch/en/blog/2010-09-02-Use-git-to-calculate-trusted-mtimes/">Use git to calculate trusted mtimes</a></li><li><span class="date">
<span class="day">1</span>
<span class="month">Sep</span>
<span class="year">2010</span>
</span> <a href="/Scratch/en/blog/2010-09-02-base64-and-sha1-on-iPhone/">base64 and sha1 on iPhone</a></li></ul><script type="text/javascript">$('#archives_2010').hide()</script></div>
</div>
<div class="corps">
<h2 class="first" id="two-words-about-the-content">Two words about the content</h2>
<p>Here you&rsquo;ll can find mostly technical articles.
Some are just reminder of technical tips.
But some are long and technically detailled articles.</p>
<hr />
<p>I do my best to traduce each page in french and in english.
It not always easy. English is not my natural language.
I make many errors, orthographic, grammatical, typographical&hellip;</p>
<p><strong> Thanks not to judge me based on these errors! And don&rsquo;t forget content is more important than presentation! </strong></p>
<p>The first impression I&rsquo;ll let you if we meet in real life should be different from the one I let you based on my website.</p>
<p>I wish you to find something useful or interesting on this website.</p>
<div class="return"><a href="#entete" onclick="fastShowMenu()">&uarr;</a></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">
Modified: 10/05/2010
</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>
</body>
</html>

View file

@ -1,67 +0,0 @@
<?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" />
<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>
<title>Page not found</title>
</head>
<body>
<div id="content">
<a href="/">
<img src="/Scratch/img/presentation.png" alt="Presentation drawing"/>
</a>
<h1>
Page not found
</h1>
<div class="flush"></div>
<div id="afterheader">
<div class="corps">
<p>The page you&rsquo;re looking at doesn&rsquo;t exists on the server.
If you have followed an internal link, you can tell me by mail and I&rsquo;ll fix it as soon as possible.</p>
</div>
<div class="corps">
<p>La page que vous recherchez n&rsquo;est pas présente sur le site.
Si vous avez suivi un lien vous pouvez me prévenir par mail et je réparerai ça dès que possible.</p>
</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">
Modified: 10/05/2010
</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>
</body>
</html>

View file

@ -1,174 +0,0 @@
<?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="alternate" type="application/rss+xml" title="RSS" href="http://feeds.feedburner.com/yannespositocomen"/>
<link rel="alternate" lang="fr" xml:lang="fr" title="Accueil" type="text/html" hreflang="fr" href="/Scratch/fr/" />
<link rel="alternate" lang="en" xml:lang="en" title="Homepage" type="text/html" hreflang="en" href="/Scratch/en/" />
<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>
<title>Homepage</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="entete">
<div id="choix">
<div id="choixrss">
<a id="rss" href="http://feeds.feedburner.com/yannespositocomen">
Subscribe
</a>
</div>
<div id="choixlang">
<a href="/Scratch/fr/" onclick="setLanguage('fr')">en Français</a>
</div>
<div id="liens">
<ul><li><span class="active" title="You're here.">Homepage</span></li>
<li><a href="/Scratch/en/blog/">Blog</a></li>
<li><a href="/Scratch/en/softwares/">Softwares</a></li></ul>
</div>
</div>
</div>
<img src="/Scratch/img/presentation.png" alt="Presentation drawing"/>
<div id="titre">
<h1>
Homepage
</h1>
</div>
<div class="flush"></div>
<div class="flush"></div>
<div id="afterheader">
<div class="corps">
<p>Welcome on my personnal website.</p>
<p>Here are the begining<sup><a href="#footnote1">&dagger;</a></sup> of my 5 last blog posts.</p>
<p> You can also search the entries with <a href="#tagcloud">tag cloud</a></p>
You can subscribe to my RSS feed. You'll never miss a post. <a href="/Scratch/en/rss">Click here</a> if you don't know what RSS feeds are.
<hr/>
<p class="small"><span id="footnote1">&dagger;</span> approximatively the 800 first characters.</p>
</div>
<h1>
<span class="date">
<span class="day">2</span>
<span class="month">Sep</span>
<span class="year">2010</span>
</span>
<a href="/Scratch/en/blog/2010-09-02-Use-git-to-calculate-trusted-mtimes/">Use git to calculate trusted mtimes <span class="nicer">»</span></a>
</h1>
<div class="corps">
<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>
<p>
<a href="/Scratch/en/blog/2010-09-02-Use-git-to-calculate-trusted-mtimes/">Read more <span class="nicer">»</span></a>
</p>
</div>
<h1>
<span class="date">
<span class="day">1</span>
<span class="month">Sep</span>
<span class="year">2010</span>
</span>
<a href="/Scratch/en/blog/2010-09-02-base64-and-sha1-on-iPhone/">base64 and sha1 on iPhone <span class="nicer">»</span></a>
</h1>
<div class="corps">
<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>
<p>
<a href="/Scratch/en/blog/2010-09-02-base64-and-sha1-on-iPhone/">Read more <span class="nicer">»</span></a>
</p>
</div>
<div class="corps">
<h2 class="first">tag cloud (2 or more posts only)</h2>
<script type="text/javascript">
$(document).ready( function(){$('.list').hide();$('#tagcloud a').removeAttr("href")} );
function tagSelected(id) {
$('.list').hide();
$('#'+id).fadeIn();
$('.tag.selected').removeClass('selected');
$('#tag_'+id).addClass('selected');
}
</script><div id="tagcloud"></div><div id="hiddenDivs" ></div>
</div>
</div>
<div class="corps">
This left bottom button get you on the top of page and open the menu.
<div class="return"><a href="#entete" onclick="fastShowMenu()">&uarr;</a></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">
Modified: 10/05/2010
</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>
</body>
</html>

View file

@ -1,124 +0,0 @@
<?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="alternate" type="application/rss+xml" title="RSS" href="http://feeds.feedburner.com/yannespositocomen"/>
<link rel="alternate" lang="fr" xml:lang="fr" title="Softwares" type="text/html" hreflang="fr" href="/Scratch/fr/softwares/" />
<link rel="alternate" lang="en" xml:lang="en" title="Softwares" type="text/html" hreflang="en" href="/Scratch/en/softwares/" />
<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>
<title>Softwares</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="entete">
<div id="choix">
<div id="choixrss">
<a id="rss" href="http://feeds.feedburner.com/yannespositocomen">
Subscribe
</a>
</div>
<div id="choixlang">
<a href="/Scratch/fr/softwares/" onclick="setLanguage('fr')">en Français</a>
</div>
<div id="liens">
<ul><li><a href="/Scratch/en/">Homepage</a></li>
<li><a href="/Scratch/en/blog/">Blog</a></li>
<li><span class="active" title="You're here.">Softwares</span></li></ul>
</div>
</div>
</div>
<img src="/Scratch/img/presentation.png" alt="Presentation drawing"/>
<div id="titre">
<h1>
Softwares
</h1>
</div>
<div class="flush"></div>
<div class="flush"></div>
<div id="afterheader">
<div class="corps">
<div class="block left">
<h3>
<a href="/Scratch/en/softwares/ypassword"> YPassword
<span class="nicer">»</span>
</a>
</h3>
<p>
YPassword is a password manager that make your web life more secure
</p>
</div>
<div class="block left">
<h3>
<a href="/Scratch/en/softwares/yaquabubbles"> YAquaBubbles
<span class="nicer">»</span>
</a>
</h3>
<p>
Nice underwater floating bubbles
</p>
</div>
<div class="block right">
<h3>
<a href="/Scratch/en/softwares/yclock"> YClock
<span class="nicer">»</span>
</a>
</h3>
<p>
Biohazard logo inspired clock
</p>
</div>
<div class="flush"></div>
<div class="return"><a href="#entete" onclick="fastShowMenu()">&uarr;</a></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">
Modified: 10/05/2010
</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>
</body>
</html>

View file

@ -1,97 +0,0 @@
<?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="alternate" type="application/rss+xml" title="RSS" href="http://feeds.feedburner.com/yannespositocomen"/>
<link rel="alternate" lang="fr" xml:lang="fr" title="bubble in the ocean" type="text/html" hreflang="fr" href="/Scratch/fr/softwares/yaquabubbles/" />
<link rel="alternate" lang="en" xml:lang="en" title="bubble in the ocean" type="text/html" hreflang="en" href="/Scratch/en/softwares/yaquabubbles/" />
<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>
<title>bubble in the ocean</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="entete">
<div id="choix">
<div id="choixrss">
<a id="rss" href="http://feeds.feedburner.com/yannespositocomen">
Subscribe
</a>
</div>
<div id="choixlang">
<a href="/Scratch/fr/softwares/yaquabubbles/" onclick="setLanguage('fr')">en Français</a>
</div>
<div id="liens">
<ul><li><a href="/Scratch/en/">Homepage</a></li>
<li><a href="/Scratch/en/blog/">Blog</a></li>
<li><a href="/Scratch/en/softwares/">Softwares</a></li></ul>
</div>
</div>
</div>
<img src="/Scratch/img/presentation.png" alt="Presentation drawing"/>
<div id="titre">
<h1>
bubble in the ocean
</h1>
</div>
<div class="flush"></div>
<div class="flush"></div>
<div id="afterheader">
<div class="corps">
<p><a href="/Scratch/files/YAquaBubbles.dmg"> <img alt="Screenshot" src="/Scratch/img/softwares/yaquabubbles/screenshot1.png" title="screenshot" /> </a></p>
<p>YAquaBubbles is a QuartzComposer Screensaver.
It was one of my first try but the result was nice.</p>
<p><a href="/Scratch/files/YAquaBubbles.dmg"><span class="nicer">&#10149;</span> YAquaBubbles.dmg</a></p>
<div class="return"><a href="#entete" onclick="fastShowMenu()">&uarr;</a></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">
Modified: 10/05/2010
</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>
</body>
</html>

View file

@ -1,98 +0,0 @@
<?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="alternate" type="application/rss+xml" title="RSS" href="http://feeds.feedburner.com/yannespositocomen"/>
<link rel="alternate" lang="fr" xml:lang="fr" title="YClock" type="text/html" hreflang="fr" href="/Scratch/fr/softwares/yclock/" />
<link rel="alternate" lang="en" xml:lang="en" title="YClock" type="text/html" hreflang="en" href="/Scratch/en/softwares/yclock/" />
<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>
<title>YClock</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="entete">
<div id="choix">
<div id="choixrss">
<a id="rss" href="http://feeds.feedburner.com/yannespositocomen">
Subscribe
</a>
</div>
<div id="choixlang">
<a href="/Scratch/fr/softwares/yclock/" onclick="setLanguage('fr')">en Français</a>
</div>
<div id="liens">
<ul><li><a href="/Scratch/en/">Homepage</a></li>
<li><a href="/Scratch/en/blog/">Blog</a></li>
<li><a href="/Scratch/en/softwares/">Softwares</a></li></ul>
</div>
</div>
</div>
<img src="/Scratch/img/presentation.png" alt="Presentation drawing"/>
<div id="titre">
<h1>
YClock
</h1>
</div>
<div class="flush"></div>
<div class="flush"></div>
<div id="afterheader">
<div class="corps">
<p><a href="/Scratch/files/YClock.dmg"> <img alt="Screenshot" src="/Scratch/img/softwares/yclock/screenshot1.png" title="screenshot" /> </a></p>
<p>YClock is a nice clock screensaver.
It has three themes: white, black and red.
It is based on a QuartzComposition and with some little Objective-C code to handle gently the frame per second.</p>
<p><a href="/Scratch/files/YClock.dmg"><span class="nicer">&#10149;</span> YClock.dmg</a></p>
<div class="return"><a href="#entete" onclick="fastShowMenu()">&uarr;</a></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">
Modified: 10/05/2010
</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>
</body>
</html>

View file

@ -1,106 +0,0 @@
<?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="alternate" type="application/rss+xml" title="RSS" href="http://feeds.feedburner.com/yannespositocomen"/>
<link rel="alternate" lang="fr" xml:lang="fr" title="YPassword" type="text/html" hreflang="fr" href="/Scratch/fr/softwares/ypassword/" />
<link rel="alternate" lang="en" xml:lang="en" title="YPassword" type="text/html" hreflang="en" href="/Scratch/en/softwares/ypassword/" />
<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>
<title>YPassword</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="entete">
<div id="choix">
<div id="choixrss">
<a id="rss" href="http://feeds.feedburner.com/yannespositocomen">
Subscribe
</a>
</div>
<div id="choixlang">
<a href="/Scratch/fr/softwares/ypassword/" onclick="setLanguage('fr')">en Français</a>
</div>
<div id="liens">
<ul><li><a href="/Scratch/en/">Homepage</a></li>
<li><a href="/Scratch/en/blog/">Blog</a></li>
<li><a href="/Scratch/en/softwares/">Softwares</a></li></ul>
</div>
</div>
</div>
<img src="/Scratch/img/presentation.png" alt="Presentation drawing"/>
<div id="titre">
<h1>
YPassword
</h1>
</div>
<div class="flush"></div>
<div class="flush"></div>
<div id="afterheader">
<div class="corps">
<p><em>Easy</em>, <em>Secure</em> and <em>Portable</em> way to manage your web passwords.</p>
<p>Remember only <em>one</em> strong password. And the rest follow.
See my <a href="/Scratch/en/blog/ypassword.html">blog entry</a> for the details.</p>
<p>Here you can find:</p>
<ul>
<li>A <a href="/Scratch/files/YPassword-1.6.zip">Dashboard Widget</a>,</li>
<li>An <a href="/Scratch/files/forcePaste.app.zip">Applescript</a> to simulate copy/paste in protected fields,</li>
<li>An alpha <a href="/Scratch/en/softwares/ypassword/web/">Web Application</a> made with <a href="http://cappuccino.org">Cappuccino</a>,</li>
<li>An alpha <a href="/Scratch/en/softwares/ypassword/iphoneweb/">Web Application</a> for iPhone,</li>
<li>A <a href="/Scratch/files/getpass">command line tool</a>.</li>
</ul>
<p>I&rsquo;ll soon release an iPhone application.</p>
<div class="return"><a href="#entete" onclick="fastShowMenu()">&uarr;</a></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">
Modified: 10/05/2010
</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>
</body>
</html>

View file

@ -1,99 +0,0 @@
<?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="alternate" type="application/rss+xml" title="RSS" href="http://feeds.feedburner.com/yannespositocomen"/>
<link rel="alternate" lang="fr" xml:lang="fr" title="YPassword" type="text/html" hreflang="fr" href="/Scratch/fr/softwares/ypassword/iphoneweb/" />
<link rel="alternate" lang="en" xml:lang="en" title="YPassword" type="text/html" hreflang="en" href="/Scratch/en/softwares/ypassword/iphoneweb/" />
<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>
<title>YPassword</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="entete">
<div id="choix">
<div id="choixrss">
<a id="rss" href="http://feeds.feedburner.com/yannespositocomen">
Subscribe
</a>
</div>
<div id="choixlang">
<a href="/Scratch/fr/softwares/ypassword/iphoneweb/" onclick="setLanguage('fr')">en Français</a>
</div>
<div id="liens">
<ul><li><a href="/Scratch/en/">Homepage</a></li>
<li><a href="/Scratch/en/blog/">Blog</a></li>
<li><a href="/Scratch/en/softwares/">Softwares</a></li></ul>
</div>
</div>
</div>
<img src="/Scratch/img/presentation.png" alt="Presentation drawing"/>
<div id="titre">
<h1>
YPassword
</h1>
<h2>
Web Interface for iPhone
</h2>
</div>
<div class="flush"></div>
<div class="flush"></div>
<div id="afterheader">
<div class="corps">
<div style="text-align: center">
<iframe frameborder="0" height="180" scrolling="no" src="http://web.me.com/yann.esposito/YPassword.old" width="480">
<p>Your browser does not support <code>iframes</code>.</p>
</iframe>
</div>
<div class="return"><a href="#entete" onclick="fastShowMenu()">&uarr;</a></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">
Modified: 10/05/2010
</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>
</body>
</html>

View file

@ -1,99 +0,0 @@
<?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="alternate" type="application/rss+xml" title="RSS" href="http://feeds.feedburner.com/yannespositocomen"/>
<link rel="alternate" lang="fr" xml:lang="fr" title="YPassword" type="text/html" hreflang="fr" href="/Scratch/fr/softwares/ypassword/web/" />
<link rel="alternate" lang="en" xml:lang="en" title="YPassword" type="text/html" hreflang="en" href="/Scratch/en/softwares/ypassword/web/" />
<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>
<title>YPassword</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="entete">
<div id="choix">
<div id="choixrss">
<a id="rss" href="http://feeds.feedburner.com/yannespositocomen">
Subscribe
</a>
</div>
<div id="choixlang">
<a href="/Scratch/fr/softwares/ypassword/web/" onclick="setLanguage('fr')">en Français</a>
</div>
<div id="liens">
<ul><li><a href="/Scratch/en/">Homepage</a></li>
<li><a href="/Scratch/en/blog/">Blog</a></li>
<li><a href="/Scratch/en/softwares/">Softwares</a></li></ul>
</div>
</div>
</div>
<img src="/Scratch/img/presentation.png" alt="Presentation drawing"/>
<div id="titre">
<h1>
YPassword
</h1>
<h2>
Cappuccino Web Application
</h2>
</div>
<div class="flush"></div>
<div class="flush"></div>
<div id="afterheader">
<div class="corps">
<div style="text-align: center">
<iframe frameborder="0" height="180" scrolling="no" src="http://web.me.com/yann.esposito/YPassword" width="480">
<p>Your browser does not support <code>iframes</code>.</p>
</iframe>
</div>
<div class="return"><a href="#entete" onclick="fastShowMenu()">&uarr;</a></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">
Modified: 10/05/2010
</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>
</body>
</html>

View file

@ -1,102 +0,0 @@
<?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="alternate" type="application/rss+xml" title="RSS" href="http://feeds.feedburner.com/yannespositocomfr"/>
<link rel="alternate" lang="fr" xml:lang="fr" title="Contact" type="text/html" hreflang="fr" href="/Scratch/fr/about/contact/" />
<link rel="alternate" lang="en" xml:lang="en" title="Contact" type="text/html" hreflang="en" href="/Scratch/en/about/contact/" />
<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>
<title>Contact</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="entete">
<div id="choix">
<div id="choixrss">
<a id="rss" href="http://feeds.feedburner.com/yannespositocomfr">
s'abonner
</a>
</div>
<div id="choixlang">
<a href="/Scratch/en/about/contact/" onclick="setLanguage('en')">in English</a>
</div>
<div id="liens">
<ul><li><a href="/Scratch/fr/">Accueil</a></li>
<li><a href="/Scratch/fr/blog/">Blog</a></li>
<li><a href="/Scratch/fr/softwares/">Softwares</a></li></ul>
</div>
</div>
</div>
<img src="/Scratch/img/presentation.png" alt="Presentation drawing"/>
<div id="titre">
<h1>
Contact
</h1>
</div>
<div class="flush"></div>
<div class="flush"></div>
<div id="afterheader">
<div class="corps">
<h1 class="first" id="comment-me-contacter">Comment me contacter</h1>
<p><img alt="Avatar" class="left" src="/Scratch/img/about/avatar.png" /></p>
<p><span style="font-size: 2em; line-height: 2em" /></p>
<p>Suivez-moi sur <a href="http://twitter.com/yogsototh">twitter</a><br />
Mes &ldquo;bookmarks&rdquo; <a href="http://diigo.com/profile/yogsototh">diigo</a><br />
Open Source <a href="http://github.com/yogsototh">github</a><br />
<a href="http://stackoverflow.com/users/40569/yogsototh">stackoverflow</a><br />
</p>
<div class="flush"></div>
<div class="return"><a href="#entete" onclick="fastShowMenu()">&uarr;</a></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">
modifié le : 05/10/2010
</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>
</body>
</html>

View file

@ -1,124 +0,0 @@
<?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="alternate" type="application/rss+xml" title="RSS" href="http://feeds.feedburner.com/yannespositocomfr"/>
<link rel="alternate" lang="fr" xml:lang="fr" title="Autres sites" type="text/html" hreflang="fr" href="/Scratch/fr/about/old/" />
<link rel="alternate" lang="en" xml:lang="en" title="Other website" type="text/html" hreflang="en" href="/Scratch/en/about/old/" />
<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>
<title>Autres sites</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="entete">
<div id="choix">
<div id="choixrss">
<a id="rss" href="http://feeds.feedburner.com/yannespositocomfr">
s'abonner
</a>
</div>
<div id="choixlang">
<a href="/Scratch/en/about/old/" onclick="setLanguage('en')">in English</a>
</div>
<div id="liens">
<ul><li><a href="/Scratch/fr/">Accueil</a></li>
<li><a href="/Scratch/fr/blog/">Blog</a></li>
<li><a href="/Scratch/fr/softwares/">Softwares</a></li></ul>
</div>
</div>
</div>
<img src="/Scratch/img/presentation.png" alt="Presentation drawing"/>
<div id="titre">
<h1>
Autres sites
</h1>
</div>
<div class="flush"></div>
<div class="flush"></div>
<div id="afterheader">
<div class="corps">
<div class="block left">
<h3>
<a href="http://yann.esposito.free.fr/recherche.php?css=blue&amp;lang=fr"> Recherche
<span class="nicer">»</span>
</a>
</h3>
<p>
Mes activités de recherches.
</p>
</div>
<div class="block left">
<h3>
<a href="http://yann.esposito.free.fr/"> Site étudiant
<span class="nicer">»</span>
</a>
</h3>
<p>
Mon site personnel lorsque j'étais étudiant. &#x271E; 2007
</p>
</div>
<div class="block left">
<h3>
<a href="http://web.me.com/yann.esposito/Perso/"> Famille <em>&amp;</em> Photos
<span class="nicer">»</span>
</a>
</h3>
<p>
Le login est "invite", si vous l'avez oublié, demandez-moi le mot de passe.
</p>
</div>
<div class="flush"></div>
<div class="return"><a href="#entete" onclick="fastShowMenu()">&uarr;</a></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">
modifié le : 05/10/2010
</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>
</body>
</html>

View file

@ -1,15 +0,0 @@
def gitmtime
filepath=@item.path.sub('/Scratch/','content/html/').sub(/\/$/,'')
ext=%{.#{@item[:extension]}}
filepath<<=ext
if not FileTest.exists?(filepath)
filepath.sub!(ext,%{/index#{ext}})
end
str=`git log -1 --format='%ci' -- #{filepath}`
if str.nil? or str.empty?
return Time.now
else
return DateTime.parse( str )
end
end

View file

@ -1,193 +0,0 @@
<?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" />
<meta name="keywords" content="nanoc, web, git">
<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="Utilisation de git pour calculer les mtimes" type="text/html" hreflang="fr" href="/Scratch/fr/blog/2010-09-02-Use-git-to-calculate-trusted-mtimes/" />
<link rel="alternate" lang="en" xml:lang="en" title="Use git to calculate trusted mtimes" type="text/html" hreflang="en" href="/Scratch/en/blog/2010-09-02-Use-git-to-calculate-trusted-mtimes/" />
<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>
<title>Utilisation de git pour calculer les mtimes</title>
</head>
<body lang="fr">
<script type="text/javascript">// <![CDATA[
document.write('<div id="blackpage"><img src="/Scratch/img/loading.gif" alt="Chargement en cours..."/></div>');
// ]]>
</script>
<div id="content">
<div id="choix">
<div class="return"><a href="#entete">&darr; Menu &darr;</a></div>
<div id="choixlang">
<a href="/Scratch/en/blog/2010-09-02-Use-git-to-calculate-trusted-mtimes/" onclick="setLanguage('en')">in English</a>
</div>
</div>
<img src="/Scratch/img/presentation.png" alt="Presentation drawing"/>
<div id="titre">
<h1>
Utilisation de git pour calculer les mtimes
</h1>
</div>
<div class="flush"></div>
<div class="flush"></div>
<div id="afterheader">
<div class="corps">
<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"><a href="/Scratch/fr/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> <span class="Entity">gitmtime</span>
filepath<span class="Keyword">=</span><span class="Variable"><span class="Variable">@</span>item</span>.<span class="Entity">path</span>.<span class="Entity">sub</span>(<span class="String"><span class="String">'</span>/Scratch/<span class="String">'</span></span>,<span class="String"><span class="String">'</span>content/html/<span class="String">'</span></span>).<span class="Entity">sub</span>(<span class="StringRegexp"><span class="StringRegexp">/</span></span><span class="StringRegexp"><span class="StringRegexpSpecial">\/</span>$</span><span class="StringRegexp"><span class="StringRegexp">/</span></span>,<span class="String"><span class="String">'</span><span class="String">'</span></span>)
ext<span class="Keyword">=</span><span class="String"><span class="String">%{</span>.<span class="StringEmbeddedSource"><span class="StringEmbeddedSource">#{</span><span class="StringVariable"><span class="StringVariable">@</span>item</span><span class="StringEmbeddedSource">[</span><span class="StringConstant"><span class="StringConstant">:</span>extension</span><span class="StringEmbeddedSource">]</span><span class="StringEmbeddedSource">}</span></span><span class="String">}</span></span>
filepath<span class="Keyword">&lt;&lt;=</span>ext
<span class="Keyword">if</span> <span class="Keyword">not</span> <span class="Support">FileTest</span>.<span class="Entity">exists?</span>(filepath)
filepath.<span class="Entity">sub!</span>(ext,<span class="String"><span class="String">%{</span>/index<span class="StringEmbeddedSource"><span class="StringEmbeddedSource">#{</span>ext<span class="StringEmbeddedSource">}</span></span><span class="String">}</span></span>)
<span class="Keyword">end</span>
str<span class="Keyword">=</span><span class="String"><span class="String">`</span>git log -1 --format='%ci' -- <span class="StringEmbeddedSource"><span class="StringEmbeddedSource">#{</span>filepath<span class="StringEmbeddedSource">}</span></span><span class="String">`</span></span>
<span class="Keyword">if</span> str.<span class="Entity">nil?</span> <span class="Keyword">or</span> str.<span class="Entity">empty?</span>
<span class="Keyword">return</span> <span class="Support">Time</span>.<span class="Entity">now</span>
<span class="Keyword">else</span>
<span class="Keyword">return</span> <span class="Support">DateTime</span>.<span class="Entity">parse</span>( str )
<span class="Keyword">end</span>
<span class="Keyword">end</span>
</pre>
</div></div>
<p>Bien entendu je sais que c&rsquo;est très lent et absolument pas optimisé.
Mais ça fonctionne comme prévu.
Maintenant la date que vous voyez en bas de la page correspond exactement à la dernière date de modification de son contenu.</p>
<p>Je tiens à remercier Eric Sunshine pour ses conseils sur ce problème.</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>
</noscript>
<script type="text/javascript">
var idcomments_acct = 'a307f0044511ff1b5cfca573fc0a52e7';
var idcomments_post_id = '/Scratch/fr/blog/2010-09-02-Use-git-to-calculate-trusted-mtimes/';
var idcomments_post_url = 'http://yannesposito.com/Scratch/fr/blog/2010-09-02-Use-git-to-calculate-trusted-mtimes/';
</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/">Accueil</a></li>
<li><a href="/Scratch/fr/blog/">Blog</a></li>
<li><a href="/Scratch/fr/softwares/">Softwares</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/2010-09-02-base64-and-sha1-on-iPhone/"><span class="nicer">«</span>&nbsp;base64 et sha1 sur iPhone</a>
</div>
<div class="previous_article">
<a href="/Scratch/fr/blog/2010-09-02-Use-git-to-calculate-trusted-mtimes/"><span class="nicer">«</span>&nbsp;Utilisation de git pour calculer les mtimes</a>
</div>
<div class="previous_article">
<a href="/Scratch/fr/blog/2010-09-02-base64-and-sha1-on-iPhone/"><span class="nicer">«</span>&nbsp;base64 et sha1 sur iPhone</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 : 02/09/2010
modifié le : 05/10/2010
</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>
</body>
</html>

View file

@ -1,43 +0,0 @@
- (unsigned char *)sha1:(NSString *)baseString result:(unsigned char *)result {
char *c_baseString=(char *)[baseString UTF8String];
CC_SHA1(c_baseString, strlen(c_baseString), result);
return result;
}
- (NSString *)base64:(unsigned char *)result {
NSString *password=[[NSString alloc] init];
static const unsigned char cb64[65]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
for (int i=0; i<CC_SHA1_DIGEST_LENGTH; i+=3) {
password=[password stringByAppendingFormat:@"%c%c%c%c",
cb64[(result[i] &0xFC)>>2],
cb64[((result[i] & 0x03) << 4)
| ((result[i + 1] & 0xF0) >> 4)],
cb64[((result[i + 1] & 0x0F) << 2)
| ((result[i + 2] & 0xC0) >> 6)],
cb64[result[i+2]&0x3F]
];
}
return password;
}
- (NSString *)hexadecimalRepresentation:(unsigned char *)result {
NSString *password=[[NSString alloc] init];
for (int i=0; i<CC_SHA1_DIGEST_LENGTH; i++) {
password=[password stringByAppendingFormat:@"%02x", result[i]];
}
return password;
}
- (NSString *)b64_sha1:(NSString *)inputString {
unsigned char result[CC_SHA1_DIGEST_LENGTH+1];
[self sha1:inputString result:result];
return [self base64:result];
}
- (NSString *)hex_sha1:(NSString *)inputString {
unsigned char result[CC_SHA1_DIGEST_LENGTH+1];
[self sha1:inputString result:result];
return [self hexadecimalRepresentation:result];
}

View file

@ -1,223 +0,0 @@
<?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" />
<meta name="keywords" content="iPhone, Objective-C, Programmation">
<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="base64 et sha1 sur iPhone" type="text/html" hreflang="fr" href="/Scratch/fr/blog/2010-09-02-base64-and-sha1-on-iPhone/" />
<link rel="alternate" lang="en" xml:lang="en" title="base64 and sha1 on iPhone" type="text/html" hreflang="en" href="/Scratch/en/blog/2010-09-02-base64-and-sha1-on-iPhone/" />
<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>
<title>base64 et sha1 sur iPhone</title>
</head>
<body lang="fr">
<script type="text/javascript">// <![CDATA[
document.write('<div id="blackpage"><img src="/Scratch/img/loading.gif" alt="Chargement en cours..."/></div>');
// ]]>
</script>
<div id="content">
<div id="choix">
<div class="return"><a href="#entete">&darr; Menu &darr;</a></div>
<div id="choixlang">
<a href="/Scratch/en/blog/2010-09-02-base64-and-sha1-on-iPhone/" onclick="setLanguage('en')">in English</a>
</div>
</div>
<img src="/Scratch/img/presentation.png" alt="Presentation drawing"/>
<div id="titre">
<h1>
base64 et sha1 sur iPhone
</h1>
</div>
<div class="flush"></div>
<div class="flush"></div>
<div id="afterheader">
<div class="corps">
<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 class="String">@&quot;</span>some NSString to be sha1'ed<span class="String">&quot;</span></span>];
...
<span class="Support">NSString</span> *hex_hash = [<span class="Variable">self</span> <span class="SupportFunction">hex_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>
<p>L&rsquo;algorithme pour l&rsquo;encodage en <code>base64</code> doit être programmé sur iPhone.
Il n&rsquo;y a pas de librairie officielle qui s&rsquo;occupe de ça.</p>
<div class="code"><div class="file"><a href="/Scratch/fr/blog/2010-09-02-base64-and-sha1-on-iPhone/code/iphone_base64_sha1.c"> &#x27A5; iphone_base64_sha1.c </a></div><div class="withfile">
<pre class="twilight">
- (<span class="Storage">unsigned</span> <span class="Storage">char</span> *)sha1:(NSString *)baseString result:(<span class="Storage">unsigned</span> <span class="Storage">char</span> *)result {
<span class="Storage">char</span> *c_baseString=(<span class="Storage">char</span> *)[baseString UTF8String];
CC_SHA1(c_baseString, <span class="SupportFunction">strlen</span>(c_baseString), result);
<span class="Keyword">return</span> result;
}
- (NSString *)base64:(<span class="Storage">unsigned</span> <span class="Storage">char</span> *)result {
NSString *password=[[NSString alloc] init];
<span class="Storage">static</span> <span class="Storage">const</span> <span class="Storage">unsigned</span> <span class="Storage">char</span> cb64[<span class="Constant">65</span>]=<span class="String"><span class="String">&quot;</span>ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/<span class="String">&quot;</span></span>;
<span class="Keyword">for</span> (<span class="Storage">int</span> i=<span class="Constant">0</span>; i&lt;CC_SHA1_DIGEST_LENGTH; i+=<span class="Constant">3</span>) {
password=[password stringByAppendingFormat:@<span class="String"><span class="String">&quot;</span><span class="StringConstant">%c</span><span class="StringConstant">%c</span><span class="StringConstant">%c</span><span class="StringConstant">%c</span><span class="String">&quot;</span></span>,
cb64[(result[i] &amp;<span class="Constant">0xFC</span>)&gt;&gt;<span class="Constant">2</span>],
cb64[((result[i] &amp; <span class="Constant">0x03</span>) &lt;&lt; <span class="Constant">4</span>)
| ((result[i + <span class="Constant">1</span>] &amp; <span class="Constant">0xF0</span>) &gt;&gt; <span class="Constant">4</span>)],
cb64[((result[i + <span class="Constant">1</span>] &amp; <span class="Constant">0x0F</span>) &lt;&lt; <span class="Constant">2</span>)
| ((result[i + <span class="Constant">2</span>] &amp; <span class="Constant">0xC0</span>) &gt;&gt; <span class="Constant">6</span>)],
cb64[result[i+<span class="Constant">2</span>]&amp;<span class="Constant">0x3F</span>]
];
}
<span class="Keyword">return</span> password;
}
- (NSString *)hexadecimalRepresentation:(<span class="Storage">unsigned</span> <span class="Storage">char</span> *)result {
NSString *password=[[NSString alloc] init];
<span class="Keyword">for</span> (<span class="Storage">int</span> i=<span class="Constant">0</span>; i&lt;CC_SHA1_DIGEST_LENGTH; i++) {
password=[password stringByAppendingFormat:@<span class="String"><span class="String">&quot;</span><span class="StringConstant">%02x</span><span class="String">&quot;</span></span>, result[i]];
}
<span class="Keyword">return</span> password;
}
- (NSString *)b64_sha1:(NSString *)inputString {
<span class="Storage">unsigned</span> <span class="Storage">char</span> result[CC_SHA1_DIGEST_LENGTH+<span class="Constant">1</span>];
[self sha1:inputString result:result];
<span class="Keyword">return</span> [self base64:result];
}
- (NSString *)hex_sha1:(NSString *)inputString {
<span class="Storage">unsigned</span> <span class="Storage">char</span> result[CC_SHA1_DIGEST_LENGTH+<span class="Constant">1</span>];
[self sha1:inputString result:result];
<span class="Keyword">return</span> [self hexadecimalRepresentation:result];
}
</pre>
</div></div>
</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>
</noscript>
<script type="text/javascript">
var idcomments_acct = 'a307f0044511ff1b5cfca573fc0a52e7';
var idcomments_post_id = '/Scratch/fr/blog/2010-09-02-base64-and-sha1-on-iPhone/';
var idcomments_post_url = 'http://yannesposito.com/Scratch/fr/blog/2010-09-02-base64-and-sha1-on-iPhone/';
</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/">Accueil</a></li>
<li><a href="/Scratch/fr/blog/">Blog</a></li>
<li><a href="/Scratch/fr/softwares/">Softwares</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/2010-09-02-Use-git-to-calculate-trusted-mtimes/"><span class="nicer">«</span>&nbsp;Utilisation de git pour calculer les mtimes</a>
</div>
<div class="previous_article">
<a href="/Scratch/fr/blog/2010-09-02-base64-and-sha1-on-iPhone/"><span class="nicer">«</span>&nbsp;base64 et sha1 sur iPhone</a>
</div>
</div>
<div id="next_articles">
articles suivants
<div class="next_article">
<a href="/Scratch/fr/blog/2010-09-02-Use-git-to-calculate-trusted-mtimes/">Utilisation de git pour calculer les mtimes&nbsp;<span class="nicer">»</span></a>
</div>
</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 : 02/09/2010
modifié le : 05/10/2010
</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>
</body>
</html>

View file

@ -1,54 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<id>http://yannesposito.com/</id>
<title>Yogsototh's last blogs entries</title>
<updated>2010-09-02T13:54:10Z</updated>
<link rel="alternate" href="http://yannesposito.com/"/>
<link rel="self" href="http://feeds.feedburner.com/yannespositocomfr"/>
<author>
<name>Yann Esposito</name>
<uri>http://yannesposito.com</uri>
</author>
<entry>
<id>tag:yannesposito.com,2010-09-02:/Scratch/fr/blog/2010-09-02-Use-git-to-calculate-trusted-mtimes/</id>
<title type="html">Utilisation de git pour calculer les mtimes</title>
<published>2010-09-02T13:54:10Z</published>
<updated>2010-09-02T13:54:10Z</updated>
<author>
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link rel="alternate" href="http://yannesposito.com/Scratch/fr/blog/2010-09-02-Use-git-to-calculate-trusted-mtimes/"/>
<content type="html">&lt;p&gt;Vous pouvez remarquer qu&amp;rsquo;&#224; la fin de chaque page je donne une date de derni&#232;re modification.
Pr&#233;c&#233;demment cette date &#233;tait calcul&#233;e en utilisant la date du fichier.
Mais il arrive fr&#233;quemment que je fasse un &lt;code&gt;touch&lt;/code&gt; d&amp;rsquo;un fichier pour engendrer tout le site de nouveau.
Donc la date n&amp;rsquo;est pas n&#233;cessairement la &lt;em&gt;vraie&lt;/em&gt; de modification du contenue.&lt;/p&gt;
&lt;p&gt;J&amp;rsquo;utilise &lt;a href="http://git-scm.org"&gt;git&lt;/a&gt; pour &lt;em&gt;versionner&lt;/em&gt; mon site web.
Et cet outil me permet de r&#233;cup&#233;rer la derni&#232;re date de &lt;em&gt;vraie&lt;/em&gt; modification d&amp;rsquo;un fichier.
Voici comment je m&amp;rsquo;y prend avec &lt;a href="http://nanoc.stoneship.org"&gt;nanoc&lt;/a&gt;&amp;nbsp;:&lt;/p&gt;
&lt;div class="code"&gt;&lt;div class="file"&gt;&lt;/div&gt;&lt;/div&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2010-09-02:/Scratch/fr/blog/2010-09-02-base64-and-sha1-on-iPhone/</id>
<title type="html">base64 et sha1 sur iPhone</title>
<published>2010-09-01T22:02:17Z</published>
<updated>2010-09-01T22:02:17Z</updated>
<author>
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link rel="alternate" href="http://yannesposito.com/Scratch/fr/blog/2010-09-02-base64-and-sha1-on-iPhone/"/>
<content type="html">&lt;p&gt;Allons directement &#224; l&amp;rsquo;essentiel&amp;nbsp;:
voici deux fonctions &#224; int&#233;grer &#224; votre application iPhone pour afficher l&amp;rsquo;encodage en base64 ou en hexadecimal du hash sha1 d&amp;rsquo;un string en Objective-C pour iPhone.&lt;/p&gt;
&lt;p&gt;Pour l&amp;rsquo;usage c&amp;rsquo;est tr&#232;s simple, copiez le code dans la classe de votre choix.
Puis&amp;nbsp;:&lt;/p&gt;
&lt;pre class="twilight"&gt;
&lt;span class="CCCPreprocessorLine"&gt;#&lt;span class="CCCPreprocessorDirective"&gt;import&lt;/span&gt; &lt;span class="String"&gt;&lt;span class="String"&gt;&amp;lt;&lt;/span&gt;CommonCrypto/CommonDigest.h&lt;span class="String"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
...
&lt;span class="Support"&gt;NSString&lt;/span&gt; *b64_hash = [&lt;span class="Variable"&gt;self&lt;/span&gt; &lt;span class="SupportFunction"&gt;b64_sha1&lt;span class="SupportFunction"&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span class="String"&gt;&lt;/span&gt;&lt;/pre&gt;</content>
</entry>
</feed>

View file

@ -1,244 +0,0 @@
<?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="alternate" type="application/rss+xml" title="RSS" href="http://feeds.feedburner.com/yannespositocomfr"/>
<link rel="alternate" lang="fr" xml:lang="fr" title="Blog" type="text/html" hreflang="fr" href="/Scratch/fr/blog/" />
<link rel="alternate" lang="en" xml:lang="en" title="Blog" type="text/html" hreflang="en" href="/Scratch/en/blog/" />
<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>
<title>Blog</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="entete">
<div id="choix">
<div id="choixrss">
<a id="rss" href="http://feeds.feedburner.com/yannespositocomfr">
s'abonner
</a>
</div>
<div id="choixlang">
<a href="/Scratch/en/blog/" onclick="setLanguage('en')">in English</a>
</div>
<div id="liens">
<ul><li><a href="/Scratch/fr/">Accueil</a></li>
<li><span class="active" title="You're here.">Blog</span></li>
<li><a href="/Scratch/fr/softwares/">Softwares</a></li></ul>
</div>
</div>
</div>
<img src="/Scratch/img/presentation.png" alt="Presentation drawing"/>
<div id="titre">
<h1>
Blog
</h1>
</div>
<div class="flush"></div>
<div class="flush"></div>
<div id="afterheader">
<div class="corps">
<ul>
<li><a href="#les-20-derniers-articles">Les 20 derniers articles <span class="nicer">&dArr;</span></a></li>
<li><a href="#tagcloud">Nuage de mots clés <span class="nicer">&dArr;</span></a></li>
<li><a href="#archives">Archives <span class="nicer">&dArr;</span></a></li>
<li><a href="#un-petit-mot-sur-le-contenu">Un petit mot sur le contenu <span class="nicer">&dArr;</span></a></li>
</ul>
</div>
<div class="corps">
<h2 class="first" id="les-20-derniers-articles">Les 20 derniers articles</h2>
<ul style="list-style-type: none; margin: 0;">
<li style="line-height: 1em; margin: 0;">
<span class="date">
<span class="day">2</span>
<span class="month">Sep</span>
<span class="year">2010</span>
</span>
<a href="/Scratch/fr/blog/2010-09-02-Use-git-to-calculate-trusted-mtimes/"><span class="sc">Utilisation de git pour calculer les mtimes</span></a>
</li>
<li style="line-height: 1em; margin: 0;">
<span class="date">
<span class="day">2</span>
<span class="month">Sep</span>
<span class="year">2010</span>
</span>
<a href="/Scratch/fr/blog/2010-09-02-base64-and-sha1-on-iPhone/"><span class="sc">base64 et sha1 sur iPhone</span></a>
</li>
</ul>
<p><a href="#archives">Archives <span class="nicer">&dArr;</span></a></p>
</div>
<div class="corps">
<div>
<script type="text/javascript">
$(document).ready( function(){$('.list').hide();$('#tagcloud a').removeAttr("href")} );
function tagSelected(id) {
$('.list').hide();
$('#'+id).fadeIn();
$('.tag.selected').removeClass('selected');
$('#tag_'+id).addClass('selected');
}
</script><div id="tagcloud"><a class="tag" href="#git" id="tag_git" onclick="tagSelected('git')" style="font-size: 1.0em;">git</a> <a class="tag" href="#iPhone" id="tag_iPhone" onclick="tagSelected('iPhone')" style="font-size: 1.0em;">iPhone</a> <a class="tag" href="#nanoc" id="tag_nanoc" onclick="tagSelected('nanoc')" style="font-size: 1.0em;">nanoc</a> <a class="tag" href="#Objective_C" id="tag_Objective_C" onclick="tagSelected('Objective_C')" style="font-size: 1.0em;">Objective-C</a> <a class="tag" href="#Programmation" id="tag_Programmation" onclick="tagSelected('Programmation')" style="font-size: 1.0em;">Programmation</a> <a class="tag" href="#web" id="tag_web" onclick="tagSelected('web')" style="font-size: 1.0em;">web</a> </div><div id="hiddenDivs"><div class="list" id="git"><h4>git <a href="#tagcloud">&uarr;</a></h4><ul style="list-style-type: none; margin: 0;">
<li style="line-height: 3em; margin: 0;">
<span class="date">
<span class="day">2</span>
<span class="month">Sep</span>
<span class="year">2010</span>
</span>
<a href="/Scratch/fr/blog/2010-09-02-Use-git-to-calculate-trusted-mtimes/">Utilisation de git pour calculer les mtimes</a>
</li>
</ul></div><div class="list" id="iPhone"><h4>iPhone <a href="#tagcloud">&uarr;</a></h4><ul style="list-style-type: none; margin: 0;">
<li style="line-height: 3em; margin: 0;">
<span class="date">
<span class="day">2</span>
<span class="month">Sep</span>
<span class="year">2010</span>
</span>
<a href="/Scratch/fr/blog/2010-09-02-base64-and-sha1-on-iPhone/">base64 et sha1 sur iPhone</a>
</li>
</ul></div><div class="list" id="nanoc"><h4>nanoc <a href="#tagcloud">&uarr;</a></h4><ul style="list-style-type: none; margin: 0;">
<li style="line-height: 3em; margin: 0;">
<span class="date">
<span class="day">2</span>
<span class="month">Sep</span>
<span class="year">2010</span>
</span>
<a href="/Scratch/fr/blog/2010-09-02-Use-git-to-calculate-trusted-mtimes/">Utilisation de git pour calculer les mtimes</a>
</li>
</ul></div><div class="list" id="Objective_C"><h4>Objective-C <a href="#tagcloud">&uarr;</a></h4><ul style="list-style-type: none; margin: 0;">
<li style="line-height: 3em; margin: 0;">
<span class="date">
<span class="day">2</span>
<span class="month">Sep</span>
<span class="year">2010</span>
</span>
<a href="/Scratch/fr/blog/2010-09-02-base64-and-sha1-on-iPhone/">base64 et sha1 sur iPhone</a>
</li>
</ul></div><div class="list" id="Programmation"><h4>Programmation <a href="#tagcloud">&uarr;</a></h4><ul style="list-style-type: none; margin: 0;">
<li style="line-height: 3em; margin: 0;">
<span class="date">
<span class="day">2</span>
<span class="month">Sep</span>
<span class="year">2010</span>
</span>
<a href="/Scratch/fr/blog/2010-09-02-base64-and-sha1-on-iPhone/">base64 et sha1 sur iPhone</a>
</li>
</ul></div><div class="list" id="web"><h4>web <a href="#tagcloud">&uarr;</a></h4><ul style="list-style-type: none; margin: 0;">
<li style="line-height: 3em; margin: 0;">
<span class="date">
<span class="day">2</span>
<span class="month">Sep</span>
<span class="year">2010</span>
</span>
<a href="/Scratch/fr/blog/2010-09-02-Use-git-to-calculate-trusted-mtimes/">Utilisation de git pour calculer les mtimes</a>
</li>
</ul></div></div>
</div>
</div>
<h2 id="archives">Archives</h2>
<div class="archive" id="sousliens"><h4 onclick="$('#archives_2010').slideToggle()" style="cursor: pointer;">[2010]</h4><ul id="archives_2010"><li><span class="date">
<span class="day">2</span>
<span class="month">Sep</span>
<span class="year">2010</span>
</span> <a href="/Scratch/fr/blog/2010-09-02-Use-git-to-calculate-trusted-mtimes/">Utilisation de git pour calculer les mtimes</a></li><li><span class="date">
<span class="day">2</span>
<span class="month">Sep</span>
<span class="year">2010</span>
</span> <a href="/Scratch/fr/blog/2010-09-02-base64-and-sha1-on-iPhone/">base64 et sha1 sur iPhone</a></li></ul><script type="text/javascript">$('#archives_2010').hide()</script></div>
</div>
<div class="corps">
<h2 class="first" id="un-petit-mot-sur-le-contenu">Un petit mot sur le contenu</h2>
<p>Vous trouverez ici des articles qui sont pour la plupart
écrits en anglais et qui sont techniques.
Certain sont justes là pour me souvenir de petits trucs, que
d&rsquo;autres pourraient trouver utiles. Mais il y a aussi de
long articles techniques qui vont un peu plus dans les détails.</p>
<hr />
<p>Je fais de mon mieux pour traduire chaque page en anglais et en français.
Cependant, ce n&rsquo;est pas toujours évident.
Il m&rsquo;arrive de faire de nombreuses fautes d&rsquo;orthographes, des erreurs typographiques et autres. </p>
<p><strong> Merci de ne pas me juger sur ces erreurs et de ne pas oublier que le fond est plus important que la forme. </strong></p>
<p>L&rsquo;impression que ce site laisse de moi n&rsquo;est certainement pas l&rsquo;impression que je vous laisserais si on se rencontrait.</p>
<p>Je vous souhaite de trouver ce que vous cherchez sur ce site.</p>
<div class="return"><a href="#entete" onclick="fastShowMenu()">&uarr;</a></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">
modifié le : 05/10/2010
</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>
</body>
</html>

View file

@ -1,172 +0,0 @@
<?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="alternate" type="application/rss+xml" title="RSS" href="http://feeds.feedburner.com/yannespositocomfr"/>
<link rel="alternate" lang="fr" xml:lang="fr" title="Accueil" type="text/html" hreflang="fr" href="/Scratch/fr/" />
<link rel="alternate" lang="en" xml:lang="en" title="Homepage" type="text/html" hreflang="en" href="/Scratch/en/" />
<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>
<title>Accueil</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="entete">
<div id="choix">
<div id="choixrss">
<a id="rss" href="http://feeds.feedburner.com/yannespositocomfr">
s'abonner
</a>
</div>
<div id="choixlang">
<a href="/Scratch/en/" onclick="setLanguage('en')">in English</a>
</div>
<div id="liens">
<ul><li><span class="active" title="You're here.">Accueil</span></li>
<li><a href="/Scratch/fr/blog/">Blog</a></li>
<li><a href="/Scratch/fr/softwares/">Softwares</a></li></ul>
</div>
</div>
</div>
<img src="/Scratch/img/presentation.png" alt="Presentation drawing"/>
<div id="titre">
<h1>
Accueil
</h1>
</div>
<div class="flush"></div>
<div class="flush"></div>
<div id="afterheader">
<div class="corps">
<p>Bonjour et bienvenue sur mon site personnel.</p>
<p>Voici l'<i>incipit</i><sup><a href="#footnote1">&dagger;</a></sup> de mes 5 derniers articles.</p>
<p>Vous pouvez aussi chercher des entrées en utilisant le <a href="#tagcloud">nuage de mots clés (tag cloud)</a></p>
Vous pouvez aussi vous abonner au flux RSS pour être certain d'être prévenu quand un nouvel article est posté. Pour plus d'explications vous pouvez vous référer à cette <a href="/Scratch/fr/rss">page</a>.
<hr/>
<p class="small"><span id="footnote1">&dagger;</span> approximativement les 800 premiers caractères.</p>
</div>
<h1>
<span class="date">
<span class="day">2</span>
<span class="month">Sep</span>
<span class="year">2010</span>
</span>
<a href="/Scratch/fr/blog/2010-09-02-Use-git-to-calculate-trusted-mtimes/">Utilisation de git pour calculer les mtimes <span class="nicer">»</span></a>
</h1>
<div class="corps">
<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>
<p>
<a href="/Scratch/fr/blog/2010-09-02-Use-git-to-calculate-trusted-mtimes/">en lire plus <span class="nicer">»</span></a>
</p>
</div>
<h1>
<span class="date">
<span class="day">1</span>
<span class="month">Sep</span>
<span class="year">2010</span>
</span>
<a href="/Scratch/fr/blog/2010-09-02-base64-and-sha1-on-iPhone/">base64 et sha1 sur iPhone <span class="nicer">»</span></a>
</h1>
<div class="corps">
<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>
<p>
<a href="/Scratch/fr/blog/2010-09-02-base64-and-sha1-on-iPhone/">en lire plus <span class="nicer">»</span></a>
</p>
</div>
<a href="#titre">&uarr; back to top &uarr;</a>
<div class="corps">
<h2 class="first">tag cloud (2 articles au moins)</h2>
<script type="text/javascript">
$(document).ready( function(){$('.list').hide();$('#tagcloud a').removeAttr("href")} );
function tagSelected(id) {
$('.list').hide();
$('#'+id).fadeIn();
$('.tag.selected').removeClass('selected');
$('#tag_'+id).addClass('selected');
}
</script><div id="tagcloud"></div><div id="hiddenDivs" ></div>
</div>
</div>
<div class="corps">
Le bouton en bas à gauche sert à revenir en haut de la page et à afficher le menu.
<div class="return"><a href="#entete" onclick="fastShowMenu()">&uarr;</a></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">
modifié le : 05/10/2010
</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>
</body>
</html>

View file

@ -1,124 +0,0 @@
<?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="alternate" type="application/rss+xml" title="RSS" href="http://feeds.feedburner.com/yannespositocomfr"/>
<link rel="alternate" lang="fr" xml:lang="fr" title="Softwares" type="text/html" hreflang="fr" href="/Scratch/fr/softwares/" />
<link rel="alternate" lang="en" xml:lang="en" title="Softwares" type="text/html" hreflang="en" href="/Scratch/en/softwares/" />
<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>
<title>Softwares</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="entete">
<div id="choix">
<div id="choixrss">
<a id="rss" href="http://feeds.feedburner.com/yannespositocomfr">
s'abonner
</a>
</div>
<div id="choixlang">
<a href="/Scratch/en/softwares/" onclick="setLanguage('en')">in English</a>
</div>
<div id="liens">
<ul><li><a href="/Scratch/fr/">Accueil</a></li>
<li><a href="/Scratch/fr/blog/">Blog</a></li>
<li><span class="active" title="You're here.">Softwares</span></li></ul>
</div>
</div>
</div>
<img src="/Scratch/img/presentation.png" alt="Presentation drawing"/>
<div id="titre">
<h1>
Softwares
</h1>
</div>
<div class="flush"></div>
<div class="flush"></div>
<div id="afterheader">
<div class="corps">
<div class="block left">
<h3>
<a href="/Scratch/en/softwares/ypassword"> YPassword
<span class="nicer">»</span>
</a>
</h3>
<p>
YPassword is a password manager that make your web life more secure
</p>
</div>
<div class="block left">
<h3>
<a href="/Scratch/en/softwares/yaquabubbles"> YAquaBubbles
<span class="nicer">»</span>
</a>
</h3>
<p>
Nice underwater floating bubbles
</p>
</div>
<div class="block right">
<h3>
<a href="/Scratch/en/softwares/yclock"> YClock
<span class="nicer">»</span>
</a>
</h3>
<p>
Biohazard logo inspired clock
</p>
</div>
<div class="flush"></div>
<div class="return"><a href="#entete" onclick="fastShowMenu()">&uarr;</a></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">
modifié le : 05/10/2010
</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>
</body>
</html>

View file

@ -1,97 +0,0 @@
<?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="alternate" type="application/rss+xml" title="RSS" href="http://feeds.feedburner.com/yannespositocomfr"/>
<link rel="alternate" lang="fr" xml:lang="fr" title="bubble in the ocean" type="text/html" hreflang="fr" href="/Scratch/fr/softwares/yaquabubbles/" />
<link rel="alternate" lang="en" xml:lang="en" title="bubble in the ocean" type="text/html" hreflang="en" href="/Scratch/en/softwares/yaquabubbles/" />
<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>
<title>bubble in the ocean</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="entete">
<div id="choix">
<div id="choixrss">
<a id="rss" href="http://feeds.feedburner.com/yannespositocomfr">
s'abonner
</a>
</div>
<div id="choixlang">
<a href="/Scratch/en/softwares/yaquabubbles/" onclick="setLanguage('en')">in English</a>
</div>
<div id="liens">
<ul><li><a href="/Scratch/fr/">Accueil</a></li>
<li><a href="/Scratch/fr/blog/">Blog</a></li>
<li><a href="/Scratch/fr/softwares/">Softwares</a></li></ul>
</div>
</div>
</div>
<img src="/Scratch/img/presentation.png" alt="Presentation drawing"/>
<div id="titre">
<h1>
bubble in the ocean
</h1>
</div>
<div class="flush"></div>
<div class="flush"></div>
<div id="afterheader">
<div class="corps">
<p><a href="/Scratch/files/YAquaBubbles.dmg"> <img alt="Screenshot" src="/Scratch/img/softwares/yaquabubbles/screenshot1.png" title="screenshot" /> </a></p>
<p>YAquaBubbles est un économiseur d&rsquo;écran réalisé avec QuartzComposer.
Il s&rsquo;agissait d&rsquo;un simple essai mais le résultat était plaisant.</p>
<p><a href="/Scratch/files/YAquaBubbles.dmg"><span class="nicer">&#10149;</span> YAquaBubbles.dmg</a></p>
<div class="return"><a href="#entete" onclick="fastShowMenu()">&uarr;</a></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">
modifié le : 05/10/2010
</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>
</body>
</html>

View file

@ -1,98 +0,0 @@
<?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="alternate" type="application/rss+xml" title="RSS" href="http://feeds.feedburner.com/yannespositocomfr"/>
<link rel="alternate" lang="fr" xml:lang="fr" title="YClock" type="text/html" hreflang="fr" href="/Scratch/fr/softwares/yclock/" />
<link rel="alternate" lang="en" xml:lang="en" title="YClock" type="text/html" hreflang="en" href="/Scratch/en/softwares/yclock/" />
<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>
<title>YClock</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="entete">
<div id="choix">
<div id="choixrss">
<a id="rss" href="http://feeds.feedburner.com/yannespositocomfr">
s'abonner
</a>
</div>
<div id="choixlang">
<a href="/Scratch/en/softwares/yclock/" onclick="setLanguage('en')">in English</a>
</div>
<div id="liens">
<ul><li><a href="/Scratch/fr/">Accueil</a></li>
<li><a href="/Scratch/fr/blog/">Blog</a></li>
<li><a href="/Scratch/fr/softwares/">Softwares</a></li></ul>
</div>
</div>
</div>
<img src="/Scratch/img/presentation.png" alt="Presentation drawing"/>
<div id="titre">
<h1>
YClock
</h1>
</div>
<div class="flush"></div>
<div class="flush"></div>
<div id="afterheader">
<div class="corps">
<p><a href="/Scratch/files/YClock.dmg"> <img alt="Screenshot" src="/Scratch/img/softwares/yclock/screenshot1.png" title="screenshot" /> </a></p>
<p>YClock est un économiseur d&rsquo;écran qui vous donne l&rsquo;heure.i
Il a trois thèmes clair, rouge et noir.
Il utilise une base de QuartzComposition + du code objective-C pour la gestion du nombre d&rsquo;images par seconde.</p>
<p><a href="/Scratch/files/YClock.dmg"><span class="nicer">&#10149;</span> YClock.dmg</a></p>
<div class="return"><a href="#entete" onclick="fastShowMenu()">&uarr;</a></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">
modifié le : 05/10/2010
</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>
</body>
</html>

View file

@ -1,106 +0,0 @@
<?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="alternate" type="application/rss+xml" title="RSS" href="http://feeds.feedburner.com/yannespositocomfr"/>
<link rel="alternate" lang="fr" xml:lang="fr" title="YPassword" type="text/html" hreflang="fr" href="/Scratch/fr/softwares/ypassword/" />
<link rel="alternate" lang="en" xml:lang="en" title="YPassword" type="text/html" hreflang="en" href="/Scratch/en/softwares/ypassword/" />
<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>
<title>YPassword</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="entete">
<div id="choix">
<div id="choixrss">
<a id="rss" href="http://feeds.feedburner.com/yannespositocomfr">
s'abonner
</a>
</div>
<div id="choixlang">
<a href="/Scratch/en/softwares/ypassword/" onclick="setLanguage('en')">in English</a>
</div>
<div id="liens">
<ul><li><a href="/Scratch/fr/">Accueil</a></li>
<li><a href="/Scratch/fr/blog/">Blog</a></li>
<li><a href="/Scratch/fr/softwares/">Softwares</a></li></ul>
</div>
</div>
</div>
<img src="/Scratch/img/presentation.png" alt="Presentation drawing"/>
<div id="titre">
<h1>
YPassword
</h1>
</div>
<div class="flush"></div>
<div class="flush"></div>
<div id="afterheader">
<div class="corps">
<p>Une gestion <em>simple</em>, <em>sécurisée</em> et <em>portable</em> de ses mots de passes web.</p>
<p>Souvenez vous d&rsquo;<em>un</em> seul mot de passe de bonne qualité, le reste suis.
Lisez mon <a href="/Scratch/fr/blog/ypassword.html">article</a> pour les détails.</p>
<p>Ici vous trouverez&nbsp;:</p>
<ul>
<li>Un <a href="/Scratch/files/YPassword-1.6.zip">widget</a>&nbsp;;</li>
<li>un <a href="/Scratch/files/forcePaste.app.zip">Applescript</a> pour simuler la copie dans les champs textes protégés&nbsp;;</li>
<li>une <a href="/Scratch/en/softwares/ypassword/web/">application web</a> écrite avec <a href="http://cappuccino.org">Cappuccino</a>,</li>
<li>une <a href="/Scratch/en/softwares/ypassword/iphoneweb/">application web</a> pour iPhone&nbsp;;</li>
<li>un <a href="/Scratch/files/getpass">script utilisable en ligne de commande</a>.</li>
</ul>
<p>Dans peu de temps je créerai une application iPhone pour YPassword.</p>
<div class="return"><a href="#entete" onclick="fastShowMenu()">&uarr;</a></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">
modifié le : 05/10/2010
</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>
</body>
</html>

View file

@ -1,99 +0,0 @@
<?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="alternate" type="application/rss+xml" title="RSS" href="http://feeds.feedburner.com/yannespositocomfr"/>
<link rel="alternate" lang="fr" xml:lang="fr" title="YPassword" type="text/html" hreflang="fr" href="/Scratch/fr/softwares/ypassword/iphoneweb/" />
<link rel="alternate" lang="en" xml:lang="en" title="YPassword" type="text/html" hreflang="en" href="/Scratch/en/softwares/ypassword/iphoneweb/" />
<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>
<title>YPassword</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="entete">
<div id="choix">
<div id="choixrss">
<a id="rss" href="http://feeds.feedburner.com/yannespositocomfr">
s'abonner
</a>
</div>
<div id="choixlang">
<a href="/Scratch/en/softwares/ypassword/iphoneweb/" onclick="setLanguage('en')">in English</a>
</div>
<div id="liens">
<ul><li><a href="/Scratch/fr/">Accueil</a></li>
<li><a href="/Scratch/fr/blog/">Blog</a></li>
<li><a href="/Scratch/fr/softwares/">Softwares</a></li></ul>
</div>
</div>
</div>
<img src="/Scratch/img/presentation.png" alt="Presentation drawing"/>
<div id="titre">
<h1>
YPassword
</h1>
<h2>
Web Interface for iPhone
</h2>
</div>
<div class="flush"></div>
<div class="flush"></div>
<div id="afterheader">
<div class="corps">
<div style="text-align: center">
<iframe frameborder="0" height="180" scrolling="no" src="http://web.me.com/yann.esposito/YPassword.old" width="480">
<p>Votre navigateur ne supporte pas les <code>iframes</code>.</p>
</iframe>
</div>
<div class="return"><a href="#entete" onclick="fastShowMenu()">&uarr;</a></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">
modifié le : 05/10/2010
</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>
</body>
</html>

View file

@ -1,99 +0,0 @@
<?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="alternate" type="application/rss+xml" title="RSS" href="http://feeds.feedburner.com/yannespositocomfr"/>
<link rel="alternate" lang="fr" xml:lang="fr" title="YPassword" type="text/html" hreflang="fr" href="/Scratch/fr/softwares/ypassword/web/" />
<link rel="alternate" lang="en" xml:lang="en" title="YPassword" type="text/html" hreflang="en" href="/Scratch/en/softwares/ypassword/web/" />
<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>
<title>YPassword</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="entete">
<div id="choix">
<div id="choixrss">
<a id="rss" href="http://feeds.feedburner.com/yannespositocomfr">
s'abonner
</a>
</div>
<div id="choixlang">
<a href="/Scratch/en/softwares/ypassword/web/" onclick="setLanguage('en')">in English</a>
</div>
<div id="liens">
<ul><li><a href="/Scratch/fr/">Accueil</a></li>
<li><a href="/Scratch/fr/blog/">Blog</a></li>
<li><a href="/Scratch/fr/softwares/">Softwares</a></li></ul>
</div>
</div>
</div>
<img src="/Scratch/img/presentation.png" alt="Presentation drawing"/>
<div id="titre">
<h1>
YPassword
</h1>
<h2>
Cappuccino Web Application
</h2>
</div>
<div class="flush"></div>
<div class="flush"></div>
<div id="afterheader">
<div class="corps">
<div style="text-align: center">
<iframe frameborder="0" height="180" scrolling="no" src="http://web.me.com/yann.esposito/YPassword" width="480">
<p>Votre navigateur ne supporte pas les <code>iframes</code>.</p>
</iframe>
</div>
<div class="return"><a href="#entete" onclick="fastShowMenu()">&uarr;</a></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">
modifié le : 05/10/2010
</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>
</body>
</html>

View file

@ -1,87 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.google.com/schemas/sitemap/0.84">
<url>
<loc>http://yannesposito.com/Scratch/fr/about/contact/</loc>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/</loc>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/softwares/ypassword/web/</loc>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/softwares/yaquabubbles/</loc>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2010-09-02-base64-and-sha1-on-iPhone/</loc>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/softwares/</loc>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/softwares/</loc>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/feed/feed.xml</loc>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/softwares/yclock/</loc>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/about/old/</loc>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/about/old/</loc>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2010-09-02-Use-git-to-calculate-trusted-mtimes/</loc>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/softwares/ypassword/iphoneweb/</loc>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/</loc>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/softwares/yaquabubbles/</loc>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2010-09-02-base64-and-sha1-on-iPhone/</loc>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/softwares/yclock/</loc>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/softwares/ypassword/</loc>
</url>
<url>
<loc>http://yannesposito.com/Scratch/sitemap.xml</loc>
</url>
<url>
<loc>http://yannesposito.com/Scratch/assets/css/main.css</loc>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/feed/feed.xml</loc>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/softwares/ypassword/</loc>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/</loc>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/</loc>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2010-09-02-Use-git-to-calculate-trusted-mtimes/</loc>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/softwares/ypassword/iphoneweb/</loc>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/about/contact/</loc>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/softwares/ypassword/web/</loc>
</url>
</urlset>