+ <%= @item[:title] %> +
+ <% unless @item[:subtitle].nil? %> ++ <%= @item[:subtitle] %> +
+ <% end %> +<%= tradOf(:comment) %>
+ + + + + comments powered by Disqus ++
diff --git a/Rules b/Rules index d1d6eb2fc..7d0e49448 100644 --- a/Rules +++ b/Rules @@ -46,21 +46,17 @@ 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 :mpost - filter :description - filter :falacy - filter :blogimage - if ext == 'erb' filter :erb elsif ext == 'haml' || ext.nil? filter :haml elsif ext == 'md' || ext == 'markdown' - filter :erb # I'll try not to use ruby anymore inside content + filter :graph + filter :description + filter :falacy + filter :blogimage filter :kramdown - # filter :math_repair # after kramdown + filter :fix_img else raise "Filter is not configured for #{item.identifier} in Rules file." end @@ -72,10 +68,10 @@ compile '/html/*' do # filter :yabbreviations filter :footnotes - if item[:kind] == 'article' - layout 'article' - elsif not item[:layout].nil? + if not item[:layout].nil? layout item[:layout] + elsif item[:kind] == 'article' + layout 'article' else layout 'default' unless item[:layout] == "none" end diff --git a/config.yaml b/config.yaml index 2eac1bf9f..58060cbbb 100644 --- a/config.yaml +++ b/config.yaml @@ -69,6 +69,9 @@ translations: loading: fr: "Chargement en cours..." en: "loading..." + welcomeloading: + fr: "Bonjour ! Commencez à lire, un meilleur style se charge..." + en: "Hi! Start reading while a better style is loading..." entirely_done_with: en: "Entirely done with" fr: "Site entièrement réalisé avec" diff --git a/content/css/cmu.sass b/content/css/cmu.sass new file mode 100644 index 000000000..ec88e05b7 --- /dev/null +++ b/content/css/cmu.sass @@ -0,0 +1,7 @@ +----- + +----- +pre, code, a.cut + font-family: "cmuntt",Incosolata, Monaco, monospace +body + font-family: "ComputerModern", Georgia, Palatino, "Century Schoolbook L", "Times New Roman", Times, serif diff --git a/content/css/cmufontface.sass b/content/css/cmufontface.sass new file mode 100644 index 000000000..e7ff54934 --- /dev/null +++ b/content/css/cmufontface.sass @@ -0,0 +1,24 @@ +@font-face + font-family: 'cmuntt' + src: url('fonts/cmuntt.eot') + src: local('☺'), url('fonts/cmuntt.svg') format('svg'), url('fonts/cmuntt.ttf') format('truetype') + font-weight: normal + font-style: normal + +@font-face + font-family: 'ComputerModern' + src: url('fonts/cmunrb.eot') + src: local('☺'), url('fonts/cmunrb.svg') format('svg'), url('fonts/cmunrb.ttf') format('truetype') + font-weight: bold +@font-face + font-family: 'ComputerModern' + src: url('fonts/cmunsl.eot') + src: local('☺'), url('fonts/cmunsl.svg') format('svg'), url('fonts/cmunsl.ttf') format('truetype') + font-style: italic,oblique +@font-face + font-family: 'ComputerModern' + src: url('fonts/cmunrm.eot') + src: local('☺'), url('fonts/cmunrm.svg') format('svg'), url('fonts/cmunrm.ttf') format('truetype') + font-weight: normal + font-style: normal + diff --git a/content/css/main.sass b/content/css/main.sass index d23392b1e..b4b3f7c83 100644 --- a/content/css/main.sass +++ b/content/css/main.sass @@ -170,7 +170,7 @@ body color: $base01 pre, code, a.cut - font-family: "cmuntt",Incosolata, Monaco, monospace + font-family: Incosolata, Monaco, monospace pre &::selection @@ -210,8 +210,13 @@ ul .corps ul li:before content: "- " -ol,ul +ul padding-left: 0 + margin-left: 1.5ex + text-indent: -1.5ex +ol + padding-left: 0 + .toc ol li, ul li margin: .5em 0 @@ -225,7 +230,7 @@ body, h1, h2, h3, h4, #entete, .tagname line-height: 1.5em body - font-family: "ComputerModern", Georgia, Palatino, "Century Schoolbook L", "Times New Roman", Times, serif + font-family: Georgia, Palatino, "Century Schoolbook L", "Times New Roman", Times, serif /* Header Numbering */ .article #afterheader @@ -251,7 +256,7 @@ pre box-shadow: 0 0 5px ($secondBackgroundColor - #222) inset border-radius: 3px padding: 1em - line-height: 1em + line-height: 1.1em font-size: .9em p @@ -404,7 +409,7 @@ $VMarginCorps: 3em // ATTENTION DOIT ETRE 0 pour le bon callage $HMarginCorps: 0 -$content_width: 52em +$content_width: 47em body text-align: center @@ -515,23 +520,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 @@ -573,8 +571,6 @@ $fontcorps: 1.25 margin: 0 p, ol, ul, blockquote line-height: 1.5em - pre, code - line-height: 1em ul li ul, ol li ul, ul li ol, ol li ol margin-top: 0 margin-bottom: 0 @@ -600,6 +596,9 @@ figure text-align: center margin: .5em 0 +figure.left, figure.right + max-width: 30% + img.clean border: none background-color: none @@ -717,6 +716,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 +1074,44 @@ a.cut img max-width: 80% max-height: 6em + +section.slide + border-color: $borderColor + border: solid 1px + margin-bottom: 1em + padding: .5em + font-family: sans-serif + font-size: .8em + +.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 diff --git a/content/css/main2.sass b/content/css/main2.sass new file mode 100644 index 000000000..334cb2265 --- /dev/null +++ b/content/css/main2.sass @@ -0,0 +1,262 @@ +----- + +----- +/* Solarized palette */ +$base03 : #002b36 +$base02 : #073642 +$base01 : #586e75 +$base00 : #657b83 +$base0 : #839496 +$base1 : #93a1a1 +$base2 : #eee8d5 +$base3 : #fdf6e3 +$yellow : #b58900 +$orange : #cb4b16 +$red : #dc322f +$magenta: #d33682 +$violet : #6c71c4 +$blue : #268bd2 +$cyan : #2aa198 +$green : #859900 + +/* $backtext: #FAFAFC */ +$backtext: $base3 + #151515 +$fronttext: $base02 +$hightext: $base03 +$borderColor: $base2 +$altback: $base3 + +@import url(/Scratch/assets/css/cmufontface.css) + +/* General */ +body + font-family: 'Futura', serif + font-size: 20px + color: $base3 + background: $base02 + +a, a:link, a:visited, a:active, a:hover + color: $hightext + text-decoration: none + outline: none + +a:hover + color: $orange + +hr + color: $borderColor + border: + top: 1px solid $borderColor + bottom: none + left: none + right: none + +ul + list-style: none + padding-left: 0 + margin-left: 1.5ex + text-indent: -1.5ex +ol + padding-left: 0 + +ul li:before + content: "- " + +ol li ul, ol li ol, ul li ol, ul li ul + margin: .5em 1.5em + list-style: none + +/* fix for possible markdown issues */ +li p, ol p + display: inline + padding: 0 + +table tr + &:nth-child(odd) + background-color: $altback +table + border: + top: solid 2px $borderColor + bottom: solid 2px $borderColor + +body + text-rendering: optimizelegibility + line-height: 1.5em + +h1, h2, h3, h4, h5, h6 + color: $hightext + line-height: 1.1em + padding-left: 30px + +/* Header Numbering */ +.article #afterheader + counter-reset: niv02 + h2 + counter-increment: niv02 + counter-reset: niv03 + marker-offset: 3em + &:before + content: counter(niv02) ". " + h3 + counter-increment: niv03 + counter-reset: niv04 + &:before + content: counter(niv02) "." counter(niv03) ". " + h4 + counter-increment: niv04 + &:before + content: counter(niv02) "." counter(niv03) "." counter(niv04) ". " + +p, ul, ol, h1, h2, h3, h4 + margin-bottom: 30px + padding: 0 30px + text-align: justify + +pre + line-height: 1.1em + margin-bottom: 30px + padding: 30px + overflow: auto + background: $base3 + font-size: 18px + +=sc + text-transform: uppercase + font-size: 0.8em + +abbr, acronym + +sc + text: + decoration: none + border: + bottom: + width: 0 + +// -- TYPOGRAPHY -- +.small + font-size: 0.8em + +.sc + +sc + +.clear,.flush + clear: both + +.impact, .darkimpact + font-size: 2em + margin: 0 auto 1em auto + line-height: 1.3em + +figure + margin: 3em 0 + img + box-shadow: 0 10px 15px #CCC inset + figcaption + text-align: center + margin: .5em 0 +figure.left, figure.right + max-width: 30% + +/* Specific */ +#afterheader + color: $base01 + background-color: $backtext + +.intro, .resume, blockquote + font-style: italic + padding: 0.5em 1em + a:hover + color: $orange + i, em + font-style: normal + strong, b + font-weight: normal + +.intro, .resume + font-size: 0.9em + +blockquote + border: solid 1px $borderColor + background-color: $altback + pre, pre code + background-color: $base2 + pre + border: solid 1px rgba(0,0,0,0.1) + ul + padding-left: 1.5em + +section.slide + border-color: $borderColor + border: solid 1px + margin-bottom: 1em + padding: .5em + font-family: sans-serif + font-size: .8em + +.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 + +/* Black page */ +#blackpage + font-family: sans-serif + font-style: italic + padding-top: 8em + z-index: 9000 + cursor: wait + img + background: none + border: none + max-width: 80% + margin: 0 auto + a + cursor: pointer + +.cut + font-size: .8em + text-align: right + display: inline-block + width: 100% + opacity: 0.3 + +.cut:hover + opacity: 1 + + +/* Layout */ +#afterheader + width: 35em + margin: 0 auto + img + width: 100% + img.left, img.right + width: 30% diff --git a/content/html/en/blog/Category-Theory-Presentation.erb b/content/html/en/blog/Category-Theory-Presentation.erb new file mode 100644 index 000000000..e9184394b --- /dev/null +++ b/content/html/en/blog/Category-Theory-Presentation.erb @@ -0,0 +1,1000 @@ +----- +isHidden: false +menupriority: 1 +kind: article +created_at: 2012-12-12T10:06:40+02:00 +title: Category Theory Presentation +author_name: Yann Esposito +author_uri: yannesposito.com +tags: + - category theory + - math + - functor +----- + + +
Yesterday I was happy to make a presentation about Category Theory at Riviera Scala Clojure Meetup (note I used only Haskell for my examples).
+ +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. +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/html/en/blog/Higher-order-function-in-zsh.md b/content/html/en/blog/Higher-order-function-in-zsh.md index d8f17af97..111841604 100644 --- a/content/html/en/blog/Higher-order-function-in-zsh.md +++ b/content/html/en/blog/Higher-order-function-in-zsh.md @@ -141,12 +141,10 @@ But the second one is clearly far superior in architecture. I don't want to argue why here. Just believe me that the functional programming approach is superior. -Actually I lack the lambda operator. -If someone has an idea on how to create anonymous functions, just tell me, thanks. +You can find an [updated version of the code (thanks to Arash Rouhani)](https://github.com/Tarrasch/zsh-functional). +An older version is [here thought](https://github.com/yogsototh/zsh_functional). +Here is the (first version) source code: -Here is the (first version[^1]) source code: - -[^1]: As stated in the intro, if you want to install it, just go [there](https://github.com/yogsototh/zsh_functional).
#!/usr/bin/env zsh
diff --git a/content/html/en/blog/programming-language-experience.md b/content/html/en/blog/programming-language-experience.md
index a9d813c0f..b59b57c5a 100644
--- a/content/html/en/blog/programming-language-experience.md
+++ b/content/html/en/blog/programming-language-experience.md
@@ -19,7 +19,7 @@ tags:
blogimage("dragon.jpg","Title image")
begindiv(intro)
-%tldr My short and higly subjective feelings about programming languages I used.
+%tldr My short and highly subjective feelings about the programming languages I used.
enddiv
### `BASIC`
@@ -59,7 +59,7 @@ What a pleasure!
leftblogimage("dragon.jpg","Dragon fractal")
-I was about 10 when I played with logo to draw on the computer.
+I was about 10 when I played with logo to draw things on a screen.
I remember the Bach's music while the program loaded.
@@ -67,10 +67,10 @@ At that time we had to load the program into the memory using tapes.
This one was a rare one. It didn't made an awfull 'Krrrkrr cssssss krrr' noise.
Some years after, I used it to learn programming to my college student.
-It was really good as a first language.
+It was a really good first language.
Making fractals is like a game for children.
-Here is an example of code. It draws the dragon fractal.
+Here is the code to draw the dragon fractal:
HIDETURTLE
@@ -101,7 +101,7 @@ dragon 6 3000
### Pascal
-The always second.
+The eternal second.
I made my firsts real serious program with Pascal.
I must confess I find it inferior to C.
@@ -117,26 +117,26 @@ The pointer's language.
_Le_ programming language.
-Once you understand loops and recursivity.
-It is time to make things serious.
-If you want to have good quality code, knowing C is almost mandatory.
+Once you understand loops and recursion,
+it is time to do serious things.
+If you want to make good quality code, knowing C is almost mandatory.
-This language is close to machine language.
+This language is close to the machine language.
So much, there is (mostly) a linear relation between the size of your code and the size of the compiled one.
In short, each time you write a C instruction there won't be anything strange that will occurs, like starting a long algorithm behind the scene.
-It is very close to the machine while keeping sufficient abstractions to be fun.
+While close to the machine, `C` keep sufficient abstractions to be fun.
I made a lot of program with it.
-From sort algorithms to AI ones (SAT3), system, network prgramming, etc...
+From sort algorithms to AI ones (SAT3), system, network programming, etc...
It is a very useful language that will help you understand how things works on your computer.
Most modern computer language hide a lot of informations on what occurs.
-This is not the case with C.
+This is not the case with `C`.
### ADA
-The super-clean one.
+The "super clean" one.
I liked ADA. I must confess I didn't used it a lot.
May be one day I will try it again.
@@ -150,11 +150,11 @@ Until here I just described imperative languages without any object notion.
More clearly, the language didn't helped you to structure your program.
In order to limit the number of bugs, particularly for huge programs, we started to think about how to organize computer programs.
-In the end, from the imperatives language culture, it produced the Object Oriented programming (OOP).
-Beware, the Object Oriented programming isn't a miracle. Proof? How many bug-free software do you use?
+In the end, from the imperative language culture, it produced the Object Oriented programming (OOP).
+Beware, the Object Oriented programming isn't a miracle. Proof? How many bug free software do you use?
Furthermore, OOP doesn't fit all problems.
-But to make a bank application, an application which help to manage stock, clients or text archives.
-I mean an information system, the OOP is not so bad.
+But to make a bank application, an application which help to manage stock, clients or text archives or more generally
+an information system, the OOP is not so bad.
Then Object Oriented Languages appeared everywhere.
@@ -165,21 +165,22 @@ leftblogimage("cplusplus.jpg","Messy router")
The ugly
-fr:
Industry wanted an Object Oriented Language without losing all their old C code.
Solution, keep C and add an Object layer on it.
-My main concern about C++ is: it do too many things.
+My main concern about C++ is: it does too many things.
I appreciated multiple inheritance and templates.
In reality I liked a lot C++ while I was working alone.
I used it to write `DEES` my main thesis software.
My only concern was about a lack in the STL.
In the doc, one could use `String`.
-But in reality, T have to be only `char` or `char16`.
+But in reality, `T` had to be only `char` or `char16`.
Then I had to reduce my alphabet to 216 letters.
Except for some application, the alphabet must be far larger than that.
en:
To conclude, I'd say, C++ is very good if you work alone or with a fixed subset of its features.
+fr:
+
### Eiffel
@@ -190,7 +191,8 @@ Full object in mind. Far cleaner than C++.
But it isn't so popular.
Behind C++ there is a large community to help new users and to write libraries.
Furthermore, I preferred working with C++.
-At that time I programmed a lot with C and like its syntax.
+When I learned Eiffel, I programmed a lot with C and liked its syntax.
+
### Java
@@ -198,11 +200,14 @@ leftblogimage("grail.jpg","Holy Grail from the Monty Python")
The first time I heard about Java it was _le Grail_!
+
Perfect portability, your program will work on all platform.
-There was incrusted inside the language architecture concepts to help limit mistakes, and force you to use good programming habits. But...
+The language helps limit mistakes, and force you to use good programming habits.
+But...
+
But It is extremely verbose.
-And limitations are quite boring if you know what you're doing.
+Many limitations are quite boring if you know what you're doing.
For example, there is no multiple inheritance.
Generally it is a coherent choice when there are a way to compensate.
@@ -211,29 +216,31 @@ Except, interfaces can only add methods to a class.
You cannot add any attribute to a class except by subclassing.
I really lacked this feature.
+
I made a GUI using Java Swing and I created my own notification system between different element of the GUI.
-Then, at the begining I only needed to send notification 1 to 1.
-After some times, I needed to make 1 to many notifications.
-And I had to make a bunch of copy/paste inside all my subclasses!
+In the beginning I only needed to send notification one to one.
+After some time, I wanted to send one to many notifications.
+I had to make a bunch of copy/paste inside all my subclasses!
Copy/paste are exactly what should be avoided the most by object oriented languages.
Another thing: threads.
-I was forced to make my own thread management system to avoid locks and notifications between threads (wait the end of this thread, ...).
+I was forced to make my own thread management system to avoid locks and send notifications between threads (wait the end of this thread, ...).
At that time I used Java 1.5.
This problem should have been solved with Java 1.6.
I wish it is the case, but lacking such an essential feature for a language was very bad.
-In the same idea, it was very long to wait for the foreach loops.
+In the same idea, it was very long to wait for the "foreach" loops.
After my experience, I don't recommend Java.
Portability does not worth this price.
-GUI protability means mediocre experience on all platforms.
+GUI portability means mediocre experience on all platforms.
Any system it might be (wxWidget, QT, etc...).
-The Java ideology is "closed". But it resolve a big problem.
-It helps medium to low quality developper to work in team without the ability to make too much harm to the product.
-A good programmer will be able to make very interresting things with it thought.
+The Java ideology is "closed".
+But it resolve a big problem.
+It helps medium to low quality developers to work in team without the ability to make too much harm to the product.
+A good programmer will be able to make very interesting things with it thought.
Please note I didn't say Java programmer are bad programmer.
@@ -245,17 +252,17 @@ The language I learned and used only to make application on Apple(c) platform.
I learned Objective-C just after Python.
It was hard to do it.
At first I didn't liked the syntax and many other details.
-But it is this kind of language you like more and more you use it.
+But it is this kind of language the more you use, the more you like.
In fact, Objective-C is a simple language, but associated with the Cocoa framework it is a really good tool.
Cocoa is very different to other framework I used before.
-I find many of its idea extermely good.
+I find many of its idea extremely good.
Both simple and efficient.
-It might seems like small details on paper, but once you start using it, it make all the difference.
+It might seems like small details on paper, but once you start using it, it makes all the difference.
Even if Objective-C is a relatively low level language.
Its dynamic typing ability make it very good for GUI programming.
-I recommand to continue working with this language.
-In the end you'll certainely find it better than expected.
+I recommend to continue working with this language.
+In the end you'll certainly find it better than expected.
## Modern Scripting Languages
@@ -265,7 +272,10 @@ leftblogimage("php.jpg","A Jacky Touch Car")
This small script language that we used all to make our website in the time of animated gifs.
-Nice but no more. Apparently there were a lot of progress since PHP5. Maybe one day I'll use it again. But behind it, this language has a "script kiddies only" reputation.
+Nice but no more.
+Apparently there were a lot of progress since PHP5.
+Maybe one day I'll use it again.
+But behind it, this language has a "script kiddies only" reputation.
Also long history of easy to make security holes.
In reality PHP is just behind C for the abstraction level.
@@ -273,7 +283,8 @@ Therefore it has a lot of organisation problems and make it easier to create bug
For web applications it is a real problem.
PHP remains for me the SQL injection language.
-I made a bit of PHP not so long ago, and it was a pain to protect my application to SQL injection. Yep, I didn't found any standard library to make this, but I didn't searched a lot.
+I made a bit of PHP not so long ago, and it was a pain to protect my application to SQL injection.
+Yep, I didn't found any standard library to make this, but I didn't searched a lot.
### Python
@@ -302,31 +313,41 @@ I used it to modify hundreds of XML files in an easier manner than XSLT.
### Perl
Perl is magic, but the syntax is so hideous nobody can like to work in an environment with many different person in Perl.
-Or at least, all other collaboratos must be excellent programmers.
-But the very good feature is the integration of some perl syntax.
+Or at least, all other collaborators must be excellent programmers.
+A great feature of perl is its integration with regular expression in its syntax:
$var =~ s/toto/titi/g
-This program will replace every toto by titi inside the `$var` variable.
-The Perl code is often very compact and usally unreadable.
+This program will replace every `toto` by `titi` inside the `$var` variable.
+The Perl code is often very compact and generally unreadable.
But it is a language good to know.
It is a kind of `awk` under steroids.
### Ruby
-Ruby is a very good language. It is often compared (opposed ?) to Python.
+Ruby is a very good language.
+It is often compared (opposed ?) to Python.
There are the regular expression operators Perl inside the langage.
But the syntax is extremely clear, like in Python.
-Many feature were inspired by functionnal programming (as in Python).
+Many feature were inspired by functional programming (as in Python).
I used it a lot.
It is the worst language I know in term of efficiency.
This is the language that lose almost all benchmarks.
But it is the perfect tool for prototypes.
If you want to make a website prototype, RoR (Ruby on Rails) is certainly one of the best system known to mankind.
-From idea to realisation, few time will occur. Make this site work for thousands of people, will, on the other hand, certainly require a lot of optimisations.
+From idea to realisation, few time will occur.
+Make this site work for thousands of people, will, on the other hand, certainly require a lot of optimisations.
+
+One of the greatest Ruby feature is its ability to make the program extremely readable.
+It is very close to natural language.
+On the other hand, I found the Object Oriented layer a bit disappointing.
+The fact there is no real "class variable" but only "tree class variable" for example.
+
+Considering the community, the ruby one feels closer to the creative than the engineer.
+I am under the impression designer tends to use Ruby instead of Python.
### Javascript
@@ -348,32 +369,49 @@ It is very nice to use.
As I said, this is a good surprise.
Javascript was chosen by chance as the script inside your navigator.
Instead of the java inspired syntax, everything else is very good.
-In order to compensate the syntax, you can use CoffeScript.
+In order to compensate the syntax, you can use CoffeeScript.
## Functional Languages
### CamL
I learned CamL during the college.
-It was really interresting.
+It was really interesting.
Functional programming is very different to imperative programming (most of popular languages).
I had good mathematic intuitions to use this language.
But I must confess I never used it for something serious.
### Haskell
-I am still learning this language.
+I believe I will still learning this language in many years.
I must say it is a pleasure.
Generally it takes me no more than some hours to some days to learn a new programming language.
-Concerning haskell, this is very different.
-To master haskell you need to understand very hard concepts.
+Concerning Haskell, this is very different.
+To master Haskell you need to understand very abstract concepts.
Monads and Arrows are some of them.
-I didn't understand them before I read some scientific paper.
+I didn't understood them before I read some scientific paper.
Many week will be necessary to master it perfectly (if someone does).
-Also the community is very friendly and nice. There is no "LOL! URAN00B! RTFM!"
+Also the community is very friendly and nice.
+There is no "LOL! URAN00B! RTFM!"
And no concession has been made to make this language more popular (I'm looking at you C++, Java and Javascript).
This langage remain pure (I know there are two meaning).
+Concerning making real product with Haskell.
+In fact, Haskell is very efficient concerning code change.
+Refactoring code is incredibly easy with Haskell.
+And in the same time, the Haskell type system helps to make your product bug free.
+
+Technically this language is close to perfection.
+But it has some major problems:
+
+- not so popular
+- hard to learn
+- I also believe there is not actually enough success stories with Haskell
+
+On the other hand, knowing Haskell will help you learn a lot of thing about programming in general.
+You should at least take a look.
+[I made an Haskell introduction if you are curious](/Scratch/en/blog/Haskell-the-Hard-Way/).
+
## Unpopular Languages
### Metapost
@@ -404,8 +442,9 @@ Most programming language should think about adding it.
### zsh
Yes, zsh is a shell.
-But it is also a script language extremly well suited to file management.
-For now, it is the best shell I used. I prefer zsh to bash.
+But it is also a script language very well suited to file management.
+For now, it is the best shell I used.
+I prefer zsh to bash.
### Prolog
@@ -419,7 +458,7 @@ A bit like functional programming but far more powerful.
## Languages to discover
Many languages and framework remains to be learnt and tried.
-Actually I believe I will stay a while with haskell.
+Actually I believe I will stay a while with Haskell.
Maybe tomorrow I will look at LISP, Scala or Erlang.
I also certainly look at clojure to make web application.
diff --git a/content/html/fr/blog/Category-Theory-Presentation.erb b/content/html/fr/blog/Category-Theory-Presentation.erb
new file mode 100644
index 000000000..e9184394b
--- /dev/null
+++ b/content/html/fr/blog/Category-Theory-Presentation.erb
@@ -0,0 +1,1000 @@
+-----
+isHidden: false
+menupriority: 1
+kind: article
+created_at: 2012-12-12T10:06:40+02:00
+title: Category Theory Presentation
+author_name: Yann Esposito
+author_uri: yannesposito.com
+tags:
+ - category theory
+ - math
+ - functor
+-----
+
+
+Yesterday I was happy to make a presentation about Category Theory at Riviera Scala Clojure Meetup (note I used only Haskell for my examples).
+
+- Click here to go to the HTML presentation.
+
- Click Here to download the PDF slides (%latex not rendered properly)
+
+
+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.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+fmap (+1) [1,2,3] == [2,3,4]
+fmap (+1) [] == []
+fmap head [[1,2,3],[4,5,6]] == [1,4]
+
+
+
+
+
+
+
+
+
but is also a category. Idem for Int
.
+length
is a Functor from the category [a]
to the category Int
:
⇒
+length [] = 0
+length (l ++ l') = (length l) + (length l')
+
#!/usr/bin/env zsh
diff --git a/content/html/fr/blog/programming-language-experience.md b/content/html/fr/blog/programming-language-experience.md
index da0c27150..8b2a4fc70 100644
--- a/content/html/fr/blog/programming-language-experience.md
+++ b/content/html/fr/blog/programming-language-experience.md
@@ -19,7 +19,7 @@ tags:
blogimage("dragon.jpg","Title image")
begindiv(intro)
-%tlal Mon avis court et hautement subjectif concernant les différents languages de programmations que j'ai utilisé.
+%tlal Mon avis succinct et hautement subjectif concernant les différents languages de programmation que j'ai utilisé.
enddiv
### `BASIC`
@@ -138,7 +138,7 @@ Bref il est versatile, et on ne peut pas dire que l'on sait programmer si on ne
### ADA
-Le langage super-propre.
+Le langage "super propre".
J'avais bien aimé ADA, mais j'avoue que ça n'a duré que le temps d'un semestre de cours.
Peut-être qu'un jour je m'y remettrai.
@@ -166,6 +166,8 @@ leftblogimage("cplusplus.jpg","Messy router")
Le malpropre
+en:
+
Et oui l'industrie voulait un langage objet, mais elle n'était pas prête à mettre à la poubelle tout ses codes en C.
La solution, prendre C et lui rajouter une couche objet.
Le problème avec C++ c'est qu'il fait trop de choses.
@@ -178,14 +180,14 @@ Du coup, mon alphabet était limité à 216 lettres.
Hors, pour certaines application, l'alphabet doit être gigantesque.
fr:
En conclusion je dirai que C++ est un très bon langage si vous vous fixez à l'avance un sous ensemble de ses fonctionnalités.
-en:
### Eiffel
leftblogimage("eiffel.jpg","Eiffel tower construction")
-Bon, ok c'est un très beau langage objet.
+
+Eiffel est un très beau langage objet.
Bien plus propre que C++.
Mais, à moins que les choses aient changées, il n'est pas très populaire.
Derrière lui il n'a pas la communauté de C++.
@@ -197,13 +199,16 @@ Lorsqu'on viens du C, il est désagréable de changer ses habitudes.
leftblogimage("grail.jpg","Holy Grail from the Monty Python")
+
On continue vers les langages objets. Alors, à une époque où j'en ai entendu parler, c'était _le Graal_ !
+
La portabilité, votre programme marchera partout. Il était orienté objet. Incrusté à l'intérieur il y avait des concepts d'architecture qui empêchent de faire n'importe quoi... Sauf que.
Sauf qu'il est incroyablement verbeux.
Et que les limitations sont très désagréables si on sait ce que l'on fait.
+
Par exemple, il n'y a pas d'héritage multiple en Java.
Ce qui est en général un choix que je trouve cohérent s'il est bien appuyé par des systèmes qui compensent ce manque.
En java, il existe les interfaces.
@@ -230,11 +235,11 @@ Bon, après cette expérience je déconseillerai Java.
La portabilité, n'est pas si intéressante que ce qu'on pourrait croire.
En ce qui concerne les GUI, portable signifie interface fonctionnelle mais médiocre sur toutes les plateformes.
-Quelquesoit le système d'ailleurs (wxWidget, QT, etc...).
+Quelque soit le système d'ailleurs (wxWidget, QT, etc...).
Donc, pour des applications à distribuer à des tiers, c'est à éviter.
Le système de Java est très clos.
-Par contre il résoud un très bon problème.
+Par contre il résout un très bon problème.
Il permet à des développeurs médiocres de travailler en groupe sans faire trop de mal.
Et un bon programmeur sera tout de même capable d'y faire des choses très intéressantes.
Veuillez noter que je n'ai pas dit que les programmeurs Java sont de mauvais programmeurs, ce n'est pas ce que je pense.
@@ -333,6 +338,8 @@ Par contre c'est un outil parfait pour faire des prototypes.
Et si vous voulez faire un prototype de site web, RoR est ce qui se fait de mieux.
De l'idée au site, il ne se passera que peu de temps.
+
+
### Javascript
C'est la bonne surprise.
@@ -383,6 +390,10 @@ Et aussi pas de concession du langage pour devenir populaire.
Le langage est bon, voilà tout.
Alors qu'en Java et C++, typiquement certain choix ont été fait en dépis du bon sens pour "faire plaisir".
+
+
+
+
## Langages originaux
### Metapost
@@ -430,7 +441,7 @@ Un peu comme la programmation fonctionnelle mais en beaucoup plus puissant.
## Les langages à découvrir
Il reste encore pas mal de langages et de framework à essayer.
-Actuellement je pense que je vais passer un moment avec haskell.
+Actuellement je pense que je vais passer un moment avec Haskell.
Peut-être demain que j'irai apprendre LISP, Scala ou Erlang.
Comme je suis plus dans la création de site web, j'irai certainement jeter un coup d'œil à clojure aussi.
Et certainement beaucoup d'autres choses.
diff --git a/content/html/index.erb b/content/html/index.erb
index e3870301a..26dcc4c57 100644
--- a/content/html/index.erb
+++ b/content/html/index.erb
@@ -45,7 +45,7 @@ targetTitleFrench = latest_fr_article[:title]
Contact »
Resume »
-
+
Français
@@ -65,7 +65,7 @@ targetTitleFrench = latest_fr_article[:title]
Curriculum Vitæ »
Enseignement »
-
+
diff --git a/crash.log b/crash.log
deleted file mode 100644
index c3e62aabd..000000000
--- a/crash.log
+++ /dev/null
@@ -1,155 +0,0 @@
-Crashlog created at 2012-10-05 10:57:23 +0200
-
-=== MESSAGE:
-
-Sass::SyntaxError: Invalid CSS after "italic": expected expression (e.g. 1px, bold), was ";"
-
-=== COMPILATION STACK:
-
- - [item] /css/main/ (rep default)
-
-=== 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 `'
- 52. /usr/local/bin/nanoc:19:in `load'
- 53. /usr/local/bin/nanoc:19:in `'
-
-=== 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.
-
-=== 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
diff --git a/img_latest_blog_dir b/img_latest_blog_dir
index 020d1ef78..fa9bee8c2 120000
--- a/img_latest_blog_dir
+++ b/img_latest_blog_dir
@@ -1 +1 @@
-./output/Scratch/img/blog/Category-Theory-Programming
\ No newline at end of file
+./output/Scratch/img/blog/Category-Theory-Presentation
\ No newline at end of file
diff --git a/latest.ymd b/latest.ymd
index 9073bb97c..5a7fd9383 120000
--- a/latest.ymd
+++ b/latest.ymd
@@ -1 +1 @@
-multi/blog/Category-Theory-Programming.md
\ No newline at end of file
+multi/blog/Category-Theory-Presentation.md
\ No newline at end of file
diff --git a/layouts/article.html b/layouts/article.html
index e6fc834a9..cfabc7d92 100644
--- a/layouts/article.html
+++ b/layouts/article.html
@@ -93,26 +93,26 @@
<%= tradOf(:subscribe) %>
-
<%= tradOf(:comment) %>
-
- <%= generateIntenseDebateThread %>
-
+
+
+
+
+ comments powered by Disqus
+
diff --git a/layouts/article2.html b/layouts/article2.html
new file mode 100644
index 000000000..c428ea587
--- /dev/null
+++ b/layouts/article2.html
@@ -0,0 +1,183 @@
+-----
+-----
+<% language, languages, blog, article = setItemConf %>
+
+
+
+ <%
+ t=tags
+ if t.length > 0
+%> <%
+ end
+%>
+
+
+
+
+ <%
+ languages.each do |lang|
+ item_for_lang=item_of_language(lang)
+ if not item_for_lang.nil? %>
+ <%
+ end
+ end
+%>
+
+ <%= @item[:title] %>
+
+
+
+
+
+
+
+ <%=
+ languages.map do |l|
+ dest=@item_rep.path.sub(%r{#{@config[:webprefix]}/../}, %{#{config[:webprefix]}/#{l}/})
+ if @item_rep.path != dest
+ %{#{ tradOfKeywordIn(:switchTo,l)}}
+ else
+ nil
+ end
+ end.join() %>
+
+
+
+
+
+ <%= @item[:title] %>
+
+ <% unless @item[:subtitle].nil? %>
+
+ <%= @item[:subtitle] %>
+
+ <% end %>
+
+
+
+ <% if content_for(@item,:summary) %>
+
+ <% content_for(@item,:summary) %>
+
+ <% end %>
+
+ <%= generateSubMenu %>
+
+
+
+
+ <%= yield %>
+
+ <% depth = depthOf(@item) %>
+ <% if depth > 3 or ( depth == 3 and @item.children.length > 0 ) %>
+
+
+ <% end %>
+
+
+
+
+
+
+ <%= tradOf(:comment) %>
+
+
+
+
+ comments powered by Disqus
+
+
+
+
+ <%= generateMenu %>
+
+
+
+
+
+ <%= tradOf(:previousArticles) %>
+ <%
+ (1..3).each do |n|
+ a=article_brother(-n)
+ if not a.nil?
+ %>
+
+ <%= link_to( %{« }+ a[:title], a) %>
+
+ <% end %>
+ <% end %>
+
+
+ <%= tradOf(:nextArticles) %>
+ <%
+ (1..3).each do |n|
+ a=article_brother(n)
+ if not a.nil?
+ %>
+
+ <%= link_to(a[:title] + %{ »}, a) %>
+
+ <% end %>
+ <% end %>
+
+
+
+
+
+
+
+
+
+ <%=tradOf(:copyright) %>
+
+
+ <%=tradOf(:created_at)%>: <%= @item[:created_at].strftime(@config[:dateFormat][language.intern]) %>
+ <%=tradOf(:last_modified)%>: <%= gitmtime.strftime(@config[:dateFormat][language.intern]) %>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/lib/fix_img.rb b/lib/fix_img.rb
new file mode 100644
index 000000000..d553b07c9
--- /dev/null
+++ b/lib/fix_img.rb
@@ -0,0 +1,8 @@
+class FixImage < Nanoc3::Filter
+ identifier :fix_img
+ def run(content, params={})
+ content.gsub(%r{(]*>)
}) do |m|
+ $1.to_s
+ end
+ end
+end
diff --git a/lib/intenseDebate.rb b/lib/intenseDebate.rb
index 61d500214..46f03ce00 100644
--- a/lib/intenseDebate.rb
+++ b/lib/intenseDebate.rb
@@ -18,6 +18,6 @@ def generateIntenseDebateThread
var idcomments_post_url = 'http://yannesposito.com#{protectedPath}';
-
+
}
end
diff --git a/multi/blog/Category-Theory-Presentation.erb b/multi/blog/Category-Theory-Presentation.erb
new file mode 100644
index 000000000..0673166cf
--- /dev/null
+++ b/multi/blog/Category-Theory-Presentation.erb
@@ -0,0 +1,1001 @@
+-----
+isHidden: false
+menupriority: 1
+kind: article
+created_at: 2012-12-12T10:06:40+02:00
+en: title: Category Theory Presentation
+fr: title: Category Theory Presentation
+author_name: Yann Esposito
+author_uri: yannesposito.com
+tags:
+ - category theory
+ - math
+ - functor
+-----
+
+
+Yesterday I was happy to make a presentation about Category Theory at Riviera Scala Clojure Meetup (note I used only Haskell for my examples).
+
+- Click here to go to the HTML presentation.
+
- Click Here to download the PDF slides (%latex not rendered properly)
+
+
+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.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/multi/blog/Haskell-the-Hard-Way.md b/multi/blog/Haskell-the-Hard-Way.md
index 5dfedbd11..2def29e25 100644
--- a/multi/blog/Haskell-the-Hard-Way.md
+++ b/multi/blog/Haskell-the-Hard-Way.md
@@ -187,7 +187,7 @@ fr: >
fr: > runhaskell filename.lhs
fr: >
fr: >
-fr: > Certain ne marcheront pas, mais la majorité vous donneront un résultat.
+fr: > Certains ne marcheront pas, mais la majorité vous donneront un résultat.
fr: > Vous devriez voir un lien juste en dessous.
enddiv
diff --git a/multi/blog/Higher-order-function-in-zsh.md b/multi/blog/Higher-order-function-in-zsh.md
index d0afec11b..419decd5d 100644
--- a/multi/blog/Higher-order-function-in-zsh.md
+++ b/multi/blog/Higher-order-function-in-zsh.md
@@ -172,16 +172,13 @@ fr: Mais la seconde est plus bien supérieure en terme d'architecture.
fr: Je ne veux pas discuster ici pourquoi c'est mieux.
fr: Je vous demande simplement de me croire quand je dis que l'approche fonctionnelle est supérieure.
-fr: Actuellement il me manque une fonction lambda, si quelqu'un à une idée elle serait la bienvenue.
-fr: Je ne sais pas encore comment créer facilement des fonctions anonymes.
-en: Actually I lack the lambda operator.
-en: If someone has an idea on how to create anonymous functions, just tell me, thanks.
+en: You can find an [updated version of the code (thanks to Arash Rouhani)](https://github.com/Tarrasch/zsh-functional).
+en: An older version is [here thought](https://github.com/yogsototh/zsh_functional).
+en: Here is the (first version) source code:
+fr: Vous pouvez télécharger [une version à jour du code (merci à Arash Rouhani)](https://github.com/Tarrasch/zsh-functional).
+fr: Une ancienne version est [ici](https://github.com/yogsototh/zsh_functional).
+fr: Voici le code source (de la première version) :
-en: Here is the (first version[^1]) source code:
-fr: Voici le code source (de la première version[^1]) :
-
-en: [^1]: As stated in the intro, if you want to install it, just go [there](https://github.com/yogsototh/zsh_functional).
-fr: [^1]: Comme précisé dans l'introduction, si vous voulez l'installez allez plutôt voir dans ce [repository](https://github.com/yogsototh/zsh_functional).
#!/usr/bin/env zsh
diff --git a/output/Scratch/assets/css/cmu.css b/output/Scratch/assets/css/cmu.css
new file mode 100644
index 000000000..87668771b
--- /dev/null
+++ b/output/Scratch/assets/css/cmu.css
@@ -0,0 +1 @@
+pre,code,a.cut{font-family:"cmuntt",Incosolata,Monaco,monospace}body{font-family:"ComputerModern",Georgia,Palatino,"Century Schoolbook L","Times New Roman",Times,serif}
\ No newline at end of file
diff --git a/output/Scratch/assets/css/main.css b/output/Scratch/assets/css/main.css
index 1462d646f..b3d4aa2ea 100644
--- a/output/Scratch/assets/css/main.css
+++ b/output/Scratch/assets/css/main.css
@@ -1 +1 @@
-@charset "UTF-8";@font-face{font-family:"cmuntt";src:url("fonts/cmuntt.eot");src:local("☺"),url("fonts/cmuntt.svg") format("svg"),url("fonts/cmuntt.ttf") format("truetype");font-weight:400;font-style:normal}@font-face{font-family:"ComputerModern";src:url("fonts/cmunrb.eot");src:local("☺"),url("fonts/cmunrb.svg") format("svg"),url("fonts/cmunrb.ttf") format("truetype");font-weight:700}@font-face{font-family:"ComputerModern";src:url("fonts/cmunsl.eot");src:local("☺"),url("fonts/cmunsl.svg") format("svg"),url("fonts/cmunsl.ttf") format("truetype");font-style:italic,oblique}@font-face{font-family:"ComputerModern";src:url("fonts/cmunrm.eot");src:local("☺"),url("fonts/cmunrm.svg") format("svg"),url("fonts/cmunrm.ttf") format("truetype");font-weight:400;font-style:normal}i,em{font-style:italic}b,strong,h1,h2,h3,h4,h5,h6{font-weight:700}table.description tr td{border:1px solid #eeeef1}.assombris20{background-color:#eeeef1}body{color:#002b36;background-color:#fafafc}::selection{background:#002b36;color:#93a1a1}::-moz-selection{background:#002b36;color:#93a1a1}pre,code,a.cut{font-family:"cmuntt",Incosolata,Monaco,monospace}pre::selection{background:#fdf6e3;color:#586e75}pre *::selection{background:#fdf6e3;color:#586e75}pre::-moz-selection{background:#fdf6e3;color:#586e75}pre *::-moz-selection{background:#fdf6e3;color:#586e75}a:hover{text-shadow:0 0 2px#faa}a,a:link,a:visited,a:active,a:hover{text-decoration:none;outline:none}a,a:link,a:visited,a:active{color:#002b36}a:hover{color:#cb4b16}hr{color:#eeeef1;border-top:1px solid #eeeef1;border-bottom:none;border-left:none;border-right:none}ul{list-style:none}.corps ul li:before{content:"- "}ol,ul{padding-left:0}.toc ol li,.toc ul li{margin:.5em 0}ol li ul,ol li ol,ul li ol,ul li ul{margin:.5em 1.5em;list-style:none}body,h1,h2,h3,h4,#entete,.tagname{text-rendering:optimizelegibility;line-height:1.5em}body{font-family:"ComputerModern",Georgia,Palatino,"Century Schoolbook L","Times New Roman",Times,serif}.article #afterheader{counter-reset:niv02}.article #afterheader h2{counter-increment:niv02;counter-reset:niv03;marker-offset:3em}.article #afterheader h2:before{content:counter(niv02) ". "}.article #afterheader h3{counter-increment:niv03;counter-reset:niv04}.article #afterheader h3:before{content:counter(niv02) "." counter(niv03) ". "}.article #afterheader h4{counter-increment:niv04}.article #afterheader h4:before{content:counter(niv02) "." counter(niv03) "." counter(niv04) ". "}pre{background-color:#002b36;color:#839496;box-shadow:0 0 5px #d0d0d2 inset;border-radius:3px;padding:1em;line-height:1em;font-size:.9em}p{margin-bottom:1.2em}blockquote{border:solid 1px #ccccd0;border-radius:2px;box-shadow:0 0 4px #f2f2f4 inset;background-color:#f8f8fa;font-style:italic;padding:.5em 1em;color:#556}blockquote a:hover{color:#cb4b16}blockquote i,blockquote em{font-weight:400;font-style:normal;color:#002b36}blockquote strong,blockquote b{font-weight:700;color:#002b36}blockquote ul{padding-left:1.5em}abbr,acronym{text-transform:uppercase;font-size:.8em;text-decoration:none;border-bottom-width:0}#titre{letter-spacing:-0.06em;border-bottom:4px double #ccccd0;border-top:4px double #ccccd0}#liens .active,#sousliens{color:#002b36;border:#ccccd0 solid 1px;border-radius:5px;box-shadow:0 0 2px #ccccd0 inset;background-color:#eeeef1}#liens .active a,#sousliens a{color:#667}#liens .active a:hover,#sousliens a:hover{color:#cb4b16}#liens .active a:hover strong,#liens .active a:hover b,#liens .active a:hover i,#liens .active a:hover em,#liens .active a:hover .nicer,#sousliens a:hover strong,#sousliens a:hover b,#sousliens a:hover i,#sousliens a:hover em,#sousliens a:hover .nicer{color:#ffb17c}#liens .active hr,#sousliens hr{color:#667;border-top:1px solid#667}#liens .active strong,#liens .active b,#liens .active i,#liens .active em,#sousliens strong,#sousliens b,#sousliens i,#sousliens em{color:#002b36}#liens a{border:1px solid#eee;background:rgba(0,0,0,0.05);box-shadow:0 0 2px white,0 0 3px#ccc inset;border:1px solid rgba(0,0,0,0.1);border-radius:3px}#liens a:hover{background:rgba(0,0,0,0.1);box-shadow:0 0 6px#555 inset}#liens .active{text-shadow:0 0 2px rgba(0,0,0,0.5);background-color:#f7f7f9;border:1px solid #e9e9eb;box-shadow:0 0 3px #c7c7c9 inset;border-radius:3px;border-top:none}#lastmod{font-size:.9em}.nojsbutton{font-size:2.5em}#clickcomment,#choixlang > a,#choixrss > a,.return > a{display:block;width:25%;cursor:pointer;margin:1em 0;padding:1em;font-size:16px;line-height:1.4em;border:1px solid #fafafc;color:#ccccd0}#clickcomment:hover,#choixlang > a:hover,#choixrss > a:hover,.return > a:hover{border:solid 1px #ccccd0;border-radius:2px;box-shadow:0 0 4px #f2f2f4 inset;background-color:#f8f8fa;color:#dc5c27;text-shadow:0 0 2px#faa}#clickcomment:active,#choixlang > a:active,#choixrss > a:active,.return > a:active{border:solid 1px #ccccd0;border-radius:2px;box-shadow:0 0 4px #f2f2f4 inset;background-color:#f8f8fa;color:#dc5c27;text-shadow:0 0 2px#faa;background:#f4f4f6}.return > a,#choixrss > a{float:right}#choix .return > a,#choix #choixrss > a{margin-top:0}.small{font-size:.8em}.sc{text-transform:uppercase;font-size:.8em}.impact,.darkimpact{font-size:2em;margin:0 auto 1em auto;line-height:1.3em}h1 > .date{font-size:.6em;color:#002b36}.date{font-size:.8em;color:#fafafc;border:1px solid #002b36;text-align:center;width:4.1em;line-height:1.5em;display:inline-block;vertical-align:middle;margin-right:1em}.date .day,.date .month,.date .year{display:block}.date .day{color:#002b36;background-color:#fafafc;float:left;width:1.7em}.date .month{float:right;width:2.3em;background-color:#002b36;color:#fafafc}.date .year{line-height:3ex;clear:both;color:#002b36;border:#ccccd0 solid 1px;border-radius:5px;box-shadow:0 0 2px #ccccd0 inset;background-color:#eeeef1;border-radius:0}.date .year a{color:#667}.date .year a:hover{color:#cb4b16}.date .year a:hover strong,.date .year a:hover b,.date .year a:hover i,.date .year a:hover em,.date .year a:hover .nicer{color:#ffb17c}.date .year hr{color:#667;border-top:1px solid#667}.date .year strong,.date .year b,.date .year i,.date .year em{color:#002b36}body{text-align:center;font-size:16px}body > #entete{position:absolute;left:0;top:.5em;width:100%;min-width:50em;z-index:8000;padding-bottom:1em;margin-bottom:3em}#titre h2{width:80%;margin-left:auto;margin-right:auto;text-align:center;color:#ccccd0}#titre{text-align:center;width:100%}#titre h1,#titre h2{padding-left:1em;padding-right:1em}#bottom{clear:right;margin-right:0;padding:1.5em;line-height:1.5em;color:#224d58;margin-top:2em;text-align:center}#bottom a{color:#113c47}#bottom a:hover{color:#cb4b16}#sousliens{padding:1em 0;line-height:2em}#sousliens ul{list-style:none;margin-left:4em}ul.horizontal li{display:inline;font-size:.9em}ul.horizontal{margin-top:0;margin-bottom:0}#entete{padding-top:.1em;border-top:1px solid #ccccd0;border-bottom:1px solid #ccccd0}#liens{width:100%;padding:0;clear:both;margin-top:.5em}#liens ul{width:100%;clear:both;padding:0;margin:0}#liens ul li{display:inline-block;height:4em;margin-left:.2em;margin-right:.2em;width:23%}#liens ul li a,#liens ul li span{width:100%;display:block;line-height:4em}.clear{clear:both}#content{line-height:4em;margin-left:auto;margin-right:auto;margin-top:0;position:relative;clear:both;width:52em}.encadre,.black,.red,.intro,.resume,.shadow{padding:2em;margin-top:2em;margin-bottom:2em}.encadre,.black,.red,.shadow{color:#002b36;border:#ccccd0 solid 1px;border-radius:5px;box-shadow:0 0 2px #ccccd0 inset;background-color:#eeeef1}.encadre a,.black a,.red a,.shadow a{color:#667}.encadre a:hover,.black a:hover,.red a:hover,.shadow a:hover{color:#cb4b16}.encadre a:hover strong,.encadre a:hover b,.encadre a:hover i,.encadre a:hover em,.encadre a:hover .nicer,.black a:hover strong,.black a:hover b,.black a:hover i,.black a:hover em,.black a:hover .nicer,.red a:hover strong,.red a:hover b,.red a:hover i,.red a:hover em,.red a:hover .nicer,.shadow a:hover strong,.shadow a:hover b,.shadow a:hover i,.shadow a:hover em,.shadow a:hover .nicer{color:#ffb17c}.encadre hr,.black hr,.red hr,.shadow hr{color:#667;border-top:1px solid#667}.encadre strong,.encadre b,.encadre i,.encadre em,.black strong,.black b,.black i,.black em,.red strong,.red b,.red i,.red em,.shadow strong,.shadow b,.shadow i,.shadow em{color:#002b36}pre .red{background:none;padding:0;margin:auto;border:none;box-shadow:none}.intro,.resume{font-size:.9em;font-style:italic;padding:.5em 1em;color:#556}.intro a:hover,.resume a:hover{color:#cb4b16}.intro i,.intro em,.resume i,.resume em{font-weight:400;font-style:normal;color:#002b36}.intro strong,.intro b,.resume strong,.resume b{font-weight:700;color:#002b36}#afterheader > h1{width:100%;padding-top:1.5em;text-align:left}#afterheader{padding-left:0;padding-right:0}#sousliens{margin-top:3em;margin-bottom:3em;font-size:1.2em;letter-spacing:1px;text-align:left;clear:both}.twilight{line-height:1.1em}.corps{font-size:1.25em;line-height:1.5em;text-align:justify;padding:3em 3em;margin:0;clear:both}.corps p,.corps ol,.corps ul,.corps blockquote,.corps pre,.corps code{margin-top:1.5em;margin-bottom:1.5em}.corps pre code{margin:0}.corps p,.corps ol,.corps ul,.corps blockquote{line-height:1.5em}.corps pre,.corps code{line-height:1em}.corps ul li ul,.corps ol li ul,.corps ul li ol,.corps ol li ol{margin-top:0;margin-bottom:0}.corps img{max-width:80%;border:1px solid #ccccd0;background-color:#fafafc;padding:.5em;box-shadow:0 10px 15px#ccc;border-radius:3px}.corps a:hover img{background-color:#dc3a05}figure{margin:3em 0}figure img{box-shadow:0 10px 15px#ccc inset}figure figcaption{text-align:center;margin:.5em 0}img.clean{border:none;background-color:none;box-shadow:none}#address{clear:both}.definitionCell{width:5em;vertical-align:top;text-align:center;font-weight:700}.valueCell{text-align:right}.smallblock{float:left;width:50%;font-size:1em;font-weight:700}.largeblock{float:right;width:70%;font-size:1em}#blackpage,#nojsredirect{top:0;left:0;width:100%;min-height:100%;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;position:absolute;text-align:center}#blackpage{color:#002b36;background-color:#fafafc;font-family:Georgia,serif;font-style:italic;padding-top:8em;z-index:9000;cursor:wait}#blackpage .corps code,#blackpage .corps pre{font-family:monospace}#blackpage img{background:none;border:none;max-width:80%;margin:0 auto}#blackpage a{cursor:pointer}#blackpage .preh1{font-size:1.5em;font-weight:700;margin-bottom:1em}#blackpage .preh2{font-size:1.2em;font-style:italic;margin-bottom:1em}#blackpage .preintro{text-align:left;width:52em;margin:0 auto}#nojsredirect{z-index:9001}.nojsbutton{width:50%;padding:1em;border:solid 3px white;margin-left:auto;margin-right:auto;margin-top:2em;z-index:9002}.codefile{font-size:.8em;text-align:right;padding-right:1em;margin-right:.1;margin-bottom:-1em}.flush{clear:both}table.description{border-spacing:5px;border-collapse:separate;margin-right:auto;margin-left:auto}table.description tr td{padding-left:.5em;padding-right:.5em;padding-top:.5ex;padding-bottom:.5ex;vertical-align:middle;margin-right:5px}ul.long li{margin-bottom:1em}img{display:block;margin:1.2em auto;background:none;border:none}img.left{float:left;max-width:30%;margin-top:.6em;margin-right:2em}img.inside{display:inline;vertical-align:middle}pre{overflow-x:auto;overflow-y:hidden}.navigationprev,.navigationnext{padding:0;margin-left:.2em;margin-right:.2em;margin-bottom:0;margin-top:3em;width:45%}.navigation .navigationprev,.navigation .navigationnext{width:30%;margin-top:0}.navigation{height:4em;border-bottom:#ccccd0 solid 1px}.presarticleleft,.presarticleright{font-size:1em}.navigationprev{float:left;text-align:left}.navigationnext{float:right;text-align:right}.impact,.darkimpact{text-align:left;width:66%;padding-left:.25em;padding-right:.25em}table.impact{text-align:left}table.impact tr td{padding-left:.25em;padding-right:.25em}#liens{font-size:1.2em}#iemessage{font-size:1.2em;color:#ccc;margin:-10px;padding:1px 0;background:#333}#iemessage strong,#iemessage b,#iemessage i,#iemessage em{color:#ccc}#iemessage a,#iemessage a:visited{color:#eca}.tagname{display:inline;cursor:pointer;margin-left:.5em;margin-right:.5em}.list{margin-top:3em}#menuMessage{font-size:1.2em;line-height:1.5em;width:100%;text-align:center}#next_before_articles{clear:both;width:100%;font-size:1.2em;padding-top:1em;padding-bottom:1em}#previous_articles,#next_articles{color:#889;font-size:.8em;font-style:italic}#previous_articles{float:left;margin-left:1em;width:45%;text-align:left}.previous_article,.next_article{margin-top:1em}#next_articles{float:right;width:45%;margin-right:1em;text-align:right}#rss{font-size:1.2em;text-align:center;display:block;width:100%;float:right;padding:1em .1em}.corps .return a{color:#eeeef1;padding:.1em;line-height:1.5em;font-size:1.5em;height:1.5em;float:left;font-size:2em;margin-top:-0.5em;margin-left:-2em;width:1.5em}a.return{color:#eeeef1;padding:.1em;line-height:1.5em;font-size:1.5em;height:1.5em;font-size:2em;width:1.5em;display:block}a.return:hover{color:#889}.corps .return a:hover{color:#cb4b16}.footnotes{font-size:.8em}.footnotes ol{color:#839496;font-weight:700}.footnotes ol p{color:#002b36;font-weight:400;font-style:normal}.fontnotes ol{margin-left:0}.typeset img{display:inline;border:none;margin:0;padding:0}strong,b,i,em{color:#889}strong a,b a,i a,em a{color:#002b36}strong a:hover,b a:hover,i a:hover,em a:hover{color:#cb4b16}.corps p strong,.corps p b,.corps p i,.corps p em{color:#556}a:hover strong,a:hover b,a:hover i,a:hover em{color:#dc5c27}a:hover .nicer{color:#ffb17c}.nicer{color:#ccccd0;font-family:"Lucida Grande",Tahoma}.block{border:solid 1px #ccccd0;border-radius:2px;box-shadow:0 0 4px #f2f2f4 inset;background-color:#f8f8fa;width:26.5%;padding:1em;border-radius:2px;text-align:left;line-height:1em;margin-left:1%;margin-right:1%;font-size:.8em;height:9em}.block a{color:#002b36}.block a:hover{color:#cb4b16}.block h3{margin:0;font-size:1.3em}.block p{line-height:1.2em}.left{float:left}.right{float:right}.corps p a,.corps ul a{color:#556}.corps p a:hover,.corps ul a:hover{color:#cb4b16}ul.bloglist,.archive ul{list-style-type:none;margin:0}ul.bloglist li,.archive ul li{margin-bottom:1em}.button{cursor:pointer;text-align:center}#tagcloud{font-size:.8em;background:#f2f2f4;box-shadow:0 0 6px #ccccd0;border-radius:3px;line-height:2.5em;padding:2em;text-align:justify}.pala{font-family:Palatino}sup{vertical-align:top;font-size:.7em}.article .corps a:after{content:"†";vertical-align:super;line-height:0;font-size:.66em;color:#889}.article .corps .footnotes a:after,.article .corps sup a:after{content:""}.article .corps sup a{font-weight:700;padding:0 .3em;margin-left:2px;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px}.article .corps sup a:hover{color:#cb4b16}ul#markdown-toc,.intro .toc ul{text-transform:uppercase;font-size:.8em;list-style:none;padding-left:1.5em}ul#markdown-toc a:after,.intro .toc ul a:after{content:""}ul#markdown-toc ul ul,.intro .toc ul ul ul{font-variant:normal;line-height:1em;font-size:1em;margin-bottom:1em}table{border:1px solid #ccccd0}table tr td{padding:2px .5em}table tr:nth-child(odd){background-color:#f2f2f4}table tr:nth-child(even){background-color:#fafafc}p pre code,ul li pre code,ol li pre code{background:none;border:none;padding:0}p code,ul li code,ol li code{background:#f0f0f2;border:solid 1px #ccccd0;padding:2px}ul.sameline{list-style:none}ul.sameline li{float:left;margin-left:.5em}.resumearticle{background-color:#f2f2f4;border-radius:7px;box-shadow:0 0 5px #c7c7b8 inset,0 0 5px white;margin:1em 0;padding:1em}a.cut{font-size:12px;text-align:right;display:block;width:100%;opacity:.5;border:1px solid #fafafc;border-radius:3px}a.cut:hover{opacity:1;background-color:#f2f2f4;border-color:#ccccd0;box-shadow:0 0 3px #ccccd0 inset}a.cut strong{font-weight:700}.codehighlight pre{border-left:4px solid #ccccd0}#social{text-align:left;opacity:.3}#social:hover{opacity:1}.popularblock{width:30.333%;margin:0 1.5%;float:left}.popularblock figure{margin:0}.popularblock figure img{max-width:80%;max-height:6em}
\ No newline at end of file
+@font-face{font-family:"cmuntt";src:url("fonts/cmuntt.eot");src:local("☺"),url("fonts/cmuntt.svg") format("svg"),url("fonts/cmuntt.ttf") format("truetype");font-weight:400;font-style:normal}@font-face{font-family:"ComputerModern";src:url("fonts/cmunrb.eot");src:local("☺"),url("fonts/cmunrb.svg") format("svg"),url("fonts/cmunrb.ttf") format("truetype");font-weight:700}@font-face{font-family:"ComputerModern";src:url("fonts/cmunsl.eot");src:local("☺"),url("fonts/cmunsl.svg") format("svg"),url("fonts/cmunsl.ttf") format("truetype");font-style:italic,oblique}@font-face{font-family:"ComputerModern";src:url("fonts/cmunrm.eot");src:local("☺"),url("fonts/cmunrm.svg") format("svg"),url("fonts/cmunrm.ttf") format("truetype");font-weight:400;font-style:normal}i,em{font-style:italic}b,strong,h1,h2,h3,h4,h5,h6{font-weight:700}table.description tr td{border:1px solid #eeeef1}.assombris20{background-color:#eeeef1}body{color:#002b36;background-color:#fafafc}::selection{background:#002b36;color:#93a1a1}::-moz-selection{background:#002b36;color:#93a1a1}pre,code,a.cut{font-family:Incosolata,Monaco,monospace}pre::selection{background:#fdf6e3;color:#586e75}pre *::selection{background:#fdf6e3;color:#586e75}pre::-moz-selection{background:#fdf6e3;color:#586e75}pre *::-moz-selection{background:#fdf6e3;color:#586e75}a:hover{text-shadow:0 0 2px#faa}a,a:link,a:visited,a:active,a:hover{text-decoration:none;outline:none}a,a:link,a:visited,a:active{color:#002b36}a:hover{color:#cb4b16}hr{color:#eeeef1;border-top:1px solid #eeeef1;border-bottom:none;border-left:none;border-right:none}ul{list-style:none}.corps ul li:before{content:"- "}ul{padding-left:0;margin-left:1.5ex;text-indent:-1.5ex}ol{padding-left:0}.toc ol li,.toc ul li{margin:.5em 0}ol li ul,ol li ol,ul li ol,ul li ul{margin:.5em 1.5em;list-style:none}body,h1,h2,h3,h4,#entete,.tagname{text-rendering:optimizelegibility;line-height:1.5em}body{font-family:Georgia,Palatino,"Century Schoolbook L","Times New Roman",Times,serif}.article #afterheader{counter-reset:niv02}.article #afterheader h2{counter-increment:niv02;counter-reset:niv03;marker-offset:3em}.article #afterheader h2:before{content:counter(niv02) ". "}.article #afterheader h3{counter-increment:niv03;counter-reset:niv04}.article #afterheader h3:before{content:counter(niv02) "." counter(niv03) ". "}.article #afterheader h4{counter-increment:niv04}.article #afterheader h4:before{content:counter(niv02) "." counter(niv03) "." counter(niv04) ". "}pre{background-color:#002b36;color:#839496;box-shadow:0 0 5px #d0d0d2 inset;border-radius:3px;padding:1em;line-height:1.1em;font-size:.9em}p{margin-bottom:1.2em}blockquote{border:solid 1px #ccccd0;border-radius:2px;box-shadow:0 0 4px #f2f2f4 inset;background-color:#f8f8fa;font-style:italic;padding:.5em 1em;color:#556}blockquote a:hover{color:#cb4b16}blockquote i,blockquote em{font-weight:400;font-style:normal;color:#002b36}blockquote strong,blockquote b{font-weight:700;color:#002b36}blockquote ul{padding-left:1.5em}abbr,acronym{text-transform:uppercase;font-size:.8em;text-decoration:none;border-bottom-width:0}#titre{letter-spacing:-0.06em;border-bottom:4px double #ccccd0;border-top:4px double #ccccd0}#liens .active,#sousliens{color:#002b36;border:#ccccd0 solid 1px;border-radius:5px;box-shadow:0 0 2px #ccccd0 inset;background-color:#eeeef1}#liens .active a,#sousliens a{color:#667}#liens .active a:hover,#sousliens a:hover{color:#cb4b16}#liens .active a:hover strong,#liens .active a:hover b,#liens .active a:hover i,#liens .active a:hover em,#liens .active a:hover .nicer,#sousliens a:hover strong,#sousliens a:hover b,#sousliens a:hover i,#sousliens a:hover em,#sousliens a:hover .nicer{color:#ffb17c}#liens .active hr,#sousliens hr{color:#667;border-top:1px solid#667}#liens .active strong,#liens .active b,#liens .active i,#liens .active em,#sousliens strong,#sousliens b,#sousliens i,#sousliens em{color:#002b36}#liens a{border:1px solid#eee;background:rgba(0,0,0,0.05);box-shadow:0 0 2px white,0 0 3px#ccc inset;border:1px solid rgba(0,0,0,0.1);border-radius:3px}#liens a:hover{background:rgba(0,0,0,0.1);box-shadow:0 0 6px#555 inset}#liens .active{text-shadow:0 0 2px rgba(0,0,0,0.5);background-color:#f7f7f9;border:1px solid #e9e9eb;box-shadow:0 0 3px #c7c7c9 inset;border-radius:3px;border-top:none}#lastmod{font-size:.9em}.nojsbutton{font-size:2.5em}#clickcomment,#choixlang > a,#choixrss > a,.return > a{display:block;width:25%;cursor:pointer;margin:1em 0;padding:1em;font-size:16px;line-height:1.4em;border:1px solid #fafafc;color:#ccccd0}#clickcomment:hover,#choixlang > a:hover,#choixrss > a:hover,.return > a:hover{border:solid 1px #ccccd0;border-radius:2px;box-shadow:0 0 4px #f2f2f4 inset;background-color:#f8f8fa;color:#dc5c27;text-shadow:0 0 2px#faa}#clickcomment:active,#choixlang > a:active,#choixrss > a:active,.return > a:active{border:solid 1px #ccccd0;border-radius:2px;box-shadow:0 0 4px #f2f2f4 inset;background-color:#f8f8fa;color:#dc5c27;text-shadow:0 0 2px#faa;background:#f4f4f6}.return > a,#choixrss > a{float:right}#choix .return > a,#choix #choixrss > a{margin-top:0}.small{font-size:.8em}.sc{text-transform:uppercase;font-size:.8em}.impact,.darkimpact{font-size:2em;margin:0 auto 1em auto;line-height:1.3em}h1 > .date{font-size:.6em;color:#002b36}.date{font-size:.8em;color:#fafafc;border:1px solid #002b36;text-align:center;width:4.1em;line-height:1.5em;display:inline-block;vertical-align:middle;margin-right:1em}.date .day,.date .month,.date .year{display:block}.date .day{color:#002b36;background-color:#fafafc;float:left;width:1.7em}.date .month{float:right;width:2.3em;background-color:#002b36;color:#fafafc}.date .year{line-height:3ex;clear:both;color:#002b36;border:#ccccd0 solid 1px;border-radius:5px;box-shadow:0 0 2px #ccccd0 inset;background-color:#eeeef1;border-radius:0}.date .year a{color:#667}.date .year a:hover{color:#cb4b16}.date .year a:hover strong,.date .year a:hover b,.date .year a:hover i,.date .year a:hover em,.date .year a:hover .nicer{color:#ffb17c}.date .year hr{color:#667;border-top:1px solid#667}.date .year strong,.date .year b,.date .year i,.date .year em{color:#002b36}body{text-align:center;font-size:16px}body > #entete{position:absolute;left:0;top:.5em;width:100%;min-width:45em;z-index:8000;padding-bottom:1em;margin-bottom:3em}#titre h2{width:80%;margin-left:auto;margin-right:auto;text-align:center;color:#ccccd0}#titre{text-align:center;width:100%}#titre h1,#titre h2{padding-left:1em;padding-right:1em}#bottom{clear:right;margin-right:0;padding:1.5em;line-height:1.5em;color:#224d58;margin-top:2em;text-align:center}#bottom a{color:#113c47}#bottom a:hover{color:#cb4b16}#sousliens{padding:1em 0;line-height:2em}#sousliens ul{list-style:none;margin-left:4em}ul.horizontal li{display:inline;font-size:.9em}ul.horizontal{margin-top:0;margin-bottom:0}#entete{padding-top:.1em;border-top:1px solid #ccccd0;border-bottom:1px solid #ccccd0}#liens{width:100%;padding:0;clear:both;margin-top:.5em}#liens ul{width:100%;clear:both;padding:0;margin:0}#liens ul li{display:inline-block;height:4em;margin-left:.2em;margin-right:.2em;width:23%}#liens ul li a,#liens ul li span{width:100%;display:block;line-height:4em}.clear{clear:both}#content{line-height:4em;margin-left:auto;margin-right:auto;margin-top:0;position:relative;clear:both;width:47em}.encadre,.black,.intro,.resume,.shadow{padding:2em;margin-top:2em;margin-bottom:2em}.encadre,.black,.shadow{color:#002b36;border:#ccccd0 solid 1px;border-radius:5px;box-shadow:0 0 2px #ccccd0 inset;background-color:#eeeef1}.encadre a,.black a,.shadow a{color:#667}.encadre a:hover,.black a:hover,.shadow a:hover{color:#cb4b16}.encadre a:hover strong,.encadre a:hover b,.encadre a:hover i,.encadre a:hover em,.encadre a:hover .nicer,.black a:hover strong,.black a:hover b,.black a:hover i,.black a:hover em,.black a:hover .nicer,.shadow a:hover strong,.shadow a:hover b,.shadow a:hover i,.shadow a:hover em,.shadow a:hover .nicer{color:#ffb17c}.encadre hr,.black hr,.shadow hr{color:#667;border-top:1px solid#667}.encadre strong,.encadre b,.encadre i,.encadre em,.black strong,.black b,.black i,.black em,.shadow strong,.shadow b,.shadow i,.shadow em{color:#002b36}.intro,.resume{font-size:.9em;font-style:italic;padding:.5em 1em;color:#556}.intro a:hover,.resume a:hover{color:#cb4b16}.intro i,.intro em,.resume i,.resume em{font-weight:400;font-style:normal;color:#002b36}.intro strong,.intro b,.resume strong,.resume b{font-weight:700;color:#002b36}#afterheader > h1{width:100%;padding-top:1.5em;text-align:left}#afterheader{padding-left:0;padding-right:0}#sousliens{margin-top:3em;margin-bottom:3em;font-size:1.2em;letter-spacing:1px;text-align:left;clear:both}.twilight{line-height:1.1em}.corps{font-size:1.25em;line-height:1.5em;text-align:justify;padding:3em 3em;margin:0;clear:both}.corps p,.corps ol,.corps ul,.corps blockquote,.corps pre,.corps code{margin-top:1.5em;margin-bottom:1.5em}.corps pre code{margin:0}.corps p,.corps ol,.corps ul,.corps blockquote{line-height:1.5em}.corps ul li ul,.corps ol li ul,.corps ul li ol,.corps ol li ol{margin-top:0;margin-bottom:0}.corps img{max-width:80%;border:1px solid #ccccd0;background-color:#fafafc;padding:.5em;box-shadow:0 10px 15px#ccc;border-radius:3px}.corps a:hover img{background-color:#dc3a05}figure{margin:3em 0}figure img{box-shadow:0 10px 15px#ccc inset}figure figcaption{text-align:center;margin:.5em 0}figure.left,figure.right{max-width:30%}img.clean{border:none;background-color:none;box-shadow:none}#address{clear:both}.definitionCell{width:5em;vertical-align:top;text-align:center;font-weight:700}.valueCell{text-align:right}.smallblock{float:left;width:50%;font-size:1em;font-weight:700}.largeblock{float:right;width:70%;font-size:1em}#blackpage,#nojsredirect{top:0;left:0;width:100%;min-height:100%;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;position:absolute;text-align:center}#blackpage{color:#002b36;background-color:#fafafc;font-family:Georgia,serif;font-style:italic;padding-top:8em;z-index:9000;cursor:wait}#blackpage .corps code,#blackpage .corps pre{font-family:monospace}#blackpage img{background:none;border:none;max-width:80%;margin:0 auto}#blackpage a{cursor:pointer}#blackpage .preh1{font-size:1.5em;font-weight:700;margin-bottom:1em}#blackpage .preh2{font-size:1.2em;font-style:italic;margin-bottom:1em}#blackpage .preintro{text-align:left;width:47em;margin:0 auto}#nojsredirect{z-index:9001}.nojsbutton{width:50%;padding:1em;border:solid 3px white;margin-left:auto;margin-right:auto;margin-top:2em;z-index:9002}.codefile{font-size:.8em;text-align:right;padding-right:1em;margin-right:.1;margin-bottom:-1em}.flush{clear:both}table.description{border-spacing:5px;border-collapse:separate;margin-right:auto;margin-left:auto}table.description tr td{padding-left:.5em;padding-right:.5em;padding-top:.5ex;padding-bottom:.5ex;vertical-align:middle;margin-right:5px}ul.long li{margin-bottom:1em}img{display:block;margin:1.2em auto;background:none;border:none}img.right{max-width:30%;margin-top:.6em;margin-left:2em}img.left{float:left;max-width:30%;margin-top:.6em;margin-right:2em}img.inside{display:inline;vertical-align:middle}pre{overflow-x:auto;overflow-y:hidden}.navigationprev,.navigationnext{padding:0;margin-left:.2em;margin-right:.2em;margin-bottom:0;margin-top:3em;width:45%}.navigation .navigationprev,.navigation .navigationnext{width:30%;margin-top:0}.navigation{height:4em;border-bottom:#ccccd0 solid 1px}.presarticleleft,.presarticleright{font-size:1em}.navigationprev{float:left;text-align:left}.navigationnext{float:right;text-align:right}.impact,.darkimpact{text-align:left;width:66%;padding-left:.25em;padding-right:.25em}table.impact{text-align:left}table.impact tr td{padding-left:.25em;padding-right:.25em}#liens{font-size:1.2em}#iemessage{font-size:1.2em;color:#ccc;margin:-10px;padding:1px 0;background:#333}#iemessage strong,#iemessage b,#iemessage i,#iemessage em{color:#ccc}#iemessage a,#iemessage a:visited{color:#eca}.tagname{display:inline;cursor:pointer;margin-left:.5em;margin-right:.5em}.list{margin-top:3em}#menuMessage{font-size:1.2em;line-height:1.5em;width:100%;text-align:center}#next_before_articles{clear:both;width:100%;font-size:1.2em;padding-top:1em;padding-bottom:1em}#previous_articles,#next_articles{color:#889;font-size:.8em;font-style:italic}#previous_articles{float:left;margin-left:1em;width:45%;text-align:left}.previous_article,.next_article{margin-top:1em}#next_articles{float:right;width:45%;margin-right:1em;text-align:right}#rss{font-size:1.2em;text-align:center;display:block;width:100%;float:right;padding:1em .1em}.corps .return a{color:#eeeef1;padding:.1em;line-height:1.5em;font-size:1.5em;height:1.5em;float:left;font-size:2em;margin-top:-0.5em;margin-left:-2em;width:1.5em}a.return{color:#eeeef1;padding:.1em;line-height:1.5em;font-size:1.5em;height:1.5em;font-size:2em;width:1.5em;display:block}a.return:hover{color:#889}.corps .return a:hover{color:#cb4b16}.footnotes{font-size:.8em}.footnotes ol{color:#839496;font-weight:700}.footnotes ol p{color:#002b36;font-weight:400;font-style:normal}.fontnotes ol{margin-left:0}.typeset img{display:inline;border:none;margin:0;padding:0}strong,b,i,em{color:#889}strong a,b a,i a,em a{color:#002b36}strong a:hover,b a:hover,i a:hover,em a:hover{color:#cb4b16}.corps p strong,.corps p b,.corps p i,.corps p em{color:#556}a:hover strong,a:hover b,a:hover i,a:hover em{color:#dc5c27}a:hover .nicer{color:#ffb17c}.nicer{color:#ccccd0;font-family:"Lucida Grande",Tahoma}.block{border:solid 1px #ccccd0;border-radius:2px;box-shadow:0 0 4px #f2f2f4 inset;background-color:#f8f8fa;width:26.5%;padding:1em;border-radius:2px;text-align:left;line-height:1em;margin-left:1%;margin-right:1%;font-size:.8em;height:9em}.block a{color:#002b36}.block a:hover{color:#cb4b16}.block h3{margin:0;font-size:1.3em}.block p{line-height:1.2em}.left{float:left}.right{float:right}.corps p a,.corps ul a{color:#556}.corps p a:hover,.corps ul a:hover{color:#cb4b16}ul.bloglist,.archive ul{list-style-type:none;margin:0}ul.bloglist li,.archive ul li{margin-bottom:1em}.button{cursor:pointer;text-align:center}#tagcloud{font-size:.8em;background:#f2f2f4;box-shadow:0 0 6px #ccccd0;border-radius:3px;line-height:2.5em;padding:2em;text-align:justify}.pala{font-family:Palatino}sup{vertical-align:top;font-size:.7em}.article .corps a:after{content:"†";vertical-align:super;line-height:0;font-size:.66em;color:#889}.article .corps .footnotes a:after,.article .corps sup a:after{content:""}.article .corps sup a{font-weight:700;padding:0 .3em;margin-left:2px;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px}.article .corps sup a:hover{color:#cb4b16}ul#markdown-toc,.intro .toc ul{text-transform:uppercase;font-size:.8em;list-style:none;padding-left:1.5em}ul#markdown-toc a:after,.intro .toc ul a:after{content:""}ul#markdown-toc ul ul,.intro .toc ul ul ul{font-variant:normal;line-height:1em;font-size:1em;margin-bottom:1em}table{border:1px solid #ccccd0}table tr td{padding:2px .5em}table tr:nth-child(odd){background-color:#f2f2f4}table tr:nth-child(even){background-color:#fafafc}p pre code,ul li pre code,ol li pre code{background:none;border:none;padding:0}p code,ul li code,ol li code{background:#f0f0f2;border:solid 1px #ccccd0;padding:2px}ul.sameline{list-style:none}ul.sameline li{float:left;margin-left:.5em}.resumearticle{background-color:#f2f2f4;border-radius:7px;box-shadow:0 0 5px #c7c7b8 inset,0 0 5px white;margin:1em 0;padding:1em}a.cut{font-size:12px;text-align:right;display:block;width:100%;opacity:.5;border:1px solid #fafafc;border-radius:3px}a.cut:hover{opacity:1;background-color:#f2f2f4;border-color:#ccccd0;box-shadow:0 0 3px #ccccd0 inset}a.cut strong{font-weight:700}.codehighlight pre{border-left:4px solid #ccccd0}#social{text-align:left;opacity:.3}#social:hover{opacity:1}.popularblock{width:30.3333%;margin:0 1.5%;float:left}.popularblock figure{margin:0}.popularblock figure img{max-width:80%;max-height:6em}section.slide{border-color:#ccccd0;border:solid 1px;margin-bottom:1em;padding:.5em;font-family:sans-serif;font-size:.8em}.base03{color:#002b36}.base02{color:#073642}.base01{color:#586e75}.base00{color:#657b83}.base0{color:#839496}.base1{color:#93a1a1}.base2{color:#eee8d5}.base3{color:#fdf6e3}.yellow{color:#b58900}.orange{color:#cb4b16}.red{color:#dc322f}.magenta{color:#d33682}.violet{color:#6c71c4}.blue{color:#268bd2}.cyan{color:#2aa198}.green{color:#859900}
\ No newline at end of file
diff --git a/output/Scratch/css/solarized.css b/output/Scratch/css/solarized.css
index 9b7885a79..973ffa46b 100644
--- a/output/Scratch/css/solarized.css
+++ b/output/Scratch/css/solarized.css
@@ -1,21 +1,21 @@
/*
* http://ethanschoonover.com/solarized
- * base03 #002b36
- * base02 #073642
- * base01 #586e75
- * base00 #657b83
- * base0 #839496
- * base1 #93a1a1
- * base2 #eee8d5
- * base3 #fdf6e3
- * yellow #b58900
- * orange #cb4b16
- * red #dc322f
- * magenta #d33682
- * violet #6c71c4
- * blue #268bd2
- * cyan #2aa198
- * green #859900
+ * base03 #002b36
+ * base02 #073642
+ * base01 #586e75
+ * base00 #657b83
+ * base0 #839496
+ * base1 #93a1a1
+ * base2 #eee8d5
+ * base3 #fdf6e3
+ * yellow #b58900
+ * orange #cb4b16
+ * red #dc322f
+ * magenta #d33682
+ * violet #6c71c4
+ * blue #268bd2
+ * cyan #2aa198
+ * green #859900
*/
/* base03 */
@@ -27,12 +27,12 @@ pre {
}
pre .high0 { color:#586e75; }
-pre .high,
+pre .high,
pre .high1 { color:#073642; }
pre .high2 { color:#002b36; }
/* default text color */
-pre,
+pre,
pre .DiffInserted,
pre .DiffChanged,
pre .DiffHeader,
@@ -90,13 +90,13 @@ pre .InvalidDeprecated {
font-style: italic;
}
-pre .magenta,
+pre .magenta,
pre .CCCPreprocessorLine,
-pre .CCCPreprocessorDirective
+pre .CCCPreprocessorDirective
{ color: #d33682; }
-pre .violet,
-pre .Constant
+pre .violet,
+pre .Constant
{ color: #6c71c4; }
/* Blue */
@@ -133,10 +133,10 @@ pre .CssConstructorArgument {
Orginal Style from ethanschoonover.com/solarized (c) Jeremy Hull
*/
-
+pre {
+ display: block; }
pre code {
- display: block;
- /* background: #002b36; */
+ /* background: #002b36; */
color: #657b83;
background-color: #f3f4f5;
}
diff --git a/output/Scratch/css/solarized_striped.css b/output/Scratch/css/solarized_striped.css
new file mode 100644
index 000000000..0e107e3cf
--- /dev/null
+++ b/output/Scratch/css/solarized_striped.css
@@ -0,0 +1,217 @@
+/*
+ * http://ethanschoonover.com/solarized
+ * base03 #002b36
+ * base02 #073642
+ * base01 #586e75
+ * base00 #657b83
+ * base0 #839496
+ * base1 #93a1a1
+ * base2 #eee8d5
+ * base3 #fdf6e3
+ * yellow #b58900
+ * orange #cb4b16
+ * red #dc322f
+ * magenta #d33682
+ * violet #6c71c4
+ * blue #268bd2
+ * cyan #2aa198
+ * green #859900
+ */
+
+/* base03 */
+pre {
+ color: #657b83;
+}
+
+pre .high0 { color:#586e75; }
+pre .high,
+pre .high1 { color:#073642; }
+pre .high2 { color:#002b36; }
+
+/* default text color */
+pre,
+pre .DiffInserted,
+pre .DiffChanged,
+pre .DiffHeader,
+pre .DiffDeleted,
+pre .EmbeddedSource,
+pre .EmbeddedSourceBright {
+ color: #839496;
+}
+pre .DiffHeader { font-style: italic; }
+
+/* Highlighted background */
+pre .EmbeddedSource,
+pre .EmbeddedSourceBright {
+ background-color: #073642;
+}
+
+/* Present but not intrusive */
+pre .low,
+pre .line-numbers,
+pre .DoctypeXmlProcessing,
+pre .Comment {
+ color: #586e75;
+}
+pre .Comment {
+ font-style: italic;
+}
+
+/* Yellow */
+pre .yellow,
+pre .CssClass,
+pre .CssPropertyName,
+pre .Entity,
+pre .MarkupList,
+pre .EntityInheritedClass {
+ color: #b58900;
+}
+pre .EntityInheritedClass {
+ font-style: italic;
+}
+/* Orange */
+pre .orange,
+pre .String,
+pre .StringRegexp,
+pre .StringEmbeddedSource,
+pre .StringConstant,
+pre .MetaTagAll {
+ color: #cb4b16;
+}
+/* Red */
+pre .red,
+pre .InvalidIllegal,
+pre .CssAtRule,
+pre .InvalidDeprecated {
+ color: #dc322f ;
+ font-style: italic;
+}
+
+pre .magenta,
+pre .CCCPreprocessorLine,
+pre .CCCPreprocessorDirective
+{ color: #d33682; }
+
+pre .violet,
+pre .Constant
+{ color: #6c71c4; }
+
+/* Blue */
+pre .blue,
+pre .Storage,
+pre .Variable,
+pre .CssId,
+pre .SupportFunction,
+pre .MetaTagInline,
+pre .StringRegexpSpecial,
+pre .CssTagName,
+pre .StringVariable,
+pre .Support {
+ color: #268bd2 ;
+}
+/* Cyan */
+pre .cyan,
+pre .MarkupHeading,
+pre .CssAdditionalConstants,
+pre .CssPropertyValue,
+pre .SupportConstant {
+ color: #2aa198;
+}
+
+/* Green */
+pre .green,
+pre .CssPseudoClass,
+pre .Keyword,
+pre .CssConstructorArgument {
+ color: #859900;
+}
+/*
+
+Orginal Style from ethanschoonover.com/solarized (c) Jeremy Hull
+
+*/
+pre {
+ display: block; }
+pre code {
+ color: #657b83;
+}
+
+pre .comment,
+pre .template_comment,
+pre .diff .header,
+pre .doctype,
+pre .lisp .string,
+pre .javadoc {
+ color: #93a1a1;
+ font-style: italic;
+}
+
+pre .keyword,
+pre .css .rule .keyword,
+pre .winutils,
+pre .javascript .title,
+pre .method,
+pre .addition,
+pre .css .tag,
+pre .lisp .title {
+ color: #859900;
+}
+
+pre .number,
+pre .command,
+pre .string,
+pre .tag .value,
+pre .phpdoc,
+pre .tex .formula,
+pre .regexp,
+pre .hexcolor {
+ color: #2aa198;
+}
+
+pre .title,
+pre .localvars,
+pre .function .title,
+pre .chunk,
+pre .decorator,
+pre .builtin,
+pre .built_in,
+pre .lisp .title,
+pre .identifier,
+pre .title .keymethods,
+pre .id {
+ color: #268bd2;
+}
+
+pre .attribute,
+pre .variable,
+pre .instancevar,
+pre .lisp .body,
+pre .smalltalk .number,
+pre .constant,
+pre .class .title,
+pre .parent,
+pre .haskell .label {
+ color: #b58900;
+}
+
+pre .preprocessor,
+pre .pi,
+pre .shebang,
+pre .symbol,
+pre .diff .change,
+pre .special,
+pre .keymethods,
+pre .attr_selector,
+pre .important,
+pre .subst,
+pre .cdata {
+ color: #cb4b16;
+}
+
+pre .deletion {
+ color: #dc322f;
+}
+
+pre .tex .formula {
+ background: #eee8d5;
+}
diff --git a/output/Scratch/css/windows.css b/output/Scratch/css/windows.css
index e7e3d2bb5..974569f3d 100644
--- a/output/Scratch/css/windows.css
+++ b/output/Scratch/css/windows.css
@@ -1,2 +1,2 @@
body {
- font-family: Georgia, Palatino, "Century Schoolbook L", "Times New Roman", Times, serif; }
+ font-family: MathJax_Main, Georgia, Palatino, "Century Schoolbook L", "Times New Roman", Times, serif; }
diff --git a/output/Scratch/en/blog/2010-05-24-Trees--Pragmatism-and-Formalism/graph/The_destination_tree.png b/output/Scratch/en/blog/2010-05-24-Trees--Pragmatism-and-Formalism/graph/The_destination_tree.png
index 2fbf4551c..161aad593 100644
Binary files a/output/Scratch/en/blog/2010-05-24-Trees--Pragmatism-and-Formalism/graph/The_destination_tree.png and b/output/Scratch/en/blog/2010-05-24-Trees--Pragmatism-and-Formalism/graph/The_destination_tree.png differ
diff --git a/output/Scratch/en/blog/2010-05-24-Trees--Pragmatism-and-Formalism/graph/The_source_tree.png b/output/Scratch/en/blog/2010-05-24-Trees--Pragmatism-and-Formalism/graph/The_source_tree.png
index 33cb61405..8b8ece0e1 100644
Binary files a/output/Scratch/en/blog/2010-05-24-Trees--Pragmatism-and-Formalism/graph/The_source_tree.png and b/output/Scratch/en/blog/2010-05-24-Trees--Pragmatism-and-Formalism/graph/The_source_tree.png differ
diff --git a/output/Scratch/en/blog/Haskell-OpenGL-Mandelbrot/index.html b/output/Scratch/en/blog/Haskell-OpenGL-Mandelbrot/index.html
index 3356207f9..f8432e3ec 100644
--- a/output/Scratch/en/blog/Haskell-OpenGL-Mandelbrot/index.html
+++ b/output/Scratch/en/blog/Haskell-OpenGL-Mandelbrot/index.html
@@ -10,12 +10,7 @@
-
-
-
-
-
-
+
@@ -23,7 +18,7 @@
@@ -72,7 +67,7 @@ Imperative language could also benefit from this functional organization.
- Introduction
- First version
@@ -157,7 +152,7 @@ We start cleaning the code at the 5th section.
The first being mostly some boilerplate2.
And the second part more focused on OpenGL and content.
-Let’s play the song of our people
+Let’s play the song of our people
@@ -393,7 +388,7 @@ It is a bit long before the first image appears, but if you resize the window, i
This property is a direct consequence of purity.
If you look closely, you see that allPoints
is a pure list.
Therefore, calling allPoints
will always render the same result and Haskell is clever enough to use this property.
-While Haskell doesn’t garbage collect allPoints
the result is reused for free.
+While Haskell doesn’t garbage collect allPoints
the result is reused for free.
We did not specified this value should be saved for later use.
It is saved for us.
@@ -631,7 +626,7 @@ instead of using a 3D projection of quaternions.
I am pretty sure this construction is not useful for numbers.
But it will be enough for us to create something that look nice.
-This section is quite long, but don’t be afraid,
+
This section is quite long, but don’t be afraid,
most of the code is some OpenGL boilerplate.
If you just want to skim this section,
here is a high level representation:
@@ -647,7 +642,7 @@ here is a high level representation:
Drawing:
- - set doubleBuffer, handle depth, window size…
+ - set doubleBuffer, handle depth, window size…
- Use state to apply some transformations
@@ -903,7 +898,7 @@ Mainly there are two parts: apply some transformations, draw the object.
The 3D Mandelbrot
-We have finished with the OpenGL section, let’s talk about how we
+
We have finished with the OpenGL section, let’s talk about how we
generate the 3D points and colors.
First, we will set the number of details to 200 pixels in the three dimensions.
@@ -1017,7 +1012,7 @@ depthPoints = do
If you prefer the first version, then just imagine how hard it will be to change the enumeration of the point from (x,y) to (x,z) for example.
-Also, we didn’t searched for negative values.
+
Also, we didn’t searched for negative values.
This modified Mandelbrot is no more symmetric relatively to the plan y=0
.
But it is symmetric relatively to the plan z=0
.
Then I mirror these values.
@@ -1242,7 +1237,7 @@ ymandel x y z = mandel (2*x/width) (2*y/height) (2*z/deep) 64
-This code is cleaner but many things doesn’t feel right.
+
This code is cleaner but many things doesn’t feel right.
First, all the user interaction code is outside our main file.
I feel it is okay to hide the detail for the rendering.
But I would have preferred to control the user actions.
@@ -1276,12 +1271,12 @@ We will have two choices:
-
Our main problem come from user interaction.
-If you ask “the Internet”,
+If you ask “the Internet”,
about how to deal with user interaction with a functional paradigm,
the main answer is to use functional reactive programming (FRP).
-I won’t use FRP in this article.
-Instead, I’ll use a simpler while less effective way to deal with user interaction.
-But The method I’ll use will be as pure and functional as possible.
+I won’t use FRP in this article.
+Instead, I’ll use a simpler while less effective way to deal with user interaction.
+But The method I’ll use will be as pure and functional as possible.
@@ -1303,7 +1298,7 @@ First, what the main loop should look like if we could make our own:
- a function taking two parameters: time and world state and render a new world without user interaction.
-Here is a real working code, I’ve hidden most display functions.
+
Here is a real working code, I’ve hidden most display functions.
The YGL, is a kind of framework to display 3D functions.
But it can easily be extended to many kind of representation.
@@ -1523,7 +1518,7 @@ idleAction tnew world = world {
Now the function which will generate points in 3D.
The first parameter (res
) is the resolution of the vertex generation.
More precisely, res
is distance between two points on one direction.
-We need it to “close” our shape.
+We need it to “close” our shape.
The type Function3D
is Point -> Point -> Maybe Point
.
Because we consider partial functions
@@ -1592,7 +1587,7 @@ ymandel x y z = fromIntegral (mandel x y z 64) / 64
-I won’t explain how the magic occurs here.
+
I won’t explain how the magic occurs here.
If you are interested, just read the file YGL.hs
.
It is commented a lot.
@@ -1612,8 +1607,8 @@ It is commented a lot.
Our code architecture feel very clean.
All the meaningful code is in our main file and all display details are
externalized.
-If you read the code of YGL.hs
, you’ll see I didn’t made everything perfect.
-For example, I didn’t finished the code of the lights.
+If you read the code of YGL.hs
, you’ll see I didn’t made everything perfect.
+For example, I didn’t finished the code of the lights.
But I believe it is a good first step and it will be easy to go further.
Unfortunately the program of the preceding session is extremely slow.
We compute the Mandelbulb for each frame now.
@@ -1897,20 +1892,20 @@ ymandel x y z = fromIntegral (mandel x y z 64) / 64
As we can use imperative style in a functional language,
know you can use functional style in imperative languages.
This article exposed a way to organize some code in a functional way.
-I’d like to stress the usage of Haskell made it very simple to achieve this.
+I’d like to stress the usage of Haskell made it very simple to achieve this.
Once you are used to pure functional style,
it is hard not to see all advantages it offers.
The code in the two last sections is completely pure and functional.
-Furthermore I don’t use GLfloat
, Color3
or any other OpenGL type.
+Furthermore I don’t use GLfloat
, Color3
or any other OpenGL type.
If I want to use another library in the future,
I would be able to keep all the pure code and simply update the YGL module.
-The YGL
module can be seen as a “wrapper” around 3D display and user interaction.
+
The YGL
module can be seen as a “wrapper” around 3D display and user interaction.
It is a clean separator between the imperative paradigm and functional paradigm.
-If you want to go further, it shouldn’t be hard to add parallelism.
+
If you want to go further, it shouldn’t be hard to add parallelism.
This should be easy mainly because most of the visible code is pure.
Such an optimization would have been harder by using directly the OpenGL library.
@@ -1920,7 +1915,7 @@ O(n².log(n)) to O(n³).
-
-
Unfortunately, I couldn’t make this program to work on my Mac. More precisely, I couldn’t make the DevIL library work on Mac to output the image. Yes I have done a brew install libdevil
. But even a minimal program who simply write some jpg
didn’t worked. I tried both with Haskell
and C
.↩
+ Unfortunately, I couldn’t make this program to work on my Mac. More precisely, I couldn’t make the DevIL library work on Mac to output the image. Yes I have done a brew install libdevil
. But even a minimal program who simply write some jpg
didn’t worked. I tried both with Haskell
and C
.↩
-
Generally in Haskell you need to declare a lot of import lines.
@@ -1961,34 +1956,26 @@ O(n².log(n)) to O(n³).
Subscribe
-
comments
-
-
-
-
-
-
-
+
+
+
+
+ comments powered by Disqus
+
@@ -2023,7 +2010,7 @@ O(n².log(n)) to O(n³).
next entries
@@ -2057,4 +2044,10 @@ O(n².log(n)) to O(n³).
+
+
+
+
+
+