added latest presentation blog post

This commit is contained in:
Yann Esposito (Yogsototh) 2012-12-12 11:09:15 +01:00
parent e15e499705
commit 35eeaa4ea1
16 changed files with 3965 additions and 1021 deletions

11
Rules
View file

@ -46,17 +46,16 @@ compile '/html/*' do
# item[:extension] returns 'html.erb' for multi-dotted filename
ext = item[:extension].nil? ? nil : item[:extension].split('.').last
filter :ultraviolet # must be before kramdown
filter :graph
filter :description
filter :falacy
filter :blogimage
if ext == 'erb'
filter :erb
elsif ext == 'haml' || ext.nil?
filter :haml
elsif ext == 'md' || ext == 'markdown'
filter :ultraviolet # must be before kramdown
filter :graph
filter :description
filter :falacy
filter :blogimage
filter :erb # I'll try not to use ruby anymore inside content
filter :kramdown
# filter :math_repair # after kramdown

View file

@ -515,23 +515,16 @@ $hauteur_menu: 4em
$contentMargin: 0em
.encadre, .black, .red, .intro, .resume, .shadow
.encadre, .black, .intro, .resume, .shadow
padding: 2em
margin:
top: 2em
bottom: 2em
.encadre, .black, .red, .shadow
.encadre, .black, .shadow
+secondColor
pre .red
background: none
padding: 0
margin: auto
border: none
box-shadow: none
.intro, .resume
font-size: 0.9em
+highlight
@ -600,6 +593,9 @@ figure
text-align: center
margin: .5em 0
figure.left, figure.right
max-width: 30%
img.clean
border: none
background-color: none
@ -717,6 +713,11 @@ img
background: none
border: none
img.right
max-width: 30%
margin:
top: .6em
left: 2em
img.left
float: left
max-width: 30%
@ -1070,3 +1071,42 @@ a.cut
img
max-width: 80%
max-height: 6em
section.slide
border-color: $borderColor
border: solid 1px
margin-bottom: 1em
padding: .5em
.base03
color: $base03
.base02
color: $base02
.base01
color: $base01
.base00
color: $base00
.base0
color: $base0
.base1
color: $base1
.base2
color: $base2
.base3
color: $base3
.yellow
color: $yellow
.orange
color: $orange
.red
color: $red
.magenta
color: $magenta
.violet
color: $violet
.blue
color: $blue
.cyan
color: $cyan
.green
color: $green

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

169
crash.log
View file

