http://yannesposito.com/ Yogsototh's last blogs entries 2012-04-30T17:17:53Z Yann Esposito http://yannesposito.com tag:yannesposito.com,2012-04-30:/Scratch/fr/blog/Haskell-OpenGL-Mandelbrot/ Un programme Haskell fonctionnel 2012-04-30T17:17:53Z 2012-04-30T17:17:53Z Yann Esposito yannesposito.com <p><img alt="The B in Benoît B. Mandelbrot stand for Benoît B. Mandelbrot" src="/Scratch/img/blog/Haskell-OpenGL-Mandelbrot/BenoitBMandelbrot.jpg" /></p> <div class="intro"> <p><span class="sc"><abbr title="Trop long à lire">tlàl</abbr>&nbsp;: </span> Un exemple progressif d’utilisation d’Haskell.</p> <blockquote> <center><hr style="width:30%;float:left;border-color:#CCCCD0;margin-top:1em" /><span class="sc"><b>Table of Content</b></span><hr style="width:30%;float:right;border-color:#CCCCD0;margin-top:1em" /></center> <ul id="markdown-toc"> <li><a href="#introduction">Introduction</a></li> <li><a href="#first-version">First version</a> <ul> <li><a href="#lets-play-the-song-of-our-people">Let’s play the song of our people</a></li> <li><a href="#let-us-start">Le...</a></li></ul></li></ul></hr></center></blockquote></div></p> tag:yannesposito.com,2012-02-08:/Scratch/fr/blog/Haskell-the-Hard-Way/ Haskell comme un vrai! 2012-02-08T13:17:53Z 2012-02-08T13:17:53Z Yann Esposito yannesposito.com <p><img alt="Magritte pleasure principle" src="/Scratch/img/blog/Haskell-the-Hard-Way/magritte_pleasure_principle.jpg" /></p> <div class="intro"> <p><span class="sc"><abbr title="Trop long à lire">tlàl</abbr>&nbsp;: </span> Un tutoriel très court mais très dense pour apprendre Haskell.</p> <blockquote> <center><hr style="width:30%;float:left;border-color:#CCCCD0;margin-top:1em" /><span class="sc"><b>Table of Content</b></span><hr style="width:30%;float:right;border-color:#CCCCD0;margin-top:1em" /></center> <div class="toc"> <ul> <li><a href="#introduction">Introduction</a> <ul> <li><a href="#install">Install</a></li> <li><a href="#don-t-be-afraid">Don’t be afraid</a></li> <li><a href="#very-basic-haskell">Very basic Haskell</a> </li></ul></li></ul></div></hr></center></blockquote></div></p> tag:yannesposito.com,2012-02-02:/Scratch/fr/blog/Typography-and-the-Web/ La typography et le Web 2012-02-02T09:53:00Z 2012-02-02T09:53:00Z Yann Esposito yannesposito.com <p><img alt="Screenshot of first in small caps with and without ligatures." src="/Scratch/img/blog/Typography-and-the-Web/first_sc_screenshot.png" />;</p> <div class="intro"> <p><span class="sc"><abbr title="Trop long à lire">tlàl</abbr>&nbsp;: </span> La typography sur le web est pourrie et nous ne somme pas près de voir ce problème réparé.</p> </div> <p>Je suis tombé sur ce site: <a href="http://opentypography.org/">open typography</a>. Leur message principal est&nbsp;:</p> <blockquote> <p>«There is no reason to wait for browser development to catch up. We can all create better web typography ourselves, today.»</p> </blockquote> <p>ou en français&nbsp;:</p> <blockquote> <p>«Nous ne somme pas obligé d’attendre le développement des navigateurs. Nous pouvons créer un web a...</p></blockquote></p> tag:yannesposito.com,2012-01-15:/Scratch/fr/blog/Yesod-tutorial-for-newbies/ Site en Haskell 2012-01-15T17:14:40Z 2012-01-15T17:14:40Z Yann Esposito yannesposito.com <p><img alt="Neo Flying at warp speed" src="/Scratch/img/blog/Yesod-tutorial-for-newbies/flying_neo.jpg" /></p> <div class="intro"> <p><em>mise à jour</em>: mise à jour pour la version 0.10 de yesod.</p> <p><span class="sc"><abbr title="Trop long à lire">tlàl</abbr>&nbsp;: </span> Un tutoriel pour yesod, un framework web Haskell. Vous ne devriez pas avoir besoin de savoir programmer en Haskell. Par contre je suis désolé pour les francophones, mais je n’ai pas eu le courage de traduire cet article en Français.</p> <blockquote> <center><span class="sc"><b>Table of content</b></span></center> <ul id="markdown-toc"> <li><a href="#before-the-real-start">Before the real start</a> <ul> <li><a href="#install">Install</a></li> <li><a href="#initialize">Initialize</a></li></ul></li></ul></blockquote></div></p> tag:yannesposito.com,2011-10-20:/Scratch/fr/blog/SVG-and-m4-fractals/ Accroître le pouvoir des languages déficients. 2011-10-20T09:39:36Z 2011-10-20T09:39:36Z Yann Esposito yannesposito.com <p><img alt="Yesod logo made in SVG and m4" src="/Scratch/img/blog/SVG-and-m4-fractals/main.png" /></p> <div class="intro"> <p><span class="sc"><abbr title="Trop long à lire">tlàl</abbr>&nbsp;: </span> Utiliser m4 pour accroître le pouvoir d’<span class="sc">xslt</span> et d’<span class="sc">svg</span>. Example cool, les fractales.</p> </div> <p>Lorsqu’<span class="sc">xml</span> fût inventé beaucoup pensaient que c’était l’avenir. Passer de fichiers plat à des fichiers structurés standardisés fût un grand progrès dans beaucoup de domaines. Cerain se mirent à voir du <span class="sc">xml</span> de partout. À tel point que les les format compatibles <span class="sc">xml</span> naquirent de toute part. Non seulement comme format de fichier, mais aussi comme format pour un langage ...</p></p> tag:yannesposito.com,2011-10-04:/Scratch/fr/blog/Yesod-excellent-ideas/ Les idées de yesod 2011-10-04T08:18:59Z 2011-10-04T08:18:59Z Yann Esposito yannesposito.com <p><img alt="Title image" src="/Scratch/img/blog/Yesod-excellent-ideas/main.png" /></p> <div class="intro"> <p><span class="sc"><abbr title="Trop long à lire">tlàl</abbr>&nbsp;: </span></p> <p>Cela fait un moment que je suis la progression du <a href="http://www.yesodweb.com">framework yesod</a>. À mon humble avis on peut commencer à l’utiliser pour des applications sérieuses (comprendre en prod). Avant de vous dire pourquoi vous devriez aussi le considérer, je préfère vous parler de bonnes idées (parmi d’autres) introduites par yesod que je n’avais jamais vu ailleurs.</p> </div> <h2 id="types-saufs">Types saufs</h2> <p>Commençons par une BD d’<a href="http://xkcd.com">xkcd</a>&nbsp;:</p> <p></p></p> tag:yannesposito.com,2011-09-28:/Scratch/fr/blog/Higher-order-function-in-zsh/ Fonctions d'ordre supérieur en zsh 2011-09-28T13:15:23Z 2011-09-28T13:15:23Z Yann Esposito yannesposito.com <p><img alt="Title image" src="/Scratch/img/blog/Higher-order-function-in-zsh/main.jpg" /></p> <div class="intro"> <p><span class="sc"><abbr title="Trop long à lire">tlàl</abbr>&nbsp;: </span> des fonctions d’ordres supérieurs en zsh.</p> </div> <p>Tout d’abord, pourquoi c’est important d’avoir ces fonctions. Plus je programmais avec zsh plus j’essayais d’avoir un style fonctionnel.</p> <p>Le minimum pour pouvoir avoir du code plus lisible c’est de posséder les fonctions <code>map</code>, <code>filter</code> et <code>fold</code>.</p> <p>Voici pourquoi avec une comparaison. Commençons par un programme qui converti tous les gif en png dans plusieurs répertoires projets contenant tous des répertoires resources. Avant&nbsp;:</p> <p>Avant ⇒</p> <pre><code class="zsh"># for each ...</code></pre></p> tag:yannesposito.com,2011-09-28:/Scratch/fr/blog/programming-language-experience/ Mon expérience avec les languages de programmation 2011-09-28T10:21:41Z 2011-09-28T10:21:41Z Yann Esposito yannesposito.com <p><img alt="Title image" src="/Scratch/img/blog/programming-language-experience/dragon.jpg" /></p> <div class="intro"> <span class="sc"><abbr title="Trop long à lire">tlàl</abbr>&nbsp;: </span> Mon avis court et hautement subjectif concernant les différents languages de programmations que j’ai utilisé. </div> <h3 id="basic"><code>BASIC</code></h3> <p><img alt="Title image" src="/Scratch/img/blog/programming-language-experience/basic.gif" class=" left" /></p> <p>Ah&nbsp;! Le language de mes premiers programmes&nbsp;! Je devais avoir 10-11 ans. Sous <code>MO5</code>, <code>Amstrad CPC 6128</code> et même <code>Atari STe</code>. Le langage des <code>GOTO</code>s. Je suis empleint de nostalgie rien que d’y penser. C’est à peu prêt le seul intérêt de ce langage.</p> <p>Aujourd’...</p></p></p> tag:yannesposito.com,2011-08-25:/Scratch/fr/blog/Learn-Vim-Progressively/ Apprenez Vim Progressivement 2011-08-25T17:28:20Z 2011-08-25T17:28:20Z Yann Esposito yannesposito.com <p><img alt="Über leet use vim!" src="/Scratch/img/blog/Learn-Vim-Progressively/uber_leet_use_vim.jpg" /></p> <div class="intro"> <p><span class="sc"><abbr title="Trop long à lire">tlàl</abbr>&nbsp;: </span> Vous désirez apprendre vim (le meilleur editeur de texte connu à ce jour) le plus rapidement possible. Voici mes conseils pour vous aider. Commencez à apprendre le minimum vital, puis apprenez doucement de nouvelles commandes.</p> </div> <p><a href="http://www.vim.org">Vim</a> ou l’éditeur qui vallait 3 milliards&nbsp;:</p> <blockquote> <p>Meilleur, plus fort, plus rapide.</p> </blockquote> <p>Apprenez <a href="http://www.vim.org">vim</a> et ce sera votre dernier éditeur. Aucun éditeur que je connaisse ne le surpasse. Sa prise en mais est difficile, mais payante.</p> </p> tag:yannesposito.com,2011-08-17:/Scratch/fr/blog/A-more-convenient-diff/ Un diff plus pratique 2011-08-17T09:33:30Z 2011-08-17T09:33:30Z Yann Esposito yannesposito.com <p><code>diff</code> est un utilitaire très pratique, mais il n’est pas facile à lire pour nous, les Hommes.</p> <p>C’est pourquoi, lorsque vous utilisez <code>git</code>, il vous montre un formatage plus agréable avec des couleurs.</p> <p>Voici le script que j’utilise lorsque je veux avoir un <code>diff</code> à la git.</p> <div class="codefile"><a href="/Scratch/fr/blog/A-more-convenient-diff/code/ydiff">&#x27A5; ydiff</a></div> <pre><code class="zsh">#!/usr/bin/env zsh # Load colors helpers autoload -U colors &amp;&amp; colors function colorize_diff { while read line; do case ${line[0]} in +) print -n $fg[green];; -) print -n $fg[red];; @) # Display in cyan the @@ positions @@ if [[ ${line[1]} = '@' ]]; then line=$(print $line | perl -pe 's...</code></pre> tag:yannesposito.com,2011-07-10:/Scratch/fr/blog/Haskell-Mandelbrot/ Mandelbrot avec haskell 2011-07-10T10:41:26Z 2011-07-10T10:41:26Z Yann Esposito yannesposito.com <p>Voici le code “obfusqué”&nbsp;:</p> <div class="codefile"><a href="/Scratch/fr/blog/Haskell-Mandelbrot/code/animandel.hs">&#x27A5; animandel.hs</a></div> <pre><code class="haskell">a=27;b=79;c=C(-2.0,-1.0);d=C(1.0,1.0);e=C(-2.501,-1.003) newtype C = C (Double,Double) deriving (Show,Eq) instance Num C where C(x,y)*C(z,t)=C(z*x-y*t,y*z+x*t);C(x,y)+C(z,t)=C(x+z,y+t);abs(C(x,y))=C(sqrt(x*x+y*y),0.0) r(C(x,y))=x;i(C(x,y))=y f c z 0=0;f c z n=if(r(abs(z))&gt;2)then n else f c ((z*z)+c) (n-1) h j k = map (\z-&gt;(f (C z) (C(0,0)) 32,(fst z&gt;l - q/2))) [(x,y)|y&lt;-[p,(p+((o-p)/a))..o],x&lt;-[m,(m + q)..l]] where o=i k;p=i j;m=r j;l=r k;q=(l-m)/b u j k = concat $ map v $ h j k where v (i,p)=(" .,`'°\":;-+oO0123456789=!%*§&amp;$@#"!!i):rst p;rst True="\n";rst False="" main = putStrLn $ im...</code></pre> tag:yannesposito.com,2011-05-18:/Scratch/fr/blog/Password-Management/ Password Management 2011-05-18T11:14:28Z 2011-05-18T11:14:28Z Yann Esposito yannesposito.com <p><img alt="Title image" src="/Scratch/img/blog/Password-Management/main.png" /></p> <div class="intro"> <p><span class="sc"><abbr title="Trop long à lire">tlàl</abbr>&nbsp;: </span> Une méthode de gestion des mots de passes que j’utilise avec succès depuis quelques années.<br /> <strong><code>sha1( mot_de_passe + nom_de_domaine )</code></strong><br /> Je ne mémorise qu’un seul mot de passe de très bonne qualité. J’utilise des mots de passe différents sur tous les sites.</p> </div> <p>Avant de commencer, je tiens à préciser qu’il s’agit d’une tentative de vous vendre mon appli iPhone&nbsp;;-).</p> <p>Vous êtes toujours là&nbsp;? Bon, d’accord, même si vous ne téléchargez pas mon application vous pouvez quand même utiliser ma méthode. Elle est à la fois très sûre et simple à ut...</p></p></div></p> tag:yannesposito.com,2011-04-20:/Scratch/fr/blog/2011-04-20-Now-hosted-on-github/ Hébergement github 2011-04-20T15:22:15Z 2011-04-20T15:22:15Z Yann Esposito yannesposito.com <p><img alt="Title image" src="/Scratch/img/blog/2011-04-20-Now-hosted-on-github/main.png" /></p> <p>J’héberge mon site sur github à partir d’aujourd’hui.</p> </p> tag:yannesposito.com,2011-01-03:/Scratch/fr/blog/2011-01-03-Why-I-sadly-won-t-use-coffeescript/ Pourquoi je n'utiliserai pas CoffeeScript (malheureusement) 2011-01-03T08:37:26Z 2011-01-03T08:37:26Z Yann Esposito yannesposito.com <p><img alt="Title image" src="/Scratch/img/blog/2011-01-03-Why-I-sadly-won-t-use-coffeescript/main.png" /></p> <div class="encadre"> <p><em>Mise à jour&nbsp;:</em> Je pense que je vais finallement changer d’avis. Pourquoi&nbsp;? Tout d’abord, je viens de découvrir un convertisseur javascript vers coffeescript, ensuite Denis Knauf m’a laissé un commentaire et m’a appris l’existence d’une fonction <code>CoffeeScript.eval</code>. De plus, il faut voir CoffeeScript comme javascript avec une syntaxe similaire à Ruby et pas comme un langage similaire à Ruby.</p> </div> <div class="intro"> <p><span class="sc"><abbr title="Trop long à lire">tlàl</abbr>&nbsp;: </span> Qu’est-ce qui n’allait pas avec Coffeescript? La meta-programmation, il faut le “vendre” aux autres, une nouvelle éta...</p></div></p> tag:yannesposito.com,2011-01-01:/Scratch/fr/blog/2011-01-03-Happy-New-Year/ Bonne et heureuse année 2011-01-01T06:55:54Z 2011-01-01T06:55:54Z Yann Esposito yannesposito.com <p>Bonne et heureuse année&nbsp;!</p> <p>J’étais très occupé ces derniers mois. Maintenant il me semble que je vais pouvoir faire revivre ce blog.</p> <p>J’ai fait un outil qui permet d’écrire des livre en utilisant une syntaxe proche de markdown. C’est un markdown avec des macros (essentiel pour les textes longs). De plus le système gère la génération de pages HTML ainsi que du PDF engendré avec du XeLaTeX. Je n’en ai pas encore terminé avec ça. Mais si je tarde trop, je communiquerai lorsque j’aurai fini le minimum.</p> <p>J’ai écrit un framework MVC pour application javascript simple mais néanmoins très rapide.</p> <p>Meilleurs vœux à tous&nbsp;!</p> tag:yannesposito.com,2010-10-26:/Scratch/fr/blog/2010-10-26-LaTeX-like-macro-and-markdown/ Des macros LaTeX pour markdown 2010-10-26T12:30:58Z 2010-10-26T12:30:58Z Yann Esposito yannesposito.com <div class="intro"> <p><span class="sc"><abbr title="Trop long à lire">tlàl</abbr>&nbsp;: </span> J’ai fait un système simple de macros pour mon blog. Par exemple, il me suffit d’écrire %<span></span>latex et ça affiche <span style="text-transform: uppercase">L<sup style="vertical-align: 0.15em; margin-left: -0.36em; margin-right: -0.15em; font-size: .85em">a</sup>T<sub style="vertical-align: -0.5ex; margin-left: -0.1667em; margin-right: -0.125em; font-size: 1em">e</sub>X</span>.</p> </div> <p>J’ai ajouter un système de macro pour mon système de blog. Lorsqu’on est habitué à <span style="text-transform: uppercase">L<sup style="vertical-align: 0.15em; margin-left: -0.36em; margin-right: -0.15em; font-size: .85em">a</sup>T</span></p> tag:yannesposito.com,2010-10-14:/Scratch/fr/blog/2010-10-14-Fun-with-wav/ S'amuser avec un .wav 2010-10-14T09:04:58Z 2010-10-14T09:04:58Z Yann Esposito yannesposito.com <div class="intro"> <p><span class="sc"><abbr title="Trop long à lire">tlàl</abbr>&nbsp;: </span> Je me suis amusé à lire un fichier <code>wav</code>. Le <code>C</code> fut le langage le mieux adapté à ce traitement. Bien meilleur que Ruby par exemple.</p> <p>edit: Je voulais que ce programme fonctionne sur une machine spécifique. En aucun cas je ne pensais publier ce code pour une utilisation autre que celle-ci.</p> </div> <p>J’ai eu besoin de calculer la somme des valeurs absolue des données d’un fichier <code>wav</code>. Pour des raison d’efficacité (et aussi de fun), j’ai fait le programme en <code>C</code>.</p> <p>Celà faisait longtemps que je n’avais pas programmé en <code>C</code>. De mémoire il était peu aisé de manipuler des fichiers. Mais je dois concéder que j’ai été...</p> tag:yannesposito.com,2010-10-10:/Scratch/fr/blog/2010-10-10-Secure-eMail-on-Mac-in-few-steps/ Sécurisez vos emails 2010-10-10T16:39:00Z 2010-10-10T16:39:00Z Yann Esposito yannesposito.com <p><img alt="Title image" src="/Scratch/img/blog/2010-10-10-Secure-eMail-on-Mac-in-few-steps/main.png" class="clean " /></p> <div class="intro"> <p><span class="sc"><abbr title="Trop long à lire">tlàl</abbr>&nbsp;: </span> <em>avec un Mac</em> </p> <ul> <li>Récupérez un certificat signé par une AC: <a href="http://www.instantssl.com/ssl-certificate-products/free-email-certificate.html">cliquez ici pour un certificat gratuit</a>&nbsp;;</li> <li>ouvrez le fichier&nbsp;;</li> <li>supprimer le fichier en mode sécurisé&nbsp;;</li> <li>utilisez Mail plutôt que l’interface web de gmail.</li> </ul> </div> <p>J’ai (re)découvert comment adoptez la norme S/MIME. J’ai été surpris de voir à quel point ce fut aisé. Il y a seulement quelques années c’était bien plus difficile à accom...</p></p> tag:yannesposito.com,2010-10-06:/Scratch/fr/blog/2010-10-06-New-Blog-Design-Constraints/ Contraintes du design de ce blog 2010-10-06T09:33:03Z 2010-10-06T09:33:03Z Yann Esposito yannesposito.com <p>Vous avez pu constater que j’ai modifié le design de mon blog. Maintenant il doit être beaucoup plus léger qu’avant. Je n’utilise plus de CSS3 et beaucoup moins de javascript. Bien entendu, même avant, mes pages étaient parfaitement lisibles sans javascript. Mais, je me suis aperçu que les systèmes de CSS3 sont loin d’être au point. J’utilisait des gradient en CSS3, ainsi que des ombres sous le texte. Ça avait un rendu très sympa. Sauf… Ce n’était pas compatible ie6, sous Chrome le rendu était d’une lenteur incroyable. J’ai donc décidé de faire un site à minima. Je voulais qu’il soit joli <em>et</em> le plus simple possible pour assurer sa compatibilité. Les règles que je me suis fixées sont donc:</p> <ul> <li>pas d’élément CSS qui commence par <code>-moz</code> ou <code>-webkit</code></li></ul> tag:yannesposito.com,2010-09-02:/Scratch/fr/blog/2010-09-02-Use-git-to-calculate-trusted-mtimes/ Utilisation de git pour calculer les mtimes 2010-09-02T13:54:10Z 2010-09-02T13:54:10Z Yann Esposito yannesposito.com <p>Vous pouvez remarquer qu’à la fin de chaque page je donne une date de dernière modification. Précédemment cette date était calculée en utilisant la date du fichier. Mais il arrive fréquemment que je fasse un <code>touch</code> d’un fichier pour engendrer tout le site de nouveau. Donc la date n’est pas nécessairement la <em>vraie</em> de modification du contenue.</p> <p>J’utilise <a href="http://git-scm.org">git</a> pour <em>versionner</em> mon site web. Et cet outil me permet de récupérer la dernière date de <em>vraie</em> modification d’un fichier. Voici comment je m’y prend avec <a href="http://nanoc.stoneship.org">nanoc</a>&nbsp;:</p> <div class="codefile"><a href="/Scratch/fr/blog/2010-09-02-Use-git-to-calculate-trusted-mtimes/code/gitmtime.rb">&#x27A5; gitmtime.rb</a></div> tag:yannesposito.com,2010-09-02:/Scratch/fr/blog/2010-09-02-base64-and-sha1-on-iPhone/ base64 et sha1 sur iPhone 2010-09-01T22:02:17Z 2010-09-01T22:02:17Z Yann Esposito yannesposito.com <p>Allons directement à l’essentiel&nbsp;: voici deux fonctions à intégrer à votre application iPhone pour afficher l’encodage en base64 ou en hexadecimal du hash sha1 d’un string en Objective-C pour iPhone.</p> <p>Pour l’usage c’est très simple, copiez le code dans la classe de votre choix. Puis&nbsp;:</p> <pre><code class="objective-c">#import &lt;CommonCrypto/CommonDigest.h&gt; ... NSString *b64_hash = [self b64_sha1:@"some NSString to be sha1'ed"]; ... NSString *hex_hash = [self hex_sha1:@"some NSString to be sha1'ed"]; </code></pre> <p>L’algorithme pour l’encodage en <code>base64</code> doit être programmé sur iPhone. Il n’y a pas de librairie officielle qui s’occupe de ça.</p> <div class="codefile"></div> tag:yannesposito.com,2010-08-31:/Scratch/fr/blog/2010-08-31-send-mail-from-command-line-with-attached-file/ Envoyer un mail en ligne de commande avec un fichier attaché 2010-08-31T08:16:04Z 2010-08-31T08:16:04Z Yann Esposito yannesposito.com <p>J’ai dû envoyer un mail en ligne de commande récemment. Quelle ne fût pas ma surprise lorsque je constatais que ce n’était vraiment pas évident. Je n’avais ni <code>pine</code> ni <code>mutt</code>. Seulement <code>mail</code> et <code>mailx</code>.</p> <p>Ce qu’on trouve sur internet pour envoyer un mail avec fichier attaché c’est ça&nbsp;:</p> <pre><code class="zsh">uuencode fic.jpg fic.jpg | mail -s 'Subject' </code></pre> <p>Bon, alors, bête et discipliné j’ai essayé. Et bien, ça marche <em>presque</em> tout le temps. Pour mon fichier ça n’a pas marché du tout. Je l’ai compressé au format <code>.gz</code>, <code>.bz2</code> et <code>.zip</code>. Avec le format <code>.bz2</code> le mail reçu avait bien un fichier attaché. Mais avec les formats <code>.gz</code> et <code>.zi...</code></p> tag:yannesposito.com,2010-08-23:/Scratch/fr/blog/2010-08-23-Now-heberged-on-heroku/ Maintenant sur Heroku 2010-08-23T13:05:13Z 2010-08-23T13:05:13Z Yann Esposito yannesposito.com <h1 class="first" id="maintenant-sur-herokuhttpherokucom">Maintenant sur <a href="http://heroku.com">Heroku</a></h1> <p>J’ai changé mon hébergeur. Mobileme n’est absolument pas adapté à la diffusion de mon blog. C’est pourquoi je suis passé à <a href="http://heroku.com">Heroku</a>.</p> <p>Mais comme vous devez le savoir mon blog est un site complètement statique. J’utilise <a href="http://nanoc.stoneship.org/">nanoc</a> pour l’engendrer. Avoir un site statique amène beaucoup d’avantages par rapport à un site dynamique. Surtout en terme de sécurité. Voici comment configurer un site statique sur heroku.</p> <p>La racine de mes fichiers est ‘/output’. Vous devez simplement créer deux fichiers. Un fichier <code>config.ru</code><sup id="fnref:1"><a href="#fn:1" rel="footnote">1</a></sup>&...</p> tag:yannesposito.com,2010-08-11:/Scratch/fr/blog/2010-07-09-Indecidabilities/ Indécidabilités (partie 1) 2010-08-11T08:04:31Z 2010-08-11T08:04:31Z Yann Esposito yannesposito.com tag:yannesposito.com,2010-07-31:/Scratch/fr/blog/2010-07-31-New-style-after-holidays/ Nouveau style après les vacances 2010-07-31T21:59:10Z 2010-07-31T21:59:10Z Yann Esposito yannesposito.com <p>Avant les vacances beaucoup d’utilisateurs se sont plaints de la lenteur de rendu de mon site. Il s’agit notamment de problèmes avec Chrome en particulier. Mais pour éviter tout problème. J’ai complètement modifié le style de mon site web. Il est inspiré du style de l’application iBooks<small>&copy;</small> sur iPhone<small>&copy;</small>.</p> <p>Dites moi ce que vous pensez de ce nouveau design.</p> tag:yannesposito.com,2010-07-07:/Scratch/fr/blog/2010-07-07-CSS-rendering-problems-by-navigator/ N'utilisez pas de gradients avec Chrome 2010-07-07T13:43:43Z 2010-07-07T13:43:43Z Yann Esposito yannesposito.com <p>Beaucoup d’utilisateurs de <a href="http://reddit.com">Reddit</a> m’ont rapporté que mon site était très long à charger et à <em>scroller</em>. Ils pensaient qu’il s’agissait d’un problème dû aux ombres que j’applique sur le texte. J’étais un peu surpris puisque je fais mes tests sur une machine vraiment très lente et je n’avais jamais détecté ces problèmes. En réalité, ce qui ralenti le rendu de ce site est par ordre d’importance&nbsp;:</p> <ol> <li>Les dégradés sur Chrome (pas dans Safari sur Mac)</li> <li>les <em>box shadows</em> sur Firefox</li> </ol> <h2 id="les-dgrads">les dégradés</h2> <p>Sur Safari il n’y a absolument aucun problème avec les dégradés. Par contre sur Chrome sous Linux le site devient quasiment inutilisable.</p> <p>Safari et Chrome utilisent <em>webkit</em></p> tag:yannesposito.com,2010-07-05:/Scratch/fr/blog/2010-07-05-Cappuccino-and-Web-applications/ Cappuccino ou jQuery ? 2010-07-05T11:49:04Z 2010-07-05T11:49:04Z Yann Esposito yannesposito.com <div class="intro"> <p><abbr title="Trop long à lire">tlàl</abbr>:</p> <ul> <li>J’ai essayé de faire une version de <a href="http://yannesposito.com/Softwares/YPassword.html">YPassword</a> en jQuery et avec Cappuccino.</li> <li>Cappuccino est très bien sur les navigateurs non mobile mais l’application pèse 1.4Mo et n’est pas compatible avec l’iPhone.</li> <li>la version jQuery n’est pas aussi jolie que la version réalisée avec Cappuccino mais elle pèse seulement 106Ko et est compatible avec l’iPhone.</li> <li>J’essayerai Dashcode 3</li> </ul> </div> <hr /> <div class="intro"> <p>Avant de commencer, je dois dire que je sais que Cappuccino et jQuery ne sont pas plus comparable que Cocoa et la <em>standard library</em> en C++. L’un est fait pour créer des interfaces util...</p></div></hr> tag:yannesposito.com,2010-06-19:/Scratch/fr/blog/2010-06-19-jQuery-popup-the-easy-way/ Comment faire des popups en jQuery rapidement 2010-06-18T22:44:50Z 2010-06-18T22:44:50Z Yann Esposito yannesposito.com <p>Voici une façon simple et rapide pour faire des popups avec jQuery.</p> <div class="codefile"><a href="/Scratch/fr/blog/2010-06-19-jQuery-popup-the-easy-way/code/essai.js">&#x27A5; essai.js</a></div> <pre><code class="javascript">// --- code popup --- function openPopup() { $(this).clone(false).appendTo($("#_code")); $("#_code").show(); } function closePopup() { $("#_code").html(""); $("#_code").hide(); } function initCode() { $(".code").click(openPopup); $(".code").css({cursor: "pointer"}); $('body').append('&lt;div id="_code"&gt;&lt;/div&gt;'); $('#_code').css( { 'text-align': "justify", position: "fixed", left:0, top:0, width: "100%", height: "100%", "background-color": "rgba(0, 0, 0, 0.8)", 'z-i...</code></pre> tag:yannesposito.com,2010-06-17:/Scratch/fr/blog/2010-06-17-hide-yourself-to-analytics/ Se cacher de ses statistiques web 2010-06-17T14:37:22Z 2010-06-17T14:37:22Z Yann Esposito yannesposito.com <p>Voici un moyen très simple de ne plus être comptabilisé dans les visites de son propre site. Tout d’abord, vous devriez jeter un coup d’œil sur comment <a href="/Scratch/fr/blog/2010-06-17-track-events-with-google-analytics">je gère les systèmes de récupération de statistiques</a>. Je centralise tout dans un seul fichier javascript ce qui facilite le travail.</p> <p>Cette méthode nécessite l’utilisation de <code>jquery-cookie</code>.</p> <p>Avant de comptabiliser les visites, je vérifie que la clé <code>admin</code> n’est pas utilisée dans mes cookies.</p> <pre><code class="javascript"> var admin = $.cookie('admin'); if (! admin) { // put your analytics code here } else { console.log("[WARNING] you're HIDDEN to analytics"); } </code></pre> <p>et il...</p> tag:yannesposito.com,2010-06-17:/Scratch/fr/blog/2010-06-17-track-events-with-google-analytics/ Analyser les clicks sur votre Site 2010-06-17T12:41:36Z 2010-06-17T12:41:36Z Yann Esposito yannesposito.com <p>Voici comment analyser tous les clics que font vos utilisateurs sur votre blog en incluant google analytics de façon asynchrone.</p> <p>Dans le html, il faut utiliser <a href="http://jquery.com">jQuery</a> et un fichier que j’ai appelé <code>yga.js</code>&nbsp;:</p> <pre><code class="html"> &lt;script type="text/javascript" src="jquery.js"&gt;&lt;/script&gt; &lt;script type="text/javascript" src="yga.js"&gt;&lt;/script&gt; </code></pre> <p>Voici le contenu du fichier <code>yga.js</code>&nbsp;:</p> <div class="codefile"><a href="/Scratch/fr/blog/2010-06-17-track-events-with-google-analytics/code/yga.js">&#x27A5; yga.js</a></div> <pre><code class="javascript">$(document).ready( function() { // add an event to all link for google analytics $('a').click(function () { ...</code></pre> tag:yannesposito.com,2010-06-15:/Scratch/fr/blog/2010-06-15-Get-my-blog-engine/ Récupérez mon système de blog 2010-06-15T08:56:32Z 2010-06-15T08:56:32Z Yann Esposito yannesposito.com <p>J’ai publié une version <em>light</em> de mon système de blog hier soir. Par <em>light</em> il faut comprendre avec un CSS plus épuré et plus portable (sans les bords ronds). Vous pouvez le récupérer sur <a href="http://github.com/yogsototh/nanoc3_blog">github.com</a>.</p> <p>Que pouvez-vous attendre de ce système de blog&nbsp;?</p> <ul> <li>Tous les avantages liés à <a href="http://nanoc.stoneship.org">nanoc</a>&nbsp;;</li> <li>Facilité de la gestion de plusieurs langues&nbsp;;</li> <li>coloration syntaxique des codes sources pour la plupart des languages&nbsp;;</li> <li>commentaires gérés avec <a href="http://intensedebate.org">intenseDebate</a> de façon asynchrone&nbsp;;</li> <li>très portable avec ou sans javascript, XHTML Strict 1.0 / CSS3&nbsp;;</li> <li>écrivez v...</li></ul> tag:yannesposito.com,2010-06-14:/Scratch/fr/blog/2010-06-14-multi-language-choices/ choix liés à l'écriture dans plusieurs langues 2010-06-14T14:14:57Z 2010-06-14T14:14:57Z Yann Esposito yannesposito.com <p>Je traduis la plupart de mes articles pour qu’ils soient disponibles en français et en anglais. La façon que l’on m’a conseillé était d’avoir un fichier par langue. En général ça donne ça.</p> <pre class="twilight"> Bonjour, voici un exemple de texte en français. [image](url) </pre> <pre class="twilight"> Hello, here is an example of english text. [image](url) </pre> <p>Cette façon de traduire vous impose une certaine façon de traduire. D’abord écrire entièrement le texte dans une langue, puis copier le fichier et enfin retraduire dans une nouvelle langue.</p> <p>Le problème, c’est que très souvent, les articles ont des parties communes non négligeables. Par exemple, les images, les codes sources, etc… Lorsque je m’aperçoit que j’ai fait une erreur dans ces parties communes...</p> tag:yannesposito.com,2010-05-24:/Scratch/fr/blog/2010-05-24-Trees--Pragmatism-and-Formalism/ Arbres ; Pragmatisme et Formalisme 2010-05-24T18:05:14Z 2010-05-24T18:05:14Z Yann Esposito yannesposito.com <div class="intro"> <p><span class="sc"><abbr title="Trop long à lire">tlàl</abbr>&nbsp;: </span>&nbsp;:</p> <ul> <li>J’ai essayé de programmer un simple filtre&nbsp;;</li> <li>J’ai été bloqué pendant deux jours&nbsp;;</li> <li>J’ai arrêté de penser comme un robot&nbsp;;</li> <li>J’ai utilisé un papier et un stylo&nbsp;;</li> <li>J’ai fait un peu de maths&nbsp;;</li> <li>J’ai résolu le problème en 10 minutes&nbsp;;</li> <li>Conclusion: Pragmatisme n’est pas&nbsp;: «n’utilisez jamais la théorie». </div> </ul> <h2 id="rsum-plus-long-que-le--span-classscabbr-titletrop-long--liretllabbr--span">Résumé (plus long que le <span class="sc"><abbr title="Trop long à lire">tlàl</abbr>&nbsp;: </span>)</h2> <p>Je devais résoudre un problème à mon travail. Au début cela semblait...</p></div> tag:yannesposito.com,2010-05-19:/Scratch/fr/blog/2010-05-19-How-to-cut-HTML-and-repair-it/ Comment réparer un XML coupé ? 2010-05-19T20:20:34Z 2010-05-19T20:20:34Z Yann Esposito yannesposito.com <p>Sur ma page d’accueil vous pouvez voir la liste des mes derniers articles avec le début de ceux-ci. Pour arriver à faire ça, j’ai besoin de couper le code XHTML de mes pages en plein milieu. Il m’a donc fallu trouver un moyen de les réparer.</p> <p>Prenons un exemple&nbsp;:</p> <pre><code class="html">&lt;div class="corps"&gt; &lt;div class="intro"&gt; &lt;p&gt;Introduction&lt;/p&gt; &lt;/div&gt; &lt;p&gt;The first paragraph&lt;/p&gt; &lt;img src="/img/img.png" alt="an image"/&gt; &lt;p&gt;Another long paragraph&lt;/p&gt; &lt;/div&gt; </code></pre> <p>Après avoir coupé, j’obtiens&nbsp;:</p> <pre><code class="html">&lt;div class="corps"&gt; &lt;div class="intro"&gt; &lt;p&gt;Introduction&lt;/p&gt; &lt;/div&gt; &lt;p&gt;The first para...</code></pre> tag:yannesposito.com,2010-05-17:/Scratch/fr/blog/2010-05-17-at-least-this-blog-revive/ Je reviens à la vie ! 2010-05-17T11:25:51Z 2010-05-17T11:25:51Z Yann Esposito yannesposito.com <p>Bonjour à tous&nbsp;!</p> <blockquote cite="http://www.madore.org/~david/weblog/2010-05.html#d.2010-05-12.1752"> <p>…plus on retarde quelque chose, plus il devient difficile de s’y mettre…</p> </blockquote> <p>Je devais écrire d’autres articles pour ce blog. J’ai noté plein d’idées dans mes <em>todolist</em>. Mais j’avais pas mal d’autres choses à faire. Et jusqu’ici, j’ai toujours dit «je le ferai plus tard». Ce qui m’a fait agir, c’est la petite réflexion que j’avais lu une fois. &gt; Arrétez d’écrire des <code>TODO</code> dans votre code est faites le maintenant&nbsp;!<br /> &gt; Vous serez surpris de l’efficacité de cette mesure.</p> <p>En résumé&nbsp;: &gt; <strong>Just do it!</strong> ou <strong>Juste fait le</strong> comme auraient dit les nuls.</p> <p>Finallement j’écri...</p></p> tag:yannesposito.com,2010-03-23:/Scratch/fr/blog/2010-03-23-Encapsulate-git/ Encapsuler git 2010-03-23T20:37:36Z 2010-03-23T20:37:36Z Yann Esposito yannesposito.com <p><span class="intro"> Voici une solution pour conserver des branches divergentes avec <code>git</code>. Parce qu’il est facile de <em>merger</em> par erreur, je propose un script qui encapsule le comportement de <code>git</code> pour interdire certains <em>merges</em> dangereux. Mais qui permet aussi de faire des merges en cascades de la racines vers les autres branches. </span></p> <h2 id="se-prmunir-contre-les-erreurs">Se prémunir contre les erreurs</h2> <p>Je travaille sur un projet dans lequel certaines de mes branches <code>git</code> doivent rester divergentes. Et les divergences devraient aller en s’accentuant.</p> <p>J’utilise aussi certaines branches qui contiennent la partie commune de ces projets.</p> <p>Disons que j’ai les branches&nbsp;:</p> <ul> <li>master: commun...</li></ul> tag:yannesposito.com,2010-03-22:/Scratch/fr/blog/2010-03-22-Git-Tips/ Astuces Git 2010-03-22T08:42:27Z 2010-03-22T08:42:27Z Yann Esposito yannesposito.com <h2 class="first" id="cloner-de-github--travers-un-pare-feu">Cloner de github à travers un pare-feu</h2> <p>La façon standard:</p> <div> <pre><code class="zsh">git clone git@github.com:yogsototh/project.git </code></pre> </div> <p>En utilisant le port HTTPS&nbsp;:</p> <div> <pre><code class="zsh">git clone git+ssh://git@github.com:443/yogsototh/project.git </code></pre> </div> <h2 id="cloner-toutes-les-branches">Cloner toutes les branches</h2> <p><code>git clone</code> peut seulement récuper la branche <code>master</code>.</p> <p>Si vous n’avez pas beaucoup de branches, vous pouvez simplement les clone le project et ensuite pour chacune d’entre elle lancer la commande suivante&nbsp;:</p> <div> <pre><code class="zsh">git branch --track local_branch remote_branch </code></pre></div> tag:yannesposito.com,2010-02-23:/Scratch/fr/blog/2010-02-23-When-regexp-is-not-the-best-solution/ Quand se passer des expressions régulières ? 2010-02-23T08:09:52Z 2010-02-23T08:09:52Z Yann Esposito yannesposito.com <p>Les expressions régulières sont très utiles. Cependant, elles ne sont pas toujours la meilleure manière d’aborder certain problème autour des chaines de caractères. Et surtout quand les transformations que vous voulez accomplir sont simples.</p> <p>Je voulais savoir comment récupérer le plus vite possible l’extension d’un nom de fichier. Il y a trois manière naturelle d’accomplir celà&nbsp;:</p> <div> <pre><code class="ruby"># regexp str.match(/[^.]*$/); ext=$&amp; # split ext=str.split('.')[-1] # File module ext=File.extname(str) </code></pre> </div> <p>A première vue, je pensais que l’expression régulière serait plus rapide que le <code>split</code> parce qu’il pouvait y avoir plusieurs de <code>.</code> dans un nom de fichier. Mais la majorité du temps il n’y a qu’un seul ...</p> tag:yannesposito.com,2010-02-18:/Scratch/fr/blog/2010-02-18-split-a-file-by-keyword/ découper un fichier par mots clés 2010-02-18T13:29:14Z 2010-02-18T13:29:14Z Yann Esposito yannesposito.com <p>Assez bizarrement, je n’ai trouvé aucun outil UNIX pour découper un fichier par mot clé. Alors j’en ai fait un en <code>awk</code>. Je le met ici principalement pour moi, mais ça peut toujours servir à quelqu’un d’autre. Le code suivant découpe un fichier pour chacune de ses ligne contenant le mot <code>UTC</code>.</p> <div> <pre><code class="perl">#!/usr/bin/env awk BEGIN{i=0;} /UTC/ { i+=1; FIC=sprintf("fic.%03d",i); } {print $0&gt;&gt;FIC} </code></pre> </div> <p>En réalité, j’avais besoin de cet outils pour avoir un fichier par jour. Chaque ligne contenant UTC ayant le format suivant&nbsp;:</p> <pre class="twilight"> Mon Dec 7 10:32:30 UTC 2009 </pre> <p>J’en suis finallement arrivé au code suivant&nbsp;:</p> <div> <pre><code class="perl">#!/usr/bin/env awk B...</code></pre></div> tag:yannesposito.com,2010-02-16:/Scratch/fr/blog/2010-02-16-All-but-something-regexp--2-/ Tout sauf quelquechose en expression régulière. 2010-02-16T08:33:21Z 2010-02-16T08:33:21Z Yann Esposito yannesposito.com <p>Dans mon <a href="previouspost">précédent article</a> j’ai donné certaines astuces pour matcher ‘tout sauf quelque chose’. De la même manière, un truc pour matcher la chaine de caractère la plus petite possible. Disons que vous voulez matcher la chaine de caractère entre ‘a’ et ‘b’. Par exemple, vous voulez matcher&nbsp;:</p> <pre class="twilight"> a.....<span class="Constant"><strong>a......b</strong></span>..b..a....<span class="Constant"><strong>a....b</strong></span>... </pre> <p>Voici les deux erreurs communes et une solution&nbsp;:</p> <pre class="twilight"> /a.*b/ <span class="Constant"><strong>a.....a......b..b..a....a....b</strong></span>... </pre> <p>La première erreur vient de l’utilisation du <em>terrible</em> <code>.*</code>. Parce que vous allez matcher la chaîne de...</p>