<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Le Blog du Geek Joyeux</title>
    <description>Plus moins vite tu codes, moins plus vite ça plante</description>
    <link>http://blog.happynoff.fr/</link>
    <pubDate>Sat, 12 Jan 2013 00:00:00 +0000</pubDate>
    <item>
      <title>Mettre en place une seedbox automatisée</title>
      <link>http://blog.happynoff.fr/post/mettre-en-place-une-seedbox-automatisee</link>
      <guid>http://blog.happynoff.fr/post/mettre-en-place-une-seedbox-automatisee</guid>
      <description>&lt;p&gt;Il y a un moment déjà que j&amp;#39;utilise un système d&amp;#39;automatisation pour le
téléchargement des séries TV. Voici ce que j&amp;#39;ai mis en place.&lt;/p&gt;

&lt;h2&gt;TL;DR&lt;/h2&gt;

&lt;p&gt;Utilisez &lt;a href="http://tvshowsapp.com/"&gt;TvShows2&lt;/a&gt; pour surveiller les séries,
automatisez l&amp;#39;envoi des fichiers &lt;em&gt;.torrent&lt;/em&gt; vers la seedbox et gérez vos
téléchargements avec &lt;a href="http://www.transmissionbt.com/"&gt;Transmission&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Attention&lt;/strong&gt; l&amp;#39;utilisation de TVShows2 est spécifique
à &lt;em&gt;Mac OS X&lt;/em&gt;. &lt;a href="http://www.ted.nu/"&gt;Ted&lt;/a&gt; semble une bonne alternative sous Linux
mais je n&amp;#39;ai pas testé.&lt;/p&gt;
</description>
      <pubDate>Sat, 12 Jan 2013 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Utilisation avancée de Draper</title>
      <link>http://blog.happynoff.fr/post/utilisation-avancee-de-draper</link>
      <guid>http://blog.happynoff.fr/post/utilisation-avancee-de-draper</guid>
      <description>&lt;p&gt;Dans &lt;a href="/post/decorer-ses-modeles-rails-avec-draper"&gt;l&amp;#39;article précédent&lt;/a&gt;, je
présentais &lt;a href="github.com/jcasimir/draper"&gt;Draper&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Dans cet articles j&amp;#39;ajouterai quelques trucs et astuces pour utiliser Draper de
façon un peu plus avancée.&lt;/p&gt;

&lt;h2&gt;TL;DR&lt;/h2&gt;

&lt;p&gt;Utilisez &lt;code&gt;decorate_association :comments&lt;/code&gt; dans &lt;code&gt;ArticleDecorator&lt;/code&gt; pour décorer
automatiquement les commentaires d&amp;#39;un article.&lt;/p&gt;

&lt;p&gt;Incluez &lt;code&gt;Draper::ModelSupport&lt;/code&gt; dans vos modèles pour les décorer en utilisant
la syntaxe &lt;code&gt;article.decorate&lt;/code&gt;.&lt;/p&gt;
</description>
      <pubDate>Sat, 23 Jun 2012 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Décorer ses modèles Rails avec Draper</title>
      <link>http://blog.happynoff.fr/post/decorer-ses-modeles-rails-avec-draper</link>
      <guid>http://blog.happynoff.fr/post/decorer-ses-modeles-rails-avec-draper</guid>
      <description>&lt;h2&gt;TL;DR&lt;/h2&gt;

&lt;p&gt;&lt;a href="github.com/jcasimir/draper"&gt;Draper&lt;/a&gt; permet d&amp;#39;ajouter à un modèle des méthodes
spécifiques au formatage de données sans pour autant alourdir le code de ce
modèle.&lt;/p&gt;
</description>
      <pubDate>Sun, 10 Jun 2012 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Utiliser HasScope avec Padrino</title>
      <link>http://blog.happynoff.fr/post/utiliser-hasscope-avec-padrino</link>
      <guid>http://blog.happynoff.fr/post/utiliser-hasscope-avec-padrino</guid>
      <description>&lt;p&gt;Pour ceux qui ne connaissent pas,
&lt;a href="https://github.com/plataformatec/has_scope"&gt;HasScope&lt;/a&gt; est une gem Ruby qui
permet d&amp;#39;utiliser les &lt;a href="http://api.rubyonrails.org/classes/ActiveRecord/Scoping/Named/ClassMethods.html#method-i-scope"&gt;scopes&lt;/a&gt;
de vos modèles Active Record comme des filtres dans vos URLs.&lt;/p&gt;
</description>
      <pubDate>Sat, 14 Apr 2012 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Définir une ressource Active Admin dans une gem</title>
      <link>http://blog.happynoff.fr/post/definir-une-ressource-active-admin-dans-une-gem</link>
      <guid>http://blog.happynoff.fr/post/definir-une-ressource-active-admin-dans-une-gem</guid>
      <description>&lt;p&gt;Si vous utilisez &lt;a href="http://activeadmin.info/"&gt;Active Admin&lt;/a&gt; pour générer vos
interfaces d&amp;#39;administration sous Rails, voici une technique pour définir des
ressources depuis un engine.&lt;/p&gt;
</description>
      <pubDate>Fri, 03 Feb 2012 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Pourquoi Ruby on Rails ça déchire ?</title>
      <link>http://blog.happynoff.fr/post/pourquoi-ruby-on-rails-ca-dechire</link>
      <guid>http://blog.happynoff.fr/post/pourquoi-ruby-on-rails-ca-dechire</guid>
      <description>&lt;p&gt;Voici les slides du talk que j&amp;#39;ai donné lors du Meetup Paris.rb du 12 janvier 2012.&lt;/p&gt;

&lt;iframe src="http://www.slideshare.net/slideshow/embed_code/11111760" width="476" height="398" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"&gt;&lt;/iframe&gt;
</description>
      <pubDate>Tue, 17 Jan 2012 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>size doesn't COUNT</title>
      <link>http://blog.happynoff.fr/post/size-doesn-t-count</link>
      <guid>http://blog.happynoff.fr/post/size-doesn-t-count</guid>
      <description>&lt;h2&gt;Requêtes N+1&lt;/h2&gt;

&lt;p&gt;Lorsque vous développez avec Rails, vous devez bien sûr faire attention aux
requêtes qui sont effectuées et surtout éviter les requêtes &lt;em&gt;N+1&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Les requêtes &lt;em&gt;N+1&lt;/em&gt; sont celles qui sont lancées pour chaque élément d&amp;#39;une liste.&lt;/p&gt;
</description>
      <pubDate>Tue, 17 Jan 2012 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Versionner ses scripts de seeding avec versioned_seeds</title>
      <link>http://blog.happynoff.fr/post/versionner-ses-scripts-de-seeding-avec-versioned_seeds</link>
      <guid>http://blog.happynoff.fr/post/versionner-ses-scripts-de-seeding-avec-versioned_seeds</guid>
      <description>&lt;p&gt;Si vous vous retrouvez dans le besoin de faire des imports de données ou des
insertions scriptées dans une application Rails, de nos jours vous n&amp;#39;avez pas
vraiment d&amp;#39;autre choix que de créer des tâches rake (ou consorts) pour le faire.&lt;/p&gt;

&lt;p&gt;Dans cette idée, j&amp;#39;ai écrit la gem
&lt;a href="https://github.com/simonc/versioned_seeds"&gt;versioned_seeds&lt;/a&gt; qui permet de
stocker ces scripts dans un dossier spécifique et de les utiliser à la manière
des migrations.&lt;/p&gt;
</description>
      <pubDate>Wed, 07 Dec 2011 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Utiliser rvm avec cron</title>
      <link>http://blog.happynoff.fr/post/utiliser-rvm-avec-cron</link>
      <guid>http://blog.happynoff.fr/post/utiliser-rvm-avec-cron</guid>
      <description>&lt;p&gt;Il y a quelques temps, j&amp;#39;avais besoin de lancer un script ruby avec cron. Le
souci, c&amp;#39;est que sur mon serveur, tout est à base de rvm. De fait, cron ne sait
pas trouver ruby puisque rvm est chargé par mon fichier &lt;em&gt;.bashrc&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;La petite astuce pour que ça marche, c&amp;#39;est de dire à cron de charger mon
environnement pour ce script spécifiquement :&lt;/p&gt;
&lt;pre class="twilight"&gt;0 * * * * /bin/bash -l -c 'ruby mon_script.rb'
&lt;/pre&gt;
&lt;p&gt;En clair, l&amp;#39;option &lt;code&gt;-l&lt;/code&gt; permet de charger l&amp;#39;environnement bash et l&amp;#39;option &lt;code&gt;-c&lt;/code&gt;
indique la commande à exécuter.&lt;/p&gt;
</description>
      <pubDate>Sat, 24 Sep 2011 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Rendre git-diff plus précis</title>
      <link>http://blog.happynoff.fr/post/rendre-git-diff-plus-precis</link>
      <guid>http://blog.happynoff.fr/post/rendre-git-diff-plus-precis</guid>
      <description>&lt;p&gt;Git permet d&amp;#39;afficher différentes informations en couleur. Cela se fait dans le
fichier de configuration, &lt;code&gt;~/.gitconfig&lt;/code&gt;.&lt;/p&gt;
&lt;pre class="twilight"&gt;&lt;span class="Entity"&gt;&lt;span class="Entity"&gt;[&lt;/span&gt;color&lt;span class="Entity"&gt;]&lt;/span&gt;&lt;/span&gt;
  &lt;span class="Keyword"&gt;ui&lt;/span&gt; = true
&lt;/pre&gt;
&lt;p&gt;Une des commandes concernées est &lt;code&gt;git-diff&lt;/code&gt;. Cette coloration est bien pratique
mais peut avoir ses limites. En effet, lorsque la différence sur une ligne se
joue à quelques caractères seulement, il peut être difficile de détecter les
modifications.&lt;/p&gt;
&lt;pre class="twilight"&gt;  Lorem ipsum dolor sit amet, consectetur adipisicing elit
  tempor incididunt ut labore et dolore magna aliqua.
&lt;span class="DiffDeleted"&gt;&lt;span class="DiffDeleted"&gt;-&lt;/span&gt; quis nostrud exercitation ullamco labaris nisi&lt;/span&gt;
&lt;span class="DiffInserted"&gt;&lt;span class="DiffInserted"&gt;+&lt;/span&gt; quis nostrud exercitation ullamco laboris nisi&lt;/span&gt;
  consequat. Duis aute irure dolor in reprehenderit
  cillum dolore eu fugiat nulla pariatur. Excepteur
  non proident, sunt in culpa qui officia deserunt