@ -1,155 +1,44 @@
Crashlog created at 2012-10-05 10:57:23 +0200
Crashlog created at Wed Dec 12 10:36:06 +0100 2012
=== MESSAGE:
Sass::SyntaxError: Invalid CSS after "italic": expected expression (e.g. 1px, bold), was ";"
NoMethodError: undefined method `find_all' for Gem::Specification:Class
=== COMPILATION STACK:
- [item] /css/main/ (rep default)
(empty)
=== BACKTRACE:
0. content/css/main.sass:631
1. /var/lib/gems/1.9.1/gems/sass-3.1.19/lib/sass/scss/parser.rb:1010:in `expected'
2. /var/lib/gems/1.9.1/gems/sass-3.1.19/lib/sass/script/lexer.rb:191:in `expected!'
3. /var/lib/gems/1.9.1/gems/sass-3.1.19/lib/sass/script/parser.rb:465:in `assert_done'
4. /var/lib/gems/1.9.1/gems/sass-3.1.19/lib/sass/script/parser.rb:50:in `parse'
5. /var/lib/gems/1.9.1/gems/sass-3.1.19/lib/sass/script/parser.rb:140:in `parse'
6. /var/lib/gems/1.9.1/gems/sass-3.1.19/lib/sass/script.rb:31:in `parse'
7. /var/lib/gems/1.9.1/gems/sass-3.1.19/lib/sass/engine.rb:832:in `parse_script'
8. /var/lib/gems/1.9.1/gems/sass-3.1.19/lib/sass/engine.rb:593:in `parse_property'
9. /var/lib/gems/1.9.1/gems/sass-3.1.19/lib/sass/engine.rb:582:in `parse_property_or_rule'
10. /var/lib/gems/1.9.1/gems/sass-3.1.19/lib/sass/engine.rb:563:in `parse_line'
11. /var/lib/gems/1.9.1/gems/sass-3.1.19/lib/sass/engine.rb:456:in `build_tree'
12. /var/lib/gems/1.9.1/gems/sass-3.1.19/lib/sass/engine.rb:475:in `block in append_children'
13. /var/lib/gems/1.9.1/gems/sass-3.1.19/lib/sass/engine.rb:474:in `each'
14. /var/lib/gems/1.9.1/gems/sass-3.1.19/lib/sass/engine.rb:474:in `append_children'
15. /var/lib/gems/1.9.1/gems/sass-3.1.19/lib/sass/engine.rb:465:in `block in build_tree'
16. /var/lib/gems/1.9.1/gems/sass-3.1.19/lib/sass/engine.rb:458:in `each'
17. /var/lib/gems/1.9.1/gems/sass-3.1.19/lib/sass/engine.rb:458:in `build_tree'
18. /var/lib/gems/1.9.1/gems/sass-3.1.19/lib/sass/engine.rb:475:in `block in append_children'
19. /var/lib/gems/1.9.1/gems/sass-3.1.19/lib/sass/engine.rb:474:in `each'
20. /var/lib/gems/1.9.1/gems/sass-3.1.19/lib/sass/engine.rb:474:in `append_children'
21. /var/lib/gems/1.9.1/gems/sass-3.1.19/lib/sass/engine.rb:330:in `_to_tree'
22. /var/lib/gems/1.9.1/gems/sass-3.1.19/lib/sass/engine.rb:300:in `_render'
23. /var/lib/gems/1.9.1/gems/sass-3.1.19/lib/sass/engine.rb:247:in `render'
24. /var/lib/gems/1.9.1/gems/nanoc-3.4.0/lib/nanoc/filters/sass.rb:62:in `run'
25. /var/lib/gems/1.9.1/gems/nanoc-3.4.0/lib/nanoc/base/result_data/item_rep.rb:343:in `filter'
26. /var/lib/gems/1.9.1/gems/nanoc-3.4.0/lib/nanoc/base/compilation/item_rep_proxy.rb:47:in `filter'
27. /var/lib/gems/1.9.1/gems/nanoc-3.4.0/lib/nanoc/base/compilation/rule_context.rb:54:in `filter'
28. ./Rules:12:in `block in load'
29. /var/lib/gems/1.9.1/gems/nanoc-3.4.0/lib/nanoc/base/compilation/rule.rb:68:in `instance_eval'
30. /var/lib/gems/1.9.1/gems/nanoc-3.4.0/lib/nanoc/base/compilation/rule.rb:68:in `apply_to'
31. /var/lib/gems/1.9.1/gems/nanoc-3.4.0/lib/nanoc/base/compilation/compiler.rb:381:in `compile_rep'
32. /var/lib/gems/1.9.1/gems/nanoc-3.4.0/lib/nanoc/base/compilation/compiler.rb:337:in `block in compile_reps'
33. /var/lib/gems/1.9.1/gems/nanoc-3.4.0/lib/nanoc/base/compilation/compiler.rb:330:in `loop'
34. /var/lib/gems/1.9.1/gems/nanoc-3.4.0/lib/nanoc/base/compilation/compiler.rb:330:in `compile_reps'
35. /var/lib/gems/1.9.1/gems/nanoc-3.4.0/lib/nanoc/base/compilation/compiler.rb:85:in `run'
36. /var/lib/gems/1.9.1/gems/nanoc-3.4.0/lib/nanoc/base/source_data/site.rb:57:in `compile'
37. /var/lib/gems/1.9.1/gems/nanoc-3.4.0/lib/nanoc/cli/commands/compile.rb:57:in `run'
38. /var/lib/gems/1.9.1/gems/nanoc-3.4.0/lib/nanoc/cli/command_runner.rb:14:in `block in call'
39. /var/lib/gems/1.9.1/gems/nanoc-3.4.0/lib/nanoc/cli/error_handler.rb:63:in `handle_while'
40. /var/lib/gems/1.9.1/gems/nanoc-3.4.0/lib/nanoc/cli/error_handler.rb:26:in `handle_while'
41. /var/lib/gems/1.9.1/gems/nanoc-3.4.0/lib/nanoc/cli/command_runner.rb:13:in `call'
42. /var/lib/gems/1.9.1/gems/cri-2.3.0/lib/cri/command_dsl.rb:185:in `block in runner'
43. /var/lib/gems/1.9.1/gems/cri-2.3.0/lib/cri/command.rb:296:in `call'
44. /var/lib/gems/1.9.1/gems/cri-2.3.0/lib/cri/command.rb:296:in `run_this'
45. /var/lib/gems/1.9.1/gems/cri-2.3.0/lib/cri/command.rb:249:in `run'
46. /var/lib/gems/1.9.1/gems/cri-2.3.0/lib/cri/command.rb:262:in `run'
47. /var/lib/gems/1.9.1/gems/nanoc-3.4.0/lib/nanoc/cli.rb:47:in `block in run'
48. /var/lib/gems/1.9.1/gems/nanoc-3.4.0/lib/nanoc/cli/error_handler.rb:63:in `handle_while'
49. /var/lib/gems/1.9.1/gems/nanoc-3.4.0/lib/nanoc/cli/error_handler.rb:26:in `handle_while'
50. /var/lib/gems/1.9.1/gems/nanoc-3.4.0/lib/nanoc/cli.rb:44:in `run'
51. /var/lib/gems/1.9.1/gems/nanoc-3.4.0/bin/nanoc:19:in `<top (required)>'
52. /usr/local/bin/nanoc:19:in `load'
53. /usr/local/bin/nanoc:19:in `<main>'
0. /Library/Ruby/Gems/1.8/gems/nanoc-3.4.1/lib/nanoc/cli/error_handler.rb:272:in `gems_and_versions'
1. /Library/Ruby/Gems/1.8/gems/nanoc-3.4.1/lib/nanoc/cli/error_handler.rb:217:in `write_verbose_error'
2. /Library/Ruby/Gems/1.8/gems/nanoc-3.4.1/lib/nanoc/cli/error_handler.rb:92:in `print_error'
3. /Library/Ruby/Gems/1.8/gems/nanoc-3.4.1/lib/nanoc/cli/error_handler.rb:92:in `open'
4. /Library/Ruby/Gems/1.8/gems/nanoc-3.4.1/lib/nanoc/cli/error_handler.rb:92:in `print_error'
5. /Library/Ruby/Gems/1.8/gems/nanoc-3.4.1/lib/nanoc/cli/error_handler.rb:70:in `handle_while'
6. /Library/Ruby/Gems/1.8/gems/nanoc-3.4.1/lib/nanoc/cli/error_handler.rb:26:in `handle_while'
7. /Library/Ruby/Gems/1.8/gems/nanoc-3.4.1/lib/nanoc/cli/command_runner.rb:13:in `call'
8. /Library/Ruby/Gems/1.8/gems/cri-2.3.0/lib/cri/command_dsl.rb:185:in `runner'
9. /Library/Ruby/Gems/1.8/gems/cri-2.3.0/lib/cri/command.rb:296:in `call'
10. /Library/Ruby/Gems/1.8/gems/cri-2.3.0/lib/cri/command.rb:296:in `run_this'
11. /Library/Ruby/Gems/1.8/gems/cri-2.3.0/lib/cri/command.rb:249:in `run'
12. /Library/Ruby/Gems/1.8/gems/cri-2.3.0/lib/cri/command.rb:262:in `run'
13. /Library/Ruby/Gems/1.8/gems/nanoc-3.4.1/lib/nanoc/cli.rb:53:in `run'
14. /Library/Ruby/Gems/1.8/gems/nanoc-3.4.1/lib/nanoc/cli/error_handler.rb:63:in `handle_while'
15. /Library/Ruby/Gems/1.8/gems/nanoc-3.4.1/lib/nanoc/cli/error_handler.rb:26:in `handle_while'
16. /Library/Ruby/Gems/1.8/gems/nanoc-3.4.1/lib/nanoc/cli.rb:50:in `run'
17. /Library/Ruby/Gems/1.8/gems/nanoc-3.4.1/bin/nanoc:19
18. /usr/bin/nanoc:19:in `load'
19. /usr/bin/nanoc:19
=== VERSION INFORMATION:
nanoc 3.4.0 © 2007-2012 Denis Defreyne.
Running ruby 1.9.3 (2011-10-30) on i686-linux with RubyGems 1.8.11.
nanoc 3.4.1 © 2007-2012 Denis Defreyne.
Running ruby 1.8.7 (2012-02-08) on universal-darwin12.0 with RubyGems 1.3.6.
=== SYSTEM INFORMATION:
Darwin YMac.local 12.2.0 Darwin Kernel Version 12.2.0: Sat Aug 25 00:48:52 PDT 2012; root:xnu-2050.18.24~1/RELEASE_X86_64 x86_64
=== INSTALLED GEMS:
builder 3.0.0
colored 1.2
cri 2.2.1, 2.3.0
kgio 2.7.4
kramdown 0.13.5, 0.13.7
mime-types 1.18
nanoc 3.3.6, 3.4.0
rack 1.4.1
rack-contrib 1.1.0
rack-rewrite 1.2.1
raindrops 0.8.0, 0.9.0
rainpress 1.0
rake 0.9.2.2
sass 3.1.16, 3.1.19
spox-plist 3.0.1
spox-textpow 0.10.3
spox-ultraviolet 0.10.5
unicorn 4.3.1
=== ENVIRONMENT:
CAPP_BUILD => "/home/y/tmp/cappuccino/Build"
COLORTERM => "gnome-terminal"
DBUS_SESSION_BUS_ADDRESS => "unix:abstract=/tmp/dbus-Hp98B7Xjn9,guid=15354c350aefacc311107e5100000061"
DEFAULTS_PATH => "/usr/share/gconf/Lubuntu.default.path"
DEFAULT_GHC_OPTIONS => "-O2"
DESKTOP_SESSION => "Lubuntu"
DISPLAY => ":0"
GDMSESSION => "Lubuntu"
GDM_LANG => "fr"
GNOME_KEYRING_CONTROL => "/tmp/keyring-S5aOL0"
GNOME_KEYRING_PID => "1575"
GTK_MODULES => "canberra-gtk-module:canberra-gtk-module"
HOME => "/home/y"
LANG => "fr_FR.UTF-8"
LANGUAGE => "fr:en"
LOGNAME => "y"
LS_COLORS => "rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:"
MANDATORY_PATH => "/usr/share/gconf/Lubuntu.mandatory.path"
OLDPWD => "/home/y/Sites/webroot"
PATH => "/home/y/narwhal/bin:/home/y/.cabal/bin:/home/y/bin:/usr/local/bin:/usr/bin:/bin:/usr/games"
PWD => "/home/y/Sites/webroot"
SAL_USE_VCLPLUGIN => "gtk"
SHELL => "/usr/bin/zsh"
SHLVL => "3"
SSH_AGENT_PID => "1659"
SSH_AUTH_SOCK => "/tmp/keyring-S5aOL0/ssh"
TERM => "xterm"
UBUNTU_MENUPROXY => "libappmenu.so"
USER => "y"
USERNAME => "y"
WINDOWID => "39845892"
WINDOWPATH => "7"
XAUTHORITY => "/var/run/gdm/auth-for-y-FEu9Ou/database"
XDG_CONFIG_DIRS => "/etc/xdg/lubuntu/:/etc/xdg/xdg-Lubuntu:/etc/xdg"
XDG_CONFIG_HOME => "/home/y/.config"
XDG_CURRENT_DESKTOP => "LXDE"
XDG_DATA_DIRS => "/etc/xdg/lubuntu:/usr/share/Lubuntu:/usr/local/share/:/usr/share/:/usr/share:/usr/share/gdm:/var/lib/menu-xdg"
XDG_MENU_PREFIX => "lxde-"
XDG_SESSION_COOKIE => "2967f5ac8d4676a86149144a000004ac-1349250736.25162-1033128370"
_ => "/usr/local/bin/nanoc"
_LXSESSION_PID => "1592"
__GIT_PROMPT_DIR => "/home/y/.zsh/git-prompt"
=== $LOAD_PATH:
0. /var/lib/gems/1.9.1/gems/nanoc-3.4.0/lib
1. /var/lib/gems/1.9.1/gems/nanoc-3.4.0/lib
2. /var/lib/gems/1.9.1/gems/colored-1.2/lib
3. /var/lib/gems/1.9.1/gems/cri-2.3.0/lib
4. /var/lib/gems/1.9.1/gems/builder-3.0.0/lib
5. /var/lib/gems/1.9.1/gems/kramdown-0.13.7/lib
6. /var/lib/gems/1.9.1/gems/sass-3.1.19/lib
7. /usr/local/lib/site_ruby/1.9.1
8. /usr/local/lib/site_ruby/1.9.1/i686-linux
9. /usr/local/lib/site_ruby
10. /usr/lib/ruby/vendor_ruby/1.9.1
11. /usr/lib/ruby/vendor_ruby/1.9.1/i686-linux
12. /usr/lib/ruby/vendor_ruby
13. /usr/lib/ruby/1.9.1
14. /usr/lib/ruby/1.9.1/i686-linux

