regeneration

This commit is contained in:
Yann Esposito 2012-09-13 12:48:56 +02:00
parent cca1b5df12
commit 7ebb356b57
7 changed files with 251 additions and 230 deletions

View file

@ -20,8 +20,7 @@ blogimage("main.jpg","Title image")
begindiv(intro)
UPDATE: [Nicholas Sterling had discovered a way to implement anonymous functions](http://nicholassterling.wordpress.com/2012/03/30/a-zsh-map-function/)
and [Arash Rouhani has made a github repo which make install easier and added some tests](https://github.com/Tarrasch/zsh_functional).
Thanks to both of you!
Thanks!
With this last version you should use `map` if you use external function.
`mapl` to use lambda function. And `mapa` for arithmetic operations.

View file

@ -63,7 +63,7 @@ I was about 10 when I played with logo to draw on the computer.
I remember the Bach's music while the program loaded.
At that time we had to load the program into the memory using tapes.
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.
@ -86,8 +86,8 @@ to dragon :degree :size
if :size>10 [setpensize 3]
if :size>20 [setpensize 4]
if :size>40 [setpensize 5]
ifelse :degree=0 [
fd :size
ifelse :degree=0 [
fd :size
][
left 45 dragon (:degree-1) (size/4)
right 90 dragon (:degree-1) (size/2)
@ -130,8 +130,8 @@ It is very close to the machine while keeping sufficient abstractions to be fun.
I made a lot of program with it.
From sort algorithms to AI ones (SAT3), system, network prgramming, 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.
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.
### ADA
@ -165,18 +165,19 @@ 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.
I appreciated multiple inheritance and templates.
In reality I liked a lot C++ while I was working alone.
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<T>`.
In the doc, one could use `String<T>`.
But in reality, T have to be only `char` or `char16`.
Then I had to reduce my alphabet to 2<sup>16</sup> 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.
@ -184,7 +185,7 @@ To conclude, I'd say, C++ is very good if you work alone or with a fixed subset
leftblogimage("eiffel.jpg","Eiffel tower construction")
Yes, it is a really nice language.
Yes, it is a really nice language.
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.
@ -197,13 +198,13 @@ 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.
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...
But It is extremely verbose.
But It is extremely verbose.
And limitations are quite boring if you know what you're doing.
For example, there is no multiple inheritance.
For example, there is no multiple inheritance.
Generally it is a coherent choice when there are a way to compensate.
In Java, there are interfaces for this.
Except, interfaces can only add methods to a class.
@ -213,7 +214,7 @@ 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 add to make a bunch of copy/paste inside all my subclasses!
And 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.
@ -246,14 +247,14 @@ 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.
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.
Cocoa is very different to other framework I used before.
I find many of its idea extermely good.
Both simple and efficient.
It might seems like small details on paper, but once you start using it, it make all the difference.
Even if Objective-C is a relatively low level language.
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.
I recommand to continue working with this language.
In the end you'll certainely find it better than expected.
## Modern Scripting Languages
@ -267,12 +268,12 @@ This small script language that we used all to make our website in the time of a
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.
In reality PHP is just behind C for the abstraction level.
Therefore it has a lot of organisation problems and make it easier to create bugs.
For web applications it is a real problem.
PHP remains for me the SQL injection language.
I make 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
@ -294,8 +295,8 @@ Argh... Note it is completely usable for many things.
### Awk
If you have to "filter" some files and the filter is not too complicated awk is the ideal language to do this.
For example, if you want to know which words in a text file are most used.
I used it to modify hundred of XML files in an easier manner than XSLT.
For example, if you want to know which words in a text file are most used.
I used it to modify hundreds of XML files in an easier manner than XSLT.
### Perl
@ -325,12 +326,12 @@ 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 thousand 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.
### Javascript
It is the good surprise.
During years, javascript was considered as an annoying web experience language.
During years, javascript was considered as an annoying web experience language.
In reality, javascript has many really good qualities.
Particularly, it is easy to pass a function in parameter and to create anonymous functions (closures).
Recently, javascript became far faster than before and many frameworks and libraries appears:
@ -366,11 +367,11 @@ 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.
Monads and Arrows are some of them.
Monads and Arrows are some of them.
I didn't understand 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!"
And no concession has been made to make this language more popular (I'm looking at you C++, Java and Javascript).
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).
## Unpopular Languages
@ -378,7 +379,7 @@ This langage remain pure (I know there are two meaning).
### Metapost
Metapost is a language to program drawings.
What make metapost very good?
What make metapost very good?
It contains a linear solver.
This is really useful to draw things.
For example if you write:
@ -397,10 +398,10 @@ X=whatever[C,D]
This second example, will place the point X at the intersection of the two segments `AB` and `CD`.
This feature is very helpful, and not only to draw things.
This feature is very helpful, and not only to draw things.
Most programming language should think about adding it.
### zsh
### zsh
Yes, zsh is a shell.
But it is also a script language extremly well suited to file management.
@ -408,7 +409,7 @@ For now, it is the best shell I used. I prefer zsh to bash.
### Prolog
I never made something serious with Prolog, but I really loved to use and learn it.
I never made something serious with Prolog, but I really loved to use and learn it.
I had the chance to learn Prolog with [Alain Colmerauer](http://alain.colmerauer.free.fr/) himself.
This language try to resolve constraints as much as it can.
It has a magic feeling when you use it.

View file

@ -20,8 +20,7 @@ blogimage("main.jpg","Title image")
begindiv(intro)
UPDATE: [Nicholas Sterling a découvert un moyen de faire des fonctions anonymes](http://nicholassterling.wordpress.com/2012/03/30/a-zsh-map-function/)
et [Arash Rouhani a créé un repository sur github qui simplifie l'installation](https://github.com/Tarrasch/zsh_functional).
Merci à vous deux!
Merci!
Avec cette dernière version vous pouvez utiliser `map` si vous utilisez
des fonctions déclarées. `mapl` pour les fonctions anonymes

View file

@ -27,17 +27,17 @@ enddiv
leftblogimage("basic.gif","Title image")
Ah ! Le language de mes premiers programmes !
Je devais avoir 10-11 ans.
Ah ! Le language de mes premiers programmes !
Je devais avoir 10-11 ans.
Sous `MO5`, `Amstrad CPC 6128` et même `Atari STe`.
Le langage des `GOTO`s.
Je suis empleint de nostalgie rien que d'y penser.
Le langage des `GOTO`s.
Je suis empleint de nostalgie rien que d'y penser.
C'est à peu prêt le seul intérêt de ce langage.
Aujourd'hui ce langage est tombé en désuétude.
Ce n'est ni un bon langage pour apprendre, ni un bon langage pour faire de vrai programmes.
Même si quelques années plus tard, je me remettais à programmer dans un basic avec un compilateur qui pourrait lui redonner vie.
Ce n'est ni un bon langage pour apprendre, ni un bon langage pour faire de vrai programmes.
Même si quelques années plus tard, je me remettais à programmer dans un basic avec un compilateur qui pourrait lui redonner vie.
Je m'en était servi pour faire un livre dont vous êtes le héro :-).
<code class="zsh">
@ -48,7 +48,7 @@ RUN
</code>
Je m'en souviens aussi pour avoir copier des codes de jeux vidéo à partir de magasines.
La plupart des lignes ressemblaient à
La plupart des lignes ressemblaient à
<code class="zsh">
3110 DATA FA,01,FF,FF,FF,FF,00,23,22,43,DA,DE,EE,FF,FF,FF,00,03,4A,F2
@ -64,13 +64,13 @@ Toujours lors que j'avais 10 ans, on pouvait faire de petits programmes sympathi
Je me souviens que lors du chargement de l'application logo on avait droit à de la musique de Bach.
Oui, il fallait charger le programme en mémoire avec une cassette.
Oui, il fallait charger le programme en mémoire avec une cassette.
Et elle ne faisait pas les 'Krrrkrr csssss krrrr'.
Je l'avais utilisé sans les boucles.
Des années plus tard, je le réutiliser pour faire de l'initiation à l'informatique à mes étudiants de DEUG MIAS première année.
Il s'est en fait révélé très utile.
Grace à lui, faire des fractales se révèle être un jeu d'enfant, au sens litéral.
Des années plus tard, je le réutiliser pour faire de l'initiation à l'informatique à mes étudiants de DEUG MIAS première année.
Il s'est en fait révélé très utile.
Grace à lui, faire des fractales se révèle être un jeu d'enfant, au sens litéral.
Je ne peux que conseiller ce langage pour apprendre à programmer et aussi pour le fun.
Voici un exemple de code et le résultat est la jolie fractale 'dragon'.
@ -89,8 +89,8 @@ to dragon :degree :size
if :size>10 [setpensize 3]
if :size>20 [setpensize 4]
if :size>40 [setpensize 5]
ifelse :degree=0 [
fd :size
ifelse :degree=0 [
fd :size
][
left 45 dragon (:degree-1) (size/4)
right 90 dragon (:degree-1) (size/2)
@ -107,9 +107,9 @@ dragon 6 3000
L'éternel numéro 2.
J'ai dû apprendre à programmer en Pascal aux alentour de 15 ans et je l'ai aussi réutiliser un peit peu en faculté.
J'ai dû apprendre à programmer en Pascal aux alentour de 15 ans et je l'ai aussi réutiliser un peit peu en faculté.
Je dois avouer, que je le trouve inférieur au C en tous points.
J'ai fait pas mal de chose avec ça, comme des algorithmes de graphes, des algorithmes de tri, et même un peu d'intelligence artificielle comme des algorithmes génétiques.
J'ai fait pas mal de chose avec ça, comme des algorithmes de graphes, des algorithmes de tri, et même un peu d'intelligence artificielle comme des algorithmes génétiques.
Mais je préfère largement le C.
### C
@ -118,30 +118,30 @@ leftblogimage("C.jpg","Pointer representation from Dancing links")
Le langage des pointeurs
Ah, _le_ langage de programmation par excellence.
Ah, _le_ langage de programmation par excellence.
Une fois que vous avez compris les boucles et la récursivité.
Une fois que vous avez compris les boucles et la récursivité.
Il est temps de passer aux choses sérieuses.
Si vous voulez avoir du code de bonne qualité, alors apprendre le C est quasi-obligatoire.
Ce langage est très proche du langage machine.
En particulier, (la majorité du temps).
Ce langage est très proche du langage machine.
En particulier, (la majorité du temps).
Il y a une relation linéaire entre la taille du code en C et de son résultat compilé en assembleur.
Ça signifie qu'à chaque fois que vous écrivez une ligne de C, il ne va pas se passer de choses toutes bizarres comme lancer un algorithme qui va prendre deux plombes.
Il est très proche de la machine tout en ayant une abstraction suffisante pour ne pas être "trop" désagréable.
J'ai fait beaucoup de choses avec.
J'ai fait beaucoup de choses avec.
Tous les algorithmes de tri, des algorithmes d'intelligence artificielle (résolution de SAT3), du système, du réseau etc...
Bref il est versatile, et on ne peut pas dire que l'on sait programmer si on ne s'est jamais mis à programmer sérieusement en `C`.
### 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.
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.
Disons qu'il est assez vieux et qu'il a inspiré la plupart des concepts objets.
## Les langages orientés objets
@ -154,8 +154,8 @@ En gros, il n'y avait pas d'aide pour structurer votre code.
Alors, pour aider à limiter le nombre de bug, en particulier pour la création de très gros programmes, on s'est mis à réfléchir à la meilleure façon d'organiser du code d'ordinateur.
À la fin, ça à donné la programmation orienté objet. Et donc les langages comme le C manquaient de système pour aider au développement orienté objet.
Attention, la programmaiton orienté objet n'est pas la panacée. Combien de programme utilisez-vous qui n'ont pas de bug ?
Et ça ne convient pas à tous les type de problème.
Mais pour faire une application banquaire, un système de gestion des stocks, des clients ou des archives.
Et ça ne convient pas à tous les type de problème.
Mais pour faire une application banquaire, un système de gestion des stocks, des clients ou des archives.
C'est-à-dire un système d'information, c'est pas trop mal.
Donc les langages orientés objets se sont mis à fleurir.
@ -166,29 +166,30 @@ leftblogimage("cplusplus.jpg","Messy router")
Le malpropre
Et oui l'industrie voulait un langage objet, mais elle n'était pas prête à mettre à la poubelle tout ses codes en C.
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.
Le problème avec C++ c'est qu'il fait trop de choses.
L'héritage multiple, des templates, etc...
Bon, je l'ai quand même choisi pour faire le plus gros programme que j'ai jamais fais lors de ma thèse.
Et je dois avouer que l'expérience m'a plu.
Le seul reproche que j'ai à faire, c'est que la STL n'était pas aussi complète que l'on aurait pu l'espérer pour un détail.
On ne peut pas faire de `String<T>` pour autre chose que des `char16`.
Du coup, mon alphabet était limité à 2<sup>16</sup> lettres.
Hors, pour certaines application, l'alphabet doit être gigantesque.
Bon, je l'ai quand même choisi pour faire le plus gros programme que j'ai jamais fais lors de ma thèse.
Et je dois avouer que l'expérience m'a plu.
Le seul reproche que j'ai à faire, c'est que la STL n'était pas aussi complète que l'on aurait pu l'espérer pour un détail.
On ne peut pas faire de `String<T>` pour autre chose que des `char16`.
Du coup, mon alphabet était limité à 2<sup>16</sup> 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.
Bien plus propre que C++.
Mais, à moins que les choses aient changées, il n'est pas très populaire.
Bon, ok c'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++.
Pour être franc, j'ai préféré travailler en C++.
Pour être franc, j'ai préféré travailler en C++.
J'ai menti à mes profs de l'époque pour leur faire plaisir.
Lorsqu'on viens du C, il est désagréable de changer ses habitudes.
@ -196,44 +197,44 @@ 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_ !
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.
Les interfaces permettent d'ajouter des méthodes à une classe.
En aucun cas on ne peut rajouter un attribut autrement qu'en héritant.
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.
Les interfaces permettent d'ajouter des méthodes à une classe.
En aucun cas on ne peut rajouter un attribut autrement qu'en héritant.
Cet état de fait m'a vraiment géné.
Typiquement je faisais une GUI en Java Swing.
J'avais créé mon propre système de notification entre objets.
Au début je considérais qu'un objet ne devait envoyer des notifications qu'à un seul objet.
Ô quelle erreur lorsque je réalisais qu'il fallait non plus gérer un seul objet mais parfois plusieurs.
Je changeais mon implémentation d'interface partout, conséquence, des copier/coller dans tous les sens pour mes classes.
Typiquement je faisais une GUI en Java Swing.
J'avais créé mon propre système de notification entre objets.
Au début je considérais qu'un objet ne devait envoyer des notifications qu'à un seul objet.
Ô quelle erreur lorsque je réalisais qu'il fallait non plus gérer un seul objet mais parfois plusieurs.
Je changeais mon implémentation d'interface partout, conséquence, des copier/coller dans tous les sens pour mes classes.
Les copier/coller qui sont justement un problème censé être évité par les langages orientés objets.
De plus toujours pour ma GUI, je devais évidemment gérer des threads.
Hors, il m'a fallu faire mon propre système de gestion de threads pour éviter les locks, pour les notifications (ce thread à fini, etc...).
À l'époque j'utilisais Java 1.5.
Normallement ce problème devait être réglé sur Java 1.6.
J'espère que c'est le cas, mais avoir ce type de "feature" essentielle oubliée par le langage était assez grave.
De plus toujours pour ma GUI, je devais évidemment gérer des threads.
Hors, il m'a fallu faire mon propre système de gestion de threads pour éviter les locks, pour les notifications (ce thread à fini, etc...).
À l'époque j'utilisais Java 1.5.
Normallement ce problème devait être réglé sur Java 1.6.
J'espère que c'est le cas, mais avoir ce type de "feature" essentielle oubliée par le langage était assez grave.
De même, il a fallu attendre très longtemps avant d'avoir des boucles foreach qui rendent le code bien plus lisible.
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.
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...).
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.
Le système de Java est très clos.
Par contre il résoud 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.
@ -243,10 +244,10 @@ Veuillez noter que je n'ai pas dit que les programmeurs Java sont de mauvais pro
leftblogimage("xcode_logo.png","Xcode Logo")
Le langage que je n'ai appris et utilisé que pour faire des applications sur les plateformes d'Apple(c).
J'ai appris Objective-C après Python.
Et je dois avouer que j'ai eu du mal à m'y mettre.
Je n'ai pas du tout aimé la syntaxe et pas mal d'autres détails.
Le langage que je n'ai appris et utilisé que pour faire des applications sur les plateformes d'Apple(c).
J'ai appris Objective-C après Python.
Et je dois avouer que j'ai eu du mal à m'y mettre.
Je n'ai pas du tout aimé la syntaxe et pas mal d'autres détails.
Mais ça fait parti de ces langages que plus on utilise, plus on aime.
En réalité, il y a quelque chose dans ce langage qui fait que tout est bien pensé.
Mais surtout, ici, ce n'est pas le langage qui est la meilleure partie, c'est plutôt le framework Cocoa qui lui est le plus souvent associé qui est une merveille.
@ -264,12 +265,12 @@ leftblogimage("php.jpg","A Jacky Touch Car")
Le petit langage de script que nous utilisions tous pour faire des sites web à l'époque des gifs animées !
Sympatique, mais sans plus. Apparemment il y a eu pas mal de progrès depuis PHP5, un jour peut-être que j'y reviendrai. Mais, il a derrière lui une réputation de langage pour les "scripts kiddies".
En gros ceux qui ne savent pas coder.
Sympatique, mais sans plus. Apparemment il y a eu pas mal de progrès depuis PHP5, un jour peut-être que j'y reviendrai. Mais, il a derrière lui une réputation de langage pour les "scripts kiddies".
En gros ceux qui ne savent pas coder.
Des trous de sécurité de tous les cotés, etc...
En réalité, PHP est au niveau d'abstration à peine supérieur au C.
Et donc, il est beaucoup moins bien organisé que des langages objets, favorisant ainsi la création de bug.
En réalité, PHP est au niveau d'abstration à peine supérieur au C.
Et donc, il est beaucoup moins bien organisé que des langages objets, favorisant ainsi la création de bug.
Pour les applications web, c'est un vrai problème.
PHP, reste pour moi le langage de l'injection SQL. J'en fait encore un peu de temps en temps. Et j'ai moi-même dû protéger les accès au SQL pour éviter les injections. Oui, je n'ai pas trouvé de librairie toute prête pour protéger les entrées SQL. Je n'ai pas beaucoup cherché non plus.
@ -278,16 +279,16 @@ PHP, reste pour moi le langage de l'injection SQL. J'en fait encore un peu de te
leftblogimage("python.jpg","Python. Do you speak it?")
Alors là, attention ! Révélation !
Alors là, attention ! Révélation !
Lorsqu'on avait l'habitude de travailler avec des langages compilé, type C++, Java et qu'on passe à Python, on se prend une claque magistrale.
La programmation comme elle doit être faite.
Lorsqu'on avait l'habitude de travailler avec des langages compilé, type C++, Java et qu'on passe à Python, on se prend une claque magistrale.
La programmation comme elle doit être faite.
Tout est si naturel, c'est _magique_.
Oui, c'est si bien que ça.
Mais quelque chose d'aussi incroyablement bien doit avoir des inconvénients me dirais-vous.
Et bien, oui, comme tous les langages de scripts de haut niveau, Python est _lent_.
Attention pas juste un peu lent, comme 2 fois plus lent que du C.
Et bien, oui, comme tous les langages de scripts de haut niveau, Python est _lent_.
Attention pas juste un peu lent, comme 2 fois plus lent que du C.
Non, de l'ordre de 10 à 20 fois plus lent que le C.
Argh... Bon ça reste utilisable pour beaucoup de choses.
Mais certaines application lui sont donc interdites.
@ -304,8 +305,8 @@ Super outils. Je l'ai utilisé pour modifier en masse des centaines de fichier X
### Perl
Perl c'est assez magique, mais la syntaxe est tellement désagréable à lire que personne ne peut vraiment aimer programmer dans un environnement de plusieurs personnes en Perl.
A moins que tous les autres soient des cadors du Perl.
Perl c'est assez magique, mais la syntaxe est tellement désagréable à lire que personne ne peut vraiment aimer programmer dans un environnement de plusieurs personnes en Perl.
A moins que tous les autres soient des cadors du Perl.
Mais la feature qui tue, les expressions régulières :
@ -315,15 +316,15 @@ $var =~ s/toto/titi/g
Va remplacer toto par titi dans la valeur de la variable `$var`.
Et oui, les expressions régulière y sont intégrées directement comme avec `sed` et `awk`.
Et ça rend le code beacoup plus compact (et parfois illisible).
Et ça rend le code beacoup plus compact (et parfois illisible).
Mais c'est vraiment pas mal.
C'est une sorte de `awk` sous stéroides.
### Ruby
C'est une sorte de Perl en plus propre.
Un mélange de Perl et de Python.
Les notion objets y sont plus fortes qu'en Python.
C'est une sorte de Perl en plus propre.
Un mélange de Perl et de Python.
Les notion objets y sont plus fortes qu'en Python.
Je l'ai beaucoup utilisé, je reste quand même un Pythoniste de préférence.
Mais Ruby est vraiment très bien.
Par contre en terme d'efficacité, c'est le pire langage utilisé par beaucoup de monde de ce point de vue.
@ -334,10 +335,10 @@ De l'idée au site, il ne se passera que peu de temps.
### Javascript
C'est la bonne surprise.
Pendant des années, javascript était considéré comme un langage tout bon à vous embéter dans votre navigation web.
C'est la bonne surprise.
Pendant des années, javascript était considéré comme un langage tout bon à vous embéter dans votre navigation web.
En réalité, javascript possède beaucoup de qualité des langages de haut niveau.
En particulier, il est facille de passer une fonction en paramèter ou de créer des fonctions anonymes (closures).
En particulier, il est facille de passer une fonction en paramèter ou de créer des fonctions anonymes (closures).
Récemment, il est devenu très rapide et beaucoup de frameworks et de librairies naissent un peu partout.
- Il y a Cappuccino, Objective-J (comme de l'objective-C mais avec du javascript)
@ -348,8 +349,8 @@ Récemment, il est devenu très rapide et beaucoup de frameworks et de librairie
- prototype.js
En particulier avec jQuery, on peut faire des appels chainés, très agréables à utiliser.
Comme je le disais, c'est une bonne surprise, javascript a été choisi un peu au hasard lors de la création des navigateurs web comme langage de script.
Et il s'avère qu'à part sa syntaxe, tout le reste est bien.
Comme je le disais, c'est une bonne surprise, javascript a été choisi un peu au hasard lors de la création des navigateurs web comme langage de script.
Et il s'avère qu'à part sa syntaxe, tout le reste est bien.
Heureusement, en ce qui concerne la syntaxe, on peu pallier à ce problème en utilisant CoffeeScript.
## Les langages fonctionnels
@ -406,11 +407,11 @@ Ce deuxième exemple positionne `X` à l'intersection des deux segments `AB` et
Vous pouvez aussi voir pas mal d'[exemples ici](http://tex.loria.fr/prod-graph/zoonekynd/metapost/metapost.html).
You could see [more example there](http://tex.loria.fr/prod-graph/zoonekynd/metapost/metapost.html).
Cette fonction est très utile.
Cette fonction est très utile.
Et à mon avis pas seulement pour afficher des choses.
De mon point de vue, les autres langages de programmation devraient penser à rajouter les résolutions automatiques simples.
### zsh
### zsh
Oui, zsh est un shell.
Mais c'est aussi un langage de script très bien adapté aux traitement de fichiers.
@ -435,7 +436,7 @@ Comme je suis plus dans la création de site web, j'irai certainement jeter un c
Et certainement beaucoup d'autres choses.
Dites moi si vous avez une autre expérience avec ces langages de programmation.
Évidement mes impression sont hautement subjectives.
Évidement mes impression sont hautement subjectives.
Cependant, j'ai utilisé tous les langages dont j'ai parlé.

View file

@ -216,8 +216,7 @@ Before telling you why you should learn Haskell and use yesod, I will talk about
&lt;p&gt;UPDATE: &lt;a href="http://nicholassterling.wordpress.com/2012/03/30/a-zsh-map-function/"&gt;Nicholas Sterling had discovered a way to implement anonymous functions&lt;/a&gt;
and &lt;a href="https://github.com/Tarrasch/zsh_functional"&gt;Arash Rouhani has made a github repo which make install easier and added some tests&lt;/a&gt;.
Thanks to both of you!&lt;/p&gt;
Thanks!&lt;/p&gt;
&lt;p&gt;With this last version you should use &lt;code&gt;map&lt;/code&gt; if you use external function.
&lt;code&gt;mapl&lt;/code&gt; to use lambda function. And &lt;code&gt;mapa&lt;/code&gt; for arithmetic operations.&lt;/p&gt;
@ -232,7 +231,20 @@ $ folda '$1+$2' {1..5}
15
$ folda '$1*$2' {1..20}
...&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;</content>
2432902008176640000
$ mapl 'echo X $1:t Y' ~/.zsh/functional/src/*
X each Y
X filter Y
X fold Y
X map Y
$ mapa '$1*2' {1..3}
2
4
6
$ mapl 'echo result $1' $(m...&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2011-09-28:/Scratch/en/blog/programming-language-experience/</id>

View file

@ -211,8 +211,7 @@ Avant de vous dire pourquoi vous devriez aussi le considérer, je préfère vous
&lt;p&gt;UPDATE: &lt;a href="http://nicholassterling.wordpress.com/2012/03/30/a-zsh-map-function/"&gt;Nicholas Sterling a découvert un moyen de faire des fonctions anonymes&lt;/a&gt;
et &lt;a href="https://github.com/Tarrasch/zsh_functional"&gt;Arash Rouhani a créé un repository sur github qui simplifie linstallation&lt;/a&gt;.
Merci à vous deux!&lt;/p&gt;
Merci!&lt;/p&gt;
&lt;p&gt;Avec cette dernière version vous pouvez utiliser &lt;code&gt;map&lt;/code&gt; si vous utilisez
des fonctions déclarées. &lt;code&gt;mapl&lt;/code&gt; pour les fonctions anonymes
@ -226,7 +225,17 @@ ada
$ folda '$1+$2' {1..5}
15
...&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;</content>
$ folda '$1*$2' {1..20}
2432902008176640000
$ mapl 'echo X $1:t Y' ~/.zsh/functional/src/*
X each Y
X filter Y
X fold Y
X map Y
$ mapa '$1*2' {1....&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2011-09-28:/Scratch/fr/blog/programming-language-experience/</id>
@ -252,14 +261,14 @@ $ folda '$1+$2' {1..5}
&lt;p&gt;&lt;img alt="Title image" src="/Scratch/img/blog/programming-language-experience/basic.gif" class=" left" /&gt;&lt;/p&gt;
&lt;p&gt;Ah&amp;nbsp;! Le language de mes premiers programmes&amp;nbsp;!
Je devais avoir 10-11 ans.
&lt;p&gt;Ah&amp;nbsp;! Le language de mes premiers programmes&amp;nbsp;!
Je devais avoir 10-11 ans.
Sous &lt;code&gt;MO5&lt;/code&gt;, &lt;code&gt;Amstrad CPC 6128&lt;/code&gt; et même &lt;code&gt;Atari STe&lt;/code&gt;.
Le langage des &lt;code&gt;GOTO&lt;/code&gt;s.
Je suis empleint de nostalgie rien que dy penser.
Le langage des &lt;code&gt;GOTO&lt;/code&gt;s.
Je suis empleint de nostalgie rien que dy penser.
Cest à peu prêt le seul intérêt de ce langage.&lt;/p&gt;
&lt;p&gt;Aujourd...&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;</content>
&lt;p&gt;Aujourdhui ...&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;</content>
</entry>
<entry>
<id>tag:yannesposito.com,2011-08-25:/Scratch/fr/blog/Learn-Vim-Progressively/</id>

View file

@ -2,11 +2,11 @@
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>http://yannesposito.com/Scratch/sitemap.xml</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/04_drm/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2011-01-03-Happy-New-Year/</loc>
@ -14,7 +14,7 @@
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2009-09-Disqus-versus-Intense-Debate--Why-I-switched-/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/A-more-convenient-diff/</loc>
@ -26,11 +26,11 @@
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/10_Synchronize_Custom_WebSite_with_mobileMe/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2009-09-jQuery-Tag-Cloud/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2010-06-17-track-events-with-google-analytics/</loc>
@ -38,11 +38,11 @@
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2010-01-12-antialias-font-in-Firefox-under-Ubuntu/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2009-10-Wait-to-hide-a-menu-in-jQuery/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2010-10-26-LaTeX-like-macro-and-markdown/</loc>
@ -50,15 +50,15 @@
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2009-12-06-iphone-call-filter/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/03_losthighway/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/11_Load_Disqus_Asynchronously/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2010-07-31-New-style-after-holidays/</loc>
@ -70,7 +70,7 @@
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2009-10-launch-daemon-from-command-line/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2010-06-14-multi-language-choices/</loc>
@ -98,15 +98,15 @@
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/02_ackgrep/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/01_nanoc/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/05_git_create_remote_branch/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2010-07-07-CSS-rendering-problems-by-navigator/</loc>
@ -114,15 +114,15 @@
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/08_Configure_ssh_to_listen_the_port_443_on_Snow_Leopard/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/mvc/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/07_Screensaver_compilation_option_for_Snow_Leopard/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2010-10-10-Secure-eMail-on-Mac-in-few-steps/</loc>
@ -134,11 +134,11 @@
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2009-09-replace-all-except-some-part/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2009-10-How-to-preload-your-site-with-style/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2010-10-14-Fun-with-wav/</loc>
@ -146,15 +146,15 @@
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/09_Why_I_didn-t_keep_whosamung-us/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2009-10-28-custom-website-synchronisation-with-mobileme--2-/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2010-02-15-All-but-something-regexp/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2010-09-02-Use-git-to-calculate-trusted-mtimes/</loc>
@ -178,7 +178,7 @@
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2010-01-04-Change-default-shell-on-Mac-OS-X/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2010-06-15-Get-my-blog-engine/</loc>
@ -186,15 +186,15 @@
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/06_How_I_use_git/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2009-12-14-Git-vs--Bzr/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/Password-Management/</loc>
<lastmod>2012-09-05</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2010-07-05-Cappuccino-and-Web-applications/</loc>
@ -214,7 +214,7 @@
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2009-10-Focus-vs-Minimalism/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2010-05-24-Trees--Pragmatism-and-Formalism/</loc>
@ -226,43 +226,43 @@
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2009-11-12-Git-for-n00b/c-est-parti-pour-l-aventure/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2009-11-12-Git-for-n00b/comprendre/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2009-11-12-Git-for-n00b/Git-pour-quoi-faire/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2009-11-12-Git-for-n00b/conf-et-install/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2009-11-12-Git-for-n00b/commandes-avancees/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2009-10-30-How-to-handle-evil-IE/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2009-11-12-Git-for-n00b/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2010-03-23-Encapsulate-git/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2010-02-16-All-but-something-regexp--2-/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2010-03-22-Git-Tips/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/Haskell-the-Hard-Way/</loc>
@ -270,23 +270,23 @@
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2010-02-18-split-a-file-by-keyword/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/03_losthighway/03_losthighway_3/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/03_losthighway/03_losthighway_2/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/03_losthighway/03_losthighway_1/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/03_losthighway/03_losthighway_4/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2011-01-03-Why-I-sadly-won-t-use-coffeescript/</loc>
@ -306,11 +306,11 @@
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2009-10-untaught-git-usage/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/2010-02-23-When-regexp-is-not-the-best-solution/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/</loc>
@ -318,7 +318,7 @@
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/about/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/latest/</loc>
@ -326,7 +326,7 @@
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/rss/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/softwares/ypassword/iphoneweb/</loc>
@ -354,7 +354,7 @@
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/validation/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/about/old/</loc>
@ -362,7 +362,7 @@
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/about/technical_details/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/about/contact/</loc>
@ -370,7 +370,7 @@
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/about/cv/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/</loc>
@ -378,7 +378,7 @@
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/04_drm/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2011-01-03-Happy-New-Year/</loc>
@ -386,7 +386,7 @@
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2009-09-Disqus-versus-Intense-Debate--Why-I-switched-/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/A-more-convenient-diff/</loc>
@ -398,11 +398,11 @@
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/10_Synchronize_Custom_WebSite_with_mobileMe/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2009-09-jQuery-Tag-Cloud/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2010-06-17-track-events-with-google-analytics/</loc>
@ -410,11 +410,11 @@
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2010-01-12-antialias-font-in-Firefox-under-Ubuntu/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2009-10-Wait-to-hide-a-menu-in-jQuery/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2010-10-26-LaTeX-like-macro-and-markdown/</loc>
@ -422,15 +422,15 @@
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2009-12-06-iphone-call-filter/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/03_losthighway/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/11_Load_Disqus_Asynchronously/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2010-07-31-New-style-after-holidays/</loc>
@ -442,7 +442,7 @@
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2009-10-launch-daemon-from-command-line/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2010-06-14-multi-language-choices/</loc>
@ -466,19 +466,19 @@
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/Haskell-OpenGL-Mandelbrot/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/02_ackgrep/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/01_nanoc/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/05_git_create_remote_branch/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2010-07-07-CSS-rendering-problems-by-navigator/</loc>
@ -486,15 +486,15 @@
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/08_Configure_ssh_to_listen_the_port_443_on_Snow_Leopard/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/mvc/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/07_Screensaver_compilation_option_for_Snow_Leopard/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2010-10-10-Secure-eMail-on-Mac-in-few-steps/</loc>
@ -506,11 +506,11 @@
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2009-09-replace-all-except-some-part/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2009-10-How-to-preload-your-site-with-style/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2010-10-14-Fun-with-wav/</loc>
@ -518,15 +518,15 @@
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/09_Why_I_didn-t_keep_whosamung-us/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2009-10-28-custom-website-synchronisation-with-mobileme--2-/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2010-02-15-All-but-something-regexp/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2010-09-02-Use-git-to-calculate-trusted-mtimes/</loc>
@ -542,7 +542,7 @@
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/Higher-order-function-in-zsh/</loc>
<lastmod>2012-07-30</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2010-06-19-jQuery-popup-the-easy-way/</loc>
@ -550,7 +550,7 @@
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2010-01-04-Change-default-shell-on-Mac-OS-X/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2010-06-15-Get-my-blog-engine/</loc>
@ -558,15 +558,15 @@
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/06_How_I_use_git/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2009-12-14-Git-vs--Bzr/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/Password-Management/</loc>
<lastmod>2012-09-05</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2010-07-05-Cappuccino-and-Web-applications/</loc>
@ -586,7 +586,7 @@
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2009-10-Focus-vs-Minimalism/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2010-05-24-Trees--Pragmatism-and-Formalism/</loc>
@ -598,43 +598,43 @@
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2009-11-12-Git-for-n00b/c-est-parti-pour-l-aventure/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2009-11-12-Git-for-n00b/comprendre/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2009-11-12-Git-for-n00b/Git-pour-quoi-faire/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2009-11-12-Git-for-n00b/conf-et-install/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2009-11-12-Git-for-n00b/commandes-avancees/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2009-10-30-How-to-handle-evil-IE/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2009-11-12-Git-for-n00b/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2010-03-23-Encapsulate-git/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2010-02-16-All-but-something-regexp--2-/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2010-03-22-Git-Tips/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/Haskell-the-Hard-Way/</loc>
@ -642,23 +642,23 @@
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2010-02-18-split-a-file-by-keyword/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/03_losthighway/03_losthighway_3/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/03_losthighway/03_losthighway_2/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/03_losthighway/03_losthighway_1/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/03_losthighway/03_losthighway_4/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2011-01-03-Why-I-sadly-won-t-use-coffeescript/</loc>
@ -678,11 +678,11 @@
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2009-10-untaught-git-usage/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/2010-02-23-When-regexp-is-not-the-best-solution/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/</loc>
@ -690,7 +690,7 @@
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/about/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/latest/</loc>
@ -698,7 +698,7 @@
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/rss/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/softwares/ypassword/iphoneweb/</loc>
@ -726,7 +726,7 @@
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/validation/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/about/old/</loc>
@ -734,7 +734,7 @@
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/about/technical_details/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/about/contact/</loc>
@ -742,7 +742,7 @@
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/about/cv/</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/</loc>
@ -754,11 +754,11 @@
</url>
<url>
<loc>http://yannesposito.com/Scratch/en/blog/feed/feed.xml</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/fr/blog/feed/feed.xml</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
<url>
<loc>http://yannesposito.com/Scratch/assets/css/main.css</loc>
@ -766,6 +766,6 @@
</url>
<url>
<loc>http://yannesposito.com/Scratch/assets/css/dynamic.css</loc>
<lastmod>2012-06-27</lastmod>
<lastmod>2012-09-13</lastmod>
</url>
</urlset>