&lt;/pre&gt;
&lt;p&gt;Une petite astuce pour les voir plus précisément est l&amp;#39;utilisation de l&amp;#39;option
&lt;code&gt;--word-diff&lt;/code&gt; :&lt;/p&gt;
&lt;pre class="twilight"&gt;git diff --word-diff=color
&lt;/pre&gt;
&lt;p&gt;Voici le résultat obtenu :&lt;/p&gt;

&lt;pre class="diff"&gt;
  Lorem ipsum dolor sit amet, consectetur adipisicing elit
  tempor incididunt ut labore et dolore magna aliqua.
  quis nostrud exercitation ullamco lab&lt;span class="DiffDeleted"&gt;a&lt;/span&gt;&lt;span class="DiffInserted"&gt;o&lt;/span&gt;ris nisi
  consequat. Duis aute irure dolor in reprehenderit
  cillum dolore eu fugiat nulla pariatur. Excepteur
  non proident, sunt in culpa qui officia deserunt
&lt;/pre&gt;

&lt;p&gt;L&amp;#39;option prend différentes valeurs qui peuvent être utiles selon les
circonstances.&lt;/p&gt;
</description>
      <pubDate>Mon, 19 Sep 2011 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Gestion du PATH sous OS X</title>
      <link>http://blog.happynoff.fr/post/gestion-du-path-sous-os-x</link>
      <guid>http://blog.happynoff.fr/post/gestion-du-path-sous-os-x</guid>
      <description>&lt;p&gt;Une fonctionnalité bien pratique de &lt;em&gt;OS&lt;/em&gt;X_ est la gestion du PATH. En effet un
mécanisme permet de ne pas surcharger son &lt;code&gt;.bashrc&lt;/code&gt; chaque fois que l&amp;#39;on doit
rajouter une entrée dans le PATH.&lt;/p&gt;
</description>
      <pubDate>Mon, 08 Aug 2011 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Créer ses propres sélecteurs avec jQuery</title>
      <link>http://blog.happynoff.fr/post/creer-ses-propres-selecteurs-avec-jquery</link>
      <guid>http://blog.happynoff.fr/post/creer-ses-propres-selecteurs-avec-jquery</guid>
      <description>&lt;p&gt;Il y a peu, au boulot, on s&amp;#39;est demandé si, avec jQuery, il était possible de
sélectionner les éléments dont une classe correspond à modèle donné.&lt;/p&gt;

&lt;p&gt;Par exemple, sélectionner tous ceux donc la classe commence par &lt;code&gt;menu_item_&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;La réponse est oui, avec jQuery, c&amp;#39;est possible. Voici comment.&lt;/p&gt;
</description>
      <pubDate>Mon, 20 Jun 2011 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Installation de markItUp avec preview dans une application Rails3</title>
      <link>http://blog.happynoff.fr/post/installation-de-markitup-avec-preview-dans-une-application-rails3</link>
      <guid>http://blog.happynoff.fr/post/installation-de-markitup-avec-preview-dans-une-application-rails3</guid>
      <description>&lt;p&gt;Il est fréquent d&amp;#39;avoir besoin d&amp;#39;un éditeur dit WYSIWYG dans un site web. Il en
existe de deux types. Les éditeurs pur WYSIWYG où vous éditez directement du
HTML en mode rendu final et les éditeurs de syntaxe qui se basent par exemple
sur le format &lt;a href="http://en.wikipedia.org/wiki/Help:Wiki_markup"&gt;Wiki&lt;/a&gt;,
&lt;a href="http://www.textism.com/tools/textile/"&gt;Textile&lt;/a&gt; ou
&lt;a href="http://daringfireball.net/projects/markdown/"&gt;Markdown&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://markitup.jaysalvat.com/home/"&gt;markItUp&lt;/a&gt; est de la deuxième catégorie.
Dans le cas d&amp;#39;un éditeur de syntaxe, il est toujours plus confortable de
disposer d&amp;#39;une preview avant de valider ce qu&amp;#39;on a écrit.&lt;/p&gt;

&lt;p&gt;Voici un petit tutoriel sur comment installer markItUp dans une appli
&lt;a href="http://rubyonrails.org/"&gt;Rails3&lt;/a&gt; en utilisant
&lt;a href="http://www.sinatrarb.com/"&gt;Sinatra&lt;/a&gt; pour générer la preview.&lt;/p&gt;
</description>
      <pubDate>Thu, 02 Jun 2011 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>La méthode inject en Ruby</title>
      <link>http://blog.happynoff.fr/post/la-methode-inject-en-ruby</link>
      <guid>http://blog.happynoff.fr/post/la-methode-inject-en-ruby</guid>
      <description>&lt;p&gt;En Ruby, il existe une méthode bien pratique nommée &lt;code&gt;inject&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Elle s&amp;#39;utilise de la manière suivante :&lt;/p&gt;
&lt;pre class="twilight"&gt;puts (&lt;span class="Constant"&gt;0&lt;/span&gt;..&lt;span class="Constant"&gt;10&lt;/span&gt;).&lt;span class="Entity"&gt;inject&lt;/span&gt;(&lt;span class="Constant"&gt;0&lt;/span&gt;) &lt;span class="Keyword"&gt;do &lt;/span&gt;|&lt;span class="Variable"&gt;somme&lt;/span&gt;, &lt;span class="Variable"&gt;x&lt;/span&gt;|
  somme &lt;span class="Keyword"&gt;+=&lt;/span&gt; x
&lt;span class="Keyword"&gt;end&lt;/span&gt;
&lt;span class="Comment"&gt;&lt;span class="Comment"&gt;#&lt;/span&gt; =&amp;gt; 55&lt;/span&gt;
&lt;/pre&gt;
&lt;p&gt;Dans l&amp;#39;exemple précédent, on part d&amp;#39;une valeur de &lt;em&gt;0&lt;/em&gt; que l&amp;#39;on modifie à chaque
tour. Le code suivant est équivalent :&lt;/p&gt;
&lt;pre class="twilight"&gt;somme &lt;span class="Keyword"&gt;=&lt;/span&gt; &lt;span class="Constant"&gt;0&lt;/span&gt;
(&lt;span class="Constant"&gt;0&lt;/span&gt;..&lt;span class="Constant"&gt;10&lt;/span&gt;).&lt;span class="Entity"&gt;each&lt;/span&gt; &lt;span class="Keyword"&gt;do &lt;/span&gt;|&lt;span class="Variable"&gt;x&lt;/span&gt;|
  somme &lt;span class="Keyword"&gt;+=&lt;/span&gt; x
&lt;span class="Keyword"&gt;end&lt;/span&gt;
puts somme
&lt;span class="Comment"&gt;&lt;span class="Comment"&gt;#&lt;/span&gt; =&amp;gt; 55&lt;/span&gt;
&lt;/pre&gt;
&lt;p&gt;De manière classique, on peut s&amp;#39;en servire pour générer un tableau ou une table
de hash de la manière suivante :&lt;/p&gt;
&lt;pre class="twilight"&gt;&lt;span class="Variable"&gt;&lt;span class="Variable"&gt;@&lt;/span&gt;articles&lt;/span&gt;.&lt;span class="Entity"&gt;inject&lt;/span&gt;({}) &lt;span class="Keyword"&gt;do &lt;/span&gt;|&lt;span class="Variable"&gt;hash&lt;/span&gt;, &lt;span class="Variable"&gt;article&lt;/span&gt;|
  hash[article.&lt;span class="Entity"&gt;title&lt;/span&gt;] &lt;span class="Keyword"&gt;=&lt;/span&gt; article.&lt;span class="Entity"&gt;body&lt;/span&gt;
  hash
&lt;span class="Keyword"&gt;end&lt;/span&gt;
&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;EDIT:&lt;/strong&gt; Dans ce cas précis, il est préférable d&amp;#39;utiliser la méthode
&lt;code&gt;each_with_object&lt;/code&gt; comme ceci&amp;nbsp;:&lt;/p&gt;
&lt;pre class="twilight"&gt;&lt;span class="Variable"&gt;&lt;span class="Variable"&gt;@&lt;/span&gt;articles&lt;/span&gt;.&lt;span class="Entity"&gt;each_with_object&lt;/span&gt;({}) &lt;span class="Keyword"&gt;do &lt;/span&gt;|&lt;span class="Variable"&gt;article&lt;/span&gt;, &lt;span class="Variable"&gt;hash&lt;/span&gt;|
  hash[article.&lt;span class="Entity"&gt;title&lt;/span&gt;] &lt;span class="Keyword"&gt;=&lt;/span&gt; article.&lt;span class="Entity"&gt;body&lt;/span&gt;
&lt;span class="Keyword"&gt;end&lt;/span&gt;
&lt;/pre&gt;
&lt;p&gt;Une autre utilisation interessante, est avec les booléens :&lt;/p&gt;
&lt;pre class="twilight"&gt;&lt;span class="Variable"&gt;&lt;span class="Variable"&gt;@&lt;/span&gt;plugins&lt;/span&gt;.&lt;span class="Entity"&gt;inject&lt;/span&gt;(&lt;span class="Constant"&gt;true&lt;/span&gt;) &lt;span class="Keyword"&gt;do &lt;/span&gt;|&lt;span class="Variable"&gt;keep_going&lt;/span&gt;, &lt;span class="Variable"&gt;plugin&lt;/span&gt;|
  keep_going &lt;span class="Keyword"&gt;&amp;amp;=&lt;/span&gt; plugin.&lt;span class="Entity"&gt;some_method&lt;/span&gt;