View file

@ -1 +1 @@
output/Scratch/img/blog/Haskell-OpenGL-Mandelbrot
./output/Scratch/img/blog/Category-Theory-Presentation

View file

@ -1 +1 @@
multi/blog/Haskell-OpenGL-Mandelbrot.md
multi/blog/Category-Theory-Presentation.md

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

View file

@ -2017,6 +2017,10 @@ O(n².log(n)) to O(n³).</p>
<div id="next_articles">
next entries
<div class="next_article">
<a href="/Scratch/en/blog/Category-Theory-Presentation/">Category Theory Presentation&nbsp;<span class="nicer">»</span></a>
</div>

View file

@ -2,13 +2,40 @@
<feed xmlns="http://www.w3.org/2005/Atom">
<id>http://yannesposito.com/</id>
<title>Yogsototh's last blogs entries</title>
<updated>2012-06-15T17:16:43Z</updated>
<link href="http://yannesposito.com/" rel="alternate"/>
<link href="http://feeds.feedburner.com/yannespositocomen" rel="self"/>
<updated>2012-12-12T08:06:40Z</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,2012-12-12:/Scratch/en/blog/Category-Theory-Presentation/</id>
<title type="html">Category Theory Presentation</title>
<published>2012-12-12T08:06:40Z</published>
<updated>2012-12-12T08:06:40Z</updated>
<author>
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link rel="alternate" href="http://yannesposito.com/Scratch/en/blog/Category-Theory-Presentation/"/>
<content type="html">&lt;img src="/keynote/categories/img/mp/cat-hask-endofunctor.png" alt="Cateogry of Hask's endofunctors"/&gt;
&lt;p&gt;Yesterday I was happy to make a presentation about Category Theory at &lt;a href="http://www.meetup.com/riviera-scala-clojure"&gt;Riviera Scala Clojure Meetup&lt;/a&gt; (note I used only Haskell for my examples).&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="/keynote/categories.html"&gt;Click here to go to the HTML presentation.&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/keynote/categories.pdf"&gt;Click Here to download the PDF slides (%latex not rendered properly)&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;If you don't want to read them through an HTML presentations framework or downloading a big PDF
just continue to read as a standard web page.
&lt;/p&gt;
&lt;div style="display:none"&gt;
\(\newcommand{\F}{\mathbf{F}}\)
\(\newcommand{\E}{\mathbf{E}}\)
\(\newcommand{\C}{\mathc...&lt;/div&gt;&lt;/img&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2012-06-15:/Scratch/en/blog/Haskell-OpenGL-Mandelbrot/</id>
<title type="html">Haskell Progressive Example</title>
@ -18,7 +45,7 @@
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/en/blog/Haskell-OpenGL-Mandelbrot/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/en/blog/Haskell-OpenGL-Mandelbrot/"/>
<content type="html">&lt;p&gt;&lt;img alt="The B in Beno&#238;t B. Mandelbrot stand for Beno&#238;t B. Mandelbrot" src="/Scratch/img/blog/Haskell-OpenGL-Mandelbrot/BenoitBMandelbrot.jpg" /&gt;&lt;/p&gt;
@ -44,7 +71,7 @@ Imperative language could also benefit from this functional organization.&lt;/p&
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/en/blog/Haskell-the-Hard-Way/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/en/blog/Haskell-the-Hard-Way/"/>
<content type="html">&lt;p&gt;&lt;img alt="Magritte pleasure principle" src="/Scratch/img/blog/Haskell-the-Hard-Way/magritte_pleasure_principle.jpg" /&gt;&lt;/p&gt;
@ -70,7 +97,7 @@ Imperative language could also benefit from this functional organization.&lt;/p&
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/en/blog/Typography-and-the-Web/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/en/blog/Typography-and-the-Web/"/>
<content type="html">&lt;p&gt;&lt;img alt="Screenshot of first in small caps with and without ligatures." src="/Scratch/img/blog/Typography-and-the-Web/first_sc_screenshot.png" /&gt;&lt;/p&gt;
@ -103,7 +130,7 @@ We can all create better web typography ourselves, today.&#187;&lt;/p&gt;
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/en/blog/Yesod-tutorial-for-newbies/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/en/blog/Yesod-tutorial-for-newbies/"/>
<content type="html">&lt;p&gt;&lt;img alt="Neo Flying at warp speed" src="/Scratch/img/blog/Yesod-tutorial-for-newbies/flying_neo.jpg" /&gt;&lt;/p&gt;
@ -138,7 +165,7 @@ You shouldn&amp;rsquo;t need to know Haskell. &lt;/p&gt;
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/en/blog/SVG-and-m4-fractals/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/en/blog/SVG-and-m4-fractals/"/>
<content type="html">&lt;p&gt;&lt;img alt="Yesod logo made in SVG and m4" src="/Scratch/img/blog/SVG-and-m4-fractals/main.png" /&gt;&lt;/p&gt;
@ -167,7 +194,7 @@ Then some believed it would be a good idea to invent many &lt;span class="sc"&gt
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/en/blog/Yesod-excellent-ideas/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/en/blog/Yesod-excellent-ideas/"/>
<content type="html">&lt;p&gt;&lt;img alt="Title image" src="/Scratch/img/blog/Yesod-excellent-ideas/main.png" /&gt;&lt;/p&gt;
@ -200,7 +227,7 @@ Before telling you why you should learn Haskell and use yesod, I will talk about
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/en/blog/Higher-order-function-in-zsh/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/en/blog/Higher-order-function-in-zsh/"/>
<content type="html">&lt;p&gt;&lt;img alt="Title image" src="/Scratch/img/blog/Higher-order-function-in-zsh/main.jpg" /&gt;&lt;/p&gt;
@ -247,7 +274,7 @@ $ mapl 'echo result $1' $(m...&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;</c
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/en/blog/programming-language-experience/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/en/blog/programming-language-experience/"/>
<content type="html">&lt;p&gt;&lt;img alt="Title image" src="/Scratch/img/blog/programming-language-experience/dragon.jpg" /&gt;&lt;/p&gt;
@ -280,7 +307,7 @@ It is not even good to lea...&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;</content>
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/en/blog/Learn-Vim-Progressively/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/en/blog/Learn-Vim-Progressively/"/>
<content type="html">&lt;p&gt;&lt;img alt="&#220;ber leet use vim!" src="/Scratch/img/blog/Learn-Vim-Progressively/uber_leet_use_vim.jpg" /&gt;&lt;/p&gt;
@ -314,7 +341,7 @@ It is hard to learn, but incredible to use.&lt;/p&gt;
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/en/blog/A-more-convenient-diff/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/en/blog/A-more-convenient-diff/"/>
<content type="html">&lt;p&gt;Diff is a very useful tool. But it is not so easy to read for us, simple mortal.&lt;/p&gt;
&lt;p&gt;This is why, when you use &lt;code&gt;git&lt;/code&gt; it will use a better formatting and colorize it.&lt;/p&gt;
@ -346,7 +373,7 @@ function colorize_diff {
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/en/blog/Haskell-Mandelbrot/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/en/blog/Haskell-Mandelbrot/"/>
<content type="html">&lt;p&gt;Here is the obfuscated code:&lt;/p&gt;
&lt;div class="codefile"&gt;&lt;a href="/Scratch/en/blog/Haskell-Mandelbrot/code/animandel.hs"&gt;&amp;#x27A5; animandel.hs&lt;/a&gt;&lt;/div&gt;
@ -369,7 +396,7 @@ main = putStrLn $ im ...&lt;/code&gt;&lt;/pre&gt;</content>
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/en/blog/Password-Management/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/en/blog/Password-Management/"/>
<content type="html">&lt;p&gt;&lt;img alt="Title image" src="/Scratch/img/blog/Password-Management/main.png" /&gt;&lt;/p&gt;
@ -402,7 +429,7 @@ It is both safe and easy to use everyday.&lt;/p&gt;
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/en/blog/2011-04-20-Now-hosted-on-github/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/en/blog/2011-04-20-Now-hosted-on-github/"/>
<content type="html">&lt;p&gt;&lt;img alt="Title image" src="/Scratch/img/blog/2011-04-20-Now-hosted-on-github/main.png" /&gt;&lt;/p&gt;
&lt;p&gt;I am now hosted on github.&lt;/p&gt;
@ -417,7 +444,7 @@ It is both safe and easy to use everyday.&lt;/p&gt;
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/en/blog/2011-01-03-Why-I-sadly-won-t-use-coffeescript/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/en/blog/2011-01-03-Why-I-sadly-won-t-use-coffeescript/"/>
<content type="html">&lt;p&gt;&lt;img alt="Title image" src="/Scratch/img/blog/2011-01-03-Why-I-sadly-won-t-use-coffeescript/main.png" /&gt;&lt;/p&gt;
@ -453,7 +480,7 @@ And as Denis said: &amp;ldquo;it is time to use Coffeescript as a javascript wit
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/en/blog/2011-01-03-Happy-New-Year/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/en/blog/2011-01-03-Happy-New-Year/"/>
<content type="html">&lt;p&gt;Happy New Year!&lt;/p&gt;
&lt;p&gt;I was busy during the last months.
@ -475,7 +502,7 @@ But I will revive a bit this blog.&lt;/p&gt;
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/en/blog/2010-10-26-LaTeX-like-macro-and-markdown/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/en/blog/2010-10-26-LaTeX-like-macro-and-markdown/"/>
<content type="html">
&lt;div class="intro"&gt;
@ -498,7 +525,7 @@ When we are used to &lt;span style="text-transform: uppercase"&gt;L&lt;sup style
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/en/blog/2010-10-14-Fun-with-wav/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/en/blog/2010-10-14-Fun-with-wav/"/>
<content type="html">
&lt;div class="intro"&gt;
@ -529,7 +556,7 @@ This is even more impressive know...&lt;/p&gt;</content>
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/en/blog/2010-10-10-Secure-eMail-on-Mac-in-few-steps/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/en/blog/2010-10-10-Secure-eMail-on-Mac-in-few-steps/"/>
<content type="html">&lt;p&gt;&lt;img alt="Title image" src="/Scratch/img/blog/2010-10-10-Secure-eMail-on-Mac-in-few-steps/main.png" class="clean " /&gt;&lt;/p&gt;
@ -567,7 +594,7 @@ Now I&amp;rsquo;m able to sign and encrypt my emails.&lt;/p&gt;
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/en/blog/2010-10-06-New-Blog-Design-Constraints/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/en/blog/2010-10-06-New-Blog-Design-Constraints/"/>
<content type="html">&lt;p&gt;I changed the design of my blog.
Now it should be far cleaner.
I believe I use no CSS3 feature and far less javascript.
@ -595,7 +622,7 @@ Then my new design obey to the following rules:&lt;/p&gt;
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/en/blog/2010-09-02-Use-git-to-calculate-trusted-mtimes/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/en/blog/2010-09-02-Use-git-to-calculate-trusted-mtimes/"/>
<content type="html">&lt;p&gt;You can remark at the bottom of each page I provide a last modification date.
This label was first calculated using the &lt;code&gt;mtime&lt;/code&gt; of the file on the file system.
But many times I modify this date just to force some recompilation.
@ -620,7 +647,7 @@ This is how I do this with &lt;a href="http://nanoc.stoneship.org"&gt;nanoc&lt;/
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/en/blog/2010-09-02-base64-and-sha1-on-iPhone/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/en/blog/2010-09-02-base64-and-sha1-on-iPhone/"/>
<content type="html">&lt;p&gt;Lets be straight:
here are two functions to add to your code to have &lt;code&gt;base64&lt;/code&gt; and &lt;code&gt;hexadecimal&lt;/code&gt; version of the &lt;code&gt;sha1&lt;/code&gt; hash of an NSString.&lt;/p&gt;
@ -649,7 +676,7 @@ NSString *hex_hash = [self hex_sha1:@"some NSString to be sha1'ed"];
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/en/blog/2010-08-31-send-mail-from-command-line-with-attached-file/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/en/blog/2010-08-31-send-mail-from-command-line-with-attached-file/"/>
<content type="html">&lt;p&gt;I had to send a mail using only command line.
I was surprised it isn&amp;rsquo;t straightforward at all.
I didn&amp;rsquo;t had &lt;code&gt;pine&lt;/code&gt; nor &lt;code&gt;mutt&lt;/code&gt; or anything like that.
@ -681,7 +708,7 @@ M;',@*0H@("`@9&amp;amp;-R/20H96-H;R`D;...&lt;/pre&gt;</content>
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/en/blog/2010-08-23-Now-heberged-on-heroku/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/en/blog/2010-08-23-Now-heberged-on-heroku/"/>
<content type="html">&lt;h1 class="first" id="now-on-herokuhttpherokucom"&gt;Now on &lt;a href="http://heroku.com"&gt;Heroku&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;I now changed my hosting to &lt;a href="http://heroku.com"&gt;Heroku&lt;/a&gt;.
@ -709,7 +736,7 @@ require 'rack-rewr...&lt;/code&gt;&lt;/pre&gt;</content>
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/en/blog/2010-07-09-Indecidabilities/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/en/blog/2010-07-09-Indecidabilities/"/>
<content type="html">
</content>
</entry>
@ -722,7 +749,7 @@ require 'rack-rewr...&lt;/code&gt;&lt;/pre&gt;</content>
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/en/blog/2010-07-31-New-style-after-holidays/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/en/blog/2010-07-31-New-style-after-holidays/"/>
<content type="html">&lt;p&gt;Before my holidays many visitors tell me my website was too long to scroll.
This is why I completely changed my website design.
Now all should scroll smoothly on all platforms.
@ -740,7 +767,7 @@ I was inspired by Readability and iBooks&lt;small&gt;&amp;copy;&lt;/small&gt; (t
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/en/blog/2010-07-07-CSS-rendering-problems-by-navigator/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/en/blog/2010-07-07-CSS-rendering-problems-by-navigator/"/>
<content type="html">&lt;p&gt;Some &lt;a href="http://reddit.com"&gt;Reddit&lt;/a&gt; users reported my website was really long to load and to scroll.
They thinks it was because of the &amp;lsquo;1px shadow&amp;rsquo; I apply on all the text.
I was a bit surprised, because I make some test into a really &lt;em&gt;slow&lt;/em&gt; virtual machine. And all have always worked fine. In fact, what slow down so much are by order of importance:&lt;/p&gt;
@ -765,7 +792,7 @@ I was a bit surprised, because I make some test into a really &lt;em&gt;slow&lt;
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/en/blog/2010-07-05-Cappuccino-and-Web-applications/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/en/blog/2010-07-05-Cappuccino-and-Web-applications/"/>
<content type="html">
&lt;div class="intro"&gt;
@ -800,7 +827,7 @@ Nonetheless I used these two to make the same web application. This is why I com
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/en/blog/2010-06-19-jQuery-popup-the-easy-way/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/en/blog/2010-06-19-jQuery-popup-the-easy-way/"/>
<content type="html">&lt;p&gt;Here is a fast and easy way to create jQuery popup.&lt;/p&gt;
&lt;div class="codefile"&gt;&lt;a href="/Scratch/en/blog/2010-06-19-jQuery-popup-the-easy-way/code/essai.js"&gt;&amp;#x27A5; essai.js&lt;/a&gt;&lt;/div&gt;
@ -833,7 +860,7 @@ function initCode() {
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/en/blog/2010-06-17-hide-yourself-to-analytics/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/en/blog/2010-06-17-hide-yourself-to-analytics/"/>
<content type="html">&lt;p&gt;This is a way not to count your own visits to your blog.
First you should look on how &lt;a href="/Scratch/en/blog/2010-06-17-track-events-with-google-analytics"&gt;I handle analytics&lt;/a&gt;. All analytics are handled in one javascript file, this make things really convenient.&lt;/p&gt;
@ -862,7 +889,7 @@ First you should look on how &lt;a href="/Scratch/en/blog/2010-06-17-track-event
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/en/blog/2010-06-17-track-events-with-google-analytics/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/en/blog/2010-06-17-track-events-with-google-analytics/"/>
<content type="html">&lt;p&gt;Here is how to track all clicks on your website using google analytics asynchronously.&lt;/p&gt;
&lt;p&gt;First in your &lt;span class="sc"&gt;html&lt;/span&gt; you need to use &lt;a href="http://jquery.com"&gt;jQuery&lt;/a&gt; and a javscript file I named &lt;code&gt;yga.js&lt;/code&gt;:&lt;/p&gt;
@ -889,7 +916,7 @@ First you should look on how &lt;a href="/Scratch/en/blog/2010-06-17-track-event
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/en/blog/2010-06-15-Get-my-blog-engine/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/en/blog/2010-06-15-Get-my-blog-engine/"/>
<content type="html">&lt;p&gt;I published a &lt;em&gt;light&lt;/em&gt; version of my blog engine based on &lt;a href="http://nanoc.stoneship.org"&gt;nanoc&lt;/a&gt; yesterday night. By &lt;em&gt;light&lt;/em&gt;, I mean a lighter, more portable CSS (without round border).
You can get it on &lt;a href="http://github.com/yogsototh/nanoc3_blog"&gt;github.com&lt;/a&gt;.&lt;/p&gt;
@ -913,7 +940,7 @@ You can get it on &lt;a href="http://github.com/yogsototh/nanoc3_blog"&gt;github
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/en/blog/2010-06-14-multi-language-choices/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/en/blog/2010-06-14-multi-language-choices/"/>
<content type="html">&lt;p&gt;I translate most of my blog entries in French and English.
Most people advice me to have one file per language. Generally it ends with:&lt;/p&gt;
@ -949,7 +976,7 @@ Finally my files...&lt;/p&gt;</content>
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/en/blog/2010-05-24-Trees--Pragmatism-and-Formalism/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/en/blog/2010-05-24-Trees--Pragmatism-and-Formalism/"/>
<content type="html">
&lt;div class="intro"&gt;
@ -985,7 +1012,7 @@ I entered in the...&lt;/p&gt;</content>
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/en/blog/2010-05-19-How-to-cut-HTML-and-repair-it/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/en/blog/2010-05-19-How-to-cut-HTML-and-repair-it/"/>
<content type="html">&lt;p&gt;For my main page, you can see, a list of my latest blog entry. And you have the first part of each article. To accomplish that, I needed to include the begining of the entry and to cut it somewhere. But now, I had to repair this cutted HTML.&lt;/p&gt;
&lt;p&gt;Here is an example:&lt;/p&gt;
@ -1018,7 +1045,7 @@ I entered in the...&lt;/p&gt;</content>
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/en/blog/2010-05-17-at-least-this-blog-revive/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/en/blog/2010-05-17-at-least-this-blog-revive/"/>
<content type="html">&lt;p&gt;Hi all!&lt;/p&gt;
&lt;blockquote cite="http://www.madore.org/~david/weblog/2010-05.html#d.2010-05-12.1752"&gt;
@ -1043,7 +1070,7 @@ I entered in the...&lt;/p&gt;</content>
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/en/blog/2010-03-23-Encapsulate-git/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/en/blog/2010-03-23-Encapsulate-git/"/>
<content type="html">&lt;div class="intro"&gt;
Here is a solution to maintain divergent branches in git. Because it is easy to merge by mistake. I give a script that encapsulate git in order to forbid some merge and warn you some merge should be dangerous.
&lt;/div&gt;
@ -1073,7 +1100,7 @@ clientB: project adapted for client B&lt;/p&gt;
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/en/blog/2010-03-22-Git-Tips/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/en/blog/2010-03-22-Git-Tips/"/>
<content type="html">&lt;h2 class="first" id="clone-from-github-behind-an-evil-firewall"&gt;clone from github behind an evil firewall&lt;/h2&gt;
&lt;p&gt;Standard:&lt;/p&gt;
@ -1121,7 +1148,7 @@ clientB: project adapted for client B&lt;/p&gt;
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/en/blog/2010-02-23-When-regexp-is-not-the-best-solution/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/en/blog/2010-02-23-When-regexp-is-not-the-best-solution/"/>
<content type="html">&lt;p&gt;Regular expression are really useful. Unfortunately, they are not always the best way of doing things.
Particularly when transformations you want to make are easy.&lt;/p&gt;
@ -1155,7 +1182,7 @@ ext=File.extname(str)
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/en/blog/2010-02-18-split-a-file-by-keyword/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/en/blog/2010-02-18-split-a-file-by-keyword/"/>
<content type="html">&lt;p&gt;Strangely enough, I didn&amp;rsquo;t find any built-in tool to split a file by keyword. I made one myself in &lt;code&gt;awk&lt;/code&gt;. I put it here mostly for myself. But it could also helps someone else.
The following code split a file for each line containing the word &lt;code&gt;UTC&lt;/code&gt;.&lt;/p&gt;
@ -1189,33 +1216,4 @@ BEGIN{i=0;}
if ( date != olddate ) {
...&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2010-02-16:/Scratch/en/blog/2010-02-16-All-but-something-regexp--2-/</id>
<title type="html">Pragmatic Regular Expression Exclude (2)</title>
<published>2010-02-16T08:33:21Z</published>
<updated>2010-02-16T08:33:21Z</updated>
<author>
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/en/blog/2010-02-16-All-but-something-regexp--2-/" rel="alternate"/>
<content type="html">&lt;p&gt;In my &lt;a href="previouspost"&gt;previous post&lt;/a&gt; I had given some trick to match all except something. On the same idea, the trick to match the smallest possible string. Say you want to match the string between &amp;lsquo;a&amp;rsquo; and &amp;lsquo;b&amp;rsquo;, for example, you want to match:&lt;/p&gt;
&lt;pre class="twilight"&gt;
a.....&lt;span class="Constant"&gt;&lt;strong&gt;a......b&lt;/strong&gt;&lt;/span&gt;..b..a....&lt;span class="Constant"&gt;&lt;strong&gt;a....b&lt;/strong&gt;&lt;/span&gt;...
&lt;/pre&gt;
&lt;p&gt;Here are two common errors and a solution:&lt;/p&gt;
&lt;pre class="twilight"&gt;
/a.*b/
&lt;span class="Constant"&gt;&lt;strong&gt;a.....a......b..b..a....a....b&lt;/strong&gt;&lt;/span&gt;...
&lt;/pre&gt;
&lt;p&gt;The first error is to use the &lt;em&gt;evil&lt;/em&gt; &lt;code&gt;.*&lt;/code&gt;. Because you will match from the first to the last.&lt;/p&gt;
&lt;pre class="twilight"&gt;
/a.*?b/
&lt;span class="Constant"&gt;&lt;strong&gt;...&lt;/strong&gt;&lt;/span&gt;&lt;/pre&gt;</content>
</entry>
</feed>

View file

@ -2017,6 +2017,10 @@ O(n².log(n)) to O(n³).</p>
<div id="next_articles">
articles suivants
<div class="next_article">
<a href="/Scratch/fr/blog/Category-Theory-Presentation/">Category Theory Presentation&nbsp;<span class="nicer">»</span></a>
</div>

View file

@ -2,13 +2,40 @@
<feed xmlns="http://www.w3.org/2005/Atom">
<id>http://yannesposito.com/</id>
<title>Yogsototh's last blogs entries</title>
<updated>2012-06-15T17:16:43Z</updated>
<link href="http://yannesposito.com/" rel="alternate"/>
<link href="http://feeds.feedburner.com/yannespositocomfr" rel="self"/>
<updated>2012-12-12T08:06:40Z</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,2012-12-12:/Scratch/fr/blog/Category-Theory-Presentation/</id>
<title type="html">Category Theory Presentation</title>
<published>2012-12-12T08:06:40Z</published>
<updated>2012-12-12T08:06:40Z</updated>
<author>
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link rel="alternate" href="http://yannesposito.com/Scratch/fr/blog/Category-Theory-Presentation/"/>
<content type="html">&lt;img src="/keynote/categories/img/mp/cat-hask-endofunctor.png" alt="Cateogry of Hask's endofunctors"/&gt;
&lt;p&gt;Yesterday I was happy to make a presentation about Category Theory at &lt;a href="http://www.meetup.com/riviera-scala-clojure"&gt;Riviera Scala Clojure Meetup&lt;/a&gt; (note I used only Haskell for my examples).&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="/keynote/categories.html"&gt;Click here to go to the HTML presentation.&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/keynote/categories.pdf"&gt;Click Here to download the PDF slides (%latex not rendered properly)&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;If you don't want to read them through an HTML presentations framework or downloading a big PDF
just continue to read as a standard web page.
&lt;/p&gt;
&lt;div style="display:none"&gt;
\(\newcommand{\F}{\mathbf{F}}\)
\(\newcommand{\E}{\mathbf{E}}\)
\(\newcommand{\C}{\mathc...&lt;/div&gt;&lt;/img&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2012-06-15:/Scratch/fr/blog/Haskell-OpenGL-Mandelbrot/</id>
<title type="html">Un example progressif avec Haskell</title>
@ -18,7 +45,7 @@
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/fr/blog/Haskell-OpenGL-Mandelbrot/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/fr/blog/Haskell-OpenGL-Mandelbrot/"/>
<content type="html">&lt;p&gt;&lt;img alt="The B in Beno&#238;t B. Mandelbrot stand for Beno&#238;t B. Mandelbrot" src="/Scratch/img/blog/Haskell-OpenGL-Mandelbrot/BenoitBMandelbrot.jpg" /&gt;&lt;/p&gt;
@ -44,7 +71,7 @@ Vous pouvez vous inspirer de ce code utilisant le paradigme fonctional dans tous
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/fr/blog/Haskell-the-Hard-Way/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/fr/blog/Haskell-the-Hard-Way/"/>
<content type="html">&lt;p&gt;&lt;img alt="Magritte pleasure principle" src="/Scratch/img/blog/Haskell-the-Hard-Way/magritte_pleasure_principle.jpg" /&gt;&lt;/p&gt;
@ -67,7 +94,7 @@ Vous pouvez vous inspirer de ce code utilisant le paradigme fonctional dans tous
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/fr/blog/Typography-and-the-Web/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/fr/blog/Typography-and-the-Web/"/>
<content type="html">&lt;p&gt;&lt;img alt="Screenshot of first in small caps with and without ligatures." src="/Scratch/img/blog/Typography-and-the-Web/first_sc_screenshot.png" /&gt;&lt;/p&gt;
@ -102,7 +129,7 @@ Nous pouv...&lt;/p&gt;&lt;/blockquote&gt;&lt;/p&gt;</content>
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/fr/blog/Yesod-tutorial-for-newbies/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/fr/blog/Yesod-tutorial-for-newbies/"/>
<content type="html">&lt;p&gt;&lt;img alt="Neo Flying at warp speed" src="/Scratch/img/blog/Yesod-tutorial-for-newbies/flying_neo.jpg" /&gt;&lt;/p&gt;
@ -133,7 +160,7 @@ mais je n&amp;rsquo;ai pas eu le courage de traduire cet article en Fran&#231;ai
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/fr/blog/SVG-and-m4-fractals/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/fr/blog/SVG-and-m4-fractals/"/>
<content type="html">&lt;p&gt;&lt;img alt="Yesod logo made in SVG and m4" src="/Scratch/img/blog/SVG-and-m4-fractals/main.png" /&gt;&lt;/p&gt;
@ -161,7 +188,7 @@ Non seulement comme format de fichie...&lt;/p&gt;&lt;/p&gt;</content>
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/fr/blog/Yesod-excellent-ideas/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/fr/blog/Yesod-excellent-ideas/"/>
<content type="html">&lt;p&gt;&lt;img alt="Title image" src="/Scratch/img/blog/Yesod-excellent-ideas/main.png" /&gt;&lt;/p&gt;
@ -193,7 +220,7 @@ Avant de vous dire pourquoi vous devriez aussi le consid&#233;rer, je pr&#233;f&
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/fr/blog/Higher-order-function-in-zsh/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/fr/blog/Higher-order-function-in-zsh/"/>
<content type="html">&lt;p&gt;&lt;img alt="Title image" src="/Scratch/img/blog/Higher-order-function-in-zsh/main.jpg" /&gt;&lt;/p&gt;
@ -236,7 +263,7 @@ $ mapa '$1*2...&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;</content>
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/fr/blog/programming-language-experience/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/fr/blog/programming-language-experience/"/>
<content type="html">&lt;p&gt;&lt;img alt="Title image" src="/Scratch/img/blog/programming-language-experience/dragon.jpg" /&gt;&lt;/p&gt;
@ -267,7 +294,7 @@ C&amp;rsquo;est &#224; peu pr&#234;t le seul int&#233;r&#234;t de ce ...&lt;/p&g
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/fr/blog/Learn-Vim-Progressively/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/fr/blog/Learn-Vim-Progressively/"/>
<content type="html">&lt;p&gt;&lt;img alt="&#220;ber leet use vim!" src="/Scratch/img/blog/Learn-Vim-Progressively/uber_leet_use_vim.jpg" /&gt;&lt;/p&gt;
@ -299,7 +326,7 @@ Sa prise en mais est difficile, mais p...&lt;/p&gt;&lt;/p&gt;</content>
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/fr/blog/A-more-convenient-diff/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/fr/blog/A-more-convenient-diff/"/>
<content type="html">&lt;p&gt;&lt;code&gt;diff&lt;/code&gt; est un utilitaire tr&#232;s pratique, mais il n&amp;rsquo;est pas facile &#224; lire pour nous, les Hommes.&lt;/p&gt;
&lt;p&gt;C&amp;rsquo;est pourquoi, lorsque vous utilisez &lt;code&gt;git&lt;/code&gt;, il vous montre un formatage plus agr&#233;able avec des couleurs.&lt;/p&gt;
@ -331,7 +358,7 @@ function colorize_diff {
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/fr/blog/Haskell-Mandelbrot/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/fr/blog/Haskell-Mandelbrot/"/>
<content type="html">&lt;p&gt;Voici le code &amp;ldquo;obfusqu&#233;&amp;rdquo;&amp;nbsp;:&lt;/p&gt;
&lt;div class="codefile"&gt;&lt;a href="/Scratch/fr/blog/Haskell-Mandelbrot/code/animandel.hs"&gt;&amp;#x27A5; animandel.hs&lt;/a&gt;&lt;/div&gt;
@ -354,7 +381,7 @@ main ...&lt;/code&gt;&lt;/pre&gt;</content>
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/fr/blog/Password-Management/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/fr/blog/Password-Management/"/>
<content type="html">&lt;p&gt;&lt;img alt="Title image" src="/Scratch/img/blog/Password-Management/main.png" /&gt;&lt;/p&gt;
@ -384,7 +411,7 @@ Bon, d&amp;rsquo;accord, m&#234;me si vous ne t&#233;l&#233;chargez pas mon appl
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/fr/blog/2011-04-20-Now-hosted-on-github/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/fr/blog/2011-04-20-Now-hosted-on-github/"/>
<content type="html">&lt;p&gt;&lt;img alt="Title image" src="/Scratch/img/blog/2011-04-20-Now-hosted-on-github/main.png" /&gt;&lt;/p&gt;
&lt;p&gt;J&amp;rsquo;h&#233;berge mon site sur github &#224; partir d&amp;rsquo;aujourd&amp;rsquo;hui.&lt;/p&gt;
@ -399,7 +426,7 @@ Bon, d&amp;rsquo;accord, m&#234;me si vous ne t&#233;l&#233;chargez pas mon appl
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/fr/blog/2011-01-03-Why-I-sadly-won-t-use-coffeescript/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/fr/blog/2011-01-03-Why-I-sadly-won-t-use-coffeescript/"/>
<content type="html">&lt;p&gt;&lt;img alt="Title image" src="/Scratch/img/blog/2011-01-03-Why-I-sadly-won-t-use-coffeescript/main.png" /&gt;&lt;/p&gt;
@ -429,7 +456,7 @@ Tout d&amp;rsquo;abord, je viens de d&#233;couvrir un convertisseur javascript v
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/fr/blog/2011-01-03-Happy-New-Year/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/fr/blog/2011-01-03-Happy-New-Year/"/>
<content type="html">&lt;p&gt;Bonne et heureuse ann&#233;e&amp;nbsp;!&lt;/p&gt;
&lt;p&gt;J&amp;rsquo;&#233;tais tr&#232;s occup&#233; ces derniers mois.
@ -454,7 +481,7 @@ Je n&amp;rsquo;en ai pas encore termin&#233; avec &#231;a. Mais si je tarde trop
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/fr/blog/2010-10-26-LaTeX-like-macro-and-markdown/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/fr/blog/2010-10-26-LaTeX-like-macro-and-markdown/"/>
<content type="html">
&lt;div class="intro"&gt;
@ -477,7 +504,7 @@ Lorsqu&amp;rsquo;on est habitu&#233; &#224; &lt;span style="text-transform: uppe
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/fr/blog/2010-10-14-Fun-with-wav/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/fr/blog/2010-10-14-Fun-with-wav/"/>
<content type="html">
&lt;div class="intro"&gt;
@ -505,7 +532,7 @@ De m&#233;moire il &#233;tait peu ais&#233; de manipuler des ...&lt;/p&gt;</cont
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/fr/blog/2010-10-10-Secure-eMail-on-Mac-in-few-steps/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/fr/blog/2010-10-10-Secure-eMail-on-Mac-in-few-steps/"/>
<content type="html">&lt;p&gt;&lt;img alt="Title image" src="/Scratch/img/blog/2010-10-10-Secure-eMail-on-Mac-in-few-steps/main.png" class="clean " /&gt;&lt;/p&gt;
@ -538,7 +565,7 @@ Il y a seulement quelques ann&#233;es c&amp;r...&lt;/p&gt;&lt;/p&gt;</content>
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/fr/blog/2010-10-06-New-Blog-Design-Constraints/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/fr/blog/2010-10-06-New-Blog-Design-Constraints/"/>
<content type="html">&lt;p&gt;Vous avez pu constater que j&amp;rsquo;ai modifi&#233; le design de mon blog.
Maintenant il doit &#234;tre beaucoup plus l&#233;ger qu&amp;rsquo;avant.
Je n&amp;rsquo;utilise plus de CSS3 et beaucoup moins de javascript.
@ -561,7 +588,7 @@ Les r&#232;gles que je me suis fix&#233;es sont donc:&lt;/p&gt;
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/fr/blog/2010-09-02-Use-git-to-calculate-trusted-mtimes/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/fr/blog/2010-09-02-Use-git-to-calculate-trusted-mtimes/"/>
<content type="html">&lt;p&gt;Vous pouvez remarquer qu&amp;rsquo;&#224; la fin de chaque page je donne une date de derni&#232;re modification.
Pr&#233;c&#233;demment cette date &#233;tait calcul&#233;e en utilisant la date du fichier.
Mais il arrive fr&#233;quemment que je fasse un &lt;code&gt;touch&lt;/code&gt; d&amp;rsquo;un fichier pour engendrer tout le site de nouveau.
@ -582,7 +609,7 @@ Voici comment je m&amp;rsquo;y prend avec &lt;a href="http://nanoc.stoneship.org
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/fr/blog/2010-09-02-base64-and-sha1-on-iPhone/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/fr/blog/2010-09-02-base64-and-sha1-on-iPhone/"/>
<content type="html">&lt;p&gt;Allons directement &#224; l&amp;rsquo;essentiel&amp;nbsp;:
voici deux fonctions &#224; int&#233;grer &#224; votre application iPhone pour afficher l&amp;rsquo;encodage en base64 ou en hexadecimal du hash sha1 d&amp;rsquo;un string en Objective-C pour iPhone.&lt;/p&gt;
@ -610,7 +637,7 @@ Il n&amp;rsquo;y a pas de librairie officielle qui s&amp;rsquo;occupe de &#231;a
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/fr/blog/2010-08-31-send-mail-from-command-line-with-attached-file/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/fr/blog/2010-08-31-send-mail-from-command-line-with-attached-file/"/>
<content type="html">&lt;p&gt;J&amp;rsquo;ai d&#251; envoyer un mail en ligne de commande r&#233;cemment.
Quelle ne f&#251;t pas ma surprise lorsque je constatais que ce n&amp;rsquo;&#233;tait vraiment pas &#233;vident.
Je n&amp;rsquo;avais ni &lt;code&gt;pine&lt;/code&gt; ni &lt;code&gt;mutt&lt;/code&gt;. Seulement &lt;code&gt;mail&lt;/code&gt; et &lt;code&gt;mailx&lt;/code&gt;.&lt;/p&gt;
@ -635,7 +662,7 @@ Avec le format &lt;code&gt;.bz2&lt;/code&gt; le mail re&#231;u avait bien un fic
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/fr/blog/2010-08-23-Now-heberged-on-heroku/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/fr/blog/2010-08-23-Now-heberged-on-heroku/"/>
<content type="html">&lt;h1 class="first" id="maintenant-sur-herokuhttpherokucom"&gt;Maintenant sur &lt;a href="http://heroku.com"&gt;Heroku&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;J&amp;rsquo;ai chang&#233; mon h&#233;bergeur. Mobileme n&amp;rsquo;est absolument pas adapt&#233; &#224; la diffusion de mon blog. C&amp;rsquo;est pourquoi je suis pass&#233; &#224; &lt;a href="http://heroku.com"&gt;Heroku&lt;/a&gt;.&lt;/p&gt;
@ -656,7 +683,7 @@ Voici comment configurer un site statique sur heroku.&lt;/p&gt;
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/fr/blog/2010-07-09-Indecidabilities/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/fr/blog/2010-07-09-Indecidabilities/"/>
<content type="html">
</content>
</entry>
@ -669,7 +696,7 @@ Voici comment configurer un site statique sur heroku.&lt;/p&gt;
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/fr/blog/2010-07-31-New-style-after-holidays/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/fr/blog/2010-07-31-New-style-after-holidays/"/>
<content type="html">&lt;p&gt;Avant les vacances beaucoup d&amp;rsquo;utilisateurs se sont plaints de la lenteur de rendu de mon site.
Il s&amp;rsquo;agit notamment de probl&#232;mes avec Chrome en particulier.
Mais pour &#233;viter tout probl&#232;me.
@ -688,7 +715,7 @@ Il est inspir&#233; du style de l&amp;rsquo;application iBooks&lt;small&gt;&amp;
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/fr/blog/2010-07-07-CSS-rendering-problems-by-navigator/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/fr/blog/2010-07-07-CSS-rendering-problems-by-navigator/"/>
<content type="html">&lt;p&gt;Beaucoup d&amp;rsquo;utilisateurs de &lt;a href="http://reddit.com"&gt;Reddit&lt;/a&gt; m&amp;rsquo;ont rapport&#233; que mon site &#233;tait tr&#232;s long &#224; charger et &#224; &lt;em&gt;scroller&lt;/em&gt;.
Ils pensaient qu&amp;rsquo;il s&amp;rsquo;agissait d&amp;rsquo;un probl&#232;me d&#251; aux ombres que j&amp;rsquo;applique sur le texte.
J&amp;rsquo;&#233;tais un peu surpris puisque je fais mes tests sur une machine vraiment tr&#232;s lente et je n&amp;rsquo;avais jamais d&#233;tect&#233; ces probl&#232;mes.
@ -712,7 +739,7 @@ En r&#233;alit&#233;, ce qui ralenti le rendu de ce site est par ordre d&amp;rsq
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/fr/blog/2010-07-05-Cappuccino-and-Web-applications/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/fr/blog/2010-07-05-Cappuccino-and-Web-applications/"/>
<content type="html">
&lt;div class="intro"&gt;
@ -746,7 +773,7 @@ En r&#233;alit&#233;, ce qui ralenti le rendu de ce site est par ordre d&amp;rsq
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/fr/blog/2010-06-19-jQuery-popup-the-easy-way/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/fr/blog/2010-06-19-jQuery-popup-the-easy-way/"/>
<content type="html">&lt;p&gt;Voici une fa&#231;on simple et rapide pour faire des popups avec jQuery.&lt;/p&gt;
&lt;div class="codefile"&gt;&lt;a href="/Scratch/fr/blog/2010-06-19-jQuery-popup-the-easy-way/code/essai.js"&gt;&amp;#x27A5; essai.js&lt;/a&gt;&lt;/div&gt;
@ -779,7 +806,7 @@ function initCode() {
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/fr/blog/2010-06-17-hide-yourself-to-analytics/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/fr/blog/2010-06-17-hide-yourself-to-analytics/"/>
<content type="html">&lt;p&gt;Voici un moyen tr&#232;s simple de ne plus &#234;tre comptabilis&#233; dans les visites de son propre site.
Tout d&amp;rsquo;abord, vous devriez jeter un coup d&amp;rsquo;&#339;il sur comment &lt;a href="/Scratch/fr/blog/2010-06-17-track-events-with-google-analytics"&gt;je g&#232;re les syst&#232;mes de r&#233;cup&#233;ration de statistiques&lt;/a&gt;.
Je centralise tout dans un seul fichier javascript ce qui facilite le travail.&lt;/p&gt;
@ -803,7 +830,7 @@ Je centralise tout dans un seul fichier javascript ce qui facilite le travail.&l
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/fr/blog/2010-06-17-track-events-with-google-analytics/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/fr/blog/2010-06-17-track-events-with-google-analytics/"/>
<content type="html">&lt;p&gt;Voici comment analyser tous les clics que font vos utilisateurs sur votre blog en incluant google analytics de fa&#231;on asynchrone.&lt;/p&gt;
&lt;p&gt;Dans le html, il faut utiliser &lt;a href="http://jquery.com"&gt;jQuery&lt;/a&gt; et un fichier que j&amp;rsquo;ai appel&#233; &lt;code&gt;yga.js&lt;/code&gt;&amp;nbsp;:&lt;/p&gt;
@ -829,7 +856,7 @@ Je centralise tout dans un seul fichier javascript ce qui facilite le travail.&l
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/fr/blog/2010-06-15-Get-my-blog-engine/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/fr/blog/2010-06-15-Get-my-blog-engine/"/>
<content type="html">&lt;p&gt;J&amp;rsquo;ai publi&#233; une version &lt;em&gt;light&lt;/em&gt; de mon syst&#232;me de blog hier soir. Par &lt;em&gt;light&lt;/em&gt; il faut comprendre avec un CSS plus &#233;pur&#233; et plus portable (sans les bords ronds).
Vous pouvez le r&#233;cup&#233;rer sur &lt;a href="http://github.com/yogsototh/nanoc3_blog"&gt;github.com&lt;/a&gt;.&lt;/p&gt;
@ -851,7 +878,7 @@ Vous pouvez le r&#233;cup&#233;rer sur &lt;a href="http://github.com/yogsototh/n
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/fr/blog/2010-06-14-multi-language-choices/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/fr/blog/2010-06-14-multi-language-choices/"/>
<content type="html">&lt;p&gt;Je traduis la plupart de mes articles pour qu&amp;rsquo;ils soient disponibles en fran&#231;ais et en anglais.
La fa&#231;on que l&amp;rsquo;on m&amp;rsquo;a conseill&#233; &#233;tait d&amp;rsquo;avoir un fichier par langue. En g&#233;n&#233;ral &#231;a donne &#231;a.&lt;/p&gt;
@ -885,7 +912,7 @@ Lorsque je m&amp;...&lt;/p&gt;</content>
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/fr/blog/2010-05-24-Trees--Pragmatism-and-Formalism/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/fr/blog/2010-05-24-Trees--Pragmatism-and-Formalism/"/>
<content type="html">
&lt;div class="intro"&gt;
@ -916,7 +943,7 @@ Lorsque je m&amp;...&lt;/p&gt;</content>
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/fr/blog/2010-05-19-How-to-cut-HTML-and-repair-it/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/fr/blog/2010-05-19-How-to-cut-HTML-and-repair-it/"/>
<content type="html">&lt;p&gt;Sur ma page d&amp;rsquo;accueil vous pouvez voir la liste des mes derniers articles avec le d&#233;but de ceux-ci. Pour arriver &#224; faire &#231;a, j&amp;rsquo;ai besoin de couper le code XHTML de mes pages en plein milieu. Il m&amp;rsquo;a donc fallu trouver un moyen de les r&#233;parer.&lt;/p&gt;
&lt;p&gt;Prenons un exemple&amp;nbsp;:&lt;/p&gt;
@ -947,7 +974,7 @@ Lorsque je m&amp;...&lt;/p&gt;</content>
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/fr/blog/2010-05-17-at-least-this-blog-revive/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/fr/blog/2010-05-17-at-least-this-blog-revive/"/>
<content type="html">&lt;p&gt;Bonjour &#224; tous&amp;nbsp;!&lt;/p&gt;
&lt;blockquote cite="http://www.madore.org/~david/weblog/2010-05.html#d.2010-05-12.1752"&gt;
@ -970,7 +997,7 @@ Lorsque je m&amp;...&lt;/p&gt;</content>
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/fr/blog/2010-03-23-Encapsulate-git/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/fr/blog/2010-03-23-Encapsulate-git/"/>
<content type="html">&lt;p&gt;&lt;span class="intro"&gt;
Voici une solution pour conserver des branches divergentes avec &lt;code&gt;git&lt;/code&gt;.
Parce qu&amp;rsquo;il est facile de &lt;em&gt;merger&lt;/em&gt; par erreur, je propose un script qui encapsule le comportement de &lt;code&gt;git&lt;/code&gt; pour interdire certains &lt;em&gt;merges&lt;/em&gt; dangereux. Mais qui permet aussi de faire des merges en cascades de la racines vers les autres branches.
@ -995,7 +1022,7 @@ Parce qu&amp;rsquo;il est facile de &lt;em&gt;merger&lt;/em&gt; par erreur, je p
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/fr/blog/2010-03-22-Git-Tips/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/fr/blog/2010-03-22-Git-Tips/"/>
<content type="html">&lt;h2 class="first" id="cloner-de-github--travers-un-pare-feu"&gt;Cloner de github &#224; travers un pare-feu&lt;/h2&gt;
&lt;p&gt;La fa&#231;on standard:&lt;/p&gt;
@ -1035,7 +1062,7 @@ Parce qu&amp;rsquo;il est facile de &lt;em&gt;merger&lt;/em&gt; par erreur, je p
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/fr/blog/2010-02-23-When-regexp-is-not-the-best-solution/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/fr/blog/2010-02-23-When-regexp-is-not-the-best-solution/"/>
<content type="html">&lt;p&gt;Les expressions r&#233;guli&#232;res sont tr&#232;s utiles. Cependant, elles ne sont pas toujours la meilleure mani&#232;re d&amp;rsquo;aborder certain probl&#232;me autour des chaines de caract&#232;res.
Et surtout quand les transformations que vous voulez accomplir sont simples.&lt;/p&gt;
@ -1067,7 +1094,7 @@ ext=File.extname(str)
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/fr/blog/2010-02-18-split-a-file-by-keyword/" rel="alternate"/>
<link rel="alternate" href="http://yannesposito.com/Scratch/fr/blog/2010-02-18-split-a-file-by-keyword/"/>
<content type="html">&lt;p&gt;Assez bizarrement, je n&amp;rsquo;ai trouv&#233; aucun outil UNIX pour d&#233;couper un fichier par mot cl&#233;.
Alors j&amp;rsquo;en ai fait un en &lt;code&gt;awk&lt;/code&gt;. Je le met ici principalement pour moi, mais &#231;a peut toujours servir &#224; quelqu&amp;rsquo;un d&amp;rsquo;autre.
Le code suivant d&#233;coupe un fichier pour chacune de ses ligne contenant le mot &lt;code&gt;UTC&lt;/code&gt;.&lt;/p&gt;
@ -1096,30 +1123,4 @@ Mon Dec 7 10:32:30 UTC 2009
&lt;div&gt;
...&lt;/div&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2010-02-16:/Scratch/fr/blog/2010-02-16-All-but-something-regexp--2-/</id>
<title type="html">Tout sauf quelquechose en expression r&#233;guli&#232;re.</title>
<published>2010-02-16T08:33:21Z</published>
<updated>2010-02-16T08:33:21Z</updated>
<author>
<name>Yann Esposito</name>
<uri>yannesposito.com</uri>
</author>
<link href="http://yannesposito.com/Scratch/fr/blog/2010-02-16-All-but-something-regexp--2-/" rel="alternate"/>
<content type="html">&lt;p&gt;Dans mon &lt;a href="previouspost"&gt;pr&#233;c&#233;dent article&lt;/a&gt; j&amp;rsquo;ai donn&#233; certaines astuces pour matcher &amp;lsquo;tout sauf quelque chose&amp;rsquo;. De la m&#234;me mani&#232;re, un truc pour matcher la chaine de caract&#232;re la plus petite possible.
Disons que vous voulez matcher la chaine de caract&#232;re entre &amp;lsquo;a&amp;rsquo; et &amp;lsquo;b&amp;rsquo;. Par exemple, vous voulez matcher&amp;nbsp;:&lt;/p&gt;
&lt;pre class="twilight"&gt;
a.....&lt;span class="Constant"&gt;&lt;strong&gt;a......b&lt;/strong&gt;&lt;/span&gt;..b..a....&lt;span class="Constant"&gt;&lt;strong&gt;a....b&lt;/strong&gt;&lt;/span&gt;...
&lt;/pre&gt;
&lt;p&gt;Voici les deux erreurs communes et une solution&amp;nbsp;:&lt;/p&gt;
&lt;pre class="twilight"&gt;
/a.*b/
&lt;span class="Constant"&gt;&lt;strong&gt;a.....a......b..b..a....a....b&lt;/strong&gt;&lt;/span&gt;...
&lt;/pre&gt;
&lt;p&gt;La premi&#232;re erreur vient de l&amp;rsquo;utilisation du &lt;em&gt;terrible&lt;/em&gt; &lt;/p&gt;</content>
</entry>
</feed>

File diff suppressed because it is too large Load diff

View file

@ -62,7 +62,7 @@
&nbsp;&nbsp;
<small>
<em>
<a style="color: #888" href="/Scratch/en/blog/Haskell-OpenGL-Mandelbrot/">
<a style="color: #888" href="/Scratch/en/blog/Category-Theory-Presentation/">
Latest <span class="nicer">»</span>
</a>
</em>
@ -81,7 +81,7 @@
&nbsp;&nbsp;
<small>
<em>
<a style="color: #888" href="/Scratch/fr/blog/Haskell-OpenGL-Mandelbrot/">
<a style="color: #888" href="/Scratch/fr/blog/Category-Theory-Presentation/">
Dernier article <span class="nicer">»</span>
</a>
</em>
@ -107,7 +107,7 @@
<a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">Copyright ©, Yann Esposito</a>
</div>
<div id="lastmod">
Modified: 12/11/2012
Modified: 12/12/2012
</div>
<div>
Entirely done with

Binary file not shown.