<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://respawner.fr/blog/index.php?feed/rss2/xslt" ?><rss version="2.0"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <title>Blog de Guillaume</title>
  <link>http://respawner.fr/blog/index.php?</link>
  <atom:link href="http://respawner.fr/blog/index.php?feed/rss2" rel="self" type="application/rss+xml"/>
  <description>Tout n'est qu'une question de point de vue.</description>
  <language>fr</language>
  <pubDate>Sat, 12 May 2012 21:58:45 +0200</pubDate>
  <copyright></copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <item>
    <title>FOSDEM 2012</title>
    <link>http://respawner.fr/blog/index.php?post/2012/02/03/FOSDEM-2012</link>
    <guid isPermaLink="false">urn:md5:8c105ad759d3efc45c64244beeb2018b</guid>
    <pubDate>Fri, 03 Feb 2012 16:05:00 +0100</pubDate>
    <dc:creator>Guillaume Mazoyer</dc:creator>
        <category>MyLife</category>
        <category>FOSDEM</category><category>Libre</category><category>Linux</category><category>Planet Debian</category>    
    <description>    &lt;p&gt;&lt;img title=&quot;divers.png, oct. 2008&quot; style=&quot;float: left; margin: 0 1em 1em 0;&quot; alt=&quot;divers.png&quot; src=&quot;http://respawner.fr/blog/public/Icones/divers.png&quot; /&gt;I arrived in Belgium yesterday.&lt;br /&gt;&lt;br /&gt;I'm glad to see people that were at &lt;a hreflang=&quot;en&quot; href=&quot;http://wiki.debconf.org/wiki/DebConf11/&quot;&gt;DebConf&lt;/a&gt; in Bosnia and Herzgovina. I'll try to assistat many conferences about Java, Debian, GNOME and more if I can. I will also participate to the &lt;a hreflang=&quot;en&quot; href=&quot;http://wiki.debian.org/Java/DevJam/2012/Fosdem/LibreDinner&quot;&gt;LibreDinner&lt;/a&gt; tomorrow.&lt;br /&gt;&lt;br /&gt;Well, see you at FOSDEM 2012!&lt;br /&gt;&lt;br /&gt;&lt;a title=&quot;fosdem2012-going-to.png&quot; href=&quot;http://respawner.fr/blog/public/Divers/fosdem2012-going-to.png&quot;&gt;&lt;img title=&quot;fosdem2012-going-to.png, fév. 2012&quot; style=&quot;margin: 0 auto; display: block;&quot; alt=&quot;fosdem2012-going-to.png&quot; src=&quot;http://respawner.fr/blog/public/Divers/fosdem2012-going-to.png&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Une extension à Nautilus pour GNOME Split</title>
    <link>http://respawner.fr/blog/index.php?post/2012/01/22/Une-extension-%C3%A0-Nautilus-pour-GNOME-Split</link>
    <guid isPermaLink="false">urn:md5:deab8b840a0d506f125b06c18430975d</guid>
    <pubDate>Sun, 22 Jan 2012 23:38:00 +0100</pubDate>
    <dc:creator>Guillaume Mazoyer</dc:creator>
        <category>Programmation</category>
        <category>C</category><category>GNOME</category><category>GNOME Split</category><category>GTK</category><category>Libre</category><category>Linux</category><category>Nautilus</category>    
    <description>    &lt;p&gt;&lt;img title=&quot;astuce.png, oct. 2008&quot; style=&quot;float: left; margin: 0 1em 1em 0;&quot; alt=&quot;astuce.png&quot; src=&quot;http://respawner.fr/blog/public/Icones/astuce.png&quot; /&gt;Bientôt 2 ans après avoir exprimé ma volonté de créer une extension pour &lt;a hreflang=&quot;en&quot; href=&quot;https://live.gnome.org/Nautilus&quot;&gt;Nautilus&lt;/a&gt; afin de pouvoir lancer un découpage ou un assemblage avec &lt;a hreflang=&quot;en&quot; href=&quot;https://launchpad.net/gnome-split&quot;&gt;GNOME Split&lt;/a&gt;, cette &lt;a hreflang=&quot;en&quot; href=&quot;http://nautilus.gnome-split.org/&quot;&gt;extension&lt;/a&gt; est enfin arrivée.&lt;br /&gt;&lt;br /&gt;Le but de l'extension est de proposer deux nouvelles entrées dans le menu contextuel de Nautilus. Lors d'un clic droit sur un fichier quelconque l'item &lt;em&gt;&quot;Découper le fichier...&quot;&lt;/em&gt; apparaît, l'utiliser permet de lancer GNOME Split avec les arguments qui vont biens pour découper le fichier sélectionné. Lors d'un clic droit sur un fichier étant considéré comme la première partie d'un fichier qui a été découpé auparavant, l'entrée &lt;em&gt;&quot;Assembler les fichiers...&quot;&lt;/em&gt; apparaît permettant de lancer GNOME Split pour assembler les parties.&lt;br /&gt;&lt;br /&gt;&lt;a title=&quot;nautilus-extension-decoupage.png&quot; href=&quot;http://respawner.fr/blog/public/GNOMESplit/nautilus-extension-decoupage.png&quot;&gt;&lt;img title=&quot;nautilus-extension-decoupage.png, janv. 2012&quot; style=&quot;margin: 0 auto; display: block;&quot; alt=&quot;nautilus-extension-decoupage.png&quot; src=&quot;http://respawner.fr/blog/public/GNOMESplit/nautilus-extension-decoupage.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Concrètement, cette extension de Nautilus est codée en C, publiée sous &lt;a hreflang=&quot;en&quot; href=&quot;http://www.gnu.org/copyleft/gpl.html&quot;&gt;GPL&lt;/a&gt; version 3 et déjà présente dans le &lt;a hreflang=&quot;en&quot; href=&quot;https://launchpad.net/%7Egnome-split-team/+archive/ppa&quot;&gt;PPA&lt;/a&gt; pour la version 11.10 d'Ubuntu.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ~$ sudo add-apt-repository ppa:gnome-split-team/ppa&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ~$ sudo aptitude update&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ~$ sudo aptitude install nautilus-gnome-split&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;N'étant pas expert en développement d'extensions pour Nautilus toute aide est la bienvenue.&lt;br /&gt;En espérant que cette extension soit utile.&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Chaînes de caractères dynamiques</title>
    <link>http://respawner.fr/blog/index.php?post/2011/11/18/Cha%C3%AEnes-de-caract%C3%A8res-dynamiques</link>
    <guid isPermaLink="false">urn:md5:af645241a98c3594c2a212cacb585179</guid>
    <pubDate>Fri, 18 Nov 2011 00:24:00 +0100</pubDate>
    <dc:creator>Guillaume Mazoyer</dc:creator>
        <category>Programmation</category>
        <category>Android</category><category>Code</category><category>Google</category><category>Java</category><category>Libre</category><category>Linux</category><category>Mobile</category><category>Programmation</category><category>XML</category>    
    <description>    &lt;p&gt;&lt;img src=&quot;http://respawner.fr/blog/public/Icones/mobile.png&quot; alt=&quot;mobile.png&quot; style=&quot;float:left; margin: 0 1em 1em 0;&quot; title=&quot;mobile.png, juin 2011&quot; /&gt;
Tout bon programmeur &lt;a href=&quot;http://android.com/&quot; hreflang=&quot;en&quot;&gt;Android&lt;/a&gt; a pour habitude de lister toutes les chaînes de caractères (ou presque) dans le fichier &lt;em&gt;res/values/strings.xml&lt;/em&gt;. A priori, seules les chaînes de caractères statiques ne peuvent être mises dans ce fichier. Mais, il existe des méthodes pour rendre ces chaînes un petit peu plus dynamique qu'elles n'y paraissent. Voyons tout ça.&lt;br /&gt;&lt;/p&gt;

&lt;h3&gt;1. Les formes plurielles&lt;/h3&gt;

&lt;p&gt;Les formes plurielles varient plus ou moins d'un langage à un autre. Par exemple, en français, on peut vouloir écrire :&lt;br /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Je ne possède pas de stylo.&lt;/li&gt;
&lt;li&gt;Je possède un stylo.&lt;/li&gt;
&lt;li&gt;Je possède des stylos.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;L'API Android met à disposition plusieurs distinctions de formes plurielles grâce à 6 mot clés.&lt;br /&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;zero&lt;/strong&gt;, pour la quantité 0&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;one&lt;/strong&gt;, pour la quantité 1&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;two&lt;/strong&gt;, pour la quantité 2&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;few&lt;/strong&gt;, pour représenter une petite quantité&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;many&lt;/strong&gt;, pour représenter une moyenne quantité&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;other&lt;/strong&gt;, pour représenter une quantité supérieure à une autre suivant la langue.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;En français, on aura tendance à n'utiliser que &lt;strong&gt;zero&lt;/strong&gt;, &lt;strong&gt;one&lt;/strong&gt; et &lt;strong&gt;other&lt;/strong&gt;.&lt;br /&gt;
Ainsi pour former les chaînes précédemment citées on mettra dans notre fichier &lt;em&gt;res/values/strings.xml&lt;/em&gt; le code suivant&amp;nbsp;:&lt;/p&gt;
&lt;pre class=&quot;xml xml&quot; style=&quot;font-family:inherit&quot;&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;lt;?xml&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;version&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;encoding&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;utf-8&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;lt;resources&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span style=&quot;color: #009900;&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;lt;plurals&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;name&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;nombreDeStylos&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span style=&quot;color: #009900;&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;lt;item&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;quantity&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;zero&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;Je ne possède pas de stylo.&lt;span style=&quot;color: #009900;&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;lt;/item&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span style=&quot;color: #009900;&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;lt;item&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;quantity&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;one&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;Je possède un stylo.&lt;span style=&quot;color: #009900;&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;lt;/item&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span style=&quot;color: #009900;&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;lt;item&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;quantity&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;other&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;Je possède des stylos.&lt;span style=&quot;color: #009900;&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;lt;/item&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span style=&quot;color: #009900;&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;lt;/plurals&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;lt;/resources&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;Dans le code Java, on récupérera la bonne forme de cette manière.&lt;/p&gt;
&lt;pre class=&quot;java java&quot; style=&quot;font-family:inherit&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;final&lt;/span&gt; List&lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt;Stylo&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt; stylos &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; getStylos&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;final&lt;/span&gt; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;int&lt;/span&gt; count &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; stylos.&lt;span style=&quot;color: #006633;&quot;&gt;size&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;final&lt;/span&gt; &lt;span style=&quot;color: #003399;&quot;&gt;String&lt;/span&gt; text &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;this&lt;/span&gt;.&lt;span style=&quot;color: #006633;&quot;&gt;getResources&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #006633;&quot;&gt;getQuantityString&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;R.&lt;span style=&quot;color: #006633;&quot;&gt;plurals&lt;/span&gt;.&lt;span style=&quot;color: #006633;&quot;&gt;nombreDeStylos&lt;/span&gt;, count, count&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;h3&gt;2. Formatage des chaînes&lt;/h3&gt;

&lt;p&gt;Il peut être également utile d'afficher des nombres dans les chaînes de caractères comme par exemple&amp;nbsp;: &lt;em&gt;&quot;Bonjour X, vous avez Y nouveaux messages !&quot;&lt;/em&gt;. Cela se fait de manière relativement simple grâce à la méthode &lt;strong&gt;String.format(String, Object...)&lt;/strong&gt; de Java. Cette méthode est également invoquée automatiquement lors de l'utilisation de &lt;strong&gt;Context.getString(int, Object...)&lt;/strong&gt;. La chaîne de caractères à formater doit contenir quelques marques de formatage comme &lt;strong&gt;%1$s&lt;/strong&gt; pour dire qu'il faut remplacer cette marque par le premier argument et que celui-ci est une chaîne de caractère ou encore &lt;strong&gt;%2$d&lt;/strong&gt; pour dire qu'il faut mettre ici le second argument qui est un entier.&lt;br /&gt;
Ainsi dans le fichier &lt;em&gt;res/values/strings.xml&lt;/em&gt; on écrira&amp;nbsp;:&lt;/p&gt;
&lt;pre class=&quot;xml xml&quot; style=&quot;font-family:inherit&quot;&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;lt;string&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;name&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;welcome_message&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;Bonjour %1$s, vous avez %2$d nouveaux messages !&lt;span style=&quot;color: #009900;&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;lt;/string&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;Et on utilisera le code Java suivant&amp;nbsp;:&lt;/p&gt;
&lt;pre class=&quot;java java&quot; style=&quot;font-family:inherit&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;final&lt;/span&gt; &lt;span style=&quot;color: #003399;&quot;&gt;String&lt;/span&gt; username &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;quot;toto&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;final&lt;/span&gt; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;int&lt;/span&gt; mailCount &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #cc66cc;&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;final&lt;/span&gt; &lt;span style=&quot;color: #003399;&quot;&gt;String&lt;/span&gt; text &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #003399;&quot;&gt;String&lt;/span&gt;.&lt;span style=&quot;color: #006633;&quot;&gt;format&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;this&lt;/span&gt;.&lt;span style=&quot;color: #006633;&quot;&gt;getResources&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #006633;&quot;&gt;getString&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;R.&lt;span style=&quot;color: #006633;&quot;&gt;string&lt;/span&gt;.&lt;span style=&quot;color: #006633;&quot;&gt;welcome_message&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;, username, mailCount&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;On pourra aussi utiliser celui-ci&amp;nbsp;:&lt;/p&gt;
&lt;pre class=&quot;java java&quot; style=&quot;font-family:inherit&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;final&lt;/span&gt; &lt;span style=&quot;color: #003399;&quot;&gt;String&lt;/span&gt; username &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;quot;toto&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;final&lt;/span&gt; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;int&lt;/span&gt; mailCount &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #cc66cc;&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;final&lt;/span&gt; &lt;span style=&quot;color: #003399;&quot;&gt;String&lt;/span&gt; text &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;this&lt;/span&gt;.&lt;span style=&quot;color: #006633;&quot;&gt;getResources&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #006633;&quot;&gt;getString&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;R.&lt;span style=&quot;color: #006633;&quot;&gt;string&lt;/span&gt;.&lt;span style=&quot;color: #006633;&quot;&gt;welcome_message&lt;/span&gt;, username, mailCount&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;h3&gt;3. Conclusion&lt;/h3&gt;

