Ignore more files
This commit is contained in:
parent
ad8260e5c3
commit
fd2ed3ef51
34 changed files with 4 additions and 3731 deletions
4
.gitignore
vendored
4
.gitignore
vendored
|
@ -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
|
@ -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()">↑</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>
|
|
@ -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&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. ✞ 2007
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="flush"></div>
|
||||
|
||||
<div class="return"><a href="#entete" onclick="fastShowMenu()">↑</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>
|
|
@ -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
|
|
@ -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">↓ Menu ↓</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’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"> ➥ 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"><<=</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> 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> 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> 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>
|
|
@ -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];
|
||||
}
|
|
@ -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">↓ Menu ↓</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"><</span>CommonCrypto/CommonDigest.h<span class="String">></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">@"</span>some NSString to be sha1'ed<span class="String">"</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">@"</span>some NSString to be sha1'ed<span class="String">"</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"> ➥ 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">"</span>ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/<span class="String">"</span></span>;
|
||||
<span class="Keyword">for</span> (<span class="Storage">int</span> i=<span class="Constant">0</span>; i<CC_SHA1_DIGEST_LENGTH; i+=<span class="Constant">3</span>) {
|
||||
password=[password stringByAppendingFormat:@<span class="String"><span class="String">"</span><span class="StringConstant">%c</span><span class="StringConstant">%c</span><span class="StringConstant">%c</span><span class="StringConstant">%c</span><span class="String">"</span></span>,
|
||||
cb64[(result[i] &<span class="Constant">0xFC</span>)>><span class="Constant">2</span>],
|
||||
cb64[((result[i] & <span class="Constant">0x03</span>) << <span class="Constant">4</span>)
|
||||
| ((result[i + <span class="Constant">1</span>] & <span class="Constant">0xF0</span>) >> <span class="Constant">4</span>)],
|
||||
cb64[((result[i + <span class="Constant">1</span>] & <span class="Constant">0x0F</span>) << <span class="Constant">2</span>)
|
||||
| ((result[i + <span class="Constant">2</span>] & <span class="Constant">0xC0</span>) >> <span class="Constant">6</span>)],
|
||||
cb64[result[i+<span class="Constant">2</span>]&<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<CC_SHA1_DIGEST_LENGTH; i++) {
|
||||
password=[password stringByAppendingFormat:@<span class="String"><span class="String">"</span><span class="StringConstant">%02x</span><span class="String">"</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> 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> 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 <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>
|
|
@ -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"><p>You can remark at the bottom of each page I provide a last modification date.
|
||||
This label was first calculated using the <code>mtime</code> of the file on the file system.
|
||||
But many times I modify this date just to force some recompilation.
|
||||
Therefore the date wasn&rsquo;t a date of <em>real</em> modification.</p>
|
||||
|
||||
<p>I use <a href="http://git-scm.org">git</a> to version my website.
|
||||
And fortunately I can know the last date of <em>real</em> change of a file.
|
||||
This is how I do this with <a href="http://nanoc.stoneship.org">nanoc</a>:</p>
|
||||
|
||||
<div class="code"><div class="file"><a href="/Scratch/en/blog/2010-09-02-Use-git-to-calculate-trusted-mtimes/code/gitmtime.rb"> &#x27A5; gitmtime.rb </a></div><div class="withfile">
|
||||
<pre class="twilight">
|
||||
<span class="Keyword">def</span> </pre></div></div></content>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>tag:yannesposito.com,2010-09-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"><p>Lets be straight:
|
||||
here are two functions to add to your code to have <code>base64</code> and <code>hexadecimal</code> version of the <code>sha1</code> hash of an NSString.</p>
|
||||
|
||||
<p>To use it, simply copy the code in your class and use as this:</p>
|
||||
|
||||
<pre class="twilight">
|
||||
<span class="CCCPreprocessorLine">#<span class="CCCPreprocessorDirective">import</span> <span class="String"><span class="String">&lt;</span>CommonCrypto/CommonDigest.h<span class="String">&gt;</span></span></span>
|
||||
...
|
||||
<span class="Support">NSString</span> *b64_hash = [<span class="Variable">self</span> <span class="SupportFunction">b64_sha1<span class="SupportFunction">:</span></span><span class="String"><span class="String">@&quot;</span>some NSString to be sha1'ed<span class="String">&quot;</span></span>];
|
||||
...
|
||||
</pre></content>
|
||||
</entry>
|
||||
</feed>
|
|
@ -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">⇓</span></a> </li>
|
||||
<li><a href="#tagcloud">Tag Cloud <span class="nicer">⇓</span></a></li>
|
||||
<li><a href="#archives">Archives <span class="nicer">⇓</span></a></li>
|
||||
<li><a href="#two-words-about-the-content">Two words about the content <span class="nicer">⇓</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">⇓</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">↑</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">↑</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">↑</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">↑</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">↑</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">↑</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’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…</p>
|
||||
|
||||
<p><strong> Thanks not to judge me based on these errors! And don’t forget content is more important than presentation! </strong></p>
|
||||
|
||||
<p>The first impression I’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()">↑</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>
|
|
@ -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’re looking at doesn’t exists on the server.
|
||||
If you have followed an internal link, you can tell me by mail and I’ll fix it as soon as possible.</p>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="corps">
|
||||
|
||||
|
||||
<p>La page que vous recherchez n’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>
|
|
@ -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">†</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">†</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’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"> ➥ 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"><</span>CommonCrypto/CommonDigest.h<span class="String">></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">@"</span>some NSString to be sha1'ed<span class="String">"</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()">↑</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>
|
|
@ -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()">↑</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>
|
|
@ -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">➥</span> YAquaBubbles.dmg</a></p>
|
||||
|
||||
|
||||
<div class="return"><a href="#entete" onclick="fastShowMenu()">↑</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>
|
|
@ -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">➥</span> YClock.dmg</a></p>
|
||||
|
||||
|
||||
<div class="return"><a href="#entete" onclick="fastShowMenu()">↑</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>
|
|
@ -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’ll soon release an iPhone application.</p>
|
||||
|
||||
<div class="return"><a href="#entete" onclick="fastShowMenu()">↑</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>
|
|
@ -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()">↑</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>
|
|
@ -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()">↑</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>
|
|
@ -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 “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()">↑</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>
|
|
@ -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&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. ✞ 2007
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="block left">
|
||||
<h3>
|
||||
<a href="http://web.me.com/yann.esposito/Perso/"> Famille <em>&</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()">↑</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>
|
|
@ -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
|
|
@ -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">↓ Menu ↓</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’à 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’un fichier pour engendrer tout le site de nouveau.
|
||||
Donc la date n’est pas nécessairement la <em>vraie</em> de modification du contenue.</p>
|
||||
|
||||
<p>J’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’un fichier.
|
||||
Voici comment je m’y prend avec <a href="http://nanoc.stoneship.org">nanoc</a> :</p>
|
||||
|
||||
<div class="code"><div class="file"><a href="/Scratch/fr/blog/2010-09-02-Use-git-to-calculate-trusted-mtimes/code/gitmtime.rb"> ➥ 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"><<=</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’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> 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> 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> 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>
|
|
@ -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];
|
||||
}
|
|
@ -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">↓ Menu ↓</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’essentiel :
|
||||
voici deux fonctions à intégrer à votre application iPhone pour afficher l’encodage en base64 ou en hexadecimal du hash sha1 d’un string en Objective-C pour iPhone.</p>
|
||||
|
||||
<p>Pour l’usage c’est très simple, copiez le code dans la classe de votre choix.
|
||||
Puis :</p>
|
||||
|
||||
<pre class="twilight">
|
||||
<span class="CCCPreprocessorLine">#<span class="CCCPreprocessorDirective">import</span> <span class="String"><span class="String"><</span>CommonCrypto/CommonDigest.h<span class="String">></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">@"</span>some NSString to be sha1'ed<span class="String">"</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">@"</span>some NSString to be sha1'ed<span class="String">"</span></span>];
|
||||
</pre>
|
||||
|
||||
<p>L’algorithme pour l’encodage en <code>base64</code> doit être programmé sur iPhone.
|
||||
Il n’y a pas de librairie officielle qui s’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"> ➥ 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">"</span>ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/<span class="String">"</span></span>;
|
||||
<span class="Keyword">for</span> (<span class="Storage">int</span> i=<span class="Constant">0</span>; i<CC_SHA1_DIGEST_LENGTH; i+=<span class="Constant">3</span>) {
|
||||
password=[password stringByAppendingFormat:@<span class="String"><span class="String">"</span><span class="StringConstant">%c</span><span class="StringConstant">%c</span><span class="StringConstant">%c</span><span class="StringConstant">%c</span><span class="String">"</span></span>,
|
||||
cb64[(result[i] &<span class="Constant">0xFC</span>)>><span class="Constant">2</span>],
|
||||
cb64[((result[i] & <span class="Constant">0x03</span>) << <span class="Constant">4</span>)
|
||||
| ((result[i + <span class="Constant">1</span>] & <span class="Constant">0xF0</span>) >> <span class="Constant">4</span>)],
|
||||
cb64[((result[i + <span class="Constant">1</span>] & <span class="Constant">0x0F</span>) << <span class="Constant">2</span>)
|
||||
| ((result[i + <span class="Constant">2</span>] & <span class="Constant">0xC0</span>) >> <span class="Constant">6</span>)],
|
||||
cb64[result[i+<span class="Constant">2</span>]&<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<CC_SHA1_DIGEST_LENGTH; i++) {
|
||||
password=[password stringByAppendingFormat:@<span class="String"><span class="String">"</span><span class="StringConstant">%02x</span><span class="String">"</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> 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> 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 <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>
|
|
@ -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"><p>Vous pouvez remarquer qu&rsquo;à la fin de chaque page je donne une date de dernière modification.
|
||||
Précédemment cette date était calculée en utilisant la date du fichier.
|
||||
Mais il arrive fréquemment que je fasse un <code>touch</code> d&rsquo;un fichier pour engendrer tout le site de nouveau.
|
||||
Donc la date n&rsquo;est pas nécessairement la <em>vraie</em> de modification du contenue.</p>
|
||||
|
||||
<p>J&rsquo;utilise <a href="http://git-scm.org">git</a> pour <em>versionner</em> mon site web.
|
||||
Et cet outil me permet de récupérer la dernière date de <em>vraie</em> modification d&rsquo;un fichier.
|
||||
Voici comment je m&rsquo;y prend avec <a href="http://nanoc.stoneship.org">nanoc</a>&nbsp;:</p>
|
||||
|
||||
<div class="code"><div class="file"></div></div></content>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>tag:yannesposito.com,2010-09-02:/Scratch/fr/blog/2010-09-02-base64-and-sha1-on-iPhone/</id>
|
||||
<title type="html">base64 et sha1 sur iPhone</title>
|
||||
<published>2010-09-01T22:02:17Z</published>
|
||||
<updated>2010-09-01T22:02:17Z</updated>
|
||||
<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"><p>Allons directement à l&rsquo;essentiel&nbsp;:
|
||||
voici deux fonctions à intégrer à votre application iPhone pour afficher l&rsquo;encodage en base64 ou en hexadecimal du hash sha1 d&rsquo;un string en Objective-C pour iPhone.</p>
|
||||
|
||||
<p>Pour l&rsquo;usage c&rsquo;est très simple, copiez le code dans la classe de votre choix.
|
||||
Puis&nbsp;:</p>
|
||||
|
||||
<pre class="twilight">
|
||||
<span class="CCCPreprocessorLine">#<span class="CCCPreprocessorDirective">import</span> <span class="String"><span class="String">&lt;</span>CommonCrypto/CommonDigest.h<span class="String">&gt;</span></span></span>
|
||||
...
|
||||
<span class="Support">NSString</span> *b64_hash = [<span class="Variable">self</span> <span class="SupportFunction">b64_sha1<span class="SupportFunction">:</span></span><span class="String"></span></pre></content>
|
||||
</entry>
|
||||
</feed>
|
|
@ -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">⇓</span></a></li>
|
||||
<li><a href="#tagcloud">Nuage de mots clés <span class="nicer">⇓</span></a></li>
|
||||
<li><a href="#archives">Archives <span class="nicer">⇓</span></a></li>
|
||||
<li><a href="#un-petit-mot-sur-le-contenu">Un petit mot sur le contenu <span class="nicer">⇓</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">⇓</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">↑</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">↑</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">↑</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">↑</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">↑</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">↑</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’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’est pas toujours évident.
|
||||
Il m’arrive de faire de nombreuses fautes d’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’impression que ce site laisse de moi n’est certainement pas l’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()">↑</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>
|
|
@ -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">†</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">†</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’à 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’un fichier pour engendrer tout le site de nouveau.
|
||||
Donc la date n’est pas nécessairement la <em>vraie</em> de modification du contenue.</p>
|
||||
|
||||
<p>J’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’un fichier.
|
||||
Voici comment je m’y prend avec <a href="http://nanoc.stoneship.org">nanoc</a> :</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’essentiel :
|
||||
voici deux fonctions à intégrer à votre application iPhone pour afficher l’encodage en base64 ou en hexadecimal du hash sha1 d’un string en Objective-C pour iPhone.</p>
|
||||
|
||||
<p>Pour l’usage c’est très simple, copiez le code dans la classe de votre choix.
|
||||
Puis :</p>
|
||||
|
||||
<pre class="twilight">
|
||||
<span class="CCCPreprocessorLine">#<span class="CCCPreprocessorDirective">import</span> <span class="String"><span class="String"><</span>CommonCrypto/CommonDigest.h<span class="String">></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">↑ back to top ↑</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()">↑</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>
|
|
@ -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()">↑</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>
|
|
@ -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’écran réalisé avec QuartzComposer.
|
||||
Il s’agissait d’un simple essai mais le résultat était plaisant.</p>
|
||||
|
||||
<p><a href="/Scratch/files/YAquaBubbles.dmg"><span class="nicer">➥</span> YAquaBubbles.dmg</a></p>
|
||||
|
||||
|
||||
<div class="return"><a href="#entete" onclick="fastShowMenu()">↑</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>
|
|
@ -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’écran qui vous donne l’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’images par seconde.</p>
|
||||
|
||||
<p><a href="/Scratch/files/YClock.dmg"><span class="nicer">➥</span> YClock.dmg</a></p>
|
||||
|
||||
|
||||
<div class="return"><a href="#entete" onclick="fastShowMenu()">↑</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>
|
|
@ -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’<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 :</p>
|
||||
|
||||
<ul>
|
||||
<li>Un <a href="/Scratch/files/YPassword-1.6.zip">widget</a> ;</li>
|
||||
<li>un <a href="/Scratch/files/forcePaste.app.zip">Applescript</a> pour simuler la copie dans les champs textes protégés ;</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 ;</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()">↑</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>
|
|
@ -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()">↑</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>
|
|
@ -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()">↑</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>
|
|
@ -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>
|
Loading…
Reference in a new issue