&lt;span class="Keyword"&gt;end&lt;/span&gt;
&lt;/pre&gt;
&lt;p&gt;On obtient donc en fin de parcours, &lt;code&gt;true&lt;/code&gt; si tous les appels ont retourné
&lt;code&gt;true&lt;/code&gt; ou &lt;code&gt;false&lt;/code&gt; si au moins un appel a retourné &lt;code&gt;false&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Dans le cas où on veut stoper l&amp;#39;appel à &lt;em&gt;inject&lt;/em&gt; dés qu&amp;#39;un appel retourne
&lt;em&gt;false&lt;/em&gt;, on peut utiliser l&amp;#39;instruction &lt;em&gt;break&lt;/em&gt; :&lt;/p&gt;
&lt;pre class="twilight"&gt;&lt;span class="Variable"&gt;&lt;span class="Variable"&gt;@&lt;/span&gt;plugins&lt;/span&gt;.&lt;span class="Entity"&gt;inject&lt;/span&gt;(&lt;span class="Constant"&gt;true&lt;/span&gt;) &lt;span class="Keyword"&gt;do &lt;/span&gt;|&lt;span class="Variable"&gt;keep_going&lt;/span&gt;, &lt;span class="Variable"&gt;plugin&lt;/span&gt;|
  keep_going &lt;span class="Keyword"&gt;&amp;amp;=&lt;/span&gt; plugin.&lt;span class="Entity"&gt;some_method&lt;/span&gt; &lt;span class="Keyword"&gt;or&lt;/span&gt; &lt;span class="Keyword"&gt;break&lt;/span&gt;(keep_going)
&lt;span class="Keyword"&gt;end&lt;/span&gt;
&lt;/pre&gt;
&lt;p&gt;Cela permet de ne pas faire les appels suivants dés le premier retour négatif.&lt;/p&gt;
</description>
      <pubDate>Thu, 21 Apr 2011 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Éviter la création des fichiers ._ (point underscore) sous Mac OS X</title>
      <link>http://blog.happynoff.fr/post/eviter-point-underscore-sous-mac-os-x</link>
      <guid>http://blog.happynoff.fr/post/eviter-point-underscore-sous-mac-os-x</guid>
      <description>&lt;p&gt;Un comportement plutôt gênant sous &lt;em&gt;OS X&lt;/em&gt; est la création des fichiers &lt;code&gt;._&lt;/code&gt;
(point underscore). C&amp;#39;est souvent un problème quand on veut créer une
archive &lt;em&gt;.tar.gz&lt;/em&gt; ou avec certains &lt;em&gt;SCM&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Voici une solution pour empêcher leur création.&lt;/p&gt;

&lt;p&gt;Dans votre &lt;em&gt;.profile&lt;/em&gt;, ajoutez la ligne suivante :&lt;/p&gt;
&lt;pre class="twilight"&gt;&lt;span class="Storage"&gt;export&lt;/span&gt; COPYFILE_DISABLE=true
&lt;/pre&gt;</description>
      <pubDate>Sun, 30 Jan 2011 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Utiliser un shell non standard sous mac</title>
      <link>http://blog.happynoff.fr/post/utiliser-un-shell-non-standard-sous-mac</link>
      <guid>http://blog.happynoff.fr/post/utiliser-un-shell-non-standard-sous-mac</guid>
      <description>&lt;p&gt;Chaque fois que j&amp;#39;installe un shell sous &lt;em&gt;Mac OS X&lt;/em&gt; et que je le règle par
défaut gràce à &lt;code&gt;chsh&lt;/code&gt;, l&amp;#39;application &lt;em&gt;Terminal&lt;/em&gt; refuse de se lancer et me dit :&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Vous n&amp;#39;êtes pas autorisé à lancer cette application.&lt;/strong&gt;&lt;br&gt;
L&amp;#39;administrateur a donné à votre shell une valeur illégale.&lt;/p&gt;

&lt;p&gt;Pour régler ce petit souci, il suffit d&amp;#39;ajouter le chemin vers votre shell dans
le fichier &lt;code&gt;/etc/shells&lt;/code&gt; :&lt;/p&gt;
&lt;pre class="twilight"&gt;# /etc/shells

# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.

/usr/local/bin/bash # bash installe avec homebrew
/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh
&lt;/pre&gt;
&lt;p&gt;C&amp;#39;est une erreur que l&amp;#39;on ne rencontre pas lorsque l&amp;#39;on utilise un terminal
comme &lt;a href="http://sites.google.com/site/iterm2home/"&gt;iTerm 2&lt;/a&gt;...&lt;/p&gt;
</description>
      <pubDate>Tue, 28 Dec 2010 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Utiliser la sortie d'une commande comme un fichier en shell</title>
      <link>http://blog.happynoff.fr/post/utiliser-la-sortie-d-une-commande-comme-un-fichier-en-shell</link>
      <guid>http://blog.happynoff.fr/post/utiliser-la-sortie-d-une-commande-comme-un-fichier-en-shell</guid>
      <description>&lt;p&gt;Il arrive qu&amp;#39;on ait besoin d&amp;#39;utiliser la sortie d&amp;#39;une commande comme si c&amp;#39;était