&lt;p&gt;Comme on peut le voir Android met à disposition plusieurs méthodes pour manipuler les chaînes de caractères et les rendre aussi flexibles que possible tout en simplifiant un maximum le travail des traducteurs par exemple. Il ne reste plus qu'à exploiter ces possibilités pour créer un code simple et efficace.&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Apache 2 : mod_macro</title>
    <link>http://respawner.fr/blog/index.php?post/2011/06/25/Apache-2-%3A-mod_macro</link>
    <guid isPermaLink="false">urn:md5:0051fa38e2d8b3ba8949d6bc97e1cc17</guid>
    <pubDate>Sat, 25 Jun 2011 11:47:00 +0200</pubDate>
    <dc:creator>Guillaume Mazoyer</dc:creator>
        <category>Technologie</category>
        <category>Admin</category><category>Apache</category><category>Debian</category><category>Libre</category><category>Linux</category><category>Macro</category><category>Module</category><category>Web</category>    
    <description>    &lt;p&gt;&lt;img title=&quot;internet.png, oct. 2008&quot; style=&quot;float: left; margin: 0 1em 1em 0;&quot; alt=&quot;internet.png&quot; src=&quot;http://respawner.fr/blog/public/Icones/internet.png&quot; /&gt;Il y a des logiciels, des outils, des modules ou on sait directement que l’on ne pourra plus s’en passer. Soit parce que c’est génial et révolutionnaire soit par ce que c’est très pratique et qu’il fallait y penser. C’est exactement ce que je me suis dis en découvrant le &lt;a hreflang=&quot;en&quot; href=&quot;http://www.cri.ensmp.fr/%7Ecoelho/mod_macro/&quot;&gt;mod_macro&lt;/a&gt; pour Apache 2. Il y a quelques semaines je ne soupçonnais par l’existence d’un tel module. On m’en a parlé, j’ai laissé mariner et puis j’ai finalement mis la main à la pâte. Et là j’en ai eu la larme à l’œil. Combien de fois je me suis arraché les cheveux sur ma configuration de Apache, combien de copier/coller de virtual hosts j’ai fait… Avec &lt;strong&gt;mod_macro&lt;/strong&gt; tout ça c’est terminé.&lt;br /&gt;&lt;br /&gt;Pour résumer, ce module permet de factoriser sa configuration de Apache. On définit des macros puis on les appelle un peu comme les fonctions avec un langage de scripts. On peut faire des macros pour plus ou moins tout ainsi en organisant bien son système et en sachant factoriser sa configuration correctement on peut grandement se simplifier la vie.&lt;br /&gt;&lt;br /&gt;Pour installer le &lt;strong&gt;mod_macro&lt;/strong&gt; sur &lt;a hreflang=&quot;fr&quot; href=&quot;http://www.debian.org/&quot;&gt;Debian&lt;/a&gt; et dérivées, rien de plus simple :&lt;br /&gt;&lt;code&gt;# aptitude install libapache2-mod-macro&lt;br /&gt;# a2enmod macro&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Ensuite, il s’agit de ne pas faire n’importe quoi. Afin de gérer mes macros, j’ai créé un fichier &lt;em&gt;macro.conf&lt;/em&gt; dans le répertoire &lt;em&gt;/etc/apache2/conf.d/&lt;/em&gt; qui est chargé au démarrage de Apache. Comme je l’ai dit précédemment, on peut se servir des macros pour faire énormément de choses donc je n’aborderai pas tout ici.&lt;br /&gt;&lt;br /&gt;Admettons que nous disposons des 2 hôtes virtuels suivants (exemple bidon mais c’est pour montrer le principe) :&lt;br /&gt;&lt;code&gt;&amp;lt;VirtualHost [ipv6]:80 ipv4:80&amp;gt;&lt;br /&gt;&amp;nbsp; DocumentRoot /var/www/toto&lt;br /&gt;&amp;nbsp; ServerName&amp;nbsp;&amp;nbsp; toto.domaine.tld&lt;br /&gt;&amp;nbsp; ServerAlias&amp;nbsp; toto.domaine.tld&lt;br /&gt;&amp;nbsp; ServerAdmin&amp;nbsp; admin@toto.com&lt;br /&gt;&lt;br /&gt;&amp;nbsp; ErrorLog&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /var/log/apache2/toto_error.log&lt;br /&gt;&amp;nbsp; TransferLog&amp;nbsp; /var/log/apache2/toto_access.log&lt;br /&gt;&amp;lt;/VirtualHost&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;lt;VirtualHost [ipv6]:80 ipv4:80&amp;gt;&lt;br /&gt;&amp;nbsp; DocumentRoot /var/www/titi&lt;br /&gt;&amp;nbsp; ServerName&amp;nbsp;&amp;nbsp; titi.domaine.tld&lt;br /&gt;&amp;nbsp; ServerAlias&amp;nbsp; titi.domaine.tld&lt;br /&gt;&amp;nbsp; ServerAdmin&amp;nbsp; admin@titi.com&lt;br /&gt;&lt;br /&gt;&amp;nbsp; ErrorLog&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /var/log/apache2/titi_error.log&lt;br /&gt;&amp;nbsp; TransferLog&amp;nbsp; /var/log/apache2/titi_access.log&lt;br /&gt;&amp;lt;/VirtualHost&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Il y a quand même pas mal de points communs entre ces 2 hôtes virtuels. Imaginez s’il y en avait 20 comme ça, la configuration devient vite lourde à gérer. Avec une seule et unique macro on va bien se simplifier la vie. Dans le fichier &lt;em&gt;/etc/apache2/conf.d/macro.conf&lt;/em&gt; on écrit donc la macro suivante :&lt;br /&gt;&lt;code&gt;&amp;lt;Macro Domain $sub $domain $root&amp;gt;&lt;br /&gt;&amp;nbsp; DocumentRoot /var/www/$root&lt;br /&gt;&amp;nbsp; ServerName&amp;nbsp;&amp;nbsp; $sub.$domain&lt;br /&gt;&amp;nbsp; ServerAlias&amp;nbsp; $sub.$domain&lt;br /&gt;&amp;nbsp; ServerAdmin&amp;nbsp; admin@$domain&lt;br /&gt;&lt;br /&gt;&amp;nbsp; ErrorLog&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /var/log/apache2/$domain_error.log&lt;br /&gt;&amp;nbsp; TransferLog&amp;nbsp; /var/log/apache2/$domain_access.log&lt;br /&gt;&amp;lt;/Macro&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Vous voyez le principe. On regroupe les éléments communs aux hôtes virtuels pour les mettre dans une macro qui s’appelle &lt;strong&gt;Domain&lt;/strong&gt; et qui prend 3 paramètres &lt;strong&gt;sub&lt;/strong&gt;, le sous-domaine à utiliser, &lt;strong&gt;domain&lt;/strong&gt;, le domaine à utiliser, et &lt;strong&gt;root&lt;/strong&gt; le répertoire où se trouve les fichiers à rendre disponible sur le web.&lt;br /&gt;Le fichier contenant les virtual hosts peut alors se simplifier en :&lt;br /&gt;&lt;code&gt;&amp;lt;VirtualHost [ipv6]:80 ipv4:80&amp;gt;&lt;br /&gt;&amp;nbsp; Use Domain toto domaine.tld rep_toto&lt;br /&gt;&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;VirtualHost [ipv6]:80 ipv4:80&amp;gt;&lt;br /&gt;&amp;nbsp; Use Domain titi domaine.tld rep_titi&lt;br /&gt;&amp;lt;/VirtualHost&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;L’utilisation de la macro se fait avec la syntaxe très script-like &lt;code&gt;Use NomMacro [paramètres]&lt;/code&gt;. Il faut impérativement donner tous les paramètres à la macro sans quoi la vérification de la configuration échouera.&lt;br /&gt;&lt;br /&gt;L’exemple d’utilisation donné ici est simple mais on peut faire des choses plus complexes en utilisant des macros dans d’autres macros, etc… Il faut juste trouver la configuration qui convient le mieux pour son serveur. En tout cas je ne me séparerai plus du &lt;strong&gt;mod_macro&lt;/strong&gt; que je trouve vraiment intéressant pour gérer les hôtes virtuels (chose que je trouve très ennuyante).&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Google Summer of Code 2011</title>
    <link>http://respawner.fr/blog/index.php?post/2011/04/28/Google-Summer-of-Code-2011</link>
    <guid isPermaLink="false">urn:md5:35afa69256d1c9d6361cc1df3189b5db</guid>
    <pubDate>Thu, 28 Apr 2011 22:45:00 +0200</pubDate>
    <dc:creator>Guillaume Mazoyer</dc:creator>
        <category>Programmation</category>
            
    <description>    &lt;p&gt;&lt;img title=&quot;java.png, oct. 2008&quot; style=&quot;float: left; margin: 0 1em 1em 0;&quot; alt=&quot;java.png&quot; src=&quot;http://respawner.fr/blog/public/Icones/java.png&quot; /&gt;Le &lt;strong&gt;Google Summer of Code&lt;/strong&gt; est un programme organisé tout les ans par &lt;a hreflang=&quot;fr&quot; href=&quot;http://www.google.fr/&quot;&gt;Google&lt;/a&gt; depuis 2005. Il permet pendant une période de donner l’opportunité à des projets libres de se développer en embauchant des étudiants volontaires qui sont rémunérés de fin mai à fin août.&lt;br /&gt;&lt;br /&gt;Pourquoi je parle de ça aujourd’hui ? Parce que lundi, ma candidature a été officiellement approuvée. J’aurais donc durant cet été l’immense honneur de travailler pour &lt;a hreflang=&quot;fr&quot; href=&quot;http://www.debian.org/&quot;&gt;Debian&lt;/a&gt;, un projet que j’apprécie tout particulièrement. J’aurais pour but d’empaqueter et de contribuer à &lt;a hreflang=&quot;en&quot; href=&quot;http://wiki.debian.org/SummerOfCode2011/Jigsaw&quot;&gt;Jigsaw&lt;/a&gt; avec l’aide de &lt;a hreflang=&quot;en&quot; href=&quot;https://identi.ca/tmarble&quot;&gt;Tom Marble&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a title=&quot;debian.jpg&quot; href=&quot;http://respawner.fr/blog/public/Divers/debian.jpg&quot;&gt;&lt;img title=&quot;debian.jpg, juin 2011&quot; style=&quot;margin: 0 auto; display: block;&quot; alt=&quot;debian.jpg&quot; src=&quot;http://respawner.fr/blog/public/Divers/debian.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Qu’est-ce que &lt;strong&gt;Jigsaw&lt;/strong&gt; ? C’est la prochaine grosse évolution du &lt;a hreflang=&quot;fr&quot; href=&quot;http://fr.wikipedia.org/wiki/Java_Development_Kit&quot;&gt;JDK&lt;/a&gt; et de la &lt;a hreflang=&quot;fr&quot; href=&quot;http://fr.wikipedia.org/wiki/Machine_virtuelle_Java&quot;&gt;machine virtuelle Java&lt;/a&gt; qui devrait être fournie avec Java 8. Elle permet de ne plus voir la JVM comme un gros bloc mais comme plusieurs modules qui pourront s’assembler. Ainsi, dans Debian, l’installation d’une application Java ne devrait installer que les modules dont elle a besoin. De cette manière, les performances devraient être améliorées : moins de mémoire consommée, temps de démarrage plus rapide, etc…&lt;br /&gt;&lt;br /&gt;Pour un programme simple type Hello World ça nous donnerait :&lt;br /&gt;&lt;br /&gt;Avec le JDK et la JVM actuelle :&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;JDK : 136 Mio à télécharger&lt;/li&gt;
&lt;li&gt;Application : 425 octets&lt;/li&gt;
&lt;li&gt;Total : 136.000425 Mio&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Avec Jigsaw :&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;JDK : 30 Kio (à la louche)&lt;/li&gt;
&lt;li&gt;Application : 425 octets&lt;/li&gt;
&lt;li&gt;Total : 30.425 Kio&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Sacrée différence n’est-ce pas ? Maintenant, il n’y a plus qu’à faire. Je pense que ce Summer of Code sera pour moi l’occasion d’apprendre beaucoup sur le futur de Java ainsi que sur Debian tout en me gardant bien occupé durant l’été. &lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Apache 2 en mode multithreadé</title>
    <link>http://respawner.fr/blog/index.php?post/2011/04/12/Apache-2-en-mode-multithread%C3%A9</link>
    <guid isPermaLink="false">urn:md5:dfd87f8dd70a7ea226ffcc4155f3cda5</guid>
    <pubDate>Tue, 12 Apr 2011 23:14:00 +0200</pubDate>
    <dc:creator>Guillaume Mazoyer</dc:creator>
        <category>Technologie</category>
        <category>Apache</category><category>Debian</category><category>Libre</category><category>Linux</category><category>Multithread</category><category>PHP</category>    
    <description>    &lt;p&gt;&lt;img title=&quot;internet.png, oct. 2008&quot; style=&quot;float: left; margin: 0 1em 1em 0;&quot; alt=&quot;internet.png&quot; src=&quot;http://respawner.fr/blog/public/Icones/internet.png&quot; /&gt;Vous le savez (ou pas) les installations classiques d’Apache 2 (avec PHP et MySQL bien souvent) sur &lt;a hreflang=&quot;en&quot; href=&quot;http://ubuntu-fr.org/&quot;&gt;Ubuntu&lt;/a&gt; (et même &lt;a hreflang=&quot;fr&quot; href=&quot;http://www.debian.org/&quot;&gt;Debian&lt;/a&gt;) se basent sur une version bien spécifique du serveur web : la version &lt;strong&gt;prefork&lt;/strong&gt;. Son comportement est donc de créer des processus (lourds) pour traiter les différents clients qui veulent accéder aux pages web. L’inconvénient c’est que la multiplication des processus pour le système d’exploitation c’est … lourd. Pour le soulager un peu, on peut utiliser une version d’Apache pas forcément ultra connue s’appelant &lt;strong&gt;worker&lt;/strong&gt;. Cela permet de traiter les clients avec des threads (processus légers) et c’est particulièrement intéressant pour les processeurs récents (ou même assez vieux en fait).&lt;br /&gt;&lt;br /&gt;Pour installer la version &lt;strong&gt;worker&lt;/strong&gt; d’Apache, rien de plus simple :&lt;br /&gt;&lt;code&gt;# aptitude install apache2-mpm-worker&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Ah ouais, mais il veut me virer le mod PHP5 ? Ça y est le voici l’inconvénient, le mod PHP5 n’est pas thread safe. On ne peut donc pas l’utiliser avec la version multithread de Apache. Mais comme PHP est quand même ultra répandu sur le web et que l’on ne peut se passer de ce magnifique blog (j’entends quelqu’un qui me dit que je devrais mettre plus de contenu pour qu’il soit magnifique), il existe tout de même une solution pour faire l’interprétation des scripts PHP.&lt;br /&gt;&lt;br /&gt;On va utiliser la technique &lt;a hreflang=&quot;fr&quot; href=&quot;http://fr.wikipedia.org/wiki/FastCGI&quot;&gt;FastCGI&lt;/a&gt;. À la base CGI était utilisé pour faire du contenu dynamique sur le web avec plein de langages de programmation (Perl, C, script shell, etc…). En fait, il n’y a pas vraiment de limite de langages. FastCGI peut donc parfaitement interpréter du PHP. Pour activer cela, on installe alors 2 petits paquets :&lt;br /&gt;&lt;code&gt;# aptitude install libapache2-mod-fcgid php5-cgi&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Si mod_fcgid n’est pas automatiquement activé dans Apache 2, on fera aussi un petit :&lt;br /&gt;&lt;code&gt;# a2enmod fcgid&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Dans le cas où on a besoin de faire des modifications dans la configuration de PHP, on ira plus voir &lt;em&gt;/etc/php5/apache2/php.ini&lt;/em&gt; mais plutôt &lt;em&gt;/etc/php5/cgi/php.ini&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;L’inconvénient c’est que, contrairement à &lt;strong&gt;mod_php5&lt;/strong&gt; pour &lt;strong&gt;apache2-mpm-prefork&lt;/strong&gt;, les pages PHP ne seront pas interprétées sans modifier les différents &lt;strong&gt;VirtualHost&lt;/strong&gt; qui peuvent servir des scripts PHP. Il faudra donc ajouter dans chaque directive &lt;strong&gt;Directory&lt;/strong&gt; contenant désignant des répertoires avec du PHP les directives suivantes :&lt;br /&gt;&lt;code&gt;AddHandler fcgid-script .php&lt;br /&gt;FCGIWrapper /usr/lib/cgi-bin/php5 .php&lt;br /&gt;Options ExecCGI&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;La ligne &lt;strong&gt;AddHandler&lt;/strong&gt; permet de spécifier quelle extension de fichier est à exécuter via FastCGI. &lt;strong&gt;FCGIWrapper&lt;/strong&gt; donne le programme à exécuter pour traiter l’extension donnée. Et il ne faut pas oublier l’option &lt;strong&gt;ExecCGI&lt;/strong&gt; sans quoi le PHP ne sera pas interprété.&lt;br /&gt;&lt;br /&gt;Au final, cela pourra donner un VirtualHost dans le genre de celui-ci :&lt;br /&gt;&lt;code&gt;&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;&amp;nbsp; DocumentRoot /var/www/mon_site&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;lt;Directory &quot;/var/www/mon_site&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; AddHandler fcgid-script .php&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FCGIWrapper /usr/lib/cgi-bin/php5 .php&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Options ExecCGI Indexes FollowSymLinks MultiViews&lt;br /&gt;&amp;nbsp; &amp;lt;/Directory&amp;gt;&lt;br /&gt;&amp;lt;/VirtualHost&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Comme vous pouvez le voir, ça peut vite être lourd si on a beaucoup de VirtualHost à changer. C’est pour ça que je vous encourage donc d’utiliser le &lt;a hreflang=&quot;en&quot; href=&quot;http://www.cri.ensmp.fr/%7Ecoelho/mod_macro/&quot;&gt;mod_macro&lt;/a&gt; (merci &lt;a hreflang=&quot;en&quot; href=&quot;http://chroot-me.in/&quot;&gt;Romain&lt;/a&gt; pour l’astuce) pour vous simplifier votre future administration du serveur web. Une fois tous les VirtualHost modifiés, il faudra redémarrer le serveur Apache.&lt;br /&gt;&lt;code&gt;# /etc/init.d/apache2 restart&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Et là, si votre Apache avait l’habitude d’être un gros consommateur de ressources, il devrait se calmer.&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>GNOME Split en version 1.0</title>
    <link>http://respawner.fr/blog/index.php?post/2011/01/24/GNOME-Split-en-version-1.0</link>
    <guid isPermaLink="false">urn:md5:9a8e82c15555bc590527919b2d182d36</guid>
    <pubDate>Mon, 24 Jan 2011 23:37:00 +0100</pubDate>
    <dc:creator>Guillaume Mazoyer</dc:creator>
        <category>Programmation</category>
        <category>GNOME</category><category>GNOME Split</category><category>GTK</category><category>Java</category><category>java-gnome</category><category>Libre</category><category>Linux</category>    
    <description>    &lt;p&gt;&lt;img title=&quot;astuce.png, oct. 2008&quot; style=&quot;float: left; margin: 0 1em 1em 0;&quot; alt=&quot;astuce.png&quot; src=&quot;http://respawner.fr/blog/public/Icones/astuce.png&quot; /&gt;J’aurais du en parler plus tôt, beaucoup plus tôt même. Le 18 novembre 2010 a été pour moi l’occasion de partager la version &lt;strong&gt;1.0&lt;/strong&gt; de &lt;strong&gt;GNOME Split&lt;/strong&gt;, nom de code &lt;em&gt;Stable Isotope&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;Cette version est donc sortie plus ou moins un an après la toute première version tout public de GNOME Split. Elle apporte principalement des corrections de bugs plutôt gênants et qui étaient là depuis pas mal de temps.&lt;br /&gt;&lt;br /&gt;&lt;a title=&quot;split-view.png&quot; href=&quot;http://respawner.fr/blog/public/GNOMESplit/1.0/split-view.png&quot;&gt;&lt;img title=&quot;split-view.png, juin 2011&quot; style=&quot;margin: 0 auto; display: block;&quot; alt=&quot;split-view.png&quot; src=&quot;http://respawner.fr/blog/public/GNOMESplit/1.0/.split-view_m.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Comme on peut le voir l’interface n’a pas changé et j’avoue qu’elle me plaît bien comme elle est actuellement. Donc a priori, ça ne devrait pas (ou peu) changer par la suite. Voyons tout de même les corrections et quelques nouveautés qu’apporte la version 1.0 par rapport à la 0.9.&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Amélioration des performances : les opérations de découpages et d’assemblages prennent en moyenne 2 fois moins de temps par rapport aux versions précédentes.&lt;/li&gt;
&lt;li&gt;Prise en compte des cas où un ou plusieurs fichiers à assembler ne sont pas disponibles.&lt;/li&gt;
&lt;li&gt;Meilleure gestion des exceptions et des erreurs dans le code.&lt;/li&gt;
&lt;li&gt;Fenêtre de préférences légèrement revue pour la rendre plus compacte.&lt;/li&gt;
&lt;li&gt;Correction générale de l’assistant, les pages ne se dupliquent plus.&lt;/li&gt;
&lt;li&gt;Meilleure gestion de la fermeture des flux de fichiers lors d’un arrêt brutal (CTRL + C par exemple).&lt;/li&gt;
&lt;li&gt;Affichage du pourcentage d’avancement dans le titre de la fenêtre.&lt;/li&gt;
&lt;li&gt;Correction d’un bug qui ne permettait pas de découper des fichiers de plus de 2 Gio.&lt;/li&gt;
&lt;li&gt;Mise à jour des traductions (traduction française complète).&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;J’espère que cette nouvelle version répondra aux attentes de beaucoup de personnes. Et nous voilà donc sur le chemin vers la 2.0 qui devra permettre après toutes les versions intermédiaires de &lt;a hreflang=&quot;en&quot; href=&quot;https://blueprints.launchpad.net/gnome-split/+spec/encryption&quot;&gt;découper un fichier en cryptant les données&lt;/a&gt; via mot de passe et aussi d’&lt;a hreflang=&quot;en&quot; href=&quot;https://blueprints.launchpad.net/gnome-split/+spec/upload-services&quot;&gt;uploader des fichiers directement sur des sites web dédiés&lt;/a&gt; afin de les partager.&lt;br /&gt;&lt;br /&gt;Comme toujours, les archives de code sont &lt;a hreflang=&quot;en&quot; href=&quot;http://gnome-split.org/releases/&quot;&gt;là&lt;/a&gt; et le dépôt pour les ubunteros est &lt;a hreflang=&quot;en&quot; href=&quot;https://launchpad.net/%7Egnome-split-team/+archive/ppa&quot;&gt;ici&lt;/a&gt;.&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Et quand l'activité a besoin d'un objet ?</title>
    <link>http://respawner.fr/blog/index.php?post/2011/01/06/Et-quand-l-activit%C3%A9-a-besoin-d-un-objet</link>
    <guid isPermaLink="false">urn:md5:8505ad3aeca0020e0ddb4c4952088119</guid>
    <pubDate>Thu, 06 Jan 2011 01:56:00 +0100</pubDate>
    <dc:creator>Guillaume Mazoyer</dc:creator>
        <category>Programmation</category>
        <category>Activité</category><category>Android</category><category>Code</category><category>Google</category><category>Java</category><category>Libre</category><category>Linux</category>    
    <description>    &lt;p&gt;&lt;img title=&quot;mobile.png, juin 2011&quot; style=&quot;float: left; margin: 0 1em 1em 0;&quot; alt=&quot;mobile.png&quot; src=&quot;http://respawner.fr/blog/public/Icones/mobile.png&quot; /&gt;Je ne me souviens pas avoir parlé de programmation &lt;a hreflang=&quot;fr&quot; href=&quot;http://fr.wikipedia.org/wiki/Android&quot;&gt;Android&lt;/a&gt; par ici. ce billet est donc l’occasion de commencer l’exploration du merveilleux OS mobile que nous fournit gracieusement &lt;a hreflang=&quot;fr&quot; href=&quot;http://www.google.fr/&quot;&gt;Google&lt;/a&gt;. J’ai un smartphone qui carbure avec Android depuis bientôt 2 ans et je ne m’étais intéressé que vaguement à la programmation d’applications dessus. Dans mon parcours universitaire, j’ai eu l’occasion d’aborder ce sujet et mon projet tuteuré consiste principalement à faire une application pour Android. Trêve de blabla, passons à l’action.&lt;br /&gt;&lt;br /&gt;Je ne vais pas refaire un cours sur Android, nombre de tutoriaux et d’exemples sont disponibles sur la toile. Dans le cadre de mon projet, j’avais donc un souci pour passer de l’information d’une activité à une autre. En effet, seuls les types primitifs et quelques autres trucs peuvent être passés d’une activité à une autre. Malheureusement, pas moyen de faire voyager un objet “simple” sans modification. Il faut qu’il implémente soit &lt;strong&gt;Serializable&lt;/strong&gt; (connu par tous les bons programmeurs Java) soit &lt;strong&gt;Parcelable&lt;/strong&gt; (propre à Android), “pour les surprendre on peut aussi faire les deux” (private joke).&lt;br /&gt;&lt;br /&gt;Dans le cas présent, nous allons voir comment faire en implémentant l’interface &lt;strong&gt;Parcelable&lt;/strong&gt; car cela demande un peu plus de code et de compréhension. Considérons un objet &lt;strong&gt;Message&lt;/strong&gt;, sa classe (de base) s’écrirait très simplement.&lt;br /&gt;&lt;br /&gt;&lt;a title=&quot;class_message.png&quot; href=&quot;http://respawner.fr/blog/public/Android/Parcelable/class_message.png&quot;&gt;&lt;img title=&quot;class_message.png, juin 2011&quot; style=&quot;margin: 0 auto; display: block;&quot; alt=&quot;class_message.png&quot; src=&quot;http://respawner.fr/blog/public/Android/Parcelable/.class_message_s.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Pour pouvoir faire naviguer cet objet entre plusieurs activités, on va donc le faire implémenter l’interface citée précédemment. Et c’est ici qu’il faut penser à quelques ajouts bien précis. L’objet implémentant &lt;strong&gt;Parcelable&lt;/strong&gt; doit contenir un champ &lt;em&gt;static&lt;/em&gt; appelé &lt;strong&gt;CREATOR&lt;/strong&gt; de type &lt;strong&gt;Parcelable.Creator&lt;/strong&gt;. De plus, 2 méthodes seront à redéfinir. Notre classe message se transforme alors comme la suivante.&lt;br /&gt;&lt;br /&gt;&lt;a title=&quot;class_message_parcelable.png&quot; href=&quot;http://respawner.fr/blog/public/Android/Parcelable/class_message_parcelable.png&quot;&gt;&lt;img title=&quot;class_message_parcelable.png, juin 2011&quot; style=&quot;margin: 0 auto; display: block;&quot; alt=&quot;class_message_parcelable.png&quot; src=&quot;http://respawner.fr/blog/public/Android/Parcelable/.class_message_parcelable_s.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;À ce stade, tous nos objets de type &lt;strong&gt;Message&lt;/strong&gt; pourront être transférés d’une activité à une autre. Pour cela, on va donc utiliser un &lt;strong&gt;Bundle&lt;/strong&gt; avec la méthode &lt;strong&gt;putParcelable(Parcelable)&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a title=&quot;class_sender.png&quot; href=&quot;http://respawner.fr/blog/public/Android/Parcelable/class_sender.png&quot;&gt;&lt;img title=&quot;class_sender.png, juin 2011&quot; style=&quot;margin: 0 auto; display: block;&quot; alt=&quot;class_sender.png&quot; src=&quot;http://respawner.fr/blog/public/Android/Parcelable/.class_sender_s.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;À noter qu'en tant qu’identifiant de l’objet dans le bundle, j’ai mis son nom complet (package + classe) ce n’est pas un hasard. Maintenant, on peut voir comment récupérer l’objet dans l’activité qui va le réceptionner.&lt;br /&gt;&lt;br /&gt;&lt;a title=&quot;class_receiver.png&quot; href=&quot;http://respawner.fr/blog/public/Android/Parcelable/class_receiver.png&quot;&gt;&lt;img title=&quot;class_receiver.png, juin 2011&quot; style=&quot;margin: 0 auto; display: block;&quot; alt=&quot;class_receiver.png&quot; src=&quot;http://respawner.fr/blog/public/Android/Parcelable/.class_receiver_s.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Voilà qui est fait. Remarquez qu’il n’y a pas besoin de “caster” l’objet de type &lt;strong&gt;Parcelable&lt;/strong&gt; récupéré, je vous laisse deviner grâce à quoi. Je ne prétends pas que ma méthode soit la meilleure, ni la plus sécurisée, etc… Tout ce que je sais, c’est que pour l’instant ça marche. L’expérience venant en codant, j’en saurai davantage sur l’efficacité de cette technique plus tard. Toutes améliorations et/ou remarques sont les bienvenues.&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>My Book World, et que la lumière soit</title>
    <link>http://respawner.fr/blog/index.php?post/2010/10/19/My-Book-World%2C-et-que-la-lumi%C3%A8re-soit</link>
    <guid isPermaLink="false">urn:md5:edc97d8a3488f8d3bba434a11b793ce7</guid>
    <pubDate>Tue, 19 Oct 2010 23:30:00 +0200</pubDate>
    <dc:creator>Guillaume Mazoyer</dc:creator>
        <category>Technologie</category>
        <category>Astuce</category><category>Libre</category><category>Linux</category><category>MyBookWorld</category><category>NAS</category>    
    <description>    &lt;p&gt;&lt;img title=&quot;bash.png, oct. 2008&quot; style=&quot;float: left; margin: 0 1em 1em 0;&quot; alt=&quot;bash.png&quot; src=&quot;http://respawner.fr/blog/public/Icones/bash.png&quot; /&gt;Ça commence à faire un moment que j’ai mon &lt;a hreflang=&quot;en&quot; href=&quot;http://www.wdc.com/en/products/products.asp?driveid=586&quot;&gt;My Book World&lt;/a&gt; et je dois avouer que c’est terriblement pratique et efficace. Mais, depuis que je vis dans mon petit studio d’étudiant, la lumière blanche émise par les LED du disque externe est assez embêtante pour dormir.&lt;br /&gt;&lt;br /&gt;Outre l’idée géniale du “tout est fichier”, &lt;a hreflang=&quot;fr&quot; href=&quot;http://fr.wikipedia.org/wiki/Linux&quot;&gt;GNU/Linux&lt;/a&gt; permet une personnalisation du système incroyable. Comme le My Book World utilise un système GNU/Linux léger autant en profiter non ? C’est ainsi que je me suis dit “hop un petit coup de echo dans les fichiers qui vont bien et je vais maîtriser les LED”. Grave erreur, enfin non, mais c’est un peu plus compliqué à cause justement du système minimal.&lt;/p&gt;
