<?xml version="1.0" encoding="iso-8859-1"?>
<rss version="2.0">
	
	<channel>
		<title>Aviblog</title>
		<link>http://aviblog.free.fr/index.php</link>
		<description>Blog de JN Avila</description>
		<language>fr</language>
		<managingEditor>aviblog@free.fr</managingEditor>
                <copyright>Copyright 2010</copyright>
		<generator>Pivot Pivot - 1.40.7: 'Dreadwind'</generator>
		<pubDate>Fri, 29 Oct 2010 13:27:53 +0200</pubDate>
		<ttl>60</ttl>
		
		<item>
			<title>Changement de moteur de blog</title>
			<link>http://aviblog.free.fr/</link>                        <description><![CDATA[ <p>J'ai changé de moteur de blog, ce fichier de feed n'est plus mis à jour</p> ]]></description>
			<guid isPermaLink="false">637@http://aviblog.free.fr/pivot/</guid>
			<category>linkdump</category>
			<pubDate>Fri, 28 Oct 2010 23:00:00 +0200</pubDate>
		</item>
		
		
		
		<item>
			<title>Python, la puissance du langage</title>
			<link>http://aviblog.free.fr/pivot/entry.php?id=649</link>
			<comments>http://aviblog.free.fr/pivot/entry.php?id=649#comm</comments>
                        <description><![CDATA[ <p>Pour <a target="_blank" href="http://github.com/jnavila/graffle2svg">graffle2svg</a> , j&#8217;ai besoin de parser du <span class="caps">RTF</span> (format pseudo ouvert). En gros, pour définir les couleurs de police, je dois transformer une déclaration du type </p>

<pre>defn= &#39;{\colortbl;\red255\green255\blue255;\red75\green75\blue75;}foo&#39;</pre>

	<p>en un tableau du type [&#8221;#000000&#8221;, &#8220;#ffffff&#8221;, &#8220;#4b4b4b&#8221;] (le premier point-virgule signifie déclaration vide, donc couleur par défaut).</p>

	<p>En python, avec les expressions rationnelles, c&#8217;est limpide :</p>

<pre>endidx = defn.find(&#34;}&#34;, startidx)
primitive_reg = re.compile(r&#34;(\D+)(\d+)&#34;)
for colordef in defn[startidx-1:endidx-1].split(&#34;;&#34;):
    color = {&#39;red&#39;:0, &#39;green&#39;:0, &#39;blue&#39;:0}
    for primitivedef in colordef.split(&#39;\\&#39;):
         primitive_match = primitive_reg.match(primitivedef)
         if primitive_match is not None:
            primitive, value = primitive_match.groups()
            color[primitive] = int(value)
    self.color.append(&#34;#%02x&#34;%color[&#39;red&#39;] + &#34;%02x&#34;%color[&#39;green&#39;] + &#34;%02x&#34;%color[&#39;blue&#39;])</pre>

	<p>Dix lignes, pas mal !</p> ]]></description>
			<guid isPermaLink="false">649@http://aviblog.free.fr/pivot/</guid>
			<category>Logiciels libres</category>
			<pubDate>Sat, 16 Oct 2010 19:25:00 +0200</pubDate>
		</item>
		
		
		
		<item>
			<title>MS. Office vs OpenOffice.org phase 3</title>
			<link>http://aviblog.free.fr/pivot/entry.php?id=648</link>
			<comments>http://aviblog.free.fr/pivot/entry.php?id=648#comm</comments>
                        <description><![CDATA[ <p>“First they ignore you, then they laugh at you, then <a target="_blank" href="http://blogs.computerworlduk.com/open-enterprise/2010/10/microsoft-gives-its-blessing-to-openofficeorg/index.htm" hreflang="en">they fight you</a>, then you win.”</p>

	<p>Gandhi</p> ]]></description>
			<guid isPermaLink="false">648@http://aviblog.free.fr/pivot/</guid>
			<category>linkdump</category>
			<pubDate>Fri, 15 Oct 2010 21:49:00 +0200</pubDate>
		</item>
		
		
		
		<item>
			<title>Le coup de barre de l'automne</title>
			<link>http://aviblog.free.fr/pivot/entry.php?id=647</link>
			<comments>http://aviblog.free.fr/pivot/entry.php?id=647#comm</comments>
                        <description><![CDATA[ <p>L&#8216;été est terminé et les journées recommencent à se raccourcir à grande vitesse. Les journées chaudes ont permis de s&#8217;en donner à cœur joie à l&#8217;extérieur, mais les organismes ont déjà oublié la vitalité des activités physiques.</p>

	<p>Puis viennent les premiers rafraîchissements (pas les boissons !), et on a oublié de se couvrir en conséquence. On a la crêve et quelques jours de grisaille accompagnée d&#8217;une chute momentanée des température ont fait le reste. Un bon gros rhume qui tourne dans la famille et au travail, avec son cortège de têtes dans l&#8216;étau et de nez qui coule&#8230; Vive l&#8217;automne !</p>

	<p>Voilà, c&#8217;est l&#8217;histoire habituelle dont la première phase s&#8217;est passé il y a une semaine. On attend patiemment la seconde vague&#8230;</p> ]]></description>
			<guid isPermaLink="false">647@http://aviblog.free.fr/pivot/</guid>
			<category>default</category>
			<pubDate>Fri, 15 Oct 2010 21:01:00 +0200</pubDate>
		</item>
		
		
		
		<item>
			<title>Le voyage comme une démangeaison</title>
			<link>http://aviblog.free.fr/pivot/entry.php?id=646</link>
			<comments>http://aviblog.free.fr/pivot/entry.php?id=646#comm</comments>
                        <description><![CDATA[ <p>Alors que la polémique sur le statut des gens du voyage bat son plein, plusieurs éléments contradictoires me sont apparus ces derniers temps.</p>

	<p>On nous décrit les Roms comme des personnes inadaptées aux lois régissant nos pays européens. Les voyageurs ne sont pas faciles à comptabiliser, maîtriser et imposer. Mais c&#8217;est oublier très vite que la sédentarisation de l&#8217;humanité ne date de 8000 ans et qu&#8217;auparavant l&#8217;homme était en déplacement permanent pour assurer sa subsistence.</p>

	<p>Un autre indice m&#8217;est arrivé pas plus tard que cet après-midi. En revenant de ballade, mes filles et moi sommes passés derrière la gare. Ma seconde s&#8217;est alors écriée : «On est derrière la gare ! » (remarquez le sens de l&#8217;observation). Ce sur quoi, ma grande à ajouté : « Maman va entendre le train passer ». Il y avait clairement une pointe d&#8217;excitation dans leur voix et je dois dire qu&#8216;à voir un train partir, j&#8217;ai eu le picotement typique de  l&#8217;envie de bouger. Allez, vous avez sûrement aussi ressenti ce sentiment dans une gare ou une aérogare. Je pense que l&#8217;homme est viscéralement un animal migrateur.</p> ]]></description>
			<guid isPermaLink="false">646@http://aviblog.free.fr/pivot/</guid>
			<category>default</category>
			<pubDate>Sun, 10 Oct 2010 22:11:00 +0200</pubDate>
		</item>
		
		
		
		<item>
			<title>-i : l'option de Git qui sauve les bordéliques</title>
			<link>http://aviblog.free.fr/pivot/entry.php?id=645</link>
			<comments>http://aviblog.free.fr/pivot/entry.php?id=645#comm</comments>
                        <description><![CDATA[ <p>Imaginez un gars qui code (n&#8217;allez pas chercher loin), mais qui n&#8217;arrive pas à développer de manière organisée. Bien sur, ce type utilise déjà une gestion de version pour limiter les dégâts, genre git. </p>

	<p>Mais, n&#8217;empêche, quand il commence à modifier son projet, il papillonne à droite et à gauche, si bien que sa copie de travail ressemble assez rapidement à un champ de bataille. On lui a pourtant <a target="_blank" href="http://github.com/jnavila/progit/blob/master/fr/03-git-branching/01-chapter3.markdown">dit</a> qu&#8217;il fallait mieux créer une branche de développement par sujet de modification pour travailler plus efficacement, mais le naturel étant ce qu&#8217;il est, sa copie de travail rassemble souvent des modifications liées à des sujets différents, voire pire, des modifications dans le même fichier&#8230;</p>

	<p>Et c&#8217;est là que Git lui sauve encore la mise. Avec l&#8217;option <em>-i</em> de la commande add, il peut revoir chaque section modifiée d&#8217;un fichier et décider de l&#8217;inclure ou non dans son prochain commit. Et voilà comment on redonne forme à un tas des modifications !</p>

	<p>Maintenant, poussons le bouchon un peu plus loin : même avec cette option magique, notre développeur a effectué une suite de validations sans queue ni tête. Il n&#8217;a rien publié encore, le résultat de ses élucubrations n&#8216;étant vraiment pas prêt pour être vu par ses pairs. <em>git rebase -i</em> à la rescousse ! Avec cette commande, il peut réécrire son historique de validation, modifiant tel commit, fusionnant deux commits qui se rapportent au même sujet, divisant un commit mal formé.</p>

	<p>Avec ses options magiques, il devient possible de rendre limpide et présentable ce qui au départ se présentait comme un travail expérimental&#8230;</p> ]]></description>
			<guid isPermaLink="false">645@http://aviblog.free.fr/pivot/</guid>
			<category>Logiciels libres</category>
			<pubDate>Mon, 04 Oct 2010 22:34:00 +0200</pubDate>
		</item>
		
		
		
		<item>
			<title>Et on ne m'a rien dit</title>
			<link>http://aviblog.free.fr/pivot/entry.php?id=644</link>
			<comments>http://aviblog.free.fr/pivot/entry.php?id=644#comm</comments>
                        <description><![CDATA[ <p>Certains savent que lors du lancement de mon blog, j&#8217;ai opté pour un moteur atypique : <a target="_blank" href="http://www.pivotlog.net/">pivotlog</a></p>

	<p>J&#8216;étais étonné de ne pas voir arriver de mises à jour depuis un certain temps, mais ce n&#8217;est que ce soir que j&#8217;ai appris que j&#8216;étais sur une branche morte de développement, le nouvel axe se nommant à présent <a target="_blank" href="http://www.pivotx.net">PivotX</a> . Il y a les instructions pour un migration, ce qui va bientôt s&#8217;avérer nécessaire&#8230; J&#8217;en profiterai pour me repayer une petite mise en page maison. A suivre.</p> ]]></description>
			<guid isPermaLink="false">644@http://aviblog.free.fr/pivot/</guid>
			<category>Logiciels libres</category>
			<pubDate>Sun, 19 Sep 2010 20:39:00 +0200</pubDate>
		</item>
		
		
		
		<item>
			<title>Impressionnant</title>
			<link>http://aviblog.free.fr/pivot/entry.php?id=643</link>
			<comments>http://aviblog.free.fr/pivot/entry.php?id=643#comm</comments>
                        <description><![CDATA[ <p>Les japonais sont encore à la pointe de la technologie robotique <a target="_blank" href="http://singularityhub.com/2010/09/13/hondas-exoskeletons-help-you-walk-like-asimo-video/">à destination des personnes agées</a></p> ]]></description>
			<guid isPermaLink="false">643@http://aviblog.free.fr/pivot/</guid>
			<category>Japon, linkdump</category>
			<pubDate>Fri, 17 Sep 2010 20:00:00 +0200</pubDate>
		</item>
		
		
		
		<item>
			<title>Dix ans d'ignorance</title>
			<link>http://aviblog.free.fr/pivot/entry.php?id=642</link>
			<comments>http://aviblog.free.fr/pivot/entry.php?id=642#comm</comments>
                        <description><![CDATA[ <p>En regardant <a target="_blank" href="http://free-electrons.com/pub/video/2010/elc/elc2010-vlasenko-dead-code.ogv">cette présentation</a> , j&#8217;ai fait plus qu&#8217;apprendre une chose, j&#8217;ai surtout corrigé une misconception flagrante. Dans mon esprit, quand des fonctions non appelées dans un programmes sont compilées, elles disparaissent du programme final. C&#8217;est le comportement par défaut en Pascal, et mes années Delphi m&#8217;y ont habitué. Mais ce n&#8217;est pas le cas partout.</p>

	<p>Mais comme l&#8217;explique l&#8217;intervenant, depuis l&#8217;origine d&#8217;Unix, le linker à toujours géré les sections de code comme un container unique de symboles. Par  défaut, il intègre tous les fichiers objets qui lui sont passés&#8230; Grâce à l&#8217;option du linker <cite>-gc-sections</cite>, on peut déjà éliminer les sections dont aucune fonction n&#8217;est appelée mais si un symbole du container est appelé, alors tout le container est inclus dans le code final. </p>

	<p>Pour mimer le fonctionnement de Pascal, il faut en plus passer à gcc les options <cite>-ffunction-sections -fdata-sections</cite> pour le forcer à mettre chaque fonction et chaque variable globale dans sa propre section et ainsi permettre au linker de laisser choir les fonctions non appelées. Cependant, et la conférence ne l&#8217;aborde pas, cette option a des effets néfastes sur les capacités de debug et de profilage. </p>

	<p>Bref, je présente mes excuses aux personnes nombreuses à qui j&#8217;ai pu soutenir que gcc avait une intelligence intégrée qu&#8217;il ne présente effectivement pas.</p> ]]></description>
			<guid isPermaLink="false">642@http://aviblog.free.fr/pivot/</guid>
			<category>Logiciels libres</category>
			<pubDate>Tue, 14 Sep 2010 22:00:00 +0200</pubDate>
		</item>
		
		
		
		<item>
			<title>Pousser une branche locale sur le distant avec git</title>
			<link>http://aviblog.free.fr/pivot/entry.php?id=641</link>
			<comments>http://aviblog.free.fr/pivot/entry.php?id=641#comm</comments>
                        <description><![CDATA[ <p>Vous avez cloné un dépôt Git et avez commencé une nouvelle fonctionnalité dans une branche locale (histoire de ne pas polluer la branche principale). Avant de fusionner, vous souhaitez publier le résultat de vos élucubrations pour une revue par vos pairs. Ce n&#8217;est pas si simple, et <a target="_blank" href="http://djwonk.com/blog/2009/04/18/tracking-remote-git-branches/" hreflang="en">certains</a> se sont penchés sur la question.</p>

	<p>Le résultat de cette recherche est une manip un peu barbare. Supposons que la branche en question s&#8217;appelle `zzz`</p>

	<blockquote>
		<p>$ git checkout -b zzz
	<ol>
		<li>Let the hacking commence&#8230;</li>
	</ol><br />
$ git push origin zzz<br />
$ git checkout master # voir note<sup class="footnote"><a target="_blank" href="#fn17354726874cbaddb9c2365">1</a></sup><br />
$ git branch -f zzz origin/zzz<br />
$ git checkout zzz
	<ol>
		<li>Let the hacking continue&#8230;</li>
	</ol></p>
	</blockquote>

	<p>La ligne bizarre est <cite>git branch -f zzz origin/zzz</cite> qui écrase localement la branche avec la référence de la branche distante. </p>

	<p id="fn17354726874cbaddb9c2365" class="footnote"><sup>1</sup> Comme l&#8217;explique l&#8217;auteur de l&#8217;article, on ne peut pas scier la branche sur laquelle on est assis, ce qui explique aussi le tour de passe-passe des checkout de master puis retour sur zzz.</p> ]]></description>
			<guid isPermaLink="false">641@http://aviblog.free.fr/pivot/</guid>
			<category>Logiciels libres</category>
			<pubDate>Wed, 08 Sep 2010 22:37:00 +0200</pubDate>
		</item>
		
		
		
		<item>
			<title>Diagramme camembert</title>
			<link>http://aviblog.free.fr/pivot/entry.php?id=638</link>
			<comments>http://aviblog.free.fr/pivot/entry.php?id=638#comm</comments>
                        <description><![CDATA[ <p>Les américains disent diagramme tarte : <a target="_blank" href="http://laughingsquid.com/accurate-pie-chart/" hreflang="en">explication</a></p> ]]></description>
			<guid isPermaLink="false">638@http://aviblog.free.fr/pivot/</guid>
			<category>linkdump</category>
			<pubDate>Thu, 26 Aug 2010 11:48:00 +0200</pubDate>
		</item>
		
		
		
		<item>
			<title>Rendre des équations à la Latex dans son navigateur</title>
			<link>http://aviblog.free.fr/pivot/entry.php?id=636</link>
			<comments>http://aviblog.free.fr/pivot/entry.php?id=636#comm</comments>
                        <description><![CDATA[ <p><a target="_blank" href="http://www.mathjax.org/">Mathjax</a> est là !</p> ]]></description>
			<guid isPermaLink="false">636@http://aviblog.free.fr/pivot/</guid>
			<category>linkdump</category>
			<pubDate>Mon, 16 Aug 2010 23:00:00 +0200</pubDate>
		</item>
		
		
		
		<item>
			<title>Gérer la réputation sur un site internet</title>
			<link>http://aviblog.free.fr/pivot/entry.php?id=630</link>
			<comments>http://aviblog.free.fr/pivot/entry.php?id=630#comm</comments>
                        <description><![CDATA[ <p>Pas une mince affaire, comme l&#8217;explique <a target="_blank" href="http://www.youtube.com/watch?v=Yn7e0J9m6rE">Randy Farmer</a></p> ]]></description>
			<guid isPermaLink="false">630@http://aviblog.free.fr/pivot/</guid>
			<category>linkdump</category>
			<pubDate>Sat, 24 Jul 2010 19:10:00 +0200</pubDate>
		</item>
		
		
		
		<item>
			<title>ça je m'en doutais</title>
			<link>http://aviblog.free.fr/pivot/entry.php?id=623</link>
			<comments>http://aviblog.free.fr/pivot/entry.php?id=623#comm</comments>
                        <description><![CDATA[ <p>Il suffit de <a target="_blank" href="http://www.lemonde.fr/planete/article/2010/05/07/il-y-a-du-neandertal-en-nous_1347879_3244.html">regarder</a> un peu autour de soi</p> ]]></description>
			<guid isPermaLink="false">623@http://aviblog.free.fr/pivot/</guid>
			<category>linkdump</category>
			<pubDate>Sat, 08 May 2010 16:07:00 +0200</pubDate>
		</item>
		
		
		
		<item>
			<title>Howto incontournable</title>
			<link>http://aviblog.free.fr/pivot/entry.php?id=619</link>
			<comments>http://aviblog.free.fr/pivot/entry.php?id=619#comm</comments>
                        <description><![CDATA[ <p><a target="_blank" href="http://www.pafoo.net/uninstallglibc/uninstglibc.html">celui-ci</a> m&#8217;a souvent sauvé la mise&#8230;</p> ]]></description>
			<guid isPermaLink="false">619@http://aviblog.free.fr/pivot/</guid>
			<category>linkdump</category>
			<pubDate>Sat, 27 Mar 2010 18:02:00 +0200</pubDate>
		</item>
		
		
		
		<item>
			<title>Ça va être du bon</title>
			<link>http://aviblog.free.fr/pivot/entry.php?id=618</link>
			<comments>http://aviblog.free.fr/pivot/entry.php?id=618#comm</comments>
                        <description><![CDATA[ <p>Je n&#8217;ai pas vu le premier opus d&#8217;Avatar, mais le <a target="_blank" href="http://www.youtube.com/watch?v=6dIOw2sffHI&#38;feature=player_embedded">second</a># est prometteur !</p> ]]></description>
			<guid isPermaLink="false">618@http://aviblog.free.fr/pivot/</guid>
			<category>linkdump</category>
			<pubDate>Wed, 24 Mar 2010 14:26:00 +0200</pubDate>
		</item>
		
		
		
	</channel>
</rss>