un fichier. Voici une petite astuce pour ne pas passer par un fichier temporaire.&lt;/p&gt;
&lt;pre class="twilight"&gt;diff &lt;span class="String"&gt;&lt;span class="String"&gt;&amp;lt;(&lt;/span&gt;ls /un/dossier/au/pif&lt;span class="String"&gt;)&lt;/span&gt;&lt;/span&gt; &lt;span class="String"&gt;&lt;span class="String"&gt;&amp;lt;(&lt;/span&gt;ls /un/autre/dossier/au/pif&lt;span class="String"&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;p&gt;Et voilà avec cette syntaxe on a la différence entre deux dossiers sans utiliser
de fichiers temporaires.&lt;/p&gt;
</description>
      <pubDate>Sun, 12 Dec 2010 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Installer la gem mysql sous Snow Leopard</title>
      <link>http://blog.happynoff.fr/post/installer-la-gem-mysql-sous-snow-leopard</link>
      <guid>http://blog.happynoff.fr/post/installer-la-gem-mysql-sous-snow-leopard</guid>
      <description>&lt;p&gt;Sous &lt;em&gt;Snow Leopard&lt;/em&gt;, l&amp;#39;installation de la gem mysql n&amp;#39;est pas toujours simple.
Voici ce que j&amp;#39;utilise, sachant que mon &lt;em&gt;MySQL&lt;/em&gt; est installé via le DMG fourni
sur le site officiel.&lt;/p&gt;
&lt;pre class="twilight"&gt;&lt;span class="Storage"&gt;export&lt;/span&gt; ARCHFLAGS=&lt;span class="String"&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;-arch i386 -arch x86_64&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class="Keyword"&gt;;&lt;/span&gt;
sudo gem install mysql -v2.7 --no-rdoc --no-ri --         \
   --with-mysql-dir=/usr/local/mysql                      \
   --with-mysql-config=/usr/local/mysql/bin/mysql_config
&lt;/pre&gt;</description>
      <pubDate>Thu, 04 Nov 2010 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Problème de police trop fine sous Snow Leopard</title>
      <link>http://blog.happynoff.fr/post/probleme-de-police-trop-fine-sous-snow-leopard</link>
      <guid>http://blog.happynoff.fr/post/probleme-de-police-trop-fine-sous-snow-leopard</guid>
      <description>&lt;p&gt;Il y a quelques jours j&amp;#39;ai réinstallé un Snow Leopard sur un Mac Mini.&lt;/p&gt;

&lt;p&gt;Lorsque j&amp;#39;ai lancé iTerm et TextMate, la police Monaco que j&amp;#39;utilise dans les
deux n&amp;#39;était pas tout à fait comme d&amp;#39;habitude, plus fine et moins agréable.&lt;/p&gt;

&lt;p&gt;Cela vient d&amp;#39;un bug Snow Leopard qui ne reconnait pas toujours les LCD : il les
voit comme des écrans CRT et désactive l&amp;#39;anti-aliasing sur les polices !&lt;/p&gt;

&lt;p&gt;Pour régler ce souci, tapez simplement ceci dans une console :&lt;/p&gt;
&lt;pre class="twilight"&gt;defaults -currentHost write -globalDomain AppleFontSmoothing -int 2
&lt;/pre&gt;
&lt;p&gt;La prochaine fois que vous lancerez iTerm ou TextMate, ça devrait être bon.&lt;/p&gt;
</description>
      <pubDate>Sun, 10 Oct 2010 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Présentation de TotalFinder</title>
      <link>http://blog.happynoff.fr/post/presentation-de-totalfinder</link>
      <guid>http://blog.happynoff.fr/post/presentation-de-totalfinder</guid>
      <description>&lt;p&gt;Je n&amp;#39;ai pas pour habitude de faire la promotion de logiciels particuliers sur
mon blog. Petite exception, je vais vous parler de
&lt;a href="http://totalfinder.binaryage.com/"&gt;TotalFinder&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://totalfinder.binaryage.com/"&gt;TotalFinder&lt;/a&gt; est un plug-in pour &lt;em&gt;Finder&lt;/em&gt;
qui donne accès à pas mal de fonctionnalités bien pratiques.&lt;/p&gt;
</description>
      <pubDate>Fri, 01 Oct 2010 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Travailler en case-sensitive sous Mac</title>
      <link>http://blog.happynoff.fr/post/travailler-en-case-sensitive-sous-mac</link>
      <guid>http://blog.happynoff.fr/post/travailler-en-case-sensitive-sous-mac</guid>
      <description>&lt;p&gt;&lt;em&gt;HFS+&lt;/em&gt;, le système de fichiers utilisé par &lt;em&gt;Mac OS X&lt;/em&gt; depuis un bout de temps
déjà est, par défaut, case-insensitive. Il est toutefois possible, aujourd&amp;#39;hui,
de choisir d&amp;#39;utiliser une version case-sensitive lorsque l&amp;#39;on installe &lt;em&gt;OS X&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;La plupart du temps, ça n&amp;#39;est pas spécialement gênant. Quand il s&amp;#39;agit de
travailler cela peut vite devenir handicapant.&lt;/p&gt;
</description>
      <pubDate>Sun, 25 Jul 2010 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Désactiver la résolution interactive des conflits dans Subversion</title>
      <link>http://blog.happynoff.fr/post/desactiver-la-resolution-interactive-des-conflits-dans-subversion</link>
      <guid>http://blog.happynoff.fr/post/desactiver-la-resolution-interactive-des-conflits-dans-subversion</guid>
      <description>&lt;p&gt;Depuis la version 1.5 de Subversion, la résolution des conflits se fait de façon
interactive lorsque l&amp;#39;on utilise &lt;code&gt;svn update&lt;/code&gt;.&lt;/p&gt;

&lt;pre class="shell"&gt;&lt;kbd&gt;svn update&lt;/kbd&gt;
&lt;samp&gt;Conflict discovered in 'some/file/located/somewhere.rb'.&lt;/samp&gt;
&lt;samp&gt;Select: (p) postpone, (df) diff-full, (e) edit,
        (h) help for more options:&lt;/samp&gt;
&lt;/pre&gt;

&lt;p&gt;Personnellement, je ne supporte pas ce nouveau mode. Je préfère de loin faire un
&lt;code&gt;update&lt;/code&gt; complet et corriger les conflits à posteriori.&lt;/p&gt;

&lt;p&gt;Pour le faire de manière ponctuelle l&amp;#39;option &lt;code&gt;--non-interactive&lt;/code&gt; permet
d&amp;#39;obtenir ce comportement.&lt;/p&gt;
&lt;pre class="twilight"&gt;svn update --non-interactive
&lt;/pre&gt;
&lt;p&gt;Pour le faire de manière permanente, éditez votre &lt;code&gt;~/.subversion/config&lt;/code&gt; et
ajoutez la ligne suivante dans la section &lt;code&gt;[miscellany]&lt;/code&gt; :&lt;/p&gt;
&lt;pre class="twilight"&gt;&lt;span class="Entity"&gt;&lt;span class="Entity"&gt;[&lt;/span&gt;miscellany&lt;span class="Entity"&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class="Keyword"&gt;interactive-conflicts&lt;/span&gt; = no
&lt;/pre&gt;</description>
      <pubDate>Sat, 10 Jul 2010 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Surcharge de méthode élégante en Javascript</title>
      <link>http://blog.happynoff.fr/post/surcharge-de-methode-elegante-en-javascript</link>
      <guid>http://blog.happynoff.fr/post/surcharge-de-methode-elegante-en-javascript</guid>
      <description>&lt;p&gt;Aujourd&amp;#39;hui, j&amp;#39;ai eu besoin de surcharger une méthode Javascript. Premier
réflexe, réécrire la fonction en y ajoutant le code voulu.&lt;/p&gt;
</description>
      <pubDate>Wed, 28 Apr 2010 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Rails - Utiliser Sass avec theme_support</title>
      <link>http://blog.happynoff.fr/post/rails-utiliser-sass-avec-theme_support</link>
      <guid>http://blog.happynoff.fr/post/rails-utiliser-sass-avec-theme_support</guid>
      <description>&lt;p&gt;J&amp;#39;ai eu l&amp;#39;occasion de me prendre un petit moment la tête aujourd&amp;#39;hui sur comment
utiliser des feuilles de styles SASS au sein de thèmes dans une application
Rails.&lt;/p&gt;

&lt;p&gt;Pour la gestion des thèmes, j&amp;#39;ai utilisé &lt;em&gt;theme&lt;/em&gt;support_ qui permet de créer,
pour chaque thème, un dossier ayant l&amp;#39;arborescence suivante :&lt;/p&gt;

&lt;pre&gt;un_theme
&lt;span class="deco"&gt;├──&lt;/span&gt; images
&lt;span class="deco"&gt;|   └──&lt;/span&gt; preview.png
&lt;span class="deco"&gt;├──&lt;/span&gt; javascripts
&lt;span class="deco"&gt;├──&lt;/span&gt; stylesheets
&lt;span class="deco"&gt;├──&lt;/span&gt; views
&lt;span class="deco"&gt;└──&lt;/span&gt; about.markdown&lt;/pre&gt;

&lt;p&gt;Ce que je cherchais à faire était de pouvoir mettre des fichiers SASS dans le
dossier stylesheets, mais que les CSS compilées soient placées dans
&lt;code&gt;public/stylesheets&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Le plus simple moyen que j&amp;#39;ai trouvé pour faire ça, est d&amp;#39;ajouter le script
suivant dans &lt;code&gt;config/initializers/theme_sass.rb&lt;/code&gt; :&lt;/p&gt;
&lt;pre class="twilight"&gt;&lt;span class="Comment"&gt;&lt;span class="Comment"&gt;#&lt;/span&gt; :template_location est normalement une String, on la convertie donc en Array&lt;/span&gt;
&lt;span class="Support"&gt;Sass&lt;/span&gt;::&lt;span class="Entity"&gt;Plugin&lt;/span&gt;.&lt;span class="Entity"&gt;options&lt;/span&gt;[&lt;span class="Constant"&gt;&lt;span class="Constant"&gt;:&lt;/span&gt;template_location&lt;/span&gt;] &lt;span class="Keyword"&gt;=&lt;/span&gt; [[&lt;span class="Support"&gt;Sass&lt;/span&gt;::&lt;span class="Entity"&gt;Plugin&lt;/span&gt;.&lt;span class="Entity"&gt;options&lt;/span&gt;[&lt;span class="Constant"&gt;&lt;span class="Constant"&gt;:&lt;/span&gt;template_location&lt;/span&gt;], &lt;span class="Support"&gt;Sass&lt;/span&gt;::&lt;span class="Entity"&gt;Plugin&lt;/span&gt;.&lt;span class="Entity"&gt;options&lt;/span&gt;[&lt;span class="Constant"&gt;&lt;span class="Constant"&gt;:&lt;/span&gt;css_location&lt;/span&gt;]]]

&lt;span class="Comment"&gt;&lt;span class="Comment"&gt;#&lt;/span&gt; Pour chaque thème, on ajoute son dossier stylesheets à la liste des sources SASS&lt;/span&gt;
&lt;span class="Support"&gt;Theme&lt;/span&gt;.&lt;span class="Entity"&gt;find_all&lt;/span&gt;.&lt;span class="Entity"&gt;map&lt;/span&gt;(&lt;span class="Keyword"&gt;&amp;amp;&lt;/span&gt;&lt;span class="Constant"&gt;&lt;span class="Constant"&gt;:&lt;/span&gt;name&lt;/span&gt;).&lt;span class="Entity"&gt;each&lt;/span&gt; &lt;span class="Keyword"&gt;do &lt;/span&gt;|&lt;span class="Variable"&gt;theme&lt;/span&gt;|
  &lt;span class="Support"&gt;Sass&lt;/span&gt;::&lt;span class="Entity"&gt;Plugin&lt;/span&gt;.&lt;span class="Entity"&gt;options&lt;/span&gt;[&lt;span class="Constant"&gt;&lt;span class="Constant"&gt;:&lt;/span&gt;template_location&lt;/span&gt;] &lt;span class="Keyword"&gt;&amp;lt;&amp;lt;&lt;/span&gt; [&lt;span class="String"&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;span class="StringEmbeddedSource"&gt;&lt;span class="StringEmbeddedSource"&gt;#{&lt;/span&gt;&lt;span class="StringVariable"&gt;RAILS_ROOT&lt;/span&gt;&lt;span class="StringEmbeddedSource"&gt;}&lt;/span&gt;&lt;/span&gt;/themes/&lt;span class="StringEmbeddedSource"&gt;&lt;span class="StringEmbeddedSource"&gt;#{&lt;/span&gt;theme&lt;span class="StringEmbeddedSource"&gt;}&lt;/span&gt;&lt;/span&gt;/stylesheets&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;, &lt;span class="Support"&gt;Sass&lt;/span&gt;::&lt;span class="Entity"&gt;Plugin&lt;/span&gt;.&lt;span class="Entity"&gt;options&lt;/span&gt;[&lt;span class="Constant"&gt;&lt;span class="Constant"&gt;:&lt;/span&gt;css_location&lt;/span&gt;]]
&lt;span class="Keyword"&gt;end&lt;/span&gt;
&lt;/pre&gt;</description>
      <pubDate>Tue, 09 Mar 2010 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Continuer d'ouvrir ses onglets en fin de liste sous Firefox 3.6</title>
      <link>http://blog.happynoff.fr/post/continuer-d-ouvrir-ses-onglets-en-fin-de-liste-sous-firefox-3-6</link>
      <guid>http://blog.happynoff.fr/post/continuer-d-ouvrir-ses-onglets-en-fin-de-liste-sous-firefox-3-6</guid>
      <description>&lt;p&gt;Depuis quelques jours maintenant, Firefox 3.6 est sorti. Cette nouvelle version
apporte un certain nombre de nouveautés, dont certaines qui peuvent être
déroutantes (&amp;lt;troll&amp;gt;le nouveau système de skins uselessfull par exemple
?&amp;lt;/troll&amp;gt;).&lt;/p&gt;

&lt;p&gt;Bref ! Une nouveauté est l&amp;#39;ouverture des onglets relatifs (ouverture d&amp;#39;un lien
de la page courante dans un onglet) à côté de l&amp;#39;onglet courant et non plus à la
fin de la liste. Tout cela n&amp;#39;aurait rien de bien gênant si cette fonctionnalité
pouvait être désactivée grâce à une simple case à cocher...&lt;/p&gt;

&lt;p&gt;Voici un moyen simple de revenir à l&amp;#39;ancien fonctionnement.&lt;/p&gt;

&lt;p&gt;Ouvrez l&amp;#39;URL &lt;code&gt;about:config&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Dans la zone de filtre saisissez insertRelated cela devrait laisser seulement
une entrée :&lt;/p&gt;

&lt;p&gt;&lt;img src="/images/ff3.6_aboutconfig_tabs.png" alt="Firefox 3.6 about:config - insertRelatedTabsAfterCurrent"&gt;&lt;/p&gt;

&lt;p&gt;Double-cliquez dessus pour passer sa valeur à &lt;code&gt;false&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;C&amp;#39;est tout. Les nouveaux onglets devraient s&amp;#39;ouvrir maintenant en fin de liste.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;EDIT:&lt;/strong&gt; Je viens de trouver &lt;a href="http://mozillalinks.org/wp/2010/01/firefox-3-6-tips-and-tweaks/"&gt;un lien avec quelques astuces supplémentaires&lt;/a&gt;&lt;/p&gt;
</description>
      <pubDate>Mon, 25 Jan 2010 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Mettre en place un groupe de sites de démonstration</title>
      <link>http://blog.happynoff.fr/post/mettre-en-place-un-groupe-de-sites-de-demonstration</link>
      <guid>http://blog.happynoff.fr/post/mettre-en-place-un-groupe-de-sites-de-demonstration</guid>
      <description>&lt;p&gt;Quand on développe de nombreux sites, on n&amp;#39;a pas forcement envie de toucher à
ses VirtualHosts pour chaque nouveau site.&lt;/p&gt;

&lt;p&gt;Voici ce que j&amp;#39;ai mis en place sur mon serveur pour l&amp;#39;espace de démo de ce genre
de sites.&lt;/p&gt;
</description>
      <pubDate>Fri, 01 Jan 2010 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Utiliser GetText côté Javascript avec Rails</title>
      <link>http://blog.happynoff.fr/post/utiliser-gettext-cote-javascript-avec-rails</link>
      <guid>http://blog.happynoff.fr/post/utiliser-gettext-cote-javascript-avec-rails</guid>
      <description>&lt;p&gt;En travaillant sur une petite application Rails, j&amp;#39;ai utilisé &lt;em&gt;GetText&lt;/em&gt; pour
l&amp;#39;internationalisation. Jusque là, pas de problème... Sauf au moment où j&amp;#39;ai
voulu traduire un message côté client (autrement dit Javascript).&lt;/p&gt;

&lt;p&gt;Je ne voulais pas faire d&amp;#39;appel AJAX pour chaque chaine à traduire.&lt;/p&gt;

&lt;p&gt;Tout naturellement, j&amp;#39;ai cherché un plugin simple qui fasse le travail mais n&amp;#39;ai
rien trouvé qui me convienne.&lt;/p&gt;

&lt;p&gt;J&amp;#39;ai donc créé mon propre plugin, &lt;a href="http://github.com/simonc/gettext_json"&gt;gettext_json&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Voici comment l&amp;#39;utiliser.&lt;/p&gt;
</description>
      <pubDate>Fri, 01 Jan 2010 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Deverouiller un groupe de fichiers sous Mac</title>
      <link>http://blog.happynoff.fr/post/deverouiller-un-groupe-de-fichiers-sous-mac</link>
      <guid>http://blog.happynoff.fr/post/deverouiller-un-groupe-de-fichiers-sous-mac</guid>
      <description>&lt;p&gt;Dernièrement, lors de la copie de fichiers depuis le disque dur d&amp;#39;une amie, je
me suis retrouvé avec de nombreux fichiers verrouillés. Verrouillés au sens
&lt;em&gt;OS X&lt;/em&gt; du terme.&lt;/p&gt;

&lt;p&gt;Il est possible pour chaque fichier d&amp;#39;afficher ses infos et de décocher la case
de verrouillage.&lt;/p&gt;

&lt;p&gt;Mais lorsque cela concerne une centaine, ou un millier de fichiers, d&amp;#39;un coup,
cocher une simple case peut devenir quelque peu fastidieux.&lt;/p&gt;

&lt;p&gt;Pour effectuer cette action en ligne de commande, il suffit d&amp;#39;utiliser la ligne
suivante :&lt;/p&gt;
&lt;pre class="twilight"&gt;chflags nouchg &lt;span class="Keyword"&gt;&amp;lt;&lt;/span&gt;fichiers&lt;span class="Keyword"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;</description>
      <pubDate>Mon, 28 Dec 2009 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Utiliser Paperclip avec Rails sous Mac</title>
      <link>http://blog.happynoff.fr/post/utiliser-paperclip-avec-rails-sous-mac</link>
      <guid>http://blog.happynoff.fr/post/utiliser-paperclip-avec-rails-sous-mac</guid>
      <description>&lt;p&gt;Pour gérer l&amp;#39;upload de fichiers dans les applications Rails, une gem fréquemment
utilisé est &lt;em&gt;Paperclip&lt;/em&gt;. Récemment, lors du développement d&amp;#39;un projet, je me
suis retrouvé confronté à un problème lors de l&amp;#39;envoie des fichiers. En effet,
ça ne fonctionnait pas et je recevais un message d&amp;#39;erreur à chaque fois.&lt;/p&gt;

&lt;p&gt;&lt;img src="/images/erreur_paperclip.jpg" alt="Erreur Paperclip" title="Erreur Paperclip"&gt;&lt;/p&gt;

&lt;p&gt;Après quelques recherches, j&amp;#39;ai fini par trouver que cette erreur venait du fait
que mon application ne trouvait pas son chemin vers les outils d&amp;#39;ImageMagick
dont &lt;em&gt;Paperclip&lt;/em&gt; dépend au travers de &lt;em&gt;Rmagick&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Pour résoudre ce problème, il suffit d&amp;#39;ajouter un initialiseur à l&amp;#39;application.&lt;/p&gt;

&lt;p&gt;J&amp;#39;ai donc ajouté le fichier &lt;code&gt;config/initializers/paperclip.rb&lt;/code&gt; contenant ceci :&lt;/p&gt;
&lt;pre class="twilight"&gt;&lt;span class="Support"&gt;Paperclip&lt;/span&gt;.&lt;span class="Entity"&gt;options&lt;/span&gt;[&lt;span class="Constant"&gt;&lt;span class="Constant"&gt;:&lt;/span&gt;command_path&lt;/span&gt;] &lt;span class="Keyword"&gt;=&lt;/span&gt; &lt;span class="String"&gt;&lt;span class="String"&gt;'&lt;/span&gt;/usr/local/bin&lt;span class="String"&gt;'&lt;/span&gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;p&gt;J&amp;#39;ai utilisé ce chemin car j&amp;#39;ai installé &lt;em&gt;ImageMagick&lt;/em&gt; en utilisant Homebrew.&lt;/p&gt;
</description>
      <pubDate>Mon, 28 Dec 2009 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>SSH automatique sur une machine au travers d'une autre</title>
      <link>http://blog.happynoff.fr/post/ssh-automatique-sur-une-machine-au-travers-d-une-autre</link>
      <guid>http://blog.happynoff.fr/post/ssh-automatique-sur-une-machine-au-travers-d-une-autre</guid>
      <description>&lt;p&gt;Parfois, pour se connecter en SSH sur une machine, il est nécessaire de passer
au préalable par une passerelle.&lt;/p&gt;

&lt;p&gt;&lt;img src="/images/ssh_connection_through.png" alt="Connexion au travers d&amp;#39;une autre machine"&gt;&lt;/p&gt;

&lt;p&gt;Cela implique, en général, le processus suivant :&lt;/p&gt;

&lt;pre class="shell"&gt;&lt;samp class="prompt"&gt;$ &lt;/samp&gt;&lt;kbd&gt;ssh user1@machine1&lt;/kbd&gt;
&lt;samp&gt;Welcome to machine1 &lt;/samp&gt;
&lt;samp class="prompt"&gt;machine1&amp;gt; &lt;/samp&gt;&lt;kbd&gt;ssh user2@machine2&lt;/kbd&gt;
&lt;samp&gt;Welcome to machine2&lt;/samp&gt;
&lt;samp class="prompt"&gt;machine2&amp;gt; &lt;/samp&gt;&lt;/pre&gt;

&lt;p&gt;Cela peut être simplifié de plusieurs manières.&lt;/p&gt;
</description>
      <pubDate>Sat, 21 Nov 2009 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Ignorer les changements d'espaces dans un diff SVN</title>
      <link>http://blog.happynoff.fr/post/ignorer-les-changements-d-espaces-dans-un-diff-svn</link>
      <guid>http://blog.happynoff.fr/post/ignorer-les-changements-d-espaces-dans-un-diff-svn</guid>
      <description>&lt;p&gt;Lorsque l&amp;#39;on édite un fichier, il peut arriver qu&amp;#39;en plus de simples
modifications, certaines portions, voire le fichier entier, soient re-indentées.
Malheureusement, Subversion étant bête et discipliné, un &lt;code&gt;svn diff&lt;/code&gt; montrera les
lignes modifiées mais également les lignes simplement indentées.&lt;/p&gt;

&lt;p&gt;Cela peut devenir gênant lorsque, par exemple, tout le fichier s&amp;#39;en retrouve
changé.&lt;/p&gt;

&lt;p&gt;Pour ignorer ces différences d&amp;#39;espaces lors d&amp;#39;un &lt;code&gt;diff&lt;/code&gt;, la commande à utiliser
est la suivante :&lt;/p&gt;
&lt;pre class="twilight"&gt;svn diff --extensions -bu
&lt;/pre&gt;</description>
      <pubDate>Sat, 14 Nov 2009 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Problème des noms de fichiers avec accents dans Subversion sous OS X</title>
      <link>http://blog.happynoff.fr/post/probleme-des-noms-de-fichiers-avec-accents-dans-subversion-sous-os-x</link>
      <guid>http://blog.happynoff.fr/post/probleme-des-noms-de-fichiers-avec-accents-dans-subversion-sous-os-x</guid>
      <description>&lt;p&gt;Si vous utilisez des fichiers dont le nom contient des accents sur un dépôt SVN,
vous avez de grandes chances de rencontrer quelques soucis sous Mac, si vous
avez installé &lt;em&gt;Subversion&lt;/em&gt; avec &lt;em&gt;MacPorts&lt;/em&gt;. Le problème vient de la différence
de stockage des caractères unicode entre les plateformes &lt;em&gt;Unix&lt;/em&gt; et &lt;em&gt;OS X&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Voici comment résoudre ce problème. C&amp;#39;est très simple, il suffit
d&amp;#39;installer une variante du &lt;em&gt;port&lt;/em&gt; subversion.&lt;/p&gt;
&lt;pre class="twilight"&gt;port install subversion +unicode_path
&lt;/pre&gt;
&lt;p&gt;Si tout s&amp;#39;est bien passé, vous ne devriez plus avoir de problèmes.&lt;/p&gt;
</description>
      <pubDate>Sat, 14 Nov 2009 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Utiliser TextMate pour les messages de commit SVN ou Git</title>
      <link>http://blog.happynoff.fr/post/utiliser-textmate-pour-les-messages-de-commit-svn-ou-git</link>
      <guid>http://blog.happynoff.fr/post/utiliser-textmate-pour-les-messages-de-commit-svn-ou-git</guid>
      <description>&lt;p&gt;Lorsque l&amp;#39;on utilise un éditeur de texte particulier, on apprécie de pouvoir
l&amp;#39;utiliser comme éditeur par défaut pour peu tout. Cela comprend également les
messages de commit des outils tels que &lt;em&gt;SVN&lt;/em&gt; ou &lt;em&gt;Git&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Malheureusement, utiliser un éditeur graphique pour cela n&amp;#39;est pas toujours
trivial.&lt;/p&gt;

&lt;p&gt;La commande &lt;em&gt;mate&lt;/em&gt; propose l&amp;#39;option &lt;em&gt;-w&lt;/em&gt; qui permet de signifier que l&amp;#39;on veut
attendre que TextMate en ait fini avec le fichier pour reprendre la main.&lt;/p&gt;

&lt;p&gt;Il est vrai que TextMate intègre les fonctionnalités SVN et Git. Personnellement
j&amp;#39;ai toujours préféré m&amp;#39;occuper de ces choses là en ligne de commande, chacun
son truc...&lt;/p&gt;

&lt;h2&gt;Pour SVN&lt;/h2&gt;

&lt;p&gt;Il y a plusieurs façons de dire à subversion d&amp;#39;utiliser tel ou tel éditeur, le
plus simple est de donner une valeur à la variable &lt;code&gt;SVN_EDITOR&lt;/code&gt; :&lt;/p&gt;
&lt;pre class="twilight"&gt;&lt;span class="Storage"&gt;export&lt;/span&gt; SVN_EDITOR=&lt;span class="String"&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;mate -w&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;h2&gt;Pour Git&lt;/h2&gt;

&lt;p&gt;Pour rester dans l&amp;#39;utilisation habituelle de Git, on utilisera la commande
suivante :&lt;/p&gt;
&lt;pre class="twilight"&gt;git config --global core.editor &lt;span class="String"&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;mate -w&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;/pre&gt;</description>
      <pubDate>Sun, 27 Sep 2009 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Relever automatiquement les mails des sous dossiers dans Thunderbird</title>
      <link>http://blog.happynoff.fr/post/relever-automatiquement-les-mails-des-sous-dossiers-dans-thunderbird</link>
      <guid>http://blog.happynoff.fr/post/relever-automatiquement-les-mails-des-sous-dossiers-dans-thunderbird</guid>
      <description>&lt;p&gt;Depuis plusieurs années maintenant, j&amp;#39;utilise pour lire mes mails le logiciel
Thunderbird. Pratique et efficace, il n&amp;#39;en est pas moins doté de certains
défauts plus que gênants...&lt;/p&gt;

&lt;p&gt;L&amp;#39;un d&amp;#39;eux est que Thunderbird ne relève pas automatiquement les mails dans les
sous dossiers. Cela devient très gênant lorsque l&amp;#39;on utilise un filtrage des
messages à la source, autrement dit, côté serveur.&lt;/p&gt;

&lt;p&gt;Il existe toutefois une solution. Il est possible de préciser, pour chaque
dossier, que l&amp;#39;on souhaite que Thunderbird vérifie les nouveaux messages.&lt;/p&gt;

&lt;p&gt;Pour ce faire, il suffit de faire un clic droit sur un dossier puis sur
&lt;em&gt;Propriétés...&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Dans la fenêtre qui s&amp;#39;ouvre, cochez la case &lt;em&gt;Surveillez les nouveaux messages
dans ce dossier&lt;/em&gt; :&lt;/p&gt;

&lt;p&gt;&lt;img src="/images/thunderbird.png" alt="Thunderbird properties" title="Thunderbird properties"&gt;&lt;/p&gt;

&lt;p&gt;Voilà, à ce jour, le mieux que l&amp;#39;on puisse faire, mais c&amp;#39;est mieux que rien.&lt;/p&gt;
</description>
      <pubDate>Sun, 27 Sep 2009 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Comment se passer de &lt;div class="clear"&gt;&lt;/div&gt; ?</title>
      <link>http://blog.happynoff.fr/post/comment-se-passer-de-div-clear</link>
      <guid>http://blog.happynoff.fr/post/comment-se-passer-de-div-clear</guid>
      <description>&lt;p&gt;Dans mon travail de tous les jours, en tant que développeur web, je me retrouve
confronté au problème dit de la guillotine lorsque j&amp;#39;utilise des éléments en
&lt;em&gt;float&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Pour illustrer mes propos voici un petit exemple de code et son résultat :&lt;/p&gt;

&lt;p&gt;Code xHTML :&lt;/p&gt;
&lt;pre class="twilight"&gt;&lt;span class="MetaTagAll"&gt;&lt;span class="MetaTagAll"&gt;&amp;lt;&lt;/span&gt;&lt;span class="MetaTagAll"&gt;div&lt;/span&gt; &lt;span class="MetaTagAll"&gt;&lt;span class="MetaTagAll"&gt;id&lt;/span&gt;&lt;span class="MetaTagAll"&gt;=&lt;/span&gt;&lt;span class="String"&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;span class="String"&gt;container&lt;/span&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="MetaTagAll"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span class="MetaTagAll"&gt;&lt;span class="MetaTagAll"&gt;&amp;lt;&lt;/span&gt;&lt;span class="MetaTagAll"&gt;div&lt;/span&gt; &lt;span class="MetaTagAll"&gt;class&lt;/span&gt;=&lt;span class="String"&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;content&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class="MetaTagAll"&gt;&amp;gt;&lt;span class="MetaTagAll"&gt;&amp;lt;&lt;/span&gt;/&lt;/span&gt;&lt;span class="MetaTagAll"&gt;div&lt;/span&gt;&lt;span class="MetaTagAll"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span class="MetaTagAll"&gt;&lt;span class="MetaTagAll"&gt;&amp;lt;&lt;/span&gt;&lt;span class="MetaTagAll"&gt;div&lt;/span&gt; &lt;span class="MetaTagAll"&gt;class&lt;/span&gt;=&lt;span class="String"&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;content&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class="MetaTagAll"&gt;&amp;gt;&lt;span class="MetaTagAll"&gt;&amp;lt;&lt;/span&gt;/&lt;/span&gt;&lt;span class="MetaTagAll"&gt;div&lt;/span&gt;&lt;span class="MetaTagAll"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="MetaTagAll"&gt;&lt;span class="MetaTagAll"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="MetaTagAll"&gt;div&lt;/span&gt;&lt;span class="MetaTagAll"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;p&gt;Code CSS :&lt;/p&gt;
&lt;pre class="twilight"&gt;&lt;span class="CssId"&gt;&lt;span class="CssId"&gt;#&lt;/span&gt;container&lt;/span&gt; {
  &lt;span class="CssPropertyName"&gt;border&lt;/span&gt;:       &lt;span class="CssAdditionalConstants"&gt;1&lt;/span&gt;&lt;span class="Keyword"&gt;px&lt;/span&gt; &lt;span class="CssPropertyValue"&gt;solid&lt;/span&gt; &lt;span class="CssAdditionalConstants"&gt;&lt;span class="CssAdditionalConstants"&gt;#&lt;/span&gt;000000&lt;/span&gt;;
  &lt;span class="CssPropertyName"&gt;padding&lt;/span&gt;:      &lt;span class="CssAdditionalConstants"&gt;10&lt;/span&gt;&lt;span class="Keyword"&gt;px&lt;/span&gt;;
}

&lt;span class="CssClass"&gt;&lt;span class="CssClass"&gt;.&lt;/span&gt;content&lt;/span&gt; {
  &lt;span class="CssPropertyName"&gt;background&lt;/span&gt;:   &lt;span class="CssAdditionalConstants"&gt;&lt;span class="CssAdditionalConstants"&gt;#&lt;/span&gt;999&lt;/span&gt;;
  &lt;span class="CssPropertyName"&gt;float&lt;/span&gt;:        &lt;span class="CssPropertyValue"&gt;left&lt;/span&gt;;
  &lt;span class="CssPropertyName"&gt;height&lt;/span&gt;:       &lt;span class="CssAdditionalConstants"&gt;100&lt;/span&gt;&lt;span class="Keyword"&gt;px&lt;/span&gt;;
  &lt;span class="CssPropertyName"&gt;width&lt;/span&gt;:        &lt;span class="CssAdditionalConstants"&gt;100&lt;/span&gt;&lt;span class="Keyword"&gt;px&lt;/span&gt;;
  &lt;span class="CssPropertyName"&gt;margin-right&lt;/span&gt;: &lt;span class="CssAdditionalConstants"&gt;10&lt;/span&gt;&lt;span class="Keyword"&gt;px&lt;/span&gt;;
}
&lt;/pre&gt;
&lt;p&gt;Voici le résultat obtenu :&lt;/p&gt;

&lt;p&gt;&lt;img src="/images/float_with_problem.png" alt="Float with problem" title="Float with problem"&gt;&lt;/p&gt;

&lt;p&gt;En effet, dans 99% des cas, ce n&amp;#39;était pas le but recherché.&lt;/p&gt;
</description>
      <pubDate>Wed, 05 Aug 2009 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>ssh complétion et alias</title>
      <link>http://blog.happynoff.fr/post/ssh-completion-et-alias</link>
      <guid>http://blog.happynoff.fr/post/ssh-completion-et-alias</guid>
      <description>&lt;p&gt;Voici deux petites astuces pour améliorer l&amp;#39;utilisation de ssh.&lt;/p&gt;

&lt;h2&gt;Complétion des noms d&amp;#39;hôtes&lt;/h2&gt;

&lt;p&gt;Pour obtenir la complétion des noms d&amp;#39;hôtes pour ssh et scp, il vous suffit
d&amp;#39;installer le paquet &lt;em&gt;bash-completion&lt;/em&gt;.&lt;/p&gt;
&lt;pre class="twilight"&gt;aptitude install bash-completion &lt;span class="Comment"&gt;&lt;span class="Comment"&gt;#&lt;/span&gt; Sous Debian et consorts&lt;/span&gt;
brew install bash-completion     &lt;span class="Comment"&gt;&lt;span class="Comment"&gt;#&lt;/span&gt; Sous Mac, avec homebrew&lt;/span&gt;
port install bash-completion     &lt;span class="Comment"&gt;&lt;span class="Comment"&gt;#&lt;/span&gt; Sous Mac, avec macport&lt;/span&gt;
&lt;/pre&gt;
&lt;h2&gt;Alias&lt;/h2&gt;

&lt;p&gt;Il est possible de créer des alias pour les hôtes sur lesquels on se ssh. Cela
se fait en éditant le fichier &lt;code&gt;~/.ssh/config&lt;/code&gt; :&lt;/p&gt;
&lt;pre class="twilight"&gt;&lt;span class="Storage"&gt;Host&lt;/span&gt; &lt;span class="Entity"&gt;&lt;span class="Entity"&gt;somehost&lt;/span&gt;&lt;/span&gt;
  &lt;span class="Keyword"&gt;HostName&lt;/span&gt;     some.host.with.long.name
  &lt;span class="Keyword"&gt;User&lt;/span&gt;         someuser
  &lt;span class="Keyword"&gt;IdentityFile&lt;/span&gt; ~/.ssh/other_id_rsa
&lt;/pre&gt;
&lt;p&gt;Ceci permet de se connecter à l&amp;#39;hôte &lt;em&gt;some.host.with.long.name&lt;/em&gt; avec
l&amp;#39;utilisateur &lt;em&gt;someuser&lt;/em&gt; en utilisant la clé &lt;code&gt;~/.ssh/other_id_rsa&lt;/code&gt; :&lt;/p&gt;
&lt;pre class="twilight"&gt;ssh somehost
&lt;/pre&gt;</description>
      <pubDate>Sun, 05 Apr 2009 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Changer facilement la configuration proxy de SVN</title>
      <link>http://blog.happynoff.fr/post/changer-facilement-la-configuration-proxy-de-svn</link>
      <guid>http://blog.happynoff.fr/post/changer-facilement-la-configuration-proxy-de-svn</guid>
      <description>&lt;p&gt;Comme de nombreux développeurs, je suis très souvent amené à utiliser SVN
(Subversion). Comme de nombreux développeurs toujours, je suis amené à partir
en mission chez différents clients qui ont chacun leur proxy. Pour peu qu&amp;#39;on en
ait déjà un au boulot ou chez soi, ça devient vite fatiguant de jongler entre
ces différentes configurations.&lt;/p&gt;

&lt;p&gt;Voici donc une petite astuce toute bête pour se rendre la vie facile.&lt;/p&gt;
</description>
      <pubDate>Fri, 13 Mar 2009 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Un peu de couleur dans les diffs SVN</title>
      <link>http://blog.happynoff.fr/post/un-peu-de-couleur-dans-les-diffs-svn</link>
      <guid>http://blog.happynoff.fr/post/un-peu-de-couleur-dans-les-diffs-svn</guid>
      <description>&lt;p&gt;Les diffs SVN peuvent parfois être longs et souvent pénibles à lire. Oui il y a
des &lt;code&gt;+&lt;/code&gt; et des &lt;code&gt;-&lt;/code&gt; mais ça ne fait pas tout. Un bon moyen de simplifier cette
lecture est l&amp;#39;utilisation de couleurs.&lt;/p&gt;

&lt;p&gt;--break --&lt;/p&gt;

&lt;p&gt;Un utilitaire bien sympathique, &lt;em&gt;colordiff&lt;/em&gt;, permet justement de coloriser
l&amp;#39;affichage des diffs. Packagé sous Debian ou disponible via Homebrew.&lt;/p&gt;

&lt;p&gt;Voici comment l&amp;#39;utiliser pour les diffs SVN.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pour une utilisation occasionnelle&lt;/strong&gt; :&lt;/p&gt;
&lt;pre class="twilight"&gt;svn diff --diff-cmd colordiff
&lt;/pre&gt;
&lt;p&gt;ou&lt;/p&gt;
&lt;pre class="twilight"&gt;svn diff &lt;span class="Keyword"&gt;|&lt;/span&gt; colordiff
&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Pour l&amp;#39;établir de manière globale&lt;/strong&gt;, il suffit d&amp;#39;éditer le fichier
&lt;code&gt;~/.subversion/config&lt;/code&gt; et d&amp;#39;ajouter dans la section &lt;code&gt;[helpers]&lt;/code&gt; :&lt;/p&gt;
&lt;pre class="twilight"&gt;&lt;span class="Entity"&gt;&lt;span class="Entity"&gt;[&lt;/span&gt;helpers&lt;span class="Entity"&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class="Keyword"&gt;diff-cmd&lt;/span&gt; = colordiff
&lt;/pre&gt;
&lt;p&gt;EDIT: Pour afficher la sortie de colordiff dans less, il faut utiliser l&amp;#39;option
&lt;code&gt;-R&lt;/code&gt; de ce dernier :&lt;/p&gt;
&lt;pre class="twilight"&gt;svn diff &lt;span class="Keyword"&gt;|&lt;/span&gt; less -R
&lt;/pre&gt;
&lt;p&gt;Pour aller plus loin, un autre utilitaire permet de coloriser bien plus de
choses, il s&amp;#39;agit de
&lt;a href="http://colorsvn.tigris.org/" title="page du projet colorsvn"&gt;colorsvn&lt;/a&gt;.&lt;/p&gt;
</description>
      <pubDate>Mon, 16 Feb 2009 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Ignorer les fichiers de votre IDE dans Subversion</title>
      <link>http://blog.happynoff.fr/post/ignorer-les-fichiers-de-votre-ide-dans-subversion</link>
      <guid>http://blog.happynoff.fr/post/ignorer-les-fichiers-de-votre-ide-dans-subversion</guid>
      <description>&lt;p&gt;Il peut arriver que, sur un projet, chacun utilise son propre IDE. Le petit
problème c&amp;#39;est que chaque IDE crée des fichiers qui lui sont spécifiques.
Lorsque l&amp;#39;on utilise Subversion, gérer les &lt;code&gt;svn:ignore&lt;/code&gt; devient vite lourd.
Mais une solution existe ! Ignorer localement certains fichiers.&lt;/p&gt;
</description>
      <pubDate>Mon, 16 Feb 2009 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Remettre GRUB apres une reinstallation de Windows</title>
      <link>http://blog.happynoff.fr/post/remettre-grub-apres-une-reinstallation-de-windows</link>
      <guid>http://blog.happynoff.fr/post/remettre-grub-apres-une-reinstallation-de-windows</guid>
      <description>&lt;p&gt;En général, quand on me parle de remettre GRUB après une installation de Windows,
la première chose à laquelle je pense est &amp;ldquo;bah tu mets un live-cd, tu
montes ta partition /, tu te chroot et grub-install&amp;rdquo;.&lt;/p&gt;

&lt;p&gt;En somme, ça se résume effectivement à ça. Mais, parfois, tout ne se passe pas
comme prévu. En effet, lors de ma dernière expérience, lorsque je montais la
partition &lt;code&gt;/&lt;/code&gt; de ma Debian, aucune trace de hda ou sda. Rien du tout !
La raison, je ne la connais pas et, pour être honnête, je n&amp;#39;ai pas cherché
(création dynamique, quelque chose comme ça ?).&lt;/p&gt;

&lt;p&gt;Bref, rien à faire, ils sont introuvables. Voici donc la solution dans ce cas :&lt;/p&gt;

&lt;p&gt;Lancer le CD d&amp;#39;installation de Debian (marche probablement avec d&amp;#39;autre mais
c&amp;#39;est ce que j&amp;#39;ai fait donc...). Après le lancement, continuer jusqu&amp;#39;au moment
de la sélection du réseau, passer cette étape puis, un petit &lt;code&gt;ALT-F2&lt;/code&gt;
(ou &lt;code&gt;CTRL-ALT-F2&lt;/code&gt;), pour passer dans une console.&lt;/p&gt;

&lt;p&gt;Ensuite, voici la marche à suivre (mon / se trouve dans /dev/sda6) :&lt;/p&gt;

&lt;pre class="shell"&gt;&lt;samp class="prompt"&gt;$ &lt;/samp&gt;&lt;kbd&gt;mount /dev/sda6 /mnt&lt;/kbd&gt;
&lt;samp class="prompt"&gt;$ &lt;/samp&gt;&lt;kbd&gt;mount -o bind /dev /mnt/dev&lt;/kbd&gt;
&lt;samp class="prompt"&gt;$ &lt;/samp&gt;&lt;kbd&gt;mount -o bind /proc /mnt/proc&lt;/kbd&gt;
&lt;samp class="prompt"&gt;$ &lt;/samp&gt;&lt;kbd&gt;chroot /mnt&lt;/kbd&gt;
&lt;samp class="prompt"&gt;$ &lt;/samp&gt;&lt;kbd&gt;grub&lt;/kbd&gt;
&lt;samp&gt;Probing devices to guess BIOS drives. This may take a long time.&lt;/samp&gt;
&lt;samp class="prompt"&gt;grub&gt; &lt;/samp&gt;&lt;kbd&gt;root (hd0,5)&lt;/kbd&gt; # trouvé dans /boot/grub/menu.lst
&lt;samp class="prompt"&gt;grub&gt; &lt;/samp&gt;&lt;kbd&gt;setup (hd0)&lt;/kbd&gt;
&lt;samp&gt;sortie de grub qui dit que tout s'est bien passé&lt;/samp&gt;
&lt;samp class="prompt"&gt;grub&gt; &lt;/samp&gt;&lt;span class="comment"&gt;# CTRL+C pour sortir&lt;/span&gt;
&lt;samp class="prompt"&gt;$ &lt;/samp&gt;&lt;kbd&gt;update-grub&lt;/kbd&gt;
&lt;samp class="prompt"&gt;$ &lt;/samp&gt;&lt;kbd&gt;reboot&lt;/kbd&gt;&lt;/pre&gt;

&lt;p&gt;En ce qui me concerne, ça a fonctionné. Seul un dernier souci que j&amp;#39;ai eu, mes
partitions /home et de swap ont été échangées. Donc, au redémarrage, si un
problème se pose, pensez avant de tout envoyer valser à passer en console de
maintenance, à tester le montage de vos partitions pour voir ce qu&amp;#39;il y a dedans
et modifier votre &lt;code&gt;/etc/fstab&lt;/code&gt; en conséquence...&lt;/p&gt;
</description>
      <pubDate>Fri, 16 Jan 2009 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Contrôler Amarok en ligne de commande grace a DCOP</title>
      <link>http://blog.happynoff.fr/post/controler-amarok-en-ligne-de-commande-grace-a-dcop</link>
      <guid>http://blog.happynoff.fr/post/controler-amarok-en-ligne-de-commande-grace-a-dcop</guid>
      <description>&lt;p&gt;Pendant longtemps, je me suis demandé comment on pouvait régler le son d&amp;#39;Amarok
depuis la ligne de commande.&lt;/p&gt;

&lt;p&gt;Quel intérêt, me direz-vous, alors qu&amp;#39;il suffit de cliquer pour s&amp;#39;en occuper ?&lt;/p&gt;

&lt;p&gt;La réponse est simple. D&amp;#39;un naturel fainéant, il m&amp;#39;arrive de coder au lit et de
mettre Amarok en lecture sur mon PC de bureau. Il est possible de contrôler
Amarok en ligne de commande pour ce qui concerne la lecture (play, pause, stop,
etc...). Le contrôle du son ne fait malheureusement pas partie des options.
C&amp;#39;est là que DCOP sauve des vies...&lt;/p&gt;
</description>
      <pubDate>Sun, 19 Oct 2008 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Automatiser les tags ID3 de vos mp3</title>
      <link>http://blog.happynoff.fr/post/automatiser-les-tags-id3-de-vos-mp3</link>
      <guid>http://blog.happynoff.fr/post/automatiser-les-tags-id3-de-vos-mp3</guid>
      <description>&lt;p&gt;Cet article présente trois petits scripts ayant pour but d&amp;#39;appliquer
automatiquement les tags ID3 sur vos mp3.&lt;/p&gt;
</description>
      <pubDate>Fri, 29 Aug 2008 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Connaitre les classes heritant d'une autre classe en Ruby</title>
      <link>http://blog.happynoff.fr/post/connaitre-les-classes-heritant-d-une-autre-classe-en-ruby</link>
      <guid>http://blog.happynoff.fr/post/connaitre-les-classes-heritant-d-une-autre-classe-en-ruby</guid>
      <description>&lt;p&gt;En Ruby, pour connaître la classe parente d&amp;#39;une classe, un appel de méthode
suffit. Malheureusement, il n&amp;#39;existe pas de telle méthode afin d&amp;#39;obtenir les
classes héritant d&amp;#39;une classe donnée. Voici donc comment créer ce comportement.&lt;/p&gt;

&lt;p&gt;Prérequis: une connaissance basique du langage Ruby est nécessaire pour
comprendre certains listings de code.&lt;/p&gt;
</description>
      <pubDate>Wed, 16 Jul 2008 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>VirtualBox - BSoD au demarrage de Windows</title>
      <link>http://blog.happynoff.fr/post/virtualbox-bsod-au-demarrage-de-windows</link>
      <guid>http://blog.happynoff.fr/post/virtualbox-bsod-au-demarrage-de-windows</guid>
      <description>&lt;p&gt;Si, comme moi, vous êtes passe à la nouvelle version de VirtualBox, celle de
Sun, vous avez peut-être de petits problèmes avec vos anciennes VM Windows.&lt;br&gt;
Voici comment résoudre le problème du BSoD juste après l&amp;#39;affichage du logo
Windows.&lt;/p&gt;

&lt;p&gt;La manipulation est relativement simple. Il vous suffit d&amp;#39;aller des les réglages
de votre VM. Puis, dans la partie &lt;em&gt;General &amp;gt; Advanced &amp;gt; IDE Controller Type&lt;/em&gt;, de
choisir &lt;em&gt;PIIX3&lt;/em&gt; a la place de &lt;em&gt;PIIX4&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src="/images/vbox_bsod.png" alt="réglages à effectuer dans VirtualBox"&gt;&lt;/p&gt;

&lt;p&gt;Et voilà le tour est joué !&lt;/p&gt;
</description>
      <pubDate>Fri, 04 Jul 2008 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Mettre en place un serveur SVN disponible via HTTP</title>
      <link>http://blog.happynoff.fr/post/mettre-en-place-un-serveur-svn-disponible-via-http</link>
      <guid>http://blog.happynoff.fr/post/mettre-en-place-un-serveur-svn-disponible-via-http</guid>
      <description>&lt;p&gt;Cet article explique comment installer SVN, creer un depot et le rendre
accessible par internet via HTTP grace au serveur Apache.&lt;/p&gt;
</description>
      <pubDate>Wed, 04 Jun 2008 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Utiliser plusieurs fois le meme VDI sous VirtualBox</title>
      <link>http://blog.happynoff.fr/post/Utiliser-plusieurs-fois-le-meme-VDI-sous-VirtualBox</link>
      <guid>http://blog.happynoff.fr/post/Utiliser-plusieurs-fois-le-meme-VDI-sous-VirtualBox</guid>
      <description>&lt;p&gt;Pendant un instant, j&amp;#39;ai crus qu&amp;#39;il n&amp;#39;était pas possible d&amp;#39;utiliser plusieurs
fois un même fichier &lt;em&gt;VDI&lt;/em&gt; avec VirtualBox.&lt;/p&gt;

&lt;p&gt;En effet lorsque je copiais simplement une machine virtuelle, VirtualBox me
disait que cette machine était déjà  enregistrée.&lt;/p&gt;

&lt;p&gt;Cette idée allant à l&amp;#39;encontre du principe même de la virtualisation, je me suis
penché sur le problème.&lt;/p&gt;

&lt;p&gt;Il se trouve que VirtualBox est livré avec un l&amp;#39;utilitaire &lt;em&gt;VBoxManage&lt;/em&gt; qui
permet différentes actions sur les fichiers VDI dont le &lt;code&gt;clonevdi&lt;/code&gt; qui justement
répond au besoin de copie des machines virtuelles.&lt;/p&gt;

&lt;p&gt;La commande suivante permet de créer un clone de MachineEnEntree :&lt;/p&gt;
&lt;pre class="twilight"&gt;VBoxManage clonevdi MachineEnEntree.vdi MachineEnSortie.vdi
&lt;/pre&gt;</description>
      <pubDate>Thu, 24 Apr 2008 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Un man kikoolol</title>
      <link>http://blog.happynoff.fr/post/un-man-kikoolol</link>
      <guid>http://blog.happynoff.fr/post/un-man-kikoolol</guid>
      <description>&lt;p&gt;Si vous êtes intéressé par un man en couleurs, voici un moyen de l&amp;#39;obtenir.&lt;/p&gt;

&lt;p&gt;Commencez par installer most. Most est un pager assez sympa dans le style de
more et less.&lt;/p&gt;
&lt;pre class="twilight"&gt;sudo aptitude install most
&lt;/pre&gt;
&lt;p&gt;Pour faire un simple test.&lt;/p&gt;
&lt;pre class="twilight"&gt;man -P most commande
&lt;/pre&gt;
&lt;p&gt;Si ça vous plaît et que vous comptez le garder voici la marche à suivre.&lt;/p&gt;
&lt;pre class="twilight"&gt;sudo update-alternatives --config pager
&lt;/pre&gt;
&lt;p&gt;Choisissez most&lt;/p&gt;

&lt;p&gt;Si most vous plaît mais que les couleurs vous insupportent vous pouvez les
désactiver en réglant la variable d&amp;#39;environnement &lt;code&gt;MOST_SWITCHES&lt;/code&gt;&lt;br&gt;
(dans votre &lt;code&gt;.bashrc / .zshrc&lt;/code&gt; par exemple)&lt;/p&gt;
&lt;pre class="twilight"&gt;&lt;span class="Storage"&gt;export&lt;/span&gt; MOST_SWITCHES=&lt;span class="String"&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;-C&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;/pre&gt;</description>
      <pubDate>Thu, 24 Apr 2008 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Ouvrir les liens de Thunderbird dans Firefox</title>
      <link>http://blog.happynoff.fr/post/Ouvrir-les-liens-de-Thunderbird-dans-Firefox</link>
      <guid>http://blog.happynoff.fr/post/Ouvrir-les-liens-de-Thunderbird-dans-Firefox</guid>
      <description>&lt;p&gt;Si, comme moi, le fait que Konqueror (par exemple) s&amp;#39;ouvre quand vous cliquez
sur un lien dans Thunderbird vous insupporte, voici comment remédier à ce
problème.&lt;/p&gt;

&lt;p&gt;A ma connaissance il y a deux méthodes.&lt;/p&gt;
</description>
      <pubDate>Thu, 24 Apr 2008 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>La Text User Interface de GDB</title>
      <link>http://blog.happynoff.fr/post/text-user-interface-de-gdb</link>
      <guid>http://blog.happynoff.fr/post/text-user-interface-de-gdb</guid>
      <description>&lt;p&gt;Petite chose que j&amp;#39;ai découverte il y à quelques jours. Si vous programmez en
C/C++, vous utilisez peut être &lt;em&gt;gdb&lt;/em&gt; pour debugger vos programmes.&lt;br&gt;
Une fonctionnalité agréable de &lt;em&gt;gdb&lt;/em&gt; est son interface en mode text &amp;#39;tui&amp;#39;.&lt;/p&gt;
</description>
      <pubDate>Thu, 24 Apr 2008 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Installer et configurer Apache2 sous Debian</title>
      <link>http://blog.happynoff.fr/post/installer-et-configurer-apache2-sous-debian</link>
      <guid>http://blog.happynoff.fr/post/installer-et-configurer-apache2-sous-debian</guid>
      <description>&lt;ul&gt;
&lt;li&gt;Installer apache2&lt;/li&gt;
&lt;li&gt;Configuration basique du serveur&lt;/li&gt;
&lt;li&gt;Gestion des VirtualHosts&lt;/li&gt;
&lt;/ul&gt;
</description>
      <pubDate>Mon, 31 Mar 2008 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Une signature dans le style de Tron</title>
      <link>http://blog.happynoff.fr/post/une-signature-dans-le-style-de-tron</link>
      <guid>http://blog.happynoff.fr/post/une-signature-dans-le-style-de-tron</guid>
      <description>&lt;p&gt;Petit tuto pour expliquer comment faire ceci :&lt;br&gt;
(repris d&amp;#39;un tuto que j&amp;#39;avais écrit sur Crystal XP)&lt;/p&gt;

&lt;p&gt;&lt;img src="/images/tuto_tron/tuto_tron_11.png" alt="Signature Tron"&gt;&lt;/p&gt;
</description>
      <pubDate>Mon, 31 Mar 2008 00:00:00 +0000</pubDate>
    </item>
  </channel>
</rss>