&lt;h3&gt;1. Activer SSH&lt;/h3&gt;
&lt;p&gt;Première chose, il faut activer le service SSH si ce n’est pas déjà fait. Pour cela, on se connecte sur l’interface web, on passe en Mode Avancé puis dans l’onglet Système on clique sur Avancés. Là, on coche la case Activer en face de Accès SSH.&lt;br /&gt;&lt;br /&gt;&lt;a title=&quot;ssh-mybookworld.png&quot; href=&quot;http://respawner.fr/blog/public/MyBookWorld/ssh-mybookworld.png&quot;&gt;&lt;img title=&quot;ssh-mybookworld.png, juin 2011&quot; style=&quot;margin: 0 auto; display: block;&quot; alt=&quot;ssh-mybookworld.png&quot; src=&quot;http://respawner.fr/blog/public/MyBookWorld/ssh-mybookworld.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;On peut donc ensuite se logger avec… SSH. Le login est root et le mot de passe welc0me. Je vous invite bien évidemment à changer ce dernier à coup de passwd une fois connecté.&lt;br /&gt;&lt;code&gt;~$ ssh root@adresse_ip&lt;br /&gt;~ # passwd&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;2. Vérification connexion Internet&lt;/h3&gt;
&lt;p&gt;Hé oui, au titre on le devine. On va avoir besoin d’une connexion Internet pour les quelques opérations à venir. Pour cela, il faut vérifier les paramètres réseaux. Dans l’interface d’administration, en mode avancé, cliquer sur l’onglet Réseau puis sur Réseau local. Si vous utilisez le client &lt;a hreflang=&quot;fr&quot; href=&quot;http://fr.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol&quot;&gt;DHCP&lt;/a&gt; ça devrait être tout bon. En revanche, si comme moi vous utilisez le l’adressage en mode statique assurez-vous de bien avoir mis au moins un serveur &lt;a hreflang=&quot;fr&quot; href=&quot;http://fr.wikipedia.org/wiki/Domain_Name_System&quot;&gt;DNS&lt;/a&gt; accessible (8.8.8.8 pour moi).&lt;br /&gt;&lt;br /&gt;&lt;a title=&quot;dns-mybookworld.png&quot; href=&quot;http://respawner.fr/blog/public/MyBookWorld/dns-mybookworld.png&quot;&gt;&lt;img title=&quot;dns-mybookworld.png, juin 2011&quot; style=&quot;margin: 0 auto; display: block;&quot; alt=&quot;dns-mybookworld.png&quot; src=&quot;http://respawner.fr/blog/public/MyBookWorld/dns-mybookworld.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Normalement, vous devriez pouvoir tester un ping sur une machine extérieure au réseau local depuis le SSH.&lt;br /&gt;&lt;code&gt;~ # ping respawner.fr&lt;br /&gt;PING respawner.fr (88.191.119.214): 56 data bytes&lt;br /&gt;84 bytes from 88.191.119.214: icmp_seq=0 ttl=56 time=30.9 ms&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;3. Installation de cron&lt;/h3&gt;
&lt;p&gt;Par défaut, il n’y a pas de &lt;a hreflang=&quot;fr&quot; href=&quot;http://fr.wikipedia.org/wiki/Cron&quot;&gt;cron&lt;/a&gt; sur le système du My Book World. Il est tout de même possible de l’ajouter car on va l’utiliser pour planifier l’extinction et l’allumage des LED. Il est existe un utilitaire nommé optware permettant d’installer des paquets IPK qui va nous faciliter la vie. On commence alors par installer optware. Toujours dans notre session SSH, on entre les commandes suivantes.&lt;br /&gt;&lt;code&gt;~ # wget http://mybookworld.wikidot.com/local--files/optware/setup-whitelight.sh&lt;br /&gt;~ # sh setup-whitelight.sh&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Maintenant, on met à jour (un peu à la façon &lt;a hreflang=&quot;fr&quot; href=&quot;http://fr.wikipedia.org/wiki/Advanced_Packaging_Tool&quot;&gt;APT&lt;/a&gt;) la liste des paquets avec :&lt;br /&gt;&lt;code&gt;~ # /opt/bin/ipkg update&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Puis, on peut enfin installer cron :&lt;br /&gt;&lt;code&gt;~ # /opt/bin/ipkg install cron&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;4. Configuration&lt;/h3&gt;
&lt;p&gt;Comme on peut le voir, le binaire ipkg installe tous les paquets dans le dossier /opt/. C’est un bon moyen pour être certain de ne pas exploser le système. Le souci c’est que, du coup, cron ne se lancera pas au démarrage du disque dur externe. On va donc créer un lien du fichier /opt/etc/init.d/S10cron vers /etc/init.d/S10cron pour corriger le problème.&lt;br /&gt;&lt;code&gt;~ # ln -s /opt/etc/init.d/S10cron /etc/init.d/S10cron&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Et puis, pour tester que notre cron fonctionne, on va mettre à jour l’heure via un serveur &lt;a hreflang=&quot;fr&quot; href=&quot;http://fr.wikipedia.org/wiki/Network_Time_Protocol&quot;&gt;NTP&lt;/a&gt;. On édite (avec vi par exemple) alors le fichier /opt/etc/crontab pour y ajouter à la fin la ligne suivante :&lt;br /&gt;&lt;code&gt;* 4 * * * root ntpdate pool.ntp.org&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Pour que l’ajout dans le fichier soit pris en compte, on redémarre le cron.&lt;br /&gt;&lt;code&gt;~ # /opt/etc/init.d/S10cron&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;5. Au tour des LED&lt;/h3&gt;
&lt;p&gt;On va enfin pouvoir nous occuper des LED. Comme je le disais plus haut, on peut contrôler les LED avec de simple echo de valeur dans les fichiers qui vont bien. Il suffira alors de mettre 192 pour éteindre ou 255 pour allumer les LED dans le fichier /sys/class/leds/oxnas-wd810-leds:sw/brightness. On peut tester rapidement les effets avec ces 2 commandes :&lt;br /&gt;&lt;code&gt;echo 192 &amp;gt; &quot;/sys/class/leds/oxnas-wd810-leds:sw/brightness&quot;&lt;br /&gt;echo 255 &amp;gt; &quot;/sys/class/leds/oxnas-wd810-leds:sw/brightness&quot;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Mais bon, le but pour nous est de faire ça automatiquement. Par conséquent, ces 2 commandes prendront place dans le fichier /opt/etc/crontab. On ajoute donc à la fin de ce dernier les lignes suivantes :&lt;br /&gt;&lt;code&gt;30 23 * * * root echo 192 &amp;gt; &quot;/sys/class/leds/oxnas-wd810-leds:sw/brightness&quot;&lt;br /&gt;30 9&amp;nbsp; * * * root echo 255 &amp;gt; &quot;/sys/class/leds/oxnas-wd810-leds:sw/brightness&quot;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;On enregistre et on redémarre le cron. Et voilà, le tour est joué. Avec la configuration donnée ici, on constatera alors que les LED s’éteindront à 23h30 pour se rallumer à 9h30.&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Contrôler VLC avec son Android</title>
    <link>http://respawner.fr/blog/index.php?post/2010/10/04/Contr%C3%B4ler-VLC-avec-son-Android</link>
    <guid isPermaLink="false">urn:md5:cd0e77205acfed0fb859d4d844d26d1b</guid>
    <pubDate>Mon, 04 Oct 2010 22:08:00 +0200</pubDate>
    <dc:creator>Guillaume Mazoyer</dc:creator>
        <category>Technologie</category>
        <category>Android</category><category>Libre</category><category>Linux</category><category>VLC</category>    
    <description>    &lt;p&gt;&lt;img title=&quot;astuce.png, oct. 2008&quot; style=&quot;float: left; margin: 0 1em 1em 0;&quot; alt=&quot;astuce.png&quot; src=&quot;http://respawner.fr/blog/public/Icones/astuce.png&quot; /&gt;Depuis que je suis rentré en &lt;a hreflang=&quot;fr&quot; href=&quot;http://www.iut-bm.univ-fcomte.fr/public_website/iut/licences-pro/systemes-informatiques-logiciels&quot;&gt;Licence&lt;/a&gt; j’ai un nouvel appartement (&quot;on s’en fiche&quot; vous me direz, mais faut une introduction non ?) et j’ai surtout un nouveau canapé que j’apprécie beaucoup. Mon PC n’en est pas très loin, mais comme certains le savent j’aime en faire le moins possible. C’est donc suite à cette situation que j’ai rêvé d’une application pour contrôler &lt;a hreflang=&quot;en&quot; href=&quot;http://www.videolan.org/vlc/&quot;&gt;VLC&lt;/a&gt; (et regarder des vidéos) à distance.&lt;br /&gt;&lt;br /&gt;Étant l’heureux possesseur d’un &lt;a hreflang=&quot;fr&quot; href=&quot;http://www.htc.com/fr/product/hero/overview.html&quot;&gt;HTC Hero&lt;/a&gt; depuis un peu plus d’un an, je me suis dit qu’il devait y avoir probablement quelques développeurs aussi fainéants que moi. Du coup, ils le sont un peu moins vue qu’ils ont pris le temps de coder leurs propres applications. Ainsi, je me suis lancé en quête d’une télécommande de VLC dans l’&lt;a hreflang=&quot;en&quot; href=&quot;http://www.android.com/market/&quot;&gt;Android Market&lt;/a&gt; et j’ai découvert &lt;a hreflang=&quot;en&quot; href=&quot;http://code.google.com/p/android-vlc-remote/&quot;&gt;VLC Remote&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a title=&quot;market-vlc-remote.png&quot; href=&quot;http://respawner.fr/blog/public/Android/market-vlc-remote.png&quot;&gt;&lt;img title=&quot;market-vlc-remote.png, juin 2011&quot; style=&quot;margin: 0 auto; display: block;&quot; alt=&quot;market-vlc-remote.png&quot; src=&quot;http://respawner.fr/blog/public/Android/.market-vlc-remote_s.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Aussitôt, je l’ai installé. Cette application fonctionne grâce au serveur &lt;a hreflang=&quot;fr&quot; href=&quot;http://fr.wikipedia.org/wiki/Hypertext_Transfer_Protocol&quot;&gt;HTTP&lt;/a&gt; intégré dans VLC. Par défaut, il n’est pas actif mais on peut l’activer soit en quelques clics, soit en lançant la ligne de commande qui va bien.&lt;br /&gt;&lt;br /&gt;&lt;a title=&quot;vlc-httpd-graphique.png&quot; href=&quot;http://respawner.fr/blog/public/Android/vlc-httpd-graphique.png&quot;&gt;&lt;img title=&quot;vlc-httpd-graphique.png, juin 2011&quot; style=&quot;margin: 0 auto; display: block;&quot; alt=&quot;vlc-httpd-graphique.png&quot; src=&quot;http://respawner.fr/blog/public/Android/.vlc-httpd-graphique_s.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Les deux clics ci-dessus sont plus ou moins l’équivalent de la ligne de commande suivante :&lt;br /&gt;&lt;code&gt;~$ vlc --extraintf=http --fullscreen --http-album-art --qt-start-minimized&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Maintenant que le serveur HTTP de VLC est lancé, VLC Remote sera capable de le détecter. Il faut bien entendu que le mobile Android soit sur le même réseau que le PC contenant VLC. C’est possible entre autre par le Wi-Fi (qui est mis à disposition sur à peu près tous les smartphones et les boîtiers ADSL). Par exemple, avec ma Freebox, j’ai un &lt;a hreflang=&quot;fr&quot; href=&quot;http://fr.wikipedia.org/wiki/Classe_d%27adresse_IP&quot;&gt;réseau de classe C&lt;/a&gt; assez classique (faut que je songe à le changer peut-être) auquel mes 2 PCs ainsi que mon Hero sont connectés.&lt;br /&gt;&lt;br /&gt;&lt;a title=&quot;vlc-remote-settings.png&quot; href=&quot;http://respawner.fr/blog/public/Android/vlc-remote-settings.png&quot;&gt;&lt;img title=&quot;vlc-remote-settings.png, juin 2011&quot; style=&quot;margin: 0 auto; display: block;&quot; alt=&quot;vlc-remote-settings.png&quot; src=&quot;http://respawner.fr/blog/public/Android/.vlc-remote-settings_s.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Sur la capture d’écran précédente, on constate donc que VLC est lancé sur le PC d’adresse IP 192.168.0.12 et que l’interface HTTP utilise le port 8080. On sélectionne donc cette machine dans l’interface pour contrôler VLC. On peut ensuite sélectionner un fichier à lire en utilisant le bouton en haut à droite. Une fois le fichier sélectionné, on peut mettre en pause, stopper, reprendre, avancer, reculer la lecture, gérer la playlist et gérer le mode plein écran.&lt;/p&gt;
&lt;center&gt;&lt;a title=&quot;vlc-remote-filechooser.png&quot; href=&quot;http://respawner.fr/blog/public/Android/vlc-remote-filechooser.png&quot;&gt;&lt;img title=&quot;vlc-remote-filechooser.png, juin 2011&quot; alt=&quot;vlc-remote-filechooser.png&quot; src=&quot;http://respawner.fr/blog/public/Android/.vlc-remote-filechooser_s.jpg&quot; /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a title=&quot;vlc-remote-running.png&quot; href=&quot;http://respawner.fr/blog/public/Android/vlc-remote-running.png&quot;&gt;&lt;img title=&quot;vlc-remote-running.png, juin 2011&quot; alt=&quot;vlc-remote-running.png&quot; src=&quot;http://respawner.fr/blog/public/Android/.vlc-remote-running_s.jpg&quot; /&gt;&lt;/a&gt;&lt;/center&gt;&lt;br /&gt;Voilà un outil bien pratique pour transformer son Android en télécommande pour VLC. Maintenant, vous pourrez rester sur votre fauteuil tout en regardant ce que vous voulez. Encore une technique pour bouger un peu moins.</description>
    
    
    
      </item>
    
  <item>
    <title>Effet de mode ou vrai plus ?</title>
    <link>http://respawner.fr/blog/index.php?post/2010/08/25/Effet-de-mode-ou-vrai-plus</link>
    <guid isPermaLink="false">urn:md5:45d0ea8e4efd000b56c9fff2955cbad1</guid>
    <pubDate>Wed, 25 Aug 2010 12:38:00 +0200</pubDate>
    <dc:creator>Guillaume Mazoyer</dc:creator>
        <category>Programmation</category>
        <category>Humeur</category><category>Libre</category><category>Linux</category><category>Programmation</category><category>Python</category>    
    <description>    &lt;p&gt;&lt;img title=&quot;code.png, oct. 2008&quot; style=&quot;float: left; margin: 0 1em 1em 0;&quot; alt=&quot;code.png&quot; src=&quot;http://respawner.fr/blog/public/Icones/code.png&quot; /&gt;Les langages de programmation, il y en a énormément. Et beaucoup d’entre vous en connaissent une partie. Moi, je m’y suis intéressé un peu avant de rentrer en &lt;a hreflang=&quot;fr&quot; href=&quot;http://rt.pu-pm.univ-fcomte.fr/index.php/Accueil&quot;&gt;DUT&lt;/a&gt;. J’ai fait du Java surtout, et mon DUT a été l’occasion d’apprendre l’assembleur, le C et de me perfectionner en Java. J’ai bien entendu fait du script avec le shell sous &lt;a hreflang=&quot;fr&quot; href=&quot;http://www.debian.org/&quot;&gt;Debian&lt;/a&gt;, &lt;a hreflang=&quot;en&quot; href=&quot;http://www.ubuntu.com/&quot;&gt;Ubuntu&lt;/a&gt;, et compagnie. Aujourd’hui, je livre un sentiment personnel sur l’utilisation des langages de programmation dans le monde du Libre. Et j’ai cette impression que, bien que très diversifié dans la façon de faire un programme, le monde du &lt;a hreflang=&quot;fr&quot; href=&quot;http://fr.wikipedia.org/wiki/Free/Libre_Open_Source_Software&quot;&gt;FLOSS&lt;/a&gt; ne s’articule plus qu’autour d’un seul langage, à savoir, Python.&lt;br /&gt;&lt;br /&gt;&lt;a title=&quot;python.png&quot; href=&quot;http://respawner.fr/blog/public/Divers/python.png&quot;&gt;&lt;img title=&quot;python.png, juin 2011&quot; style=&quot;margin: 0 auto; display: block;&quot; alt=&quot;python.png&quot; src=&quot;http://respawner.fr/blog/public/Divers/.python_t.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Si Python est si apprécié c’est qu’il possède des avantages. La puissance, la clarté du code, le côté script, la facilité d’apprentissage et j’en oublie certainement un bon paquet. Pour ma part, je n’arrive pas à m’y faire et ce n’est pas faute d’avoir essayé (même que &lt;a hreflang=&quot;en&quot; href=&quot;https://launchpad.net/gnome-split&quot;&gt;GNOME Split&lt;/a&gt; devait être écrit en Python à la base). Aujourd’hui, Python est très utilisé et par énormément de monde. On sait par exemple que chez &lt;a hreflang=&quot;en&quot; href=&quot;http://www.canonical.com/&quot;&gt;Canonical&lt;/a&gt;, ils aiment bien ce langage mais il n’y a pas qu’eux. J’ai constaté, qu’en ce moment, tous les débutants et les programmeurs expérimentés se tournent de plus en plus vers Python pour coder. Je trouve ça dommage. Il y a-t-il encore des gens qui s’intéressent à d’autres langages ? J’espère que oui, cela serait dommage de perdre une telle diversité. Je ne reproche rien à Python et c’est pour moi un langage comme un autre, je suis simplement triste de voir de moins en moins de programmes écrits en C, en C++, en Java ou que sais-je encore.&lt;br /&gt;&lt;br /&gt;&lt;a title=&quot;python-code.png&quot; href=&quot;http://respawner.fr/blog/public/Divers/python-code.png&quot;&gt;&lt;img title=&quot;python-code.png, juin 2011&quot; style=&quot;margin: 0 auto; display: block;&quot; alt=&quot;python-code.png&quot; src=&quot;http://respawner.fr/blog/public/Divers/.python-code_s.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Pythonistes, je me répète, mais je tiens à dire que je ne blâme pas Python. J’ai simplement peur qu’un jour programmation veuille dire Python comme pour certains Linux veut dire Ubuntu. Je ne tiens pas non plus à lancer un troll du style “Python c’est nul, le C c’est de la vraie programmation”. J’aimerais seulement savoir si d’autres ont le même sentiment que moi à propos de l’abandon des autres langages de programmation. Beaucoup de monde le sait, je suis un Javaiste convaincu donc ce sentiment de solitude est assez naturel chez moi, peut-être à cause du fait que je travaille sur &lt;a hreflang=&quot;en&quot; href=&quot;http://java-gnome.sourceforge.net/&quot;&gt;java-gnome&lt;/a&gt; et que ce n’est pas l’API la plus utilisée. Peu importe, suis-je le seul à me dire “je n’aime pas coder en Python, suis-je un irréductible gaulois non-pythoniste ?” ?&lt;br /&gt;&lt;br /&gt;Si vous vous sentez attiré par Python, allez faire un tour du côté de l’&lt;a hreflang=&quot;fr&quot; href=&quot;http://www.afpy.org/&quot;&gt;AFPY&lt;/a&gt;. Ayant eu l’occasion de discuter avec des membres aux &lt;a hreflang=&quot;fr&quot; href=&quot;http://www.jdll.org/&quot;&gt;JDLL&lt;/a&gt;, je peux vous dire que vous aprendrez plein de choses.&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Sortie de GNOME Split 0.8</title>
    <link>http://respawner.fr/blog/index.php?post/2010/06/30/Sortie-de-GNOME-Split-0.8</link>
    <guid isPermaLink="false">urn:md5:693158f46865d40192ae1f153e8e350f</guid>
    <pubDate>Wed, 30 Jun 2010 21:57:00 +0200</pubDate>
    <dc:creator>Guillaume Mazoyer</dc:creator>
        <category>Programmation</category>
        <category>GNOME</category><category>GNOME Split</category><category>GTK</category><category>Java</category><category>java-gnome</category><category>Libre</category><category>Linux</category>    
    <description>    &lt;p&gt;&lt;img title=&quot;code.png, oct. 2008&quot; style=&quot;float: left; margin: 0 1em 1em 0;&quot; alt=&quot;code.png&quot; src=&quot;http://respawner.fr/blog/public/Icones/code.png&quot; /&gt;Il y a quelques heures, je viens de sortir une nouvelle version de &lt;a hreflang=&quot;fr&quot; href=&quot;https://launchpad.net/gnome-split&quot;&gt;GNOME Split&lt;/a&gt;. Cette dernière est numérotée 0.8 et représente une étape de plus vers la 1.0. Cela fait un an environ que le voyage a commencé après la mort inévitable de gSplit.&lt;br /&gt;&lt;br /&gt;GNOME Split 0.8 tire donc partie de &lt;a hreflang=&quot;fr&quot; href=&quot;http://respawner.fr/blog/index.php?post/2010/06/21/Sortie-de-java-gnome-4.0.16-et-le-futur&quot;&gt;java-gnome 4.0.16&lt;/a&gt; et des dernières nouveautés offertes. Aucune nouveauté géniale n’a été ajoutée. Il s’agit simplement d’une amélioration de l’interface graphique.&lt;br /&gt;&lt;br /&gt;&lt;a title=&quot;gnome-split-0.8.png&quot; href=&quot;http://respawner.fr/blog/public/GNOMESplit/0.8/gnome-split-0.8.png&quot;&gt;&lt;img title=&quot;gnome-split-0.8.png, juin 2011&quot; style=&quot;margin: 0 auto; display: block;&quot; alt=&quot;gnome-split-0.8.png&quot; src=&quot;http://respawner.fr/blog/public/GNOMESplit/0.8/gnome-split-0.8.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Au niveau des changements qui ont été effectués, on notera qu’une partie du code a été réécrite, que le fichier de configure (Gentoo, Fedora et ArchLinux, si y’en a qui sont intéressés pour tester hésitez pas) a été mis à jour. Les unités utilisées pour les tailles de fichiers respectent les &lt;a hreflang=&quot;fr&quot; href=&quot;http://fr.wikipedia.org/wiki/Pr%C3%A9fixe_binaire&quot;&gt;standards&lt;/a&gt; et leur représentation en chaînes de caractères est confiée à GLib. On remarquera aussi l’utilisation des accelerators dans les menus.&lt;br /&gt;&lt;br /&gt;&lt;a title=&quot;gnome-split-0.8-file.png&quot; href=&quot;http://respawner.fr/blog/public/GNOMESplit/0.8/gnome-split-0.8-file.png&quot;&gt;&lt;img title=&quot;gnome-split-0.8-file.png, juin 2011&quot; style=&quot;margin: 0 auto; display: block;&quot; alt=&quot;gnome-split-0.8-file.png&quot; src=&quot;http://respawner.fr/blog/public/GNOMESplit/0.8/gnome-split-0.8-file.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Enfin, et en vrac, la nouvelle barre d’information disponible dans GTK+ est utilisée pour montrer les informations et les warnings à l’utilisateur, la fenêtre principale se redimensionne automatiquement si nécessaire, des méthodes dépréciées ont été retirées du code, le curseur change d’état selon l’état de l’interface et des traductions ont été mises à jour et ajoutées.&lt;br /&gt;&lt;br /&gt;Je profite de cet article pour faire le point sur les noms de code que je donne à chaque version. Je ne sais pas si quelqu’un l’aura remarqué mais chaque nom de code est en rapport avec une expression ou une scène de la série &lt;a hreflang=&quot;fr&quot; href=&quot;http://fr.wikipedia.org/wiki/The_Big_Bang_Theory&quot;&gt;The Big Bang Theory&lt;/a&gt;. La version 0.8 se nomme Happy Birthday mais ça n’a pas vraiment de rapport avec la série.&lt;br /&gt;&lt;br /&gt;Pour terminer, GNOME Split 0.8 est disponible sur &lt;a hreflang=&quot;en&quot; href=&quot;http://www.ubuntu.com/&quot;&gt;Ubuntu&lt;/a&gt; via le &lt;a hreflang=&quot;en&quot; href=&quot;https://launchpad.net/%7Egnome-split-team/+archive/ppa&quot;&gt;PPA&lt;/a&gt; ou avec le &lt;a hreflang=&quot;en&quot; href=&quot;http://gnome-split.org/releases/&quot;&gt;code source&lt;/a&gt; bien évidemment. N’hésitez pas à faire de paquets pour vos distributions favorites et à me donner vos avis et éventuellement à me dire les modifications à apporter.&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Sortie de java-gnome 4.0.16 et le futur</title>
    <link>http://respawner.fr/blog/index.php?post/2010/06/21/Sortie-de-java-gnome-4.0.16-et-le-futur</link>
    <guid isPermaLink="false">urn:md5:9495e516600072413524af765ea57407</guid>
    <pubDate>Mon, 21 Jun 2010 18:32:00 +0200</pubDate>
    <dc:creator>Guillaume Mazoyer</dc:creator>
        <category>Programmation</category>
        <category>GNOME</category><category>GTK</category><category>Java</category><category>java-gnome</category><category>Libre</category><category>Linux</category>    
    <description>    &lt;p&gt;&lt;img title=&quot;java.png, oct. 2008&quot; style=&quot;float: left; margin: 0 1em 1em 0;&quot; alt=&quot;java.png&quot; src=&quot;http://respawner.fr/blog/public/Icones/java.png&quot; /&gt;Il y a quelques jours, le 17 juin 2010 pour être précis, une nouvelle version de &lt;a hreflang=&quot;en&quot; href=&quot;http://java-gnome.sourceforge.net/&quot;&gt;java-gnome&lt;/a&gt; est sortie. Cette dernière, numérotée 4.0.16, apporte comme toujours son lot d’amélioration. Il y a eu tout de même moins de modifications par rapport à ce que l’on a pu voir précédemment mais quand même. Une nouvelle version apporte toujours un peu de neuf (ou de vieux remis à neuf) et ça fait plaisir.&lt;/p&gt;
&lt;h3&gt;1. Nouvelle version : 4.0.16&lt;/h3&gt;
&lt;p&gt;Ainsi, java-gnome comporte maintenant le support complet pour l’utilisation des “accelerators” (on peut peut-être traduire par “raccourcis”), qui sont des combinaisons de touches permettant d’activer des actions et des entrées dans les menus. Je pense que bon nombre d’entre nous connaissent le très classique CTRL + Q pour quitter un programme. Le coeur de l’API se situe dans la classe &lt;code&gt;AcceleratorGroup&lt;/code&gt; mais il faudra aussi utiliser les méthodes &lt;code&gt;setAccelerator()&lt;/code&gt; des classes &lt;code&gt;MenuItem&lt;/code&gt; et &lt;code&gt;Action&lt;/code&gt;. L’API native étant presque incompréhensible, le travail pour porter tout ça en Java a été assez conséquent.&lt;br /&gt;&lt;br /&gt;&lt;a title=&quot;accelerators.png&quot; href=&quot;http://respawner.fr/blog/public/JavaGnome/accelerators.png&quot;&gt;&lt;img title=&quot;accelerators.png, juin 2011&quot; style=&quot;margin: 0 auto; display: block;&quot; alt=&quot;accelerators.png&quot; src=&quot;http://respawner.fr/blog/public/JavaGnome/accelerators.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;De manière plus rapide, le support des opérateurs utilisables avec Cairo a été ajouter avec la classe &lt;code&gt;Operator&lt;/code&gt;. Une bonne quantité d’exemple en image en montre le principe (images bien entendu générées avec java-gnome lors de la construction de la documentation. Le style &lt;code&gt;CENTER&lt;/code&gt; a été ajouté dans la classe &lt;code&gt;ButtonBoxStyle&lt;/code&gt;. Les fichiers .defs on été mis à jour pour prendre en compte les modifications apportées par GTK 2.18 et et le widget InfoBar a été ajouté (effectués par votre serviteur). Les interfaces Activatable et Editable ont reçu quelques changements tout comme la classe Glib qui comporte une nouvelle méthode &lt;code&gt;formatSizeForDisplay()&lt;/code&gt; permettant de formater un taille d’octets en une chaîne de caractères plus lisibles pour nous humains. Enfin, une dernière méthode &lt;code&gt;ensureNative()&lt;/code&gt; a été ajoutée à la classe &lt;code&gt;Window&lt;/code&gt; de GDK.&lt;/p&gt;
&lt;h3&gt;2. Le futur&lt;/h3&gt;
&lt;p&gt;En tant que contributeur et avec les autres personnes travaillant sur java-gnome, nous nous sommes aperçu que maintenir un jeu de fichiers .defs pour générer la partie non publique de l’API commençait à être compliqué. Nous avons alors changer un peu le plan prévu. C’est pourquoi, en ce moment, certains travaillent sur l’utilisation du projet &lt;a hreflang=&quot;en&quot; href=&quot;http://live.gnome.org/GObjectIntrospection&quot;&gt;GObject Introspection&lt;/a&gt; pour générer une partie de l’API. C’est probablement le meilleur moyen d’avoir une source donnée la plus complète et la plus à jour afin de garder les bindings les plus proches des dernières versions des bibliothèques natives. Cependant, la migration vers GObject Introspection demande un travail long et délicat puisqu’il faut réécrire une partie du générateur de code que l’on sait stable puisqu’il commence à prendre de l’âge. J’espère tout de même que l’on aura quelque chose de fonctionnel assez vite afin de tester et stabiliser le code le plus rapidement possible.&lt;br /&gt;&lt;br /&gt;Le futur de java-gnome prévoit de bonnes surprises, c’est certain. Tout ça dans le but d’améliorer encore l’API telle qu’on la connaît et de toucher un public toujours plus grand.&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Ubuntu 10.04, PHP 5.3 et Dotclear</title>
    <link>http://respawner.fr/blog/index.php?post/2010/06/09/Ubuntu-10.04%2C-PHP-5.3-et-Dotclear</link>
    <guid isPermaLink="false">urn:md5:f9cc1903f7d61248edad016c32d24f2c</guid>
    <pubDate>Wed, 09 Jun 2010 16:10:00 +0200</pubDate>
    <dc:creator>Guillaume Mazoyer</dc:creator>
        <category>Ubuntu</category>
        <category>Blog</category><category>Dotclear</category><category>Libre</category><category>Linux</category><category>PHP</category><category>Ubuntu</category>    
    <description>    &lt;p&gt;&lt;img title=&quot;ubuntu.png, avr. 2010&quot; style=&quot;float: left; margin: 0 1em 1em 0;&quot; alt=&quot;ubuntu.png&quot; src=&quot;http://respawner.fr/blog/public/Icones/ubuntu.png&quot; /&gt;Comme je l’ai dit dans &lt;a hreflang=&quot;fr&quot; href=&quot;http://www.respawner.fr/blog/index.php?post/2010/06/09/Nouveau-serveur-d%C3%A9di%C3%A9&quot;&gt;un billet légèrement plus vieux&lt;/a&gt;, j’ai changé de serveur dédié. Le nouveau serveur tourne donc avec &lt;a hreflang=&quot;fr&quot; href=&quot;http://www.ubuntu.com/&quot;&gt;Ubuntu 10.04 Lucid Lynx&lt;/a&gt; (version serveur). Cette release offre dans ses dépôts la version 5.3 de PHP. Cependant, cette dernière ne fait pas bon ménage avec &lt;a hreflang=&quot;fr&quot; href=&quot;http://fr.dotclear.org/&quot;&gt;Dotclear&lt;/a&gt; 2.1.7 (chose qui devrait être rectifiée avec la 2.2). Dans cet article, on va donc voir comment &lt;a hreflang=&quot;fr&quot; href=&quot;http://fr.wikipedia.org/wiki/Downgrade&quot;&gt;downgrader&lt;/a&gt; à la version 5.2 de PHP. Attention, pour effectuer les manipulations qui vont suivre il faudra posséder les droits d’administration, passez votre chemin si vous n’êtes pas sûr de vous !&lt;/p&gt;
&lt;h3&gt;1. Un peu de nettoyage&lt;/h3&gt;
&lt;p&gt;Avant d’installer la version 5.2 de PHP, on va faire un peu de ménage. On commence par arrêter le serveur web.&lt;br /&gt;&lt;code&gt;~$ sudo /etc/init.d/apache2 stop&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Maintenant, on regarde les paquets liés à PHP qui sont installés.&lt;br /&gt;&lt;code&gt;~$ dpkg -l | grep php5&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Dans mon cas, ça me donne tout ça.&lt;br /&gt;&lt;code&gt;ii&amp;nbsp; libapache2-mod-php5&amp;nbsp;&amp;nbsp;&amp;nbsp; 5.3.2-1ubuntu4.2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;br /&gt;ii&amp;nbsp; php5-cli&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5.3.2-1ubuntu4.2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;br /&gt;ii&amp;nbsp; php5-common&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5.3.2-1ubuntu4.2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;br /&gt;ii&amp;nbsp; php5-gd&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5.3.2-1ubuntu4.2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;br /&gt;ii&amp;nbsp; php5-mcrypt&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5.3.2-0ubuntu1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;br /&gt;ii&amp;nbsp; php5-mysql&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5.3.2-1ubuntu4.2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Pour être sûr que l’on va installer la version 5.2, on va désinstaller les paquets précédemment listés.&lt;br /&gt;&lt;code&gt;~$ PHP_PKG=$(for i in $(dpkg -l | grep php5 | awk '{ print $2 }' ); do echo $i; done)&lt;br /&gt;~$ sudo aptitude purge $PHP_PKG&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;2. Le koala à notre secours&lt;/h3&gt;
&lt;p&gt;La version de PHP qu’il nous faut se trouve dans les dépôts d’Ubuntu 9.10 Karmic Koala. On va donc s’en servir pour résoudre notre problème. On édite alors la liste des dépôts utilisés par &lt;a hreflang=&quot;fr&quot; href=&quot;http://fr.wikipedia.org/wiki/Advanced_Packaging_Tool&quot;&gt;APT&lt;/a&gt;.&lt;br /&gt;&lt;code&gt;~$ sudo vim /etc/apt/sources.list.d/karmic.list&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Dans le fichier créé, on met les 2 lignes suivantes. On pourrait en mettre plus mais dans mon cas, c’est suffisant.&lt;br /&gt;&lt;code&gt;deb http://fr.archive.ubuntu.com/ubuntu/ karmic main restricted&lt;br /&gt;deb http://fr.archive.ubuntu.com/ubuntu/ karmic universe multiverse&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Et maintenant, on précise quels paquets installer depuis les dépôts de Karmic.&lt;br /&gt;&lt;code&gt;~$ touch /etc/apt/preferences.d/php5&lt;br /&gt;~$ for i in $PHP_PKG; do echo &quot;Package: $i&lt;br /&gt;&amp;gt;&amp;nbsp; Pin: release a=karmic&lt;br /&gt;&amp;gt;&amp;nbsp; Pin-Priority: 1001&lt;br /&gt;&amp;gt;&amp;nbsp; &quot; &amp;gt;&amp;gt; /etc/apt/preferences.d/php5; done&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;On met à jour la liste des paquets disponibles, puis on installe la bonne versions des paquets pour PHP.&lt;br /&gt;&lt;code&gt;~$ sudo aptitude update&lt;br /&gt;~$ sudo aptitude -t karmic install $PHP_PKG&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Ici, normalement, on a les paquets qui vont bien et on peut donc relancer le serveur web.&lt;br /&gt;&lt;code&gt;~$ sudo /etc/init.d/apache2 start&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Avant de crier victoire, on va verrouiller les paquets précédemment installés pour qu’ils ne soient pas mis à jour vers la version 5.3 en faisant une mise à jour du système plus tard.&lt;br /&gt;&lt;code&gt;~$ sudo aptitude hold $PHP_PKG&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;3. Youhou&lt;/h3&gt;
&lt;p&gt;Dotclear devrait maintenant fonctionner correctement. Il faut aussi penser à vider le cache du blog et celui de son navigateur. Ainsi, on évite de polluer les flux RSS associés aux tags par exemple.&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Profiter de la TNT sous Ubuntu</title>
    <link>http://respawner.fr/blog/index.php?post/2010/05/09/Profiter-de-la-TNT-sous-Ubuntu</link>
    <guid isPermaLink="false">urn:md5:1dc07e652697d9613d8feaeeede2e1cc</guid>
    <pubDate>Sun, 09 May 2010 20:39:00 +0200</pubDate>
    <dc:creator>Guillaume Mazoyer</dc:creator>
        <category>Ubuntu</category>
        <category>Libre</category><category>Linux</category><category>Matériel</category><category>TNT</category><category>Télévision</category><category>Ubuntu</category><category>Vidéo</category>    
    <description>    &lt;p&gt;&lt;img src=&quot;http://respawner.fr/blog/public/Icones/techno.png&quot; alt=&quot;&quot; style=&quot;float: left; margin-top: 0; margin-right: 1em; margin-bottom: 1em; margin-left: 0; &quot; title=&quot;techno.png, oct. 2008&quot; /&gt;J&amp;#8217;ai fait l&amp;#8217;acquisition, il y a peu de temps d&amp;#8217;une clé USB &lt;a href=&quot;http://fr.wikipedia.org/wiki/T%C3%A9l%C3%A9vision_num%C3%A9rique_terrestre&quot; hreflang=&quot;fr&quot;&gt;TNT&lt;/a&gt;. Je me suis bien entendu documenté avant de l&amp;#8217;acheter afin de ne pas avoir la mauvaise surprise que &lt;a href=&quot;http://www.ubuntu.com/&quot; hreflang=&quot;en&quot;&gt;Ubuntu&lt;/a&gt; ne la reconnaisse pas. J&amp;#8217;ai finalement&amp;nbsp;opté&amp;nbsp;pour une &lt;strong&gt;PCTV NanotStick&lt;/strong&gt; (modèle 73e).&lt;br /&gt;&lt;br /&gt;Bon l&amp;#8217;avantage de cette clé, c&amp;#8217;est qu&amp;#8217;elle est reconnue directement par Ubuntu (depuis la 9.04 il paraît). Le problème pour moi c&amp;#8217;est qu&amp;#8217;avec l&amp;#8217;antenne fournie, pas moyen de capter quelque chose. Bon, il faut dire que je suis à une distance &lt;a href=&quot;http://maps.google.fr/maps?f=d&amp;amp;source=s_d&amp;amp;saddr=Frontenaud&amp;amp;daddr=46.743356,5.1217547+to:Nuits-Saint-Georges&amp;amp;hl=fr&amp;amp;geocode=FaNVxgIdrcVQAClFc1Qmiy3zRzFQ6A6zNM4JBA%3BFTw_yQId2iZOACl9ZqlsL9_yRzFAr5jCNM4JEw%3BFRpEzwIdL4ZLACl9KWgDLJDyRzFgShSzNM4JBA&amp;amp;mra=ls&amp;amp;sll=46.75984,1.738281&amp;amp;sspn=12.708677,33.815918&amp;amp;ie=UTF8&amp;amp;t=h&amp;amp;z=10&amp;amp;via=1&quot; hreflang=&quot;fr&quot;&gt;assez élevée&lt;/a&gt; de l&amp;#8217;émetteur TNT. Cependant, j&amp;#8217;ai pu voir que tout marchait parfaitement avec une antenne de toit classique (chaînes normale &amp;nbsp;+ chaînes HD). Alors comment fait-on&amp;#160;?&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://respawner.fr/blog/public/TNT/cle_tnt.jpg&quot;&gt;&lt;img src=&quot;http://respawner.fr/blog/public/TNT/cle_tnt.jpg&quot; alt=&quot;&quot; style=&quot;margin-top: 0; margin-right: auto; margin-bottom: 0; margin-left: auto; display: block; &quot; title=&quot;cle_tnt.jpg, mai 2010&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Mise en situation&amp;#160;: il existe des logiciels spécialement conçus pour regarder des chaînes télévisuelles (genre &lt;a href=&quot;https://launchpad.net/me-tv&quot; hreflang=&quot;en&quot;&gt;Me-Tv&lt;/a&gt;, etc&amp;#8230;). Avec ces logiciels normalement aucun souci, tout se fait facilement (configuration, enregistrement&amp;#8230;). Mais personnellement, je tiens à garder l&amp;#8217;excellent &lt;a href=&quot;http://www.videolan.org/vlc/&quot; hreflang=&quot;en&quot;&gt;VLC&lt;/a&gt; comme lecteur vidéo. Pour pouvoir donc regarder la TNT avec VLC, il faut générer un fichier contenant une liste des chaînes disponibles avec plein de choses dedans. Pour créer ce fichier, on utilise le programme &lt;strong&gt;w-scan&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;~$ sudo aptitude install w-scan&lt;br /&gt;~$ w_scan -c FR -X &amp;gt; chaines.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;La seconde commande permet donc de chercher les chaînes disponibles. Cela peut prendre du temps (chez moi une dizaine de minutes). Si aucune chaîne n&amp;#8217;est détectée, cela vient probablement de l&amp;#8217;antenne (c&amp;#8217;est ce qu&amp;#8217;il m&amp;#8217;arrive avec l&amp;#8217;antenne fournie). Donc il faut essayer avec une autre antenne plus performante (il va falloir que j&amp;#8217;en cherche une qui marche, Arnaud, spécialiste TNT, si t&amp;#8217;es dans le coin&amp;#8230;). Si tout fonctionne bien, on obtient un fichier &lt;em&gt;chaines.conf&lt;/em&gt;&amp;nbsp;(&lt;a href=&quot;http://respawner.fr/blog/public/TNT/channels_fixe.conf&quot; hreflang=&quot;en&quot;&gt;voici le mien&lt;/a&gt;) avec plusieurs lignes (une par chaîne). Et là, il suffit simplement de lancer VLC et de lui indiquer d&amp;#8217;ouvrir le fichier précédemment généré.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;~$ sudo aptitude install vlc&lt;br /&gt;~$ vlc chaines.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;On peut aussi aller dans &lt;em&gt;Média &amp;gt; Ouvrir un fichier&lt;/em&gt; (et préciser dans la fenêtre ouverte d&amp;#8217;afficher &lt;em&gt;tous les fichiers&lt;/em&gt;).&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://respawner.fr/blog/public/TNT/chaines_tnt.png&quot;&gt;&lt;img src=&quot;http://respawner.fr/blog/public/TNT/.chaines_tnt_m.jpg&quot; alt=&quot;&quot; style=&quot;margin-top: 0; margin-right: auto; margin-bottom: 0; margin-left: auto; display: block; &quot; title=&quot;chaines_tnt.png, mai 2010&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Il ne reste qu&amp;#8217;à regarder ce qui est intéressant et voire enregistrer (il suffit d&amp;#8217;aller faire un tour dans les menus de VLC). Ah j&amp;#8217;oubliais, la télécommande peut servir mais juste pour contrôler le volume ou éteindre l&amp;#8217;ordinateur. Pour le reste, il faut probablement faire des manipulations et/ou utiliser un logiciel comme Me-Tv. Le clé est petite, rétractable et jolie. Seul bémol&amp;#160;: l&amp;#8217;antenne qui ne capte rien chez moi. Dommage&amp;#8230;&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Après les boutons à gauche, les indicateurs à droite</title>
    <link>http://respawner.fr/blog/index.php?post/2010/05/03/Apr%C3%A8s-les-boutons-%C3%A0-gauche%2C-les-indicateurs-%C3%A0-droite</link>
    <guid isPermaLink="false">urn:md5:19bf2a8fd3b8f0437c8d2e0f08c6e6c5</guid>
    <pubDate>Mon, 03 May 2010 16:08:00 +0200</pubDate>
    <dc:creator>Guillaume Mazoyer</dc:creator>
        <category>Ubuntu</category>
        <category>10.04</category><category>10.10</category><category>Indicateurs</category><category>Libre</category><category>Linux</category><category>Lucid Lynx</category><category>Maverick Meerkat</category><category>Ubuntu</category>    
    <description>    &lt;p&gt;&lt;img src=&quot;http://respawner.fr/blog/public/Icones/ubuntu.png&quot; alt=&quot;&quot; style=&quot;float: left; margin-top: 0; margin-right: 1em; margin-bottom: 1em; margin-left: 0; &quot; title=&quot;ubuntu.png, avr. 2010&quot; /&gt;Peu d&amp;#8217;entre vous (lecteurs) ont manqué la naissance de la dernière version de &lt;a href=&quot;http://www.ubuntu.com/&quot; hreflang=&quot;en&quot;&gt;Ubuntu&lt;/a&gt;. Oui, vous vous souvenez c&amp;#8217;était il y a quelques jours, le bébé s&amp;#8217;appelle &lt;strong&gt;Lucid Lynx&lt;/strong&gt; et aura une espérance de vie un peu plus élevé que les versions normales puisque la &lt;strong&gt;10.04&lt;/strong&gt; est une version avec support à long terme (aussi connu sous l&amp;#8217;acronyme &lt;a href=&quot;http://doc.ubuntu-fr.org/versions#cycle_des_versions_lts&quot; hreflang=&quot;fr&quot;&gt;LTS&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Avec Ubuntu 10.04 (que j&amp;#8217;utilise), nous avons eu la surprise, même si on le savait depuis un moment, de voir les boutons de gestion des fenêtres (fermer, réduire, maximiser) migrer sur la gauche. Certains aiment, d&amp;#8217;autres pas. Personnellement, je m&amp;#8217;y suis fait et je garde donc les boutons à gauche. Il y a eu beaucoup de protestations à ce sujet mais &lt;a href=&quot;http://www.markshuttleworth.com/&quot; hreflang=&quot;en&quot;&gt;Mark Shuttleworth&lt;/a&gt; a très vite mis les pendules à l&amp;#8217;heure et a dit (en gros) &lt;em&gt;&amp;#8220;c&amp;#8217;est comme ça et puis c&amp;#8217;est tout&amp;#8221;&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://respawner.fr/blog/public/Ubuntu/leftbuttons.png&quot;&gt;&lt;img src=&quot;http://respawner.fr/blog/public/Ubuntu/leftbuttons.png&quot; alt=&quot;&quot; style=&quot;margin-top: 0; margin-right: auto; margin-bottom: 0; margin-left: auto; display: block; &quot; title=&quot;leftbuttons.png, mai 2010&quot; /&gt;&lt;/a&gt;&lt;br /&gt;On a beaucoup entendu parler de ce changement. Et il est évident que &lt;a href=&quot;http://frederic.bezies.free.fr/blog/?p=3787&quot; hreflang=&quot;fr&quot;&gt;certains&lt;/a&gt; se devaient de faire le rapprochement avec le système d&amp;#8217;exploitation de la &lt;a href=&quot;http://www.apple.com/fr/&quot; hreflang=&quot;fr&quot;&gt;marque à la pomme&lt;/a&gt;. Cependant, ce que l&amp;#8217;on ne savait pas jusque là, c&amp;#8217;est que cette décision est justifiée par une nouveauté qui verra le jour avec &lt;a href=&quot;http://www.markshuttleworth.com/archives/336&quot; hreflang=&quot;en&quot;&gt;Ubuntu 10.10 Maverick Meerkat&lt;/a&gt;. En effet, Mark Shuttleworth &lt;a href=&quot;http://www.markshuttleworth.com/archives/333&quot; hreflang=&quot;en&quot;&gt;a annoncé aujourd&amp;#8217;hui&lt;/a&gt; l&amp;#8217;arrivée d&amp;#8217;indicateurs destinées aux fenêtres. Et devinez où ils seront placés&amp;#8230; Sur la droite en face des fameux boutons qui ont été déplacés. Ces indicateurs seront du même genre que ceux que l&amp;#8217;on trouve déjà dans le panel en haut à droite. Ils serviront probablement à indiquer si un programme est connecté à l&amp;#8217;Internet ou non, à contrôler le volume du programme&amp;nbsp;indépendamment&amp;nbsp;de celui du système, à indiquer si une action est en cours, si un document est partagé voir non-enregistré ou modifié, etc&amp;#8230;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://respawner.fr/blog/public/Ubuntu/barre_statut_chrome.png&quot;&gt;&lt;img src=&quot;http://respawner.fr/blog/public/Ubuntu/barre_statut_chrome.png&quot; alt=&quot;&quot; style=&quot;margin-top: 0; margin-right: auto; margin-bottom: 0; margin-left: auto; display: block; &quot; title=&quot;barre_statut_chrome.png, mai 2010&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Pour continuer dans l&amp;#8217;idée de modifier les&amp;nbsp;interactions&amp;nbsp;entre les programmes et les utilisateurs. Mark a énoncé le fait d&amp;#8217;avoir recours à un système de barre de statut à la &lt;a href=&quot;http://www.google.ch/chrome?hl=fr&quot; hreflang=&quot;fr&quot;&gt;Google Chrome&lt;/a&gt; (va-t-il y avoir un troll là-dessus&amp;#160;?) pour les applications. C&amp;#8217;est-à-dire que les barres de statut pourraient être remplacées par d&amp;#8217;autres qui n&amp;#8217;apparaîtront que temporairement. Tout ceci afin de gagner de la place (bonne chose pour les &lt;a href=&quot;http://www.markshuttleworth.com/archives/359&quot; hreflang=&quot;en&quot;&gt;netbooks&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Bien évidemment, ces changements ne seront appliqués qu&amp;#8217;aux applications le voulant bien. Et c&amp;#8217;est ici que je m&amp;#8217;interroge. En effet, ces innovations qui sont apportées par &lt;a href=&quot;http://www.canonical.com/&quot; hreflang=&quot;en&quot;&gt;Canonical&lt;/a&gt; sont, pour moi, de bonnes choses. Mais est-ce que ça ne va pas entraîner le fait que certaines applications ne seront faites que pour Ubuntu&amp;#160;? Faire des &lt;a href=&quot;http://fr.wikipedia.org/wiki/Interface_de_programmation&quot; hreflang=&quot;fr&quot;&gt;API&lt;/a&gt; pour faire de jolies choses c&amp;#8217;est bien mais ces API ne seront pas nécessairement utilisées dans d&amp;#8217;autres distributions. Il est toujours possible pour les développeurs d&amp;#8217;applications d&amp;#8217;utiliser peut-être des instructions de précompilation (je pense au langage C) ou des gestions d&amp;#8217;exceptions avec les instructions du genre &lt;code&gt;import&lt;/code&gt; (je pense au langage Python). Le problème c&amp;#8217;est que ce n&amp;#8217;est pas forcément accessible avec d&amp;#8217;autres langages (je pense à Java).&lt;br /&gt;&lt;br /&gt;C&amp;#8217;est ici que je vais m&amp;#8217;arrêter. Les nouveautés proposées par Ubuntu sont, à mon sens, intéressantes et c&amp;#8217;est ce que je retiens.&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Le générique de Fringe made in 80's</title>
    <link>http://respawner.fr/blog/index.php?post/2010/04/14/Le-g%C3%A9n%C3%A9rique-de-Fringe-made-in-80-s</link>
    <guid isPermaLink="false">urn:md5:efe3817d0f97411b90f9f3562a57f21b</guid>
    <pubDate>Wed, 14 Apr 2010 21:41:00 +0200</pubDate>
    <dc:creator>Guillaume Mazoyer</dc:creator>
        <category>Divers</category>
        <category>Fiction</category><category>Fringe</category><category>Sciences</category><category>Série</category><category>USA</category><category>Vidéo</category>    
    <description>    &lt;p&gt;J&amp;#8217;aime beaucoup la série &lt;a href=&quot;http://fr.wikipedia.org/wiki/Fringe&quot; hreflang=&quot;fr&quot;&gt;Fringe&lt;/a&gt; (que je regarde en VO). Et il faut croire que les créateurs se sont bien amusés pour faire le générique de l&amp;#8217;épisode 16 de la saison 2. Dans cet épisode, un retour est fait sur le personnage de Walter Bishop dans les années 1980. Il fallait par conséquent un générique qui va bien, ce qui m&amp;#8217;a bien fait rire au passage.&lt;/p&gt;
&lt;center&gt;&lt;video id=&quot;video&quot; src=&quot;http://respawner.fr/blog/public/Divers/fringe.ogv&quot; controls=&quot;&quot; width=&quot;360&quot;&gt;Générique Fringe&lt;/video&gt;&lt;/center&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Un nouveau pas vers GNOME 3.0 : GNOME 2.30 est là</title>
    <link>http://respawner.fr/blog/index.php?post/2010/03/31/Un-nouveau-pas-vers-GNOME-3.0-%3A-GNOME-2.30-est-l%C3%A0</link>
    <guid isPermaLink="false">urn:md5:928f7f17e6684e5277a68d03f2572367</guid>
    <pubDate>Wed, 31 Mar 2010 23:58:00 +0200</pubDate>
    <dc:creator>Guillaume Mazoyer</dc:creator>
        <category>Ubuntu</category>
        <category>10.04</category><category>GNOME</category><category>GTK</category><category>Libre</category><category>Linux</category><category>Lucid Lynx</category><category>Ubuntu</category>    
    <description>    &lt;p&gt;&lt;img src=&quot;http://respawner.fr/blog/public/Icones/astuce.png&quot; alt=&quot;&quot; style=&quot;float: left; margin-top: 0; margin-right: 1em; margin-bottom: 1em; margin-left: 0; &quot; title=&quot;astuce.png, oct. 2008&quot; /&gt;Comme vous le saviez peut-être, aujourd&amp;#8217;hui est sortie la version 2.30 de &lt;a href=&quot;http://www.gnome.org/&quot; hreflang=&quot;en&quot;&gt;GNOME&lt;/a&gt;. Cette version qui devait à la base être nommée 3.0 n&amp;#8217;est qu&amp;#8217;une étape vers GNOME 3.0. Qu&amp;#8217;est-ce que GNOME&amp;#160;? C&amp;#8217;est un environnement de bureau axé sur la simplicité, qui offre à l&amp;#8217;utilisateur des applications pour pouvoir exploiter son ordinateur du mieux possible. Il offre également pour les développeurs tout un panel de bibliothèques qui permet de développer des applications s&amp;#8217;intégrant au bureau GNOME de la manière la plus conviviale possible.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://respawner.fr/blog/public/GNOME/gnome-2.30.png&quot;&gt;&lt;img src=&quot;http://respawner.fr/blog/public/GNOME/.gnome-2.30_m.jpg&quot; alt=&quot;&quot; style=&quot;margin-top: 0; margin-right: auto; margin-bottom: 0; margin-left: auto; display: block; &quot; title=&quot;gnome-2.30.png, mar. 2010&quot; /&gt;&lt;/a&gt;&lt;br /&gt;C&amp;#8217;est donc aujourd&amp;#8217;hui (31 mars 2010) que la version &lt;strong&gt;2.30&lt;/strong&gt; de GNOME sort. Au programme, un mode d&amp;#8217;affichage partagé pour &lt;a href=&quot;http://live.gnome.org/Nautilus&quot; hreflang=&quot;en&quot;&gt;Nautilus&lt;/a&gt;, &lt;a href=&quot;http://live.gnome.org/Empathy&quot; hreflang=&quot;en&quot;&gt;Empathy&lt;/a&gt; qui progresse grâce à des méthodes de &lt;em&gt;&lt;a href=&quot;http://fr.wikipedia.org/wiki/Glisser-d%C3%A9poser&quot; hreflang=&quot;fr&quot;&gt;drag&amp;#8217;n&amp;#8217;drop&lt;/a&gt;&lt;/em&gt; et une meilleure gestion de quelques protocoles de messagerie instantanée, une synchronisation automatique de notes de &lt;a href=&quot;http://projects.gnome.org/tomboy/&quot; hreflang=&quot;en&quot;&gt;Tomboy&lt;/a&gt;, le lecteur de PDF &lt;a href=&quot;http://live.gnome.org/Evince&quot; hreflang=&quot;en&quot;&gt;Evince&lt;/a&gt; améliore sa gestion de l&amp;#8217;impression et ajoute la possibilité d&amp;#8217;attacher des notes, enfin la navigateur &lt;a href=&quot;http://projects.gnome.org/epiphany/&quot; hreflang=&quot;en&quot;&gt;Epiphany&lt;/a&gt; se voit octroyé de nouvelles fonctionnalités. Bien entendu, je ne fais pas toute la liste des nouveautés car il y a une &lt;a href=&quot;http://library.gnome.org/misc/release-notes/2.30/&quot; hreflang=&quot;fr&quot;&gt;page pour ça&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Pour ma part, je m&amp;#8217;intéresse particulièrement aux changements opérés dans les bibliothèques et surtout &lt;a href=&quot;http://www.gtk.org/&quot; hreflang=&quot;en&quot;&gt;GTK+ 2.20&lt;/a&gt; afin de savoir où aller avec &lt;a href=&quot;http://java-gnome.sourceforge.net/&quot; hreflang=&quot;en&quot;&gt;java-gnome&lt;/a&gt; (qui devrait commencer à tirer partie de GNOME 2.30). N&amp;#8217;oublions pas également que GNOME 2.30 sera (et même est déjà utilisé) pour la version, déjà très populaire,&amp;nbsp;&lt;strong&gt;10.04&lt;/strong&gt;, aussi connu sous le nom de &lt;strong&gt;Lucid Lynx&lt;/strong&gt;, de &lt;a href=&quot;http://www.ubuntu.com/&quot; hreflang=&quot;en&quot;&gt;Ubuntu&lt;/a&gt;. Celle-ci sera d&amp;#8217;ailleurs une nouvelle LTS (Long Term Support).&lt;br /&gt;&lt;br /&gt;Il ne nous reste qu&amp;#8217;à apprécier cette nouvelle release (&lt;a href=&quot;http://respawner.fr/blog/index.php?post/2010/02/28/Les-ic%C3%B4nes-dans-GNOME%2C-un-vrai-souci&quot; hreflang=&quot;en&quot;&gt;de manière globale&lt;/a&gt;) et regarder comment va se profiler le futur et révolutionnaire &lt;a href=&quot;http://live.gnome.org/TwoPointThirtyone/&quot; hreflang=&quot;en&quot;&gt;GNOME 3.0&lt;/a&gt;.&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Ubuntu Server Karmic Koala et Dedibox</title>
    <link>http://respawner.fr/blog/index.php?post/2010/03/05/Ubuntu-Server-Karmic-Koala-et-Dedibox</link>
    <guid isPermaLink="false">urn:md5:f07fdd933d9472b3c56fab799cf96b3f</guid>
    <pubDate>Fri, 05 Mar 2010 17:21:00 +0100</pubDate>
    <dc:creator>Guillaume Mazoyer</dc:creator>
        <category>Ubuntu</category>
        <category>9.10</category><category>Dedibox</category><category>Karmic Koala</category><category>Libre</category><category>Linux</category><category>Serveur</category><category>Ubuntu</category>    
    <description>    &lt;p&gt;&lt;img title=&quot;bash.png, oct. 2008&quot; style=&quot;float: left; margin: 0 1em 1em 0;&quot; alt=&quot;&quot; src=&quot;http://respawner.fr/blog/public/Icones/bash.png&quot; /&gt;Certains d&amp;#8217;entre vous l&amp;#8217;on peut être remarqué, le serveur, et donc par conséquent le blog, était indisponible depuis très tôt ce matin (depuis environ 01h00) jusqu&amp;#8217;à très tard ce matin (jusqu&amp;#8217;à environ 11h45). La cause, j&amp;#8217;ai tenté de migrer la &lt;a hreflang=&quot;fr&quot; href=&quot;http://www.dedibox.fr/&quot;&gt;Dedibox&lt;/a&gt;, qui était sous &lt;a hreflang=&quot;fr&quot; href=&quot;http://www.ubuntu-fr.org/&quot;&gt;Ubuntu&lt;/a&gt; 9.04, vers Ubuntu 9.10. Malheureusement, j&amp;#8217;ai pensé que la migration allait se passer comme toutes les autres fois. Mais ça n&amp;#8217;a pas été le cas comme vous avez pu vous en douter. Donc pour la mémoire (et m&amp;#8217;obliger à prendre plus d&amp;#8217;informations auparavant) et pour ceux qui tomberaient dans le piège également, voilà comment procéder pour garder son serveur fonctionnel.&lt;br /&gt;&lt;br /&gt;On a correctement mis à jour votre installation de &lt;a hreflang=&quot;en&quot; href=&quot;http://www.ubuntu.com/products/whatIsubuntu/serveredition&quot;&gt;Ubuntu Server&lt;/a&gt; via les commandes suivantes&amp;#160;:&lt;br /&gt;&lt;code&gt;~$ sudo aptitude update&lt;br /&gt;~$ sudo aptitude full-upgrade&lt;br /&gt;~$ sudo aptitude install update-manager-core&lt;br /&gt;~$ sudo do-release-upgrade&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Là tout est à jour, mais on a le malheur (qui a été le mien) de redémarrer après avoir remplacé dans le fichier &lt;em&gt;menu.lst&lt;/em&gt; de &lt;a hreflang=&quot;fr&quot; href=&quot;http://fr.wikipedia.org/wiki/GRand_Unified_Bootloader&quot;&gt;GRUB&lt;/a&gt; les&amp;#160;:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;root=UUID=4564577843545963533&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;par des&amp;#160;:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;root=/dev/sda2&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Manque de chance, le serveur ne veut pas booter quand même. Et ceci est dû au &lt;a hreflang=&quot;fr&quot; href=&quot;http://fr.wikipedia.org/wiki/Noyau_de_syst%C3%A8me_d%27exploitation&quot;&gt;kernel&lt;/a&gt; utilisé par la Dedibox. Pour remédier à cela, il faut installer le kernel proposé dans les dépôts de Ubuntu. Immédiatement, on démarre le système de secours. Pour accéder à ce mode, on passe par l&amp;#8217;interface d&amp;#8217;administration, puis &lt;em&gt;Système de secours&lt;/em&gt; et on clique&lt;em&gt; Passer votre serveur en mode de secours&lt;/em&gt;. La machine est ainsi électriquement redémarrée et les identifiant / mot de passe du compte &lt;a hreflang=&quot;fr&quot; href=&quot;http://fr.wikipedia.org/wiki/Secure_Shell&quot;&gt;SSH&lt;/a&gt; nous sont donnés.&lt;/p&gt;
&lt;h3&gt;Préparons le terrain&lt;/h3&gt;
&lt;p&gt;Une fois connecté en SSH, on arrive sur un terminal sans privilèges d&amp;#8217;administration. On va donc se les donner en utilisant le mot de passe qui nous a été fournis.&lt;br /&gt;&lt;code&gt;~$ sudo su -&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Maintenant, on va monter les partitions pour déterminer vraiment d&amp;#8217;où vient le souci et dans notre cas installer le kernel qui va bien. Pour cela, on utilise les commandes &lt;strong&gt;mount&lt;/strong&gt; et &lt;strong&gt;chroot&lt;/strong&gt;.&lt;br /&gt;&lt;code&gt;~# mkdir server&lt;br /&gt;&lt;br /&gt;~# mount /dev/sda2 server&lt;br /&gt;~# mount /dev/sda1 server/boot&lt;br /&gt;&lt;br /&gt;~# mount --bind /proc server/proc&lt;br /&gt;~# mount --bind /sys server/sys&lt;br /&gt;~# mount --bind /dev server/dev&lt;br /&gt;&lt;br /&gt;~# chroot server&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;À ce stade, on est sur notre serveur. On peut donc y effectuer les opérations nécessaires.&lt;/p&gt;
&lt;h3&gt;Réparons&lt;/h3&gt;
&lt;p&gt;Comme je l&amp;#8217;ai dit plus haut, pour réparer les dégâts, il faut utiliser le kernel générique à la place du kernel Dedibox. On installe alors le paquet &lt;strong&gt;linux-server&lt;/strong&gt;.&lt;br /&gt;&lt;code&gt;root@serveur sudo aptitude update&lt;br /&gt;root@serveur sudo aptitude full-upgrade&lt;br /&gt;root@serveur sudo aptitude install linux-server&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;On oublie surtout pas de remplacer le &lt;strong&gt;root=UUID=&amp;#8230;&lt;/strong&gt; par &lt;strong&gt;root=/dev/sda2&lt;/strong&gt; dans le fichier &lt;em&gt;menu.lst&lt;/em&gt; de GRUB et voilà, la réparation est faite.&lt;/p&gt;
&lt;h3&gt;Chouette, ça marche&amp;#160;!&lt;/h3&gt;
&lt;p&gt;La réparation est terminé, on peut revenir sur une utilisation normale du serveur. Cependant, il faut prendre soit de terminer tous les processus que l&amp;#8217;on a lancé en &lt;strong&gt;chroot&lt;/strong&gt; et de démonter toutes les partitions.&lt;br /&gt;&lt;code&gt;root@serveur exit&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;~# umount server/proc&lt;br /&gt;~# umount server/sys&lt;br /&gt;~# umount server/dev&lt;br /&gt;&lt;br /&gt;~# umount server/boot&lt;br /&gt;~# umount server&lt;br /&gt;&lt;br /&gt;~# exit&lt;br /&gt;~$ exit&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Pour finir, on retourne dans la console d&amp;#8217;administration Dedibox et on clique sur &lt;em&gt;Cliquer ici pour repasser en mode normal&lt;/em&gt;. Et là, le boot devrait se faire sans aucun souci. Conclusion, il ne faut pas se précipiter et se dire que tout réinstaller est la seule solution. Ici, on a réparé le tout sans perte de données mais par contre il y a eu un downtime (et un long pour moi, je tiens à m&amp;#8217;en excuser d&amp;#8217;ailleurs). C&amp;#8217;est après avoir été dans ce genre de situations, que l&amp;#8217;on se dit que GNU/Linux c&amp;#8217;est quand même vachement bien. Mais ce n&amp;#8217;est pas une raison pour faire n&amp;#8217;importe quoi&amp;#160;!&lt;/p&gt;
&lt;h3&gt;Sources&lt;/h3&gt;
&lt;p&gt;&lt;a hreflang=&quot;fr&quot; href=&quot;http://artisan.karma-lab.net/node/1743&quot;&gt;Artisan Numérique&lt;/a&gt;&lt;br /&gt;&lt;a hreflang=&quot;fr&quot; href=&quot;http://www.dedibox-news.com/viewtopic.php?pid=60943#p60943&quot;&gt;Forum Dedibox News&lt;/a&gt;&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Ubuntu, nouveau look</title>
    <link>http://respawner.fr/blog/index.php?post/2010/03/03/Ubuntu%2C-nouveau-look</link>
    <guid isPermaLink="false">urn:md5:640c119d053642c7f47950a731eefc4b</guid>
    <pubDate>Wed, 03 Mar 2010 22:29:00 +0100</pubDate>
    <dc:creator>Guillaume Mazoyer</dc:creator>
        <category>Ubuntu</category>
        <category>Libre</category><category>Linux</category><category>Ubuntu</category>    
    <description>    &lt;p&gt;&lt;img title=&quot;ubuntu.png, oct. 2008&quot; style=&quot;float: left; margin: 0 1em 1em 0;&quot; alt=&quot;&quot; src=&quot;http://respawner.fr/blog/public/Icones/ubuntu.png&quot; /&gt;On l&amp;#8217;attendait depuis un moment, &lt;a hreflang=&quot;en&quot; href=&quot;http://www.ubuntu.com/&quot;&gt;Ubuntu&lt;/a&gt; va changer de look c&amp;#8217;est officiel. Nouveau thème pour le système, nouveau style pour le logo et la marque. Personnellement, j&amp;#8217;aime le nouveau style sobre et surtout au revoir le marron que l&amp;#8217;on a pu connaître (même si je l&amp;#8217;aimais bien). Pour voir tout ça, rendez-vous &lt;a hreflang=&quot;en&quot; href=&quot;http://fridge.ubuntu.com/node/1991&quot;&gt;ici&lt;/a&gt; et &lt;a hreflang=&quot;en&quot; href=&quot;https://wiki.ubuntu.com/Brand&quot;&gt;là&lt;/a&gt;. Voilà enfin un petit coup de jeune pour &lt;del&gt;notre&lt;/del&gt; mon système d&amp;#8217;exploitation préféré. Il ne reste plus qu&amp;#8217;à savoir si ce nouveau look va plaire à la communauté.&lt;br /&gt;&lt;br /&gt;Au niveau des thèmes du système, il y en deux. Un relativement sombre et l&amp;#8217;autre qui est plus clair. En revanche, sur les deux thèmes, les boutons de gestion d&amp;#8217;une fenêtre (fermer, réduire, agrandir) sont maintenant placés sur la gauche (toujours en haut bien entendu) de la fenêtre. On constate que le tableau de bord de &lt;a hreflang=&quot;en&quot; href=&quot;http://www.gnome.org/&quot;&gt;GNOME&lt;/a&gt; a droit à de nouvelles icônes.&lt;/p&gt;
&lt;center&gt;&lt;a href=&quot;http://respawner.fr/blog/public/Ubuntu/darktheme.png&quot;&gt;&lt;img title=&quot;darktheme.png, mar. 2010&quot; alt=&quot;&quot; src=&quot;http://respawner.fr/blog/public/Ubuntu/.darktheme_s.jpg&quot; /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href=&quot;http://respawner.fr/blog/public/Ubuntu/lighttheme.png&quot;&gt;&lt;img title=&quot;lighttheme.png, mar. 2010&quot; alt=&quot;&quot; src=&quot;http://respawner.fr/blog/public/Ubuntu/.lighttheme_s.jpg&quot; /&gt;&lt;/a&gt;&lt;/center&gt;
&lt;p&gt;Le thème du boot est également modifié pour quelque chose plus en accord avec les thèmes systèmes et le nouveau look.&lt;/p&gt;
&lt;a href=&quot;http://respawner.fr/blog/public/Ubuntu/boot.png&quot;&gt;&lt;img title=&quot;boot.png, mar. 2010&quot; style=&quot;margin: 0 auto; display: block;&quot; alt=&quot;&quot; src=&quot;http://respawner.fr/blog/public/Ubuntu/.boot_s.jpg&quot; /&gt;&lt;/a&gt;
&lt;p&gt;Toujours dans la continuité les logos ont changé avec une nouvelle police, entre autre, que je trouve très réussite.&lt;/p&gt;
&lt;a href=&quot;http://respawner.fr/blog/public/Ubuntu/blackubuntulogo.png&quot;&gt;&lt;img src=&quot;http://respawner.fr/blog/public/Ubuntu/blackubuntulogo.png&quot; alt=&quot;blackubuntulogo.png&quot; style=&quot;margin: 0 auto; display: block;&quot; title=&quot;blackubuntulogo.png, mar. 2010&quot; /&gt;&lt;/a&gt;
&lt;p&gt;Enfin pour terminer, les divers sites web, CDs et pochettes, les habits et accessoires vont être mis à la nouvelle mode.&lt;/p&gt;</description>
    
    
    
      </item>
    
</channel>
</rss>
