<?xml version="1.0"?>
<rss version="2.0">

<channel>
	<title>Planète des utilisateurs Debian</title>
	<link>http://planet-fr.debian.net/users/</link>
	<language>en</language>
	<description>Planète des utilisateurs Debian - http://planet-fr.debian.net/users/</description>

<item>
	<title>Jean-Christophe Dubacq: Les aventuriers du paquet (debian) recommandé perdu</title>
	<guid permalink="False">urn:md5:efbfd2cd8a549306c862dea8f9348120</guid>
	<link>http://jean-christophe.dubacq.fr/post/Les-aventuriers-du-paquet-%28debian%29-recommand%C3%A9-perdu</link>
	<description>&lt;p&gt;Avez-vous déjà eu un dysfonctionnement d&amp;rsquo;un programme lié au fait qu&amp;rsquo;un paquet recommandé, que vous ne jugiez pas utile, avait été enlevé alors qu&amp;rsquo;il était, en fait, utile&amp;thinsp;?&lt;/p&gt;
&lt;p&gt;Parce que les paquets recommandés sont maintenant installés par défaut en même temps que le paquet demandé, mais pas toujours (il y a une heuristique un peu spéciale pour ne pas tenter de réinstaller tout le temps le même paquet dont vous ne voulez vraiment pas&amp;thinsp;; pour autant que je le sache, il s&amp;rsquo;agit de ne pas installer un paquet recommandé s&amp;rsquo;il aurait dû l&amp;rsquo;être et qu&amp;rsquo;il ne l&amp;rsquo;est pas, tout simplement). Au bout d&amp;rsquo;un certain temps, ça peut être agréable (nécessaire&amp;thinsp;?) de faire un inventaire des paquets qui auraient pu être installés mais refusés à un moment donné. De plus, certaines manipulations brutales du gestionnaire de paquets peuvent mettre des paquets sur votre système et qu&amp;rsquo;il lui manque une vraie dépendance (Depends ou Pre-Depends). Même si &lt;code&gt;aptitude&lt;/code&gt; est capable de lister les problèmes for la deuxième question (aptitude search ~i~b est &lt;em&gt;grosso modo&lt;/em&gt; la réponse), le premier problème n&amp;rsquo;admet pas de solutions simples (les recherches avec &lt;code&gt;aptitude&lt;/code&gt; ne permettent pas de faire la différence entre un dépendance de A ou B, et une dépendance de A et B).
&lt;/p&gt;
&lt;p&gt;J&amp;rsquo;ai donc écrit (toujours en python avec &lt;a href=&quot;http://apt.alioth.debian.org/python-apt-doc/&quot; hreflang=&quot;en&quot;&gt;python-apt&lt;/a&gt; ≥ 0.7.93, donc dans &lt;em&gt;unstable&lt;/em&gt; actuellement) un programme &lt;code&gt;apt-missing&lt;/code&gt;.
&lt;/p&gt;
&lt;p&gt;Seules les dépendances positives ont été envisagées (Pre-Depends, Depends, Recommends, Suggests et aussi si on veut Enhances). Les dépendances négatives ne sont pas encore traitées mais là c&amp;rsquo;est la présence d&amp;rsquo;un paquet dépendant dans une clause qui doit déclencher une réaction, pas l&amp;rsquo;absence de tous les paquets de la clause.
&lt;/p&gt;
&lt;p&gt;Le programme est hébergé &lt;a href=&quot;https://www-lipn.univ-paris13.fr/projects/jcdubacq/wiki/AptMoreUtils&quot; hreflang=&quot;en&quot;&gt;là&lt;/a&gt;, et les paquets sont hébergés  &lt;a href=&quot;http://debian.lipn.fr/html/package.apt-moreutils.html&quot; hreflang=&quot;en&quot;&gt;ici&lt;/a&gt;.
&lt;/p&gt;
&lt;h3&gt;Exemples&lt;/h3&gt;
Lancer &lt;code&gt;apt-missing&lt;/code&gt; seul (comme &lt;code&gt;apt-missing --recommends&lt;/code&gt;)&amp;nbsp;:
&lt;pre&gt;# Package abiword has some Recommends missing:&lt;br /&gt;abiword-docs&lt;br /&gt;# Package defoma has some Recommends missing:&lt;br /&gt;libfont-freetype-perl&lt;br /&gt;# Package doc-debian-fr has some Recommends missing:&lt;br /&gt;developers-reference-fr&lt;br /&gt;maint-guide-fr&lt;br /&gt;apt-howto-fr&lt;br /&gt;# Package dwww has some Recommends missing:&lt;br /&gt;swish++&lt;br /&gt;[...]&lt;br /&gt;# Package xchat has some Recommends missing:&lt;br /&gt;tcl&lt;br /&gt;## &quot;Depends&quot; broken in 0 packages&lt;br /&gt;## &quot;Pre-Depends&quot; broken in 0 packages&lt;br /&gt;## &quot;Recommends&quot; broken in 31 packages&lt;/pre&gt;
D&amp;rsquo;ailleurs, j&amp;rsquo;ai pu ainsi localiser des modules noyaux installés qui recommandaient des noyaux absents, parce que tout simplement ils avaient disparus. J&amp;rsquo;ai donc pu les effacer.
&lt;code&gt;apt-missing -a&lt;/code&gt; cherche tous les types de dépendance positifs&amp;nbsp;:
&lt;pre&gt;# Package a2ps has some Suggests missing:&lt;br /&gt;html2ps&lt;br /&gt;t1-cyrillic&lt;br /&gt;# Package abiword has some Recommends missing:&lt;br /&gt;abiword-docs&lt;br /&gt;[...]&lt;br /&gt;## &quot;Depends&quot; broken in 0 packages&lt;br /&gt;## &quot;Pre-Depends&quot; broken in 0 packages&lt;br /&gt;## &quot;Recommends&quot; broken in 31 packages&lt;br /&gt;## &quot;Suggests&quot; broken in 377 packages&lt;/pre&gt;
&lt;h3&gt;Options&lt;/h3&gt;
&lt;dl&gt;
&lt;dt&gt;-h|--help&lt;/dt&gt;&lt;dd&gt;
Ce texte d&amp;rsquo;aide
&lt;/dd&gt;&lt;dt&gt;-d|--depends&lt;/dt&gt;&lt;dd&gt;
Depends ou Pre-Depends manquants
&lt;/dd&gt;&lt;dt&gt;-r|--recommends&lt;/dt&gt;&lt;dd&gt;
Recommends manquants (par défaut)
&lt;/dd&gt;&lt;dt&gt;-s|--suggests&lt;/dt&gt;&lt;dd&gt;
Suggests manquants
&lt;/dd&gt;&lt;dd&gt;-a|--any&lt;/dd&gt;&lt;dd&gt;
N&amp;rsquo;importe quelle dépendance positive (comme ci-dessus)
&lt;/dd&gt;&lt;dt&gt;-t|--type=&lt;em&gt;string&lt;/em&gt;&lt;/dt&gt;&lt;dd&gt;
&lt;em&gt;     Dépendance quelconque (par ex. Enhances)
&lt;/em&gt;&lt;/dd&gt;&lt;dt&gt;&lt;em&gt;-p|--package=&lt;em&gt;string&lt;/em&gt;&lt;/em&gt;&lt;/dt&gt;&lt;dd&gt;
&lt;em&gt;&lt;em&gt;    Liste de paquets à analyser séparés par un espace (on peut répéter l&amp;rsquo;option, et si aucune option -p n&amp;rsquo;est présente, tous les paquets sont analysés)&lt;/em&gt;&lt;/em&gt;&lt;/dd&gt;&lt;/dl&gt;</description>
	<pubDate>dim, 07 fév 2010 23:15:04 +0000</pubDate>
</item>
<item>
	<title>Carl Chenet: Fosdem2010 : Les premières conférences</title>
	<guid permalink="False">http://carlchenet.wordpress.com/?p=271</guid>
	<link>http://carlchenet.wordpress.com/2010/02/06/fosdem2010-les-premieres-conferences/</link>
	<description>&lt;br /&gt;&lt;p&gt;Après une arrivée tôt ce matin, nous avons rejoint les conférences du &lt;a title=&quot;Page d'accueil du Fosdem&quot; href=&quot;http://www.fosdem.org/2010/&quot; target=&quot;_blank&quot;&gt;FOSDEM&lt;/a&gt; qui bat actuellement son plein.&lt;/p&gt;
&lt;p&gt;La première impression : beaucoup, beaucoup de monde. Des gens calés. Des célébrités du libre un peu partout. Des tonnes de passionnés. Des développeurs Debian en kilt. Les membres de &lt;a title=&quot;Page d'accueil de l'AFPY&quot; href=&quot;http://www.afpy.org/&quot; target=&quot;_blank&quot;&gt;l&amp;#8217;Afpy&lt;/a&gt; venus en masse. C&amp;#8217;est aussi l&amp;#8217;occasion de croiser des personnes avec lesquelles nous discutons sur Internet tous les jours mais ne voyons que rarement.&lt;/p&gt;
&lt;p&gt;À chaque break, les stands des distributions et des projets phare sont pris d&amp;#8217;assaut par des foules en manque de goodies. Les cadavres de différentes bières belges remplissent les poubelles ici et là.&lt;/p&gt;
&lt;p&gt;Des dizaines de personnes font la queue devant la salle Mozilla qui s&amp;#8217;annonce déjà pleine pour la conférence HTML5&lt;/p&gt;
&lt;p&gt;La suite dans un prochain billet.&lt;/p&gt;
  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/carlchenet.wordpress.com/271/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/carlchenet.wordpress.com/271/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/carlchenet.wordpress.com/271/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/carlchenet.wordpress.com/271/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/carlchenet.wordpress.com/271/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/carlchenet.wordpress.com/271/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/carlchenet.wordpress.com/271/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/carlchenet.wordpress.com/271/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/carlchenet.wordpress.com/271/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/carlchenet.wordpress.com/271/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=carlchenet.wordpress.com&amp;blog=7722010&amp;post=271&amp;subd=carlchenet&amp;ref=&amp;feed=1&quot; /&gt;</description>
	<pubDate>sam, 06 fév 2010 14:59:05 +0000</pubDate>
</item>
<item>
	<title>Christophe Nowicki: Gestion de la lumière d’ambiance avec le protocole DMX sous Debian GNU/Linux</title>
	<guid permalink="False">http://www.csquad.org/?p=1057</guid>
	<link>http://www.csquad.org/2010/01/31/dmx-lumiere-ambiance-debian/</link>
	<description>&lt;p&gt;La technologie des lumières à LEDs offre la possibilité de placer une source de lumière &lt;strong&gt;n&amp;#8217;importe où&lt;/strong&gt; (aquarium, meubles, faux plafonds, derrière un écran, etc&amp;#8230;). &lt;/p&gt;
&lt;p&gt;Par contre, les LEDs disposent de &lt;strong&gt;plus de fonctionnalités&lt;/strong&gt; que les ampoules classiques.&lt;br /&gt;
En effet, en plus d&amp;#8217;un bouton d&amp;#8217;allumage, vous avez la possibilité de changer la couleur de la lumière, la faire varier dans le temps, modifier son intensité, jouer une séquence, etc&amp;#8230; &lt;/p&gt;
&lt;p&gt;Avec un nombre de possiblités plus grand, les interfaces de contrôle classique (&lt;a href=&quot;http://en.wikipedia.org/wiki/X10_(industry_standard)&quot;&gt;X10&lt;/a&gt;, &lt;a href=&quot;http://wiki.linuxmce.org/index.php/PLCBUS&quot;&gt;PLCBUS&lt;/a&gt;, etc&amp;#8230;) ne suffisent pas.&lt;/p&gt;
&lt;p&gt;Il est donc nécessaire de placer un peu plus d&amp;#8217;intelligence dans le réseau d&amp;#8217;illumination à l&amp;#8217;aide du protocole &lt;a href=&quot;http://en.wikipedia.org/wiki/DMX512&quot;&gt;DMX&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;Ce protocole est utilisé dans le monde des concerts, des plateaux de télévision et des spectacles.&lt;br /&gt;
Néanmoins, il est tout à fait possible de le détourner pour un usage domotique.&lt;/p&gt;
&lt;p&gt;Dans ce billet, je vais décrire l&amp;#8217;utilisation d&amp;#8217;un contrôleur LED RGB DMX et de l&amp;#8217;interface &lt;a href=&quot;http://www.enttec.com/index.php?main_menu=Products&amp;pn=70303&amp;show=description&amp;name=opendmxusb&quot;&gt;OpenDMX&lt;/a&gt; de chez ENTTEC, à l&amp;#8217;aide du projet &lt;a href=&quot;http://code.google.com/p/linux-lighting/&quot;&gt;OLA&lt;/a&gt; sous &lt;a href=&quot;http://www.debian.org/&quot;&gt;Debian GNU/Linux&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Principe de fonctionnement&lt;/h3&gt;
&lt;p&gt;Voici le schèma du montage:&lt;br /&gt;
&lt;img src=&quot;http://www.csquad.org/wp-content/uploads/2009/12/dmx_led_overview.png&quot; alt=&quot;dmx_led_overview&quot; title=&quot;dmx_led_overview&quot; width=&quot;814&quot; height=&quot;205&quot; class=&quot;alignnone size-full wp-image-886&quot; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;le PC communique à l&amp;#8217;aide du port USB avec un contrôleur DMX ; &lt;/li&gt;
&lt;li&gt;les contrôleurs LEDs mis en série convertissent les ordres en instructions RGB ;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Et voici ce que cela donne :&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.csquad.org/wp-content/uploads/2010/01/opendmx_rgb_led_strip_usb.jpg&quot;&gt;&lt;img src=&quot;http://www.csquad.org/wp-content/uploads/2010/01/opendmx_rgb_led_strip_usb-300x197.jpg&quot; alt=&quot;OpenDMX RGB LED&quot; title=&quot;opendmx_rgb_led_strip_usb&quot; width=&quot;300&quot; height=&quot;197&quot; class=&quot;alignnone size-medium wp-image-1087&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Matériel&lt;/h3&gt;
&lt;p&gt;Voici le matériel nécessaire pour un bandeau à LED, le tout fonctionne biensûr sous Debian GNU/Linux est &lt;em&gt;FOSS Friendly&lt;/em&gt; &lt;img src=&quot;http://www.csquad.org/wp-includes/images/smilies/icon_wink.gif&quot; alt=&quot;;-)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;
&lt;table border=&quot;1&quot; width=&quot;80%&quot;&gt;
&lt;tr&gt;
&lt;th&gt;Produit&lt;/th&gt;
&lt;th&gt;Prix&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;http://www.sirs-e.com/st/open-dmx-usb-p-47.html&quot;&gt;OPEN DMX USB Hardware Interface&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;$52.00 &amp;#8211; $60.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;http://www.sirs-e.com/st/rgb-led-dmx-controller-2-p-2930.html&quot;&gt;RGB LED DMX Controller 2&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;$48.00 &amp;#8211; $76.80&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;http://www.sirs-e.com/st/rj45-female-cable-adapter-p-2976.html&quot;&gt;RJ45 Connetor to XLR Female Connector&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;$11.20 &amp;#8211; $14.25 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;http://www.sirs-e.com/st/rj45-male-cable-adapter-p-2944.html&quot;&gt;RJ45 to XLR Male DMX Cable Adapter 3ft&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;$10.99 &amp;#8211; $14.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;http://www.sirs-e.com/st/adapter-pole-female-pole-male-p-35.html&quot;&gt;DMX/XLR converter connector&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;$10.50 &amp;#8211; $12.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;http://www.sirs-e.com/st/controller-power-supply-usaeu-p-2923.html&quot;&gt;LED Controller Power Supply, USA/EU&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;$23.10 &amp;#8211; $36.96&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;http://www.sirs-e.com/st/terminator-pole-male-connector-p-133.html&quot;&gt;DMX 512 Terminator, 3 Pole Male Connector&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;$7.94&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;http://www.ampoule-leds.fr/mini-bandeau-rigide-rgb-12-led-20cm-150degres-12v-dc-p-2491.html&quot;&gt;Mini Bandeau Rigide RGB 12 Led 20cm 150° 12v DC&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;6 &amp;euro; &amp;#8211; 12,95 &amp;euro;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;http://www.ampoule-leds.fr/raccord-intermediaire-pour-bandeau-lumineux-led-longueur-5cm-p-638.html&quot;&gt;Raccord intermédiaire pour Bandeau lumineux à Led Longueur 5cm&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;1.5 &amp;euro; &lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;Pour le cablage, entre le bandeau lumineux et le contrôleur à LED, Il faut couper une extrémité du cable de raccord et la dénuder pour brancher sur le bornier à quatre vis de sortie RGB.&lt;/p&gt;
&lt;h3&gt;Installation du matériel&lt;/h3&gt;
&lt;p&gt;Une fois que vous avez branché l&amp;#8217;OpenDMX au PC, vous devez voir un convertisseur USB-Serial (UART) à l&amp;#8217;aide de &lt;em&gt;lsusb&lt;/em&gt; :&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
$ lsusb&lt;br /&gt;
Bus 002 Device 006: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Pour faire fonctionner l&amp;#8217;OpenDMX, vous avez besoin du module noyau &lt;em&gt;dmx-usb&lt;/em&gt; et d&amp;#8217;un environnement de compilation pour les modules. (paquet linux-headers*, etc&amp;#8230;).&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
# cd /usr/src&lt;br /&gt;
# git-clone http://www.erwinrol.com/git/dmx_usb_module/&lt;br /&gt;
# cd dmx_usb_module&lt;br /&gt;
# make&lt;br /&gt;
# cp ./dmx_usb.ko /lib/modules/$(uname -r)/kernel/drivers/usb/serial&lt;br /&gt;
# depmod -a&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Comme, l&amp;#8217;OpenDMX est un convertiseur &lt;em&gt;USB-Serial&lt;/em&gt;, le noyau par défaut le présente comme une interface &lt;em&gt;/dev/ttyUSB&lt;/em&gt;.&lt;br /&gt;
Il est donc nécessaire de &lt;em&gt;blacklister&lt;/em&gt; les modules &lt;em&gt;usbserial&lt;/em&gt; dans le fichier &lt;em&gt;/etc/modprobe.d/blacklist&lt;/em&gt;, en ajoutant les lignes suivantes :&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
blacklist usbserial&lt;br /&gt;
blacklist usb-serial&lt;br /&gt;
blacklist ftdi_sio&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Ensuite, ajouter le module &lt;em&gt;dmx_usb&lt;/em&gt; dans le fichier &lt;em&gt;/etc/modules&lt;/em&gt; et rebooter la machine.&lt;br /&gt;
Au reboot, vous devez avoir une interface &lt;em&gt;/dev/dmx0&lt;/em&gt;, qu&amp;#8217;il faut rendre accessible pour tous les utilisateurs :&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
# ls -l /dev/dmx0&lt;br /&gt;
crw-rw---- 1 root root 180, 192 2010-01-30 00:37 /dev/dmx0&lt;br /&gt;
# chmod a+rw /dev/dmx0&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Installation du logiciel pour la gestion de la lumière : Open Lighting Architecture (OLA)&lt;/h3&gt;
&lt;p&gt;Comme, il n&amp;#8217;y a pas de paquets Debian disponibles pour ce programme, je vais décrire une procédure d&amp;#8217;installation à partir des sources :&lt;/p&gt;
&lt;h4&gt;Dépendances&lt;/h4&gt;
&lt;p&gt;Vous allez avoir besoin des dépendances suivantes pour la compilation :&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
# apt-get install  build-essential uuid-dev libcppunit-dev libgcrypt-dev&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;h4&gt;Compilation de Protocol Buffers de Google&lt;/h4&gt;
&lt;p&gt;Vous avez besoin de &lt;a href=&quot;http://code.google.com/p/protobuf/&quot;&gt;protobuf&lt;/a&gt;, pour la gestion de l&amp;#8217;échange de données :&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
# cd /usr/src&lt;br /&gt;
# wget http://protobuf.googlecode.com/files/protobuf-2.3.0.tar.bz2&lt;br /&gt;
# tar xjf protobuf-2.3.0.tar.bz2&lt;br /&gt;
# cd protobuf-2.3.0&lt;br /&gt;
# ./configure ; make ; make install&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;h4&gt;Compilation de google-ctemplate&lt;/h4&gt;
&lt;p&gt;Vous avez besoin du système &lt;a href=&quot;http://code.google.com/p/google-ctemplate/&quot;&gt;ctemplate&lt;/a&gt; :&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
# cd /usr/src&lt;br /&gt;
# wget http://google-ctemplate.googlecode.com/files/ctemplate-0.96.tar.gz&lt;br /&gt;
# tar xzf ctemplate-0.96.tar.gz&lt;br /&gt;
# cd ctemplate-0.96&lt;br /&gt;
# ./configure; make ; make install&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;h4&gt;Compilation de microhttpd (optionnel)&lt;/h4&gt;
&lt;p&gt;Vous avez besoin de la &lt;a href=&quot;ftp://ftp.gnu.org/gnu/libmicrohttpd/&quot;&gt;libmicrohttpd&lt;/a&gt; version &gt; à 0.4 (non disponible dans Debian) pour l&amp;#8217;interface web de gestion :&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
# cd /usr/src&lt;br /&gt;
# wget ftp://ftp.gnu.org/gnu/libmicrohttpd/libmicrohttpd-0.4.5.tar.gz&lt;br /&gt;
# tar xzf libmicrohttpd-0.4.5.tar.gz&lt;br /&gt;
# cd libmicrohttpd-0.4.5&lt;br /&gt;
# ./configure; make ; make install&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;h4&gt;Compilation de OLA&lt;/h4&gt;
&lt;p&gt;Le projet OLA se découpe en deux parties : un serveur et des clients, dont voici la procédure de compilation.&lt;br /&gt;
Pour le serveur :&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
# cd /usr/src&lt;br /&gt;
# wget http://linux-lighting.googlecode.com/files/ola-0.6.0.tar.gz&lt;br /&gt;
# tar xzf ola-0.6.0.tar.gz&lt;br /&gt;
# cd ola-0.6.0&lt;br /&gt;
# ./configure; make ; make install&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Pour le client en C++ :&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
# cd /usr/src&lt;br /&gt;
# wget http://linux-lighting.googlecode.com/files/ola-0.6.0.tar.gz&lt;br /&gt;
# tar xzf ola-0.6.0.tar.gz&lt;br /&gt;
# cd ola-examples-0.6.0&lt;br /&gt;
# ./configure; make ; make install&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;h4&gt;Lancement d&amp;#8217;OLAd&lt;/h4&gt;
&lt;p&gt;Vous pouvez lancer &lt;em&gt;olad&lt;/em&gt;, avec un utilisateur qui disspose des droits de lecture / écriture du &lt;em&gt;/dev/dmx0&lt;/em&gt; :&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
$ olad -l 3&lt;br /&gt;
...&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Vous pouvez ensuite vérifier si l&amp;#8217;OpenDMX a bien été détecté par le serveur à l&amp;#8217;aide du client &lt;em&gt;ola_dev_info&lt;/em&gt; :&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
$ ola_dev_info&lt;br /&gt;
...&lt;br /&gt;
Device 3: OpenDmx USB Device&lt;br /&gt;
  port 0, OUT Open Dmx at /dev/dmx0&lt;br /&gt;
...&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Et si vouz avez compilé &lt;em&gt;libmicrohttpd&lt;/em&gt;, vous devez pouvoir accèder à l&amp;#8217;interface web du &lt;em&gt;daemon&lt;/em&gt;, sur le port 9090 :&lt;/p&gt;
&lt;table&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a href=&quot;http://www.csquad.org/wp-content/uploads/2010/01/dmx_console_ola_web.png&quot;&gt;&lt;img src=&quot;http://www.csquad.org/wp-content/uploads/2010/01/dmx_console_ola_web-300x168.png&quot; alt=&quot;DMX OLA web console&quot; title=&quot;dmx_console_ola_web&quot; width=&quot;300&quot; height=&quot;168&quot; class=&quot;alignnone size-medium wp-image-1110&quot; /&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;a href=&quot;http://www.csquad.org/wp-content/uploads/2010/01/ola_web_interface.png&quot;&gt;&lt;img src=&quot;http://www.csquad.org/wp-content/uploads/2010/01/ola_web_interface-300x172.png&quot; alt=&quot;&quot; title=&quot;ola_web_interface&quot; width=&quot;300&quot; height=&quot;172&quot; class=&quot;alignnone size-medium wp-image-1112&quot; /&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;h4&gt;Test et validation du bon fonctionnement&lt;/h4&gt;
&lt;p&gt;Avant de pouvoir manipuler les LEDs, il est nécessaire d&amp;#8217;attribuer un&lt;em&gt;univers&lt;/em&gt; au contrôleur OpenDMX à l&amp;#8217;aide de la commande &lt;em&gt;ola_patch&lt;/em&gt; :&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
$ ola_patch -d 3 -p 0 -u 0&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Ensuite vous pouvez lancer dans deux terminaux les commandes &lt;em&gt;ola_dmxmonitor&lt;/em&gt; et &lt;em&gt;ola_dmxconsole&lt;/em&gt;.&lt;br /&gt;
La première permet de suivre le statut des diffèrents composants et la seconde permet de les controler à l&amp;#8217;aide d&amp;#8217;un interface graphique en curses.&lt;/p&gt;
&lt;p&gt;L&amp;#8217;identifiant du contrôleur LED RGB sur le réseau DMX, est fonction de la valeur prise par le petit switch qui se situe sur celui-ci.&lt;br /&gt;
Et se découpe de la manière suivante : &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rouge = valeur du switch ;&lt;/li&gt;
&lt;li&gt;Vert = valeur du switch + 1 ;&lt;/li&gt;
&lt;li&gt;Bleu = valeur du switch + 2.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Vous pouvez faire varier les trois valeurs pour obtenir les diffèrentes couleurs possibles.  &lt;/p&gt;
&lt;h3&gt;Allez plus loin avec l&amp;#8217;Open Lighting Architecture (OLA)&lt;/h3&gt;
&lt;p&gt;OLA supporte de nombreux contrôleurs &lt;a href=&quot;http://www.opendmx.net/index.php/Category:USB&quot;&gt;USB&lt;/a&gt; et Ethernet.&lt;br /&gt;
Il dispose d&amp;#8217;une &lt;a href=&quot;http://www.opendmx.net/index.php/OLA_Client_API&quot;&gt;API Client C++&lt;/a&gt; et &lt;a href=&quot;http://www.opendmx.net/index.php/OLA_Python_API&quot;&gt;Python&lt;/a&gt;, ce qui rend son intégration possible et facile dans d&amp;#8217;autres projets et offre de nombreuses possiblités. &lt;/p&gt;
&lt;h3&gt;La diffusion d&amp;#8217;informations à l&amp;#8217;aide de la lumière d&amp;#8217;ambiance et ses possiblités&lt;/h3&gt;
&lt;p&gt;L&amp;#8217;idée de pouvoir contrôler l&amp;#8217;intensité et la couleur d&amp;#8217;un bandeau à LED qui se situe dans n&amp;#8217;importe quel endroit de la maison, offre des possiblités interessantes en matière de diffusion d&amp;#8217;informations.&lt;/p&gt;
&lt;p&gt;En effet, la lumière permet de diffuser l&amp;#8217;information de manière non intrusive.&lt;br /&gt;
Voici quelques exemples des possibilités offertes :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;comme la lampe &lt;a href=&quot;http://www.linuxfordevices.com/c/a/Linux-For-Devices-Articles/Device-Profile-Violet-Dal-the-first-emotional-lamp/&quot;&gt;DAL de Violet&lt;/a&gt;, se connecter à l&amp;#8217;Internet pour exploiter des ressources ;&lt;/li&gt;
&lt;li&gt;Pour ceux qui disposent de l&amp;#8217;option &lt;a href=&quot;http://www.edf-bleuciel.fr/accueil/mon-quotidien-avec-bleu-ciel-d-edf/option-tempo-141090.html&quot;&gt;Tempo d&amp;#8217;EDF&lt;/a&gt;, il est possible de diffuser la couleur du jour ;&lt;/li&gt;
&lt;li&gt;Modifier l&amp;#8217;Intensité lumineuse en fonction de nombreux paramètres : tempèrature, l&amp;#8217;ensoleillement, nombre de personnes présentes dans la pièces, activation d&amp;#8217;une alarme, réveil du bébé, etc&amp;#8230;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ce sont quelques exemples des possiblités offertes. Pour le reste vous pouvez faire marcher votre imagination pour créer des nouvelles manières d&amp;#8217;inter-agir avec les machines et cette &lt;a href=&quot;http://fr.wikipedia.org/wiki/Intelligence_ambiante&quot;&gt;Intelligence ambiante&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Réferences&lt;/h3&gt;
&lt;p&gt;Voici mes réferences :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Le Wiki d&amp;#8217;&lt;a href=&quot;http://www.opendmx.net/index.php/OpenDMX.net&quot;&gt;OpenDMX.net&lt;/a&gt; ; &lt;/li&gt;
&lt;li&gt;Le site du constructeur &lt;a href=&quot;http://www.enttec.com/&quot;&gt;ENTTEC&lt;/a&gt; ;&lt;/li&gt;
&lt;li&gt;Le tutorial &lt;a href=&quot;http://www.opendmx.net/index.php/LLA,_OpenDMX_USB_and_Q_Light_Controller_Tutorial&quot;&gt;LLA, OpenDMX USB and Q Light Controller Tutorial&lt;/a&gt; ;&lt;/li&gt;
&lt;li&gt;L&amp;#8217;article &lt;a href=&quot;http://www.sonomag.com/Archives/Article,Go,comprendre,dmx,Id,1980.html&quot;&gt;Comprendre: Le DMX&lt;/a&gt;, chez SONOMag ;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://members.westnet.com.au/rowanmac/opendmx.html&quot;&gt;Hippy&amp;#8217;s Open DMX USB Resources&lt;/a&gt; ; &lt;/li&gt;
&lt;li&gt;Le site du projet &lt;a href=&quot;http://llg.cubic.org/dmx4linux/&quot;&gt;DMX4Linux&lt;/a&gt; ;&lt;/li&gt;
&lt;li&gt;La présentation du &lt;a href=&quot;http://wiki.binkey.nl/DMX&quot;&gt;DMX&lt;/a&gt;, chez Automated Home.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;Le protocole DMX est ancien et souffre de nombreux défaults, mais il présente encore de nombreux avantages tels que :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;la disponiblité de &lt;a href=&quot;http://www.conrad.fr/webapp/wcs/stores/servlet/CatalogSearchFASResultView?storeId=10001&amp;catalogId=10001&amp;langId=-2&amp;searchSKU=&amp;fh_search=DMX&quot;&gt;nombreux équipements&lt;/a&gt; à prix abordable ;&lt;/li&gt;
&lt;li&gt;sa simplicité. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Il faut noter qu&amp;#8217;il existe une alternative plus récente au protocole DMX : &lt;a href=&quot;http://www.dalicontrol.com/dali/whatisdali.htm&quot;&gt;Digital Addressable Lighting Interface (DALI)&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Il est aussi possible de remplacer le contôleur OpenDMX par une carte &lt;a href=&quot;http://www.arduino.cc/&quot;&gt;Arduino&lt;/a&gt;, comme décrit  &lt;a href=&quot;http://www.arduino.cc/playground/DMX/Opendmx&quot;&gt;ici&lt;/a&gt;.&lt;/p&gt;</description>
	<pubDate>dim, 31 jan 2010 10:39:51 +0000</pubDate>
</item>
<item>
	<title>David Curé: twidge le client identica et twitter en ligne de commande</title>
	<guid permalink="False">http://www.cure.nom.fr/blog/archives/194-guid.html</guid>
	<link>http://www.cure.nom.fr/blog/archives/194-twidge-le-client-identica-et-twitter-en-ligne-de-commande.html</link>
	<description>&lt;p&gt;Cherchant un client en ligne de commande pour IdentiCA (et accessoirement pour Twitter), j'ai découvert twidge.&lt;/p&gt;
&lt;p&gt;Une fois essayé et adopté, j'ai backporté une version pour Debian Lenny 32 bits. Le paquet est disponible dans &lt;a href=&quot;http://www.cure.nom.fr/blog/archives/68-Depot-Debian.html&quot;&gt;mon dépôt&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Bon gazouilli.&amp;#160;&lt;/p&gt;</description>
	<pubDate>sam, 30 jan 2010 22:21:00 +0000</pubDate>
	<author>nospam@example.com (David)</author>
</item>
<item>
	<title>Jean-Christophe Dubacq: Paquets et origines</title>
	<guid permalink="False">urn:md5:8c021b88ba690dd88fc17243aaf76d9b</guid>
	<link>http://jean-christophe.dubacq.fr/post/Paquets-et-origines</link>
	<description>&lt;p&gt;Des fois, je veux vérifier d&amp;rsquo;où viennent mes paquets. C&amp;rsquo;est déjà ce que fait &lt;code&gt;apt-show-versions&lt;/code&gt;, mais en se concentrant uniquement sur l&amp;rsquo;aspect distribution (stable/testing/unstable) et non pas sur le site d&amp;rsquo;où vient le paquet. De plus, je voulais pouvoir préciser un ordre entre les distributions (quand un paquet est à la fois dans unstable et testing, je veux qu&amp;rsquo;il apparaisse comme venant de testing; quand il est dans un dépôt local que j&amp;rsquo;ai créé, je veux qu&amp;rsquo;il apparaisse comme venant de ce dépôt, même s&amp;rsquo;il est une copie de unstable ou d&amp;rsquo;experimental).&lt;/p&gt;
&lt;p&gt;Du coup, j&amp;rsquo;ai écrit mon premier programme (sérieux) en Python. La documentation est en anglais.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;package_origins [options]&lt;/strong&gt;&lt;/p&gt;
&lt;dl&gt;
&lt;dt&gt;-h|--help&lt;/dt&gt;&lt;dd&gt;This help text
&lt;/dd&gt;&lt;dt&gt;-l|--list            &lt;/dt&gt;&lt;dd&gt;Just list available distributions
&lt;/dd&gt;&lt;dt&gt;-c|--count           &lt;/dt&gt;&lt;dd&gt;Just display package count by origin
&lt;/dd&gt;&lt;dt&gt;-t|--tabular         &lt;/dt&gt;&lt;dd&gt;Use tabular output format for origin display
&lt;/dd&gt;&lt;dt&gt;-C|--columns=&lt;em&gt;integer&lt;/em&gt; &lt;/dt&gt;&lt;dd&gt;Set the number of columns of the output
&lt;/dd&gt;&lt;dt&gt;-L|--lines=&lt;em&gt;integer&lt;/em&gt;   &lt;/dt&gt;&lt;dd&gt;Set the maximal number of packages that can be displayed
&lt;/dd&gt;&lt;dt&gt;-o|--order=&lt;em&gt;string&lt;/em&gt;    &lt;/dt&gt;&lt;dd&gt;Set the order in which packages are in the distributions.
This is a space-jointed string of stanzas like alias1=site1/archive1
where alias1 is the display name of a distribution of name archive1
at site1.
&lt;/dd&gt;&lt;/dl&gt;
&lt;p&gt;Le programme lit aussi les dénominations dans un fichier &lt;code&gt;~/.package_origins&lt;/code&gt; sous la même forme, mais avec une origine par ligne. De multiples options -o peuvent être utilisées (elles sont accolées).&lt;/p&gt;
&lt;p&gt;Un exemple de fonctionnement:&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;./package_origins -o 'stable=ftp.fr.debian.org/stable testing=ftp.fr.debian.org/testing unstable=ftp.fr.debian.org/unstable experimental=ftp.fr.debian.org/experimental  multimedia=www.debian-multimedia.org/unstable' -L 20 --columns 40 &lt;br /&gt;,--------------------------------------.&lt;br /&gt;|                stable                |&lt;br /&gt;`--------------------------------------'&lt;br /&gt;Too many packages (189). Use --tabular or --lines=X (x&amp;gt;=189).&lt;br /&gt;,--------------------------------------.&lt;br /&gt;|               testing                |&lt;br /&gt;`--------------------------------------'&lt;br /&gt;Too many packages (1529). Use --tabular or --lines=X (x&amp;gt;=1529).&lt;br /&gt;,--------------------------------------.&lt;br /&gt;|               unstable               |&lt;br /&gt;`--------------------------------------'&lt;br /&gt;Too many packages (317). Use --tabular or --lines=X (x&amp;gt;=317).&lt;br /&gt;,--------------------------------------.&lt;br /&gt;|             experimental             |&lt;br /&gt;`--------------------------------------'&lt;br /&gt;calendar-google-provider&lt;br /&gt;calendar-timezones enigmail&lt;br /&gt;,--------------------------------------.&lt;br /&gt;|              multimedia              |&lt;br /&gt;`--------------------------------------'&lt;br /&gt;Too many packages (33). Use --tabular or --lines=X (x&amp;gt;=33).&lt;br /&gt;,--------------------------------------.&lt;br /&gt;|                other                 |&lt;br /&gt;`--------------------------------------'&lt;br /&gt;emacs-snapshot emacs-snapshot-bin-common&lt;br /&gt;emacs-snapshot-common emacs-snapshot-nox&lt;br /&gt;fixkeyboard lipn-archive-keyring&lt;br /&gt;nvidia-kernel-2.6.26-2-amd64&lt;br /&gt;nvidia-kernel-2.6.30-2-amd64&lt;br /&gt;nvidia-kernel-2.6.31-1-amd64&lt;br /&gt;pbuilder-utils rftg rftg-data&lt;br /&gt;,--------------------------------------.&lt;br /&gt;|              installed               |&lt;br /&gt;`--------------------------------------'&lt;br /&gt;Too many packages (55). Use --tabular or --lines=X (x&amp;gt;=55).&lt;/pre&gt;</description>
	<pubDate>mer, 27 jan 2010 12:45:03 +0000</pubDate>
</item>
<item>
	<title>Gr&amp;#233;gory Colpart: Autres exemples de migration Etch-&gt;Lenny [1]</title>
	<guid permalink="False">http://gcolpart.evolix.net/blog21/?p=302</guid>
	<link>http://gcolpart.evolix.net/blog21/autres-exemples-de-migration-etch-lenny-1/</link>
	<description>&lt;p&gt;La &lt;a href=&quot;http://www.debian.org/News/2010/20100121&quot;&gt;fin du support officiel de Debian Etch approchant&lt;/a&gt;, il est grand temps de migrer vers Lenny pour les machines pas encore à jour. Après un &lt;a href=&quot;http://gcolpart.evolix.net/blog21/un-exemple-de-migration-debian-etch-lenny-0/&quot;&gt;premier exemple de migration Debian Etch-&amp;gt;Lenny&lt;/a&gt;, je poursuis la série avec des informations tirées de plusieurs migrations récentes sur des serveurs en production.&lt;/p&gt;
&lt;p&gt;Je ne rappellerais &lt;strong&gt;pas&lt;/strong&gt; toutes les précautions nécessaires (tests préalables, sauvegardes, désactivations des services, etc.) ni la classique question  sur  &amp;#8220;quand faut-il migrer ?&amp;#8221;, vous trouverez tout cela dans &lt;a href=&quot;http://gcolpart.evolix.net/blog21/?s=migration+etch&quot;&gt;mes exemples précédents&lt;/a&gt;. Je rappelle simplement l&amp;#8217;idée de base : prendre les précieuses &lt;a href=&quot;http://www.debian.org/releases/stable/releasenotes&quot;&gt;Release Notes&lt;/a&gt;, mettre à jour le fichier &lt;em&gt;sources.list&lt;/em&gt;, puis exécuter les commandes &lt;em&gt;aptitude update &amp;amp;&amp;amp; aptitude upgrade&lt;/em&gt;x, puis mettre-à-jour les services les plus critiques via &lt;em&gt;aptitude install &amp;lt;PACKAGE&amp;gt;&lt;/em&gt;, et enfin &lt;em&gt;aptitude dist-upgrade &amp;amp;&amp;amp; aptitude dist-upgrade&lt;/em&gt; (répéter &lt;em&gt;dist-upgrade&lt;/em&gt; est souvent nécessaire).&lt;/p&gt;
&lt;p&gt;Passons désormais aux différentes remarques sur ces migrations :&lt;/p&gt;
&lt;p&gt;- PostgreSQL : on passe de la version 8.1 à 8.3. Notez qu&amp;#8217;il s&amp;#8217;agit de paquets différents, il est donc possible de garder la version 8.1 en Etch, et d&amp;#8217;installer en parallèle la version 8.3, afin de faciliter encore plus la migration. Pour migrer les données, on réalisera un dump avec &lt;em&gt;pg_dumpall &lt;/em&gt;qui sera réinjecté dans la nouvelle base. On pourra ensuite adapter le port dans &lt;em&gt;postgresql.conf&lt;/em&gt; pour passer la version 8.3 en production.&lt;/p&gt;
&lt;p&gt;- phpPgAdmin : avec PostgreSQL 8.3, on ne peut plus se connecter à la table &lt;em&gt;template1&lt;/em&gt; : c&amp;#8217;est le comportement par défaut de phpPgAdmin, qu&amp;#8217;on devra donc modifier en mettant postgres à la place (pour la variable &lt;em&gt;$conf['servers'][0]['defaultdb']&lt;/em&gt; dans le fichier &lt;em&gt;config.inc.php&lt;/em&gt;)&lt;/p&gt;
&lt;p&gt;- Apache : la configuration de l&amp;#8217;alias &lt;em&gt;/icons/&lt;/em&gt; est déplacé dans le fichier &lt;em&gt;mods-available/alias.conf&lt;/em&gt;, il peut donc faire doublon avec la déclaration dans &lt;em&gt;apache2.conf&lt;/em&gt;, ce qui sera signalé via le warning suivant : &lt;em&gt;[warn] The Alias directive in /etc/apache2/apache2.conf at line 240 will probably never match because it overlaps an earlier Alias&lt;/em&gt;. Commenter les directives dans le fichier &lt;em&gt;apache2.conf&lt;/em&gt; résoudra ce petit soucis.&lt;/p&gt;
&lt;p&gt;- OpenLDAP : on passe d&amp;#8217;une version 2.3 à 2.4, mais le plus marquant pour la migration est que cela force le processus à tourner avec un utilisateur/groupe dédié. Pour diverses raisons (&lt;em&gt;dist-upgrade&lt;/em&gt; interrompu par exemple), on pourra rencontrer des soucis plus ou moins alarmants. Ainsi, j&amp;#8217;ai pu rencontrer cette erreur :&lt;br /&gt;
&lt;em&gt; bdb(dc=example,dc=com): PANIC: fatal region error detected; run recovery&lt;br /&gt;
bdb_db_open: database &amp;#8220;dc=example,dc=com&amp;#8221; cannot be opened, err -30978. Restore from backup!&lt;br /&gt;
backend_startup_one: bi_db_open failed! (-30978)&lt;br /&gt;
slap_startup failed&lt;br /&gt;
&lt;/em&gt;On veillera donc sur l&amp;#8217;utilisateur/groupe propriétaire des fichiers dans le répertoire &lt;em&gt;/var/lib/ldap&lt;/em&gt; et, au besoin, on ajustera : &lt;em&gt;chown -R openldap:openldap /var/lib/ldap/&lt;br /&gt;
&lt;/em&gt;Mon conseil : mettre-à-jour le paquet &lt;em&gt;slapd&lt;/em&gt; de façon spécifique avant le &lt;em&gt;dist-upgrade&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;- Postfix : on passe de 2.3 à 2.5. On notera simplement la valeur par défaut de &lt;em&gt;$smtp_line_length_limit characters&lt;/em&gt; qui passe à 990, ce qui coupe les lignes trop longues pour se conformer au standard SMTP. Si cela posait problème, on pourrait revenir à l&amp;#8217;ancien comportement en positionnant &lt;em&gt;smtp_line_length_limit=0&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;- SpamAssassin : l&amp;#8217;utilisant en stockant la configuration des utilisateurs dans un annuaire LDAP, le daemon spamd s&amp;#8217;est mis à râler : &lt;em&gt;cannot use &amp;#8211;ldap-config without -u&lt;/em&gt;&lt;br /&gt;
Le problème sera résolu en ajoutant l&amp;#8217;option &lt;em&gt;-u nobody&lt;/em&gt;, ce qui fera tourner spamd en tant que nobody (ce qui n&amp;#8217;est pas une mauvaise chose, au contraire).&lt;/p&gt;
&lt;p&gt;- Amavis : apparemment, lors de la détection d&amp;#8217;un virus, le code retourné n&amp;#8217;est plus 2.7.1 mais 2.7.0 : &lt;em&gt;2.7.0 Ok, discarded, id=13735-07 &amp;#8211; VIRUS: Eicar-Test-Signature&lt;/em&gt;&lt;br /&gt;
Rien de bien grave, mais cela a nécessité d&amp;#8217;adapter un plugin Nagios pour qu&amp;#8217;il attende le bon code de retour.&lt;/p&gt;
&lt;p&gt;- Courier-imapd-ssl : après une mise-à-jour gardant mon fichier &lt;em&gt;/etc/courier/imapd-ssl&lt;/em&gt; actuel, j&amp;#8217;obtenai des erreurs avec certains clients IMAP :&lt;br /&gt;
&lt;em&gt; couriertls: accept: error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number&lt;/em&gt;&lt;br /&gt;
En regardant de plus près, certaines directives changent dans ce fichier de configuration, et il est donc conseillé de repartir du fichier proposé par Lenny, et d&amp;#8217;y apporter ses modifications (souvent, cela se limite à préciser le certificat).&lt;/p&gt;
&lt;p&gt;- Horde : si vous utilisez une base de données pour stocker les paramètres ou autres, la paquet &lt;em&gt;php-db&lt;/em&gt; (déjà en Recommends: en Etch) est d&amp;#8217;autant plus nécessaire, sous peine d&amp;#8217;obtenir l&amp;#8217;erreur : &lt;em&gt;PHP Fatal error:  _init() [&amp;lt;a href='function.require'&amp;gt;function.require&amp;lt;/a&amp;gt;]: Failed opening required &amp;#8216;DB.php&amp;#8217; (include_path=&amp;#8217;/usr/share/horde3/lib:.:/usr/share/php:/usr/share/pear&amp;#8217;) in /usr/share/horde3/lib/Horde/DataTree/sql.php on line 1877&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;- Sympa : on attaque là le cauchemard de mes migrations. À chaque fois, tellement de soucis majeurs et mineurs, que j&amp;#8217;ai l&amp;#8217;impression d&amp;#8217;être le seul à utiliser ce paquet. Voici en vrac tous les soucis rencontrés : les accents dans les descriptions ont sautés (une sorte de double encodage) et cela a nécessité des corrections manuelles, la table logs_table doit être créée à la main (j&amp;#8217;utilise Sympa avec PostgreSQL), et enfin une typo surprenante un &amp;#8220;GROUP BY&amp;#8221; à la place d&amp;#8217;un &amp;#8220;ORDER BY&amp;#8221; (j&amp;#8217;ai ouvert le bug &lt;a href=&quot;http://bugs.debian.org/566252&quot;&gt;#566252&lt;/a&gt; à ce sujet).&lt;/p&gt;
&lt;p&gt;- Asterisk : on passe de la version 1.2 à la version 1.4. Lors de la migration, j&amp;#8217;ai constaté un bug étrange, le fichier &lt;em&gt;modules.conf &lt;/em&gt;qui charge les modules additionnels a disparu. Du coup, sans lui, Asterisk ne charge pas les modules nécessaires (SIP, etc.). Il a donc fallu le restaurer.&lt;/p&gt;
&lt;p&gt;- udev : le meilleur ami des sysadmins (ou pas). Si les migrations douloureuses Sarge-&amp;gt;Etch sont loin derrière nous, il reste néanmoins quelques blagues. La dernière en date a été un renommage des interfaces réseau : eth0-&amp;gt;eth1 et eth1-&amp;gt;eth2. Classique mais étonnant, ce genre d&amp;#8217;humour est sensé être dépassé grâce aux &amp;#8220;persistent rules&amp;#8221; qui nomment les interfaces en fonction de l&amp;#8217;adresse MAC. À rester vigilant sur ce point avant le redémarrage donc.&lt;/p&gt;
&lt;p&gt;Voilà pour les remarques. Vous noterez que je n&amp;#8217;ai pas abordé le noyau Linux. C&amp;#8217;est parce que pour la majorité de nos serveurs, ils sont gérés de façons spécifiques (au lieu d&amp;#8217;utiliser les noyaux officiels Debian). Ainsi, ils restent dans leur version actuelle (2.6.31 à cette heure) pendant la migration. Bien sûr, cela n&amp;#8217;empêche pas d&amp;#8217;effectuer un redémarrage de la machine suite à la mise-à-jour : cela permet de s&amp;#8217;assurer que tout est bien en place et le sera toujours après un éventuel redémarrage d&amp;#8217;urgence.&lt;/p&gt;
&lt;p&gt;Rendez-vous pour de prochaines migrations !&lt;/p&gt;</description>
	<pubDate>dim, 24 jan 2010 18:05:52 +0000</pubDate>
</item>
<item>
	<title>Carl Chenet: Reportbug vs Launchpad</title>
	<guid permalink="False">http://carlchenet.wordpress.com/?p=208</guid>
	<link>http://carlchenet.wordpress.com/2010/01/24/reportbug-vs-launchpad/</link>
	<description>&lt;br /&gt;&lt;p&gt;Suite &lt;a title=&quot;Commentaire Reportbug vs Launchpad&quot; href=&quot;http://carlchenet.wordpress.com/2010/01/12/importance-des-rapports-de-bugs/#comment-100&quot; target=&quot;_blank&quot;&gt;à ce commentaire&lt;/a&gt; sur &lt;a title=&quot;Billet importance des rapports de bugs&quot; href=&quot;http://carlchenet.wordpress.com/2010/01/12/importance-des-rapports-de-bugs/&quot; target=&quot;_blank&quot;&gt;mon billet précédent&lt;/a&gt; concernant &lt;a title=&quot;Page d'accueil du projet Reportbug&quot; href=&quot;http://packages.debian.org/sid/reportbug&quot; target=&quot;_blank&quot;&gt;Reportbug&lt;/a&gt;, j&amp;#8217;ai pensé devoir développer un peu une réponse.&lt;/p&gt;
&lt;p&gt;Launchpad, jusqu&amp;#8217;à très récemment, était un logiciel propriétaire. L&amp;#8217;année dernière, il a été finalement libéré par Canonical. C&amp;#8217;est selon moi une bonne chose, et on en avait tellement parlé que je ne m&amp;#8217;y attendais plus vraiment. Après tout Canonical est une entreprise et le but d&amp;#8217;une entreprise intrinsèquement est de faire de l&amp;#8217;argent, les considération éthiques n&amp;#8217;ayant généralement dans les entreprises qu&amp;#8217;un poids très restreint.&lt;/p&gt;
&lt;p&gt;Bien, donc Reportbug face à Launchpad ? Il y a moins d&amp;#8217;un an j&amp;#8217;aurais répondu que comparer un logiciel libre et un logiciel privateur est par essence un exercice biaisé et quasi inutile. L&amp;#8217;un appartient au patrimoine de l&amp;#8217;humanité et l&amp;#8217;autre à une entreprise qui peut en faire ce qu&amp;#8217;elle veut et dont le but est de faire de l&amp;#8217;argent. Je vais donc parler un peu de Reportbug (que je contribue à développer, les lecteurs réguliers de ce blog sont au courant) qui, lui, est un logiciel libre depuis sa naissance et depuis des années l&amp;#8217;une des briques logicielles les plus importantes de Debian. Nous arrivons bientôt à 570000 rapports de bugs (qui peuvent aussi être des demandes d&amp;#8217;amélioration). Reportbug offre ses services principalement en mode texte et en mode graphique (GTK2) aux utilisateurs. Comme je l&amp;#8217;ai dit dans mon précédent billet, chaque rapport de bug est (potentiellement si le rapport est recevable) le début d&amp;#8217;un mouvement au sein de Debian. Considérant le travail de Debian qui met en place une distribution multi-noyaux (Linux et le noyau de FreeBSD aujourd&amp;#8217;hui gérés) et multi-architectures (un grand nombre est officiellement supporté), on peut facilement comprendre que toucher à l&amp;#8217;outil qui est au coeur de l&amp;#8217;organisation et du suivi de ce travail est une opération très délicate. Et pourtant Reportbug ne cesse d&amp;#8217;évoluer, supporte de nouvelles options et travaille à satisfaire les désirs parfois contradictoires et souvent pointilleux de ses utilisateurs.&lt;/p&gt;
&lt;p&gt;De fait Debian fonctionne grâce à l&amp;#8217;e-mail, le courrier électronique et l&amp;#8217;IRC étant les deux canaux de communication principaux des utilisateurs et développeurs de Debian. Reportbug s&amp;#8217;appuie donc sur l&amp;#8217;e-mail, qui s&amp;#8217;avère avoir des avantages non négligeables pour une organisation à la communication largement asynchrone (il est rare d&amp;#8217;avoir une réponse à ses questions dans la minute, qu&amp;#8217;on soit développeur ou utilisateur) et décentralisée comme Debian.&lt;/p&gt;
&lt;p&gt;Je pense avoir donné ici des pistes qui permettent de comprendre que Reportbug satisfait très bien ses utilisateurs et n&amp;#8217;a pas de problème d&amp;#8217;ergonomie, sauf à considérer que tout ce qui n&amp;#8217;est pas une appli Web n&amp;#8217;est pas ergonomique, argument pour le moins spécieux. Launchpad fait sûrement très bien son travail et est digne d&amp;#8217;intérêt depuis sa libération. Reportbug fait également très bien son travail et soutient le travail journalier des acteurs de Debian, la distribution grâce à laquelle Canonical et Ubuntu vivent et (je leur souhaite) continueront à vivre longtemps.&lt;/p&gt;
  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/carlchenet.wordpress.com/208/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/carlchenet.wordpress.com/208/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/carlchenet.wordpress.com/208/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/carlchenet.wordpress.com/208/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/carlchenet.wordpress.com/208/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/carlchenet.wordpress.com/208/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/carlchenet.wordpress.com/208/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/carlchenet.wordpress.com/208/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/carlchenet.wordpress.com/208/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/carlchenet.wordpress.com/208/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=carlchenet.wordpress.com&amp;blog=7722010&amp;post=208&amp;subd=carlchenet&amp;ref=&amp;feed=1&quot; /&gt;</description>
	<pubDate>sam, 23 jan 2010 22:08:52 +0000</pubDate>
</item>
<item>
	<title>Tuxicoman: Solutions Linux 2010</title>
	<guid permalink="False">http://tuxicoman.jesuislibre.net/?p=1794</guid>
	<link>http://tuxicoman.jesuislibre.net/2010/01/solutions-linux-2010.html</link>
	<description>&lt;p&gt;Le salon &lt;a href=&quot;http://www.solutionslinux.fr/&quot;&gt;Solutions Linux&lt;/a&gt; ouvre ses portes le 16,17,18 mars 2010 au parc des expositions de Versailles. Apparement dans le grand hall 1 !&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://tuxicoman.jesuislibre.net/blog/wp-content/uploads/solutionslinux.gif&quot;&gt;&lt;img class=&quot;aligncenter size-full wp-image-1795&quot; title=&quot;solutionslinux&quot; src=&quot;http://tuxicoman.jesuislibre.net/blog/wp-content/uploads/solutionslinux.gif&quot; alt=&quot;&quot; width=&quot;140&quot; height=&quot;109&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;C'est l'occasion de parcourir les stands des grands noms de l'écosystème Linux, mais aussi ceux du &lt;a href=&quot;http://www.solutionslinux.fr/Le+village+associatif+_154_161.html&quot;&gt;village associatif&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.solutionslinux.fr/preinscription_154_204_p.html&quot;&gt;Réserver vos badges gratuits&lt;/a&gt; dès à présent.&lt;/p&gt;</description>
	<pubDate>sam, 23 jan 2010 11:23:41 +0000</pubDate>
</item>
<item>
	<title>Florent Gallaire: Smartphones Linux : le point du dev</title>
	<guid permalink="False">http://debian.flext.net/?p=143</guid>
	<link>http://debian.flext.net/smartphones-linux-dev/</link>
	<description>&lt;p&gt;Un petit point sur le hardware et le software disponibles pour un développeur libre qui voudrait utiliser un smartphone et développer dessus.&lt;/p&gt;
&lt;p&gt;Il existe trois plateformes basées sur Linux (je n&amp;#8217;écris volontairement pas GNU/Linux car si Android utilise bien le noyau Linux, il n&amp;#8217;utilise pas pour autant les outils GNU) :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://maemo.org/&quot; target=&quot;_blank&quot;&gt;Maemo&lt;/a&gt; de Nokia&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.android.com/&quot; target=&quot;_blank&quot;&gt;Android&lt;/a&gt; de Google&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://developer.palm.com/&quot; target=&quot;_blank&quot;&gt;webOS&lt;/a&gt; de Palm&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Maemo :&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Maemo est censé, chez Nokia, remplacer &lt;a href=&quot;http://www.symbian.org/&quot; target=&quot;_blank&quot;&gt;Symbian&lt;/a&gt; qui est dépassé technologiquement pour les nouveaux usages mobiles. Après avoir été expérimenté (trop) longuement (depuis 2005 !) sur les tablettes &lt;a href=&quot;http://fr.wikipedia.org/wiki/Nokia_770_Internet_Tablet&quot; target=&quot;_blank&quot;&gt;N770&lt;/a&gt;, &lt;a href=&quot;http://fr.wikipedia.org/wiki/Nokia_N800&quot; target=&quot;_blank&quot;&gt;N800&lt;/a&gt; et &lt;a href=&quot;http://fr.wikipedia.org/wiki/Nokia_N810&quot; target=&quot;_blank&quot;&gt;N810&lt;/a&gt;, il est enfin disponible sur un téléphone : le &lt;a href=&quot;http://fr.wikipedia.org/wiki/Nokia_N900&quot; target=&quot;_blank&quot;&gt;N900&lt;/a&gt;, depuis novembre 2009.&lt;/p&gt;
&lt;p&gt;Or, si le N900 est disponible, il utilise la plateforme Maemo 5 qui va disparaitre et aucun smartphone n&amp;#8217;est disponible sous Maemo 6. Je ne lancerai donc pas une énième fois le &lt;a href=&quot;http://www.wikivs.com/wiki/GTK_vs_Qt&quot; target=&quot;_blank&quot;&gt;troll&lt;/a&gt; &lt;a href=&quot;http://fr.wikipedia.org/wiki/GTK%2B&quot; target=&quot;_blank&quot;&gt;GTK&lt;/a&gt; (Maemo 5) vs &lt;a href=&quot;http://fr.wikipedia.org/wiki/Qt&quot; target=&quot;_blank&quot;&gt;Qt&lt;/a&gt; (Maemo 6) qui n&amp;#8217;a juste pas lieu d&amp;#8217;être : &lt;em&gt;Maemo n&amp;#8217;est pas dans la course&lt;/em&gt;. Et à la vitesse où va cette course, il ne parviendra peut-être jamais à y rentrer.&lt;/p&gt;
&lt;p&gt;Je ne m&amp;#8217;étendrai pas sur Maemo car je veux à la fois développer des applications  que je puisse  tester,  et que d&amp;#8217;autres puissent utiliser, et il faut pour cela pouvoir se procurer un smartphone adapté, et ne pas m&amp;#8217;investir dans une plateforme en fin de vie. &lt;span&gt;De plus, le fait que Maemo utilise &lt;a href=&quot;http://fr.wikipedia.org/wiki/X.Org&quot; target=&quot;_blank&quot;&gt;Xorg&lt;/a&gt; le rend techniquement contestable, tant &lt;a href=&quot;http://www.art.net/~hopkins/Don/unix-haters/x-windows/disaster.html&quot; target=&quot;_blank&quot;&gt;la complexité et la lourdeur&lt;/a&gt; inhérentes à &lt;a href=&quot;http://fr.wikipedia.org/wiki/X_Window_System&quot; target=&quot;_blank&quot;&gt;X11&lt;/a&gt; sont malvenues sur un smartphone.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Android :&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Du côté d&amp;#8217;Android c&amp;#8217;est une toute autre histoire. Des smartphones sont disponibles depuis octobre 2008 aux États-Unis et mars 2009 en France. Au niveau commercial c&amp;#8217;est déjà une grande réussite : Android est la plateforme qui progresse le plus et s&amp;#8217;est imposé en un an comme le principal (le seul ?) challenger de l&amp;#8217;iPhone (voir les &lt;a href=&quot;http://metrics.admob.com/2010/01/metrics-update-android/&quot; target=&quot;_blank&quot;&gt;statistiques d&amp;#8217;AdMob&lt;/a&gt; pour plus de détails).&lt;/p&gt;
&lt;p&gt;D&amp;#8217;un point de vue technique, Android fournit un &lt;a href=&quot;http://en.wikipedia.org/wiki/Software_development_kit&quot; target=&quot;_blank&quot;&gt;SDK&lt;/a&gt; basé sur le langage de programmation &lt;a href=&quot;http://fr.wikipedia.org/wiki/Java_(langage)&quot; target=&quot;_blank&quot;&gt;Java&lt;/a&gt;. Cependant, il ne repose pas sur la &lt;a href=&quot;http://fr.wikipedia.org/wiki/JVM_(informatique)&quot; target=&quot;_blank&quot;&gt;JVM&lt;/a&gt; de Sun, mais sur &lt;a href=&quot;http://fr.wikipedia.org/wiki/Machine_virtuelle_Dalvik&quot; target=&quot;_blank&quot;&gt;Dalvik&lt;/a&gt;, une machine virtuelle à registres (comme &lt;a href=&quot;http://www.parrot.org/&quot; target=&quot;_blank&quot;&gt;Parrot&lt;/a&gt;) spécialement développée pour les contraintes hardware (mémoire faible, processeur peu puissant&amp;#8230;) de l&amp;#8217;embarqué. Dalvik est à ma connaissance la seule machine virtuelle à registres qui soit un succès industriel, face à la masse des machines virtuelles à pile (JVM de Sun, &lt;a href=&quot;http://fr.wikipedia.org/wiki/Common_Language_Runtime&quot; target=&quot;_blank&quot;&gt;CLR&lt;/a&gt; de Microsoft&amp;#8230;).&lt;/p&gt;
&lt;p&gt;Mais que peut-on faire si on ne veut pas programmer en Java ? Les développeurs ont souvent un langage de programmation favori, qu&amp;#8217;ils ont peu ou pas envie d&amp;#8217;abandonner ; dans mon cas c&amp;#8217;est &lt;a href=&quot;http://www.python.org/&quot; target=&quot;_blank&quot;&gt;Python&lt;/a&gt;. &lt;span&gt;On pense alors naturellement aux implémentations des langages écrites en Java, &lt;a href=&quot;http://www.jython.org/&quot; target=&quot;_blank&quot;&gt;Jython&lt;/a&gt; pour Python ; mais si elles fonctionnent sur la JVM de Sun, ce n&amp;#8217;est pas forcément le cas pas sur Dalvik ! Heureusement, Google a pensé à nous avec &lt;a href=&quot;http://code.google.com/p/android-scripting/&quot; target=&quot;_blank&quot;&gt;ASE&lt;/a&gt;, l&amp;#8217;Android Scripting Environment, qui permet d&amp;#8217;utiliser l&amp;#8217;ensemble des API Android à partir de différents langages interprétés, et le choix est vraiment grand : Python, &lt;a href=&quot;http://www.lua.org/&quot; target=&quot;_blank&quot;&gt;Lua&lt;/a&gt;, &lt;a href=&quot;http://www.perl.org/&quot; target=&quot;_blank&quot;&gt;Perl&lt;/a&gt;, Ruby, JavaScript, &lt;a href=&quot;http://www.beanshell.org/&quot; target=&quot;_blank&quot;&gt;BeanShell&lt;/a&gt; et même shell !!&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Tous les langages ne sont pas égaux devant ASE. Les langages natifs, c&amp;#8217;est-à-dire écrits en Java, comme Ruby basé sur &lt;a href=&quot;http://jruby.org/&quot; target=&quot;_blank&quot;&gt;JRuby&lt;/a&gt;, JavaScript basé sur &lt;a href=&quot;http://www.mozilla.org/rhino/&quot; target=&quot;_blank&quot;&gt;Rhino&lt;/a&gt; ou encore BeanShell, peuvent théoriquement accéder directement aux API Java natives, alors que les langages &amp;#8220;cross-compilés&amp;#8221;, comme Python (basé sur CPython) ou Lua qui sont écrits en C, ne peuvent procéder que par des appels &lt;a href=&quot;http://fr.wikipedia.org/wiki/JavaScript_Object_Notation&quot; target=&quot;_blank&quot;&gt;JSON&lt;/a&gt; &lt;a href=&quot;http://fr.wikipedia.org/wiki/Remote_procedure_call&quot; target=&quot;_blank&quot;&gt;RPC&lt;/a&gt;. C&amp;#8217;est cependant cette dernière méthode qui semble conseillée quel que soit le langage utilisé.&lt;/p&gt;
&lt;p&gt;Je suis donc maintenant motivé pour me lancer dans l&amp;#8217;aventure Android, d&amp;#8217;autant que Google vient d&amp;#8217;anoncer, lors d&amp;#8217;une conférence de presse le 5 janvier, le lancement de son premier smartphone : le &lt;a href=&quot;http://fr.wikipedia.org/wiki/Nexus_One&quot;&gt;Nexus One &lt;/a&gt;fabriqué par HTC. C&amp;#8217;est tout simplement une &amp;#8220;bête de course&amp;#8221; du point de vue hardware : processeur à 1 Ghz, 512 Mo de RAM et un écran 3,7&amp;#8243; d&amp;#8217;une résolution de 480*800 (pour rappel l&amp;#8217;&lt;a href=&quot;http://en.wikipedia.org/wiki/IPhone_3GS&quot;&gt;iPhone 3GS&lt;/a&gt; fonctionne à 600 Mhz avec 256 Mo de RAM et un écran 3,5&amp;#8243; en 320*480) !!! La disponibilité du Nexus One en France est prévue pour le mois de mars.&lt;/p&gt;
&lt;p&gt;J&amp;#8217;hésite cependant encore avec le &lt;a href=&quot;http://fr.wikipedia.org/wiki/Motorola_Milestone&quot; target=&quot;_blank&quot;&gt;Motorola Milestone&lt;/a&gt;, qui a lui l&amp;#8217;avantage d&amp;#8217;être déjà disponible et de posséder un clavier physique, ce qui pourrait se révéler bien pratique pour des sessions d&amp;#8217;administration de machines par &lt;a href=&quot;http://fr.wikipedia.org/wiki/OpenSSH&quot; target=&quot;_blank&quot;&gt;SSH&lt;/a&gt;, avec le terminal en plein écran !&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;webOS :&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Il y a un an, lors du &lt;a href=&quot;http://fr.wikipedia.org/wiki/Consumer_Electronics_Show&quot; target=&quot;_blank&quot;&gt;CES&lt;/a&gt; de janvier 2009, Palm avait créé l&amp;#8217;évènement avec l&amp;#8217;annonce du &lt;a href=&quot;http://fr.wikipedia.org/wiki/Palm_Pre&quot; target=&quot;_blank&quot;&gt;Palm Pré&lt;/a&gt; et de son nouveau système d&amp;#8217;exploitation : webOS. Les critiques avaient été très élogieuses et l&amp;#8217;on a même pensé que l&amp;#8217;on tenait là le principal concurrent de l&amp;#8217;iPhone. En effet, webOS est le seul système alternatif  à proposer les mêmes facilités multitouch que l&amp;#8217;iPhone (il semblerait que sur ce sujet, Palm et Apple se tiennent par la barbichette des &lt;a href=&quot;http://brevets-logiciels.info/&quot; target=&quot;_blank&quot;&gt;brevets logiciels&lt;/a&gt;). La qualité et la simplicité de l&amp;#8217;ergonomie étaient aussi tout à fait remarquables, et le design très &amp;#8220;sexy&amp;#8221;.&lt;/p&gt;
&lt;p&gt;Le Palm Pré a été introduit au États-Unis le 6 juin, et les ventes ont été bonnes. Mais tout cela s&amp;#8217;est un peu essouflé car &lt;a href=&quot;http://fr.wikipedia.org/wiki/Sprint_Nextel&quot; target=&quot;_blank&quot;&gt;Sprint&lt;/a&gt;, l&amp;#8217;opérateur exclusif aux USA, est semble-t-il en perte de vitesse, et le Palm Pré n&amp;#8217;a pas été commercialisé dans beaucoup d&amp;#8217;autres pays : il n&amp;#8217;est par exemple toujours pas disponible en France. Seule nouveauté depuis un an, l&amp;#8217;introduction d&amp;#8217;un nouveau modèle moins puissant visant l&amp;#8217;entrée de gamme des smartphones, le &lt;a href=&quot;http://en.wikipedia.org/wiki/Palm_Pixi&quot; target=&quot;_blank&quot;&gt;Palm Pixi&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Et puis voilà à nouveau que, lors de la &lt;a href=&quot;http://www.youtube.com/watch?v=Mn6oNKVd29g&quot; target=&quot;_blank&quot;&gt;présentation&lt;/a&gt; du 7 janvier au CES, Palm fait des annonces tonitruantes ! &lt;span&gt;D&amp;#8217;abord l&amp;#8217;arrivée de deux nouveaux modèles : le Palm Pré Plus et le Palm Pixi Plus, qui proposent de grandes améliorations matérielles. Le Palm Pré voit sa capacité de stockage et sa RAM doublées, à 16 Go et 512 Mo respectivement, tandis que le Palm Pixi n&amp;#8217;est plus castré des possibilités Wi-Fi que l&amp;#8217;on peut légitimement attendre d&amp;#8217;un smartphone, fût-il d&amp;#8217;entrée de gamme. Et ces deux modèles seront disponibles en France au début du second trimestre.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Ensuite, le programme pour développeur, qui permet de fournir ses applications via le App Catalog officiel de Palm (équivalent du célèbre &lt;a href=&quot;http://fr.wikipedia.org/wiki/App_Store&quot; target=&quot;_blank&quot;&gt;App Store&lt;/a&gt; d&amp;#8217;Apple) est maintenant &lt;a href=&quot;http://developer.palm.com/index.php?option=com_content&amp;view=article&amp;id=1839&amp;Itemid=33&quot; target=&quot;_blank&quot;&gt;ouvert à tous&lt;/a&gt;. Mais ce n&amp;#8217;est pas tout, un &lt;a href=&quot;http://developer.palm.com/index.php?option=com_content&amp;view=article&amp;id=1843&quot; target=&quot;_blank&quot;&gt;programme spécial pour les développeurs Open Source&lt;/a&gt; existe, qui offre comme avantage d&amp;#8217;économiser les 99$ de cotisation annuelle (en ce moment offerts à tous) et les 50$ par application soumises au App Catalog. De plus, Palm montre sa compréhension des logiciels libres, car l&amp;#8217;on peut tout à fait commercialiser ses applications libres, et il n&amp;#8217;y a aucune discrimination, comme pour les applications propriétaires c&amp;#8217;est 70% du prix pour le développeur (comme sur l&amp;#8217;App Store).&lt;/p&gt;
&lt;p&gt;Développeur qui pourra désormais programmer de vrais jeux exploitant tout la puissance du la puce graphique, grâce à la mise à disposition d&amp;#8217;un nouveau SDK spécialement destiné au jeux : le &lt;a href=&quot;http://developer.palm.com/index.php?option=com_content&amp;view=article&amp;id=1850&amp;Itemid=20&quot; target=&quot;_blank&quot;&gt;Plug-in Development Kit&lt;/a&gt;. Ce dernier est basé sur l&amp;#8217;excellente et très utilisée librairie &lt;a href=&quot;http://www.libsdl.org/&quot; target=&quot;_blank&quot;&gt;SDL&lt;/a&gt;, véritable standard des logiciels libres. Le PDK est censé être programmé en C ou en C++, mais il existe des &lt;a href=&quot;http://fr.wikipedia.org/wiki/Binding&quot;&gt;bindings&lt;/a&gt; SDL pour un nombre de langage de programmation très impressionnant, et j&amp;#8217;ai du mal à voir ce qui pourrait m&amp;#8217;empêcher d&amp;#8217;utiliser sous peu &lt;a href=&quot;http://www.pygame.org/&quot; target=&quot;_blank&quot;&gt;Pygame&lt;/a&gt; pour programmer des jeux en Python !&lt;/p&gt;
&lt;p&gt;Pour ce qui est des applications plus classiques, Palm propose désormais un &lt;a href=&quot;http://fr.wikipedia.org/wiki/Environnement_de_développement_intégré&quot; target=&quot;_blank&quot;&gt;IDE&lt;/a&gt; fonctionnant dans votre navigateur web : &lt;a href=&quot;http://ares.palm.com/Ares/about.html&quot; target=&quot;_blank&quot;&gt;Project Ares&lt;/a&gt;. On pourra saluer la cohérence technologique qui permet de faire aisément cela puisque l&amp;#8217;ensemble du SDK Palm est construit à base  de technologies web, et espérer que cela permettra de faciliter l&amp;#8217;accès à la programmation webOS au plus grand nombre.&lt;/p&gt;
&lt;p&gt;Enfin, pour motiver les développeurs à se lancer et ainsi remplir son App Catalog, Palm propose le concours &lt;a href=&quot;http://developer.palm.com/index.php?option=com_content&amp;view=article&amp;id=1841&amp;Itemid=35&quot; target=&quot;_blank&quot;&gt;Hot Apps&lt;/a&gt; doté d&amp;#8217;un million de dollars à partager entre les applications les plus téléchargées du 1er février au 31 mai.&lt;/p&gt;
&lt;p&gt;Sur le front des smartphones Linux est là et bien là, en position de force, prêt à exterminer les systèmes d&amp;#8217;exploitation privateurs de liberté Windows Mobile et BlackBerry OS et à mener le grand combat final contre l&amp;#8217;iPhone !&lt;/p&gt;</description>
	<pubDate>ven, 15 jan 2010 06:05:19 +0000</pubDate>
</item>
<item>
	<title>Carl Chenet: Importance des rapports de bugs</title>
	<guid permalink="False">http://carlchenet.wordpress.com/?p=202</guid>
	<link>http://carlchenet.wordpress.com/2010/01/12/importance-des-rapports-de-bugs/</link>
	<description>&lt;br /&gt;&lt;p&gt;Note à moi-même pour la nouvelle année : dès que je constate un bug sur un logiciel dans ma distribution préférée, j&amp;#8217;ouvre un rapport de bug immédiatement et surtout pas un lendemain hypothétique.&lt;/p&gt;
&lt;p&gt;Comme le souligne &lt;a title=&quot;Retour sur mes bugs ...&quot; href=&quot;http://www.chevrel.org/fr/carnet/?post/2010/01/09/Retour-sur-mes-bugs-en-cours-mes-2-nouveaux-bugs-de-d%C3%A9but-janvier&quot; target=&quot;_blank&quot;&gt;cette note à propos de Firefox&lt;/a&gt;, les rapports de bugs sont fondamentaux pour le maintien en vie et l&amp;#8217;amélioration de la qualité dans le monde des logiciels libres. Certains bugs sont vicieux, difficiles à reproduire. La plupart sont très simples à mettre en avant.&lt;/p&gt;
&lt;p&gt;Dans tous les cas, la participation des utilisateurs qui découvrent ces bugs est précieuse. Rapporter un bug est le début et la condition sine qua none de la résolution du bug. Même si vous avez l&amp;#8217;impression que ce bug est tellement gros qu&amp;#8217;on doit avoir fait le travail avant vous, il est nécessaire de le déclarer. Dans l&amp;#8217;idéal vous jeterez un œil aux bugs existants avant d&amp;#8217;ouvrir votre rapport mais dans tous les cas, rédigez des rapports de bugs.&lt;/p&gt;
&lt;p&gt;Utilisateur averti ou programmeur chevronné, acquérir cette bonne habitude est la garantie d&amp;#8217;enrichir de votre expérience les logiciels que vous utilisez au quotidien.&lt;/p&gt;
&lt;p&gt;Sous Debian, l&amp;#8217;outil pour rédiger des rapports de bug est &lt;a title=&quot;page d'accueil de Reportbug&quot; href=&quot;http://packages.debian.org/sid/reportbug&quot; target=&quot;_blank&quot;&gt;Reportbug&lt;/a&gt;. Une quinzaine de minutes suffit à le prendre en main, pour rédiger et envoyer votre premier rapport. Ne vous en privez pas, vous contribuerez directement par ce moyen à Debian.&lt;/p&gt;
  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/carlchenet.wordpress.com/202/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/carlchenet.wordpress.com/202/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/carlchenet.wordpress.com/202/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/carlchenet.wordpress.com/202/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/carlchenet.wordpress.com/202/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/carlchenet.wordpress.com/202/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/carlchenet.wordpress.com/202/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/carlchenet.wordpress.com/202/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/carlchenet.wordpress.com/202/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/carlchenet.wordpress.com/202/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=carlchenet.wordpress.com&amp;blog=7722010&amp;post=202&amp;subd=carlchenet&amp;ref=&amp;feed=1&quot; /&gt;</description>
	<pubDate>mar, 12 jan 2010 00:46:58 +0000</pubDate>
</item>
<item>
	<title>Christophe Nowicki: Faire son propre moteur de recherche avec Nutch</title>
	<guid permalink="False">http://www.csquad.org/?p=973</guid>
	<link>http://www.csquad.org/2010/01/11/nutch/</link>
	<description>&lt;p&gt;Allez aujourd&amp;#8217;hui, je lâche mon troll, qui n&amp;#8217;a pas manger depuis plusieurs semaines :&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;S&amp;#8217;il y a quelque chose que vous faites et que personne ne doit savoir, peut-être qu&amp;#8217;il faudrait commencer par ne pas le faire&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Source : &lt;a href=&quot;http://www.eff.org/deeplinks/2009/12/google-ceo-eric-schmidt-dismisses-privacy&quot;&gt;Google CEO Eric Schmidt Dismisses the Importance of Privacy&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Il a raison le bon docteur Schmidt, il aurait du faire plus attention &lt;a href=&quot;http://en.wikipedia.org/wiki/Liu_Xiaobo&quot;&gt;Liu Xiaobo&lt;/a&gt; avant de chercher &lt;em&gt;droits de l’homme&lt;/em&gt; sur un &lt;a href=&quot;http://news.google.cn/news?q=Liu%20Xiaobo&amp;hl=zh-CN&amp;ie=UTF-8&amp;ned=ccn&amp;tab=Hn&quot;&gt;moteur de recherche censuré&lt;/a&gt;&amp;#8230;&lt;/p&gt;
&lt;p&gt;Bref vous m&amp;#8217;avez compris ce genre de parole dans la bouche de l&amp;#8217;homme le plus puissant de la plante ne m&amp;#8217;inspire pas confiance  et je continue à penser que le slogan de Google &lt;a href=&quot;http://en.wikipedia.org/wiki/Don%27t_be_evil&quot;&gt;Don&amp;#8217;t be evil&lt;/a&gt; est une véritable plaisanterie.&lt;/p&gt;
&lt;p&gt;Alors au lieu de vous conseiller de passer à Bling, je vais vous expliquer comment faire votre propre moteur de recherche.&lt;/p&gt;
&lt;p&gt;Ce billet décrit la mise en place d&amp;#8217;un moteur de recherche sous Debian GNU/Linux basé sur &lt;a href=&quot;http://lucene.apache.org/nutch/&quot;&gt;Nutch&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Pré-requis&lt;/h3&gt;
&lt;table&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot;&gt;
&lt;a href=&quot;http://www.csquad.org/wp-content/uploads/2010/01/140px-Google’s_First_Production_Server.jpg&quot;&gt;&lt;img src=&quot;http://www.csquad.org/wp-content/uploads/2010/01/140px-Google’s_First_Production_Server.jpg&quot; alt=&quot;140px-Google’s_First_Production_Server&quot; title=&quot;140px-Google’s_First_Production_Server&quot; width=&quot;140&quot; height=&quot;232&quot; class=&quot;alignleft size-full wp-image-1005&quot; /&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;
Pour faire votre propre moteur de recherche vous avez besoin de :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;450 000 serveurs répartis sur toute la planète ;&lt;/li&gt;
&lt;li&gt;80Go d&amp;#8217;espace disque par machine ;&lt;/li&gt;
&lt;li&gt;4Go de mémoire par machine ;&lt;/li&gt;
&lt;li&gt;Une connexion fibre optique entre vos &lt;em&gt;&amp;#8220;data centers&amp;#8221;&lt;/em&gt; ; &lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;
Bref, si vous n&amp;#8217;avez pas cette infrastructure à votre disposition ce n&amp;#8217;est pas la peine d&amp;#8217;aller plus loin &lt;img src=&quot;http://www.csquad.org/wp-includes/images/smilies/icon_wink.gif&quot; alt=&quot;;-)&quot; class=&quot;wp-smiley&quot; /&gt;&lt;br /&gt;
Bon d&amp;#8217;accord, vous voulez simplement un moteur de recherche personnel?
&lt;/p&gt;
&lt;p&gt;Un seul serveur avec les caractéristiques suivantes :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Un bon processeur ;&lt;/li&gt;
&lt;li&gt;Beaucoup de mémoire (4Go, ba oui, c&amp;#8217;est du Java ma petite dame &lt;img src=&quot;http://www.csquad.org/wp-includes/images/smilies/icon_wink.gif&quot; alt=&quot;;-)&quot; class=&quot;wp-smiley&quot; /&gt;  ) ;&lt;/li&gt;
&lt;li&gt;Un gros disque dur très rapide de plus de 500Go (des &lt;a href=&quot;http://en.wikipedia.org/wiki/Western_Digital_Raptor&quot;&gt; Raptor&lt;/a&gt; par exemple ) ;&lt;/li&gt;
&lt;li&gt;Une bonne bande passante, avec plus de 2Mb en &lt;em&gt;download&lt;/em&gt;;&lt;/li&gt;
&lt;li&gt;Une distribution Debian GNU/Linux ;&lt;/li&gt;
&lt;li&gt;Des compétences en administration d&amp;#8217;Apache, Tomcat et ligne de commande ;&lt;/li&gt;
&lt;li&gt;Un peu de temps pour configurer le système et le paramétrer aux petits oignons.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;C&amp;#8217;est bien plus abordable ? &lt;img src=&quot;http://www.csquad.org/wp-includes/images/smilies/icon_wink.gif&quot; alt=&quot;;-)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;
&lt;h3&gt;Fonctionnalités&lt;/h3&gt;
&lt;p&gt;En mettant en place mon propre moteur de recherche, je voulais obtenir les fonctionnalités suivantes :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Indexation des documents locaux (ex: un Intranet) ;&lt;/li&gt;
&lt;li&gt;Indexation plus poussé de mes centres d&amp;#8217;intérêts ;&lt;/li&gt;
&lt;li&gt;Indépendance par rapport à un moteur de recherche ;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Néanmoins, je dois faire une croix sur : &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;la publicité ciblée ;&lt;/li&gt;
&lt;li&gt;la recherche d&amp;#8217;images, de vidéos et temps réel ;&lt;/li&gt;
&lt;li&gt;la correction orthographique.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Les limitations&lt;/h3&gt;
&lt;p&gt;On pourrait dire que Nutch est un moteur de recherche de l&amp;#8217;époque &lt;em&gt;&amp;#8220;web 1.0&amp;#8243;&lt;/em&gt;. En effet, il ne contient pas d&amp;#8217;algorithme d&amp;#8217;&lt;a href=&quot;http://fr.wikipedia.org/wiki/Intelligence_collective&quot;&gt;Intelligence Bolchevique^Wcollective&lt;/a&gt; comme la plupart des moteurs de recherche. Cela signifie que seul le &lt;a href=&quot;http://fr.wikipedia.org/wiki/PageRank&quot;&gt;Page rank&lt;/a&gt; est utilisé et que les votes des utilisateurs ne sont pas pris en compte. Il est aussi plus sensible au &lt;a href=&quot;http://fr.wikipedia.org/wiki/Spamdexing&quot;&gt;Spamdexing&lt;/a&gt;. &lt;/p&gt;
&lt;h3&gt;Présentation des composants&lt;/h3&gt;
&lt;table&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot;&gt;&lt;img src=&quot;http://www.csquad.org/wp-content/uploads/2010/01/ubuntu_nutch_small.png&quot; alt=&quot;&quot; title=&quot;ubuntu_nutch_small&quot; width=&quot;128&quot; height=&quot;187&quot; class=&quot;alignleft size-full wp-image-1034&quot; /&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;
L&amp;#8217;architecture d&amp;#8217;un moteur de recherche est assez simple, vous avez besoin :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;d&amp;#8217;un &lt;a href=&quot;http://en.wikipedia.org/wiki/Web_crawler&quot;&gt;Web crawler&lt;/a&gt;, un logiciel qui explore automatiquement le Web à la recherche de ressources.&lt;/li&gt;
&lt;li&gt;un système d&amp;#8217;indexation, dans le cas de Nutch c&amp;#8217;est &lt;a href=&quot;http://lucene.apache.org/&quot;&gt;Apache Lucene&lt;/a&gt; ; &lt;/li&gt;
&lt;li&gt;des interfaces de recherche ;&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;h3&gt;Installation&lt;/h3&gt;
&lt;p&gt;Voici les étapes nécessaires pour faire fonctionner la version 1.0 Nuch sur une machine &lt;a href=&quot;http://www.debian.org/&quot;&gt;Debian GNU/Linux&lt;/a&gt; version &amp;#8220;lenny&amp;#8221;.&lt;/p&gt;
&lt;h4&gt;Dépendances&lt;/h4&gt;
&lt;p&gt;Vous avez besoin des composants suivants :&lt;br /&gt;
&lt;code&gt;# apt-get install tomcat5.5 tomcat5.5-admin tomcat5.5-webapps sun-java6-jre&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Configurer le JRE par default :&lt;br /&gt;
&lt;code&gt;# update-alternatives  --set java /usr/lib/jvm/java-6-sun/jre/bin/java&lt;/code&gt;&lt;/p&gt;
&lt;h4&gt;Nutch&lt;/h4&gt;
&lt;p&gt;C&amp;#8217;est une application en Java, que je place dans le repertoire &lt;em&gt;opt&lt;/em&gt; :&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
# cd /opt&lt;br /&gt;
# wget http://mirror.mkhelif.fr/apache/lucene/nutch/nutch-1.0.tar.gz&lt;br /&gt;
# tar xzf nutch-1.0.tar.gz&lt;br /&gt;
# ln -s nutch-1.0 nutch&lt;br /&gt;
# mkdir nutch/urls&lt;br /&gt;
# mkdir nutch/crawl&lt;br /&gt;
# chown tomcat55: nutch-1.0&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;h4&gt;Configuration&lt;/h4&gt;
&lt;p&gt;La configuration du moteur de recherche se trouve dans le fichier &lt;em&gt;conf/nutch-default.xml&lt;/em&gt;, vous disposez de votre fichier &lt;em&gt;conf/nutch-site.xml&lt;/em&gt;, spécifique à votre instance. Les variables intéressantes sont :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;http.agent.* : la politesse, pour décrire votre robot ou bien prendre l&amp;#8217;identité d&amp;#8217;un autre ; &lt;/li&gt;
&lt;li&gt;db.fetch.interval.(default|max) : ces variables définissent le nombre de jours entre chaque passage du robot, comme vous ne pourrez pas faire le tour du web en moins de 30 jours &lt;img src=&quot;http://www.csquad.org/wp-includes/images/smilies/icon_wink.gif&quot; alt=&quot;;-)&quot; class=&quot;wp-smiley&quot; /&gt; , une bonne idée est d&amp;#8217;augmenter ces valeurs ;&lt;/li&gt;
&lt;li&gt;plugin.includes : la définition des plugins pris en charge, ici vous pouvez ajouter la gestion des documents pdf, microsoft word et du protocole https.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Bootstrapping du moteur de recherche&lt;/h3&gt;
&lt;p&gt;Votre moteur de recherche doit avaler une quantité de donnée importante avant de pouvoir faire une recherche pertinente.&lt;br /&gt;
Voici quelques sources pour l&amp;#8217;initialiser.&lt;/p&gt;
&lt;h4&gt;A l&amp;#8217;aide d&amp;#8217;un annuaire&lt;/h4&gt;
&lt;p&gt;Il  existe de très bons annuaires complets comme le projet &lt;a href=&quot;http://www.dmoz.org/&quot;&gt;Open Directory Project&lt;/a&gt;.&lt;br /&gt;
Dont l&amp;#8217;ensemble des données sont disponibles au format RDF et téléchargeables librement : &lt;a href=&quot;http://rdf.dmoz.org/rdf/&quot;&gt;http://rdf.dmoz.org/rdf/&lt;/a&gt;.&lt;br /&gt;
Par contre, attention ce fichier référence 4 446 480 sites web et vous allez avoir besoin de beaucoup de place pour les référencer tout ce contenu.&lt;/p&gt;
&lt;p&gt;Voici la procédure pour utiliser l&amp;#8217;annuaire DMOZ avec Nutch :&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
$ cd /opt/nutch&lt;br /&gt;
$ mkdir urls&lt;br /&gt;
$ wget http://rdf.dmoz.org/rdf/content.rdf.u8.gz -O urls/content.rdf.u8.gz&lt;br /&gt;
$ gunzip urls/content.rdf.u8.gz&lt;br /&gt;
$ bin/nutch org.apache.nutch.tools.DmozParser urls/content.rdf.u8 &gt; urls/dmoz&lt;br /&gt;
$ bin/nutch inject crawl/crawldb urls/dmoz&lt;br /&gt;
Injector: starting&lt;br /&gt;
Injector: crawlDb: crawl/crawldb&lt;br /&gt;
Injector: urlDir: urls/dmoz&lt;br /&gt;
Injector: Converting injected urls to crawl db entries.&lt;br /&gt;
Injector: Merging injected urls into crawl db.&lt;br /&gt;
Injector: done&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;h4&gt;A l&amp;#8217;aide d&amp;#8217;un Marque-page&lt;/h4&gt;
&lt;p&gt;Une autre source pour initialiser le moteur de recherche est d&amp;#8217;utiliser les adresses contenues dans votre marque-page. Le principal avantage de cette technique est la faible quantité de données  à analyser et une pertinence de recherche accrue.&lt;br /&gt;
Pour ce faire, vous devez exporter votre marque-page au format HTML (pour Mozilla Firefox) et en extraire les adresses de la manière suivante :&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;
$ cd /opt/nutch&lt;br /&gt;
$ grep &quot;A HREF=\&quot;http&quot;  bookmarks.html | cut -d '&quot;' -f 2  &gt; urls/bookmarks&lt;br /&gt;
$ bin/nutch inject crawl/crawldb urls/bookmarks&lt;br /&gt;
Injector: starting&lt;br /&gt;
Injector: crawlDb: crawl/crawldb&lt;br /&gt;
Injector: urlDir: urls/bookmarks&lt;br /&gt;
Injector: Converting injected urls to crawl db entries.&lt;br /&gt;
Injector: Merging injected urls into crawl db.&lt;br /&gt;
Injector: done&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;h4&gt;A l&amp;#8217;aide de Wikipedia&lt;/h4&gt;
&lt;p&gt;&lt;a href=&quot;http://fr.wikipedia.org&quot;&gt;Wikipedia&lt;/a&gt; fourni des &lt;em&gt;dumps&lt;/em&gt; de sa &lt;a href=&quot;http://en.wikipedia.org/wiki/Wikipedia_database&quot;&gt;base de données&lt;/a&gt; au format XML. Il est donc possible d&amp;#8217;utiliser les URLs des articles de wikipedia comme source.&lt;br /&gt;
Voici la procédure pour la version française de Wikipedia, celle-ci contient 897 974 urls.&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
$ cd /opt/nutch/&lt;br /&gt;
$ mkdir urls&lt;br /&gt;
$ wget http://download.wikimedia.org/frwiki/latest/frwiki-latest-abstract.xml -O urls/frwiki-latest-abstract.xml&lt;br /&gt;
$ grep &quot;&amp;lt;url&amp;gt;&quot; urls/frwiki-latest-abstract.xml | cut -d '&gt;' -f 2 | cut -d ' ' -f 1 &gt; urls/wikipedia-fr&lt;br /&gt;
$ bin/nutch inject crawl/crawldb urls/wikipedia-fr&lt;br /&gt;
Injector: starting&lt;br /&gt;
Injector: crawlDb: crawl/crawldb&lt;br /&gt;
Injector: urlDir: urls/wikipedia-fr&lt;br /&gt;
Injector: Converting injected urls to crawl db entries.&lt;br /&gt;
Injector: Merging injected urls into crawl db.&lt;br /&gt;
Injector: done&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;What you&amp;#8217;re waitin&amp;#8217; for ? Christmas ?&lt;/h3&gt;
&lt;h4&gt;Come get some!&lt;/h4&gt;
&lt;p&gt;Une fois que vous avez chargé la base de données avec vos urls, il faut les parcourir afin de les indexer. Cela se fait à l&amp;#8217;aide de plusieurs commandes :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;generate&lt;/strong&gt; : sélections des adresses à parcourir ;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;fetch&lt;/strong&gt; : parcourt des urls ;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;updatedb&lt;/strong&gt; : mise à jours de la base des adresses ;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;invertlinks&lt;/strong&gt; : mise à jours de l&amp;#8217;index des adresses inversées  ;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;index&lt;/strong&gt; : indexation des données  ;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Une séquence classique ressemble donc à cela :&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
bin/nutch generate crawl/crawldb crawl/segments -topN 1000&lt;br /&gt;
s1=`ls -d crawl/segments/2* | tail -1`&lt;br /&gt;
bin/nutch fetch $s1&lt;br /&gt;
bin/nutch updatedb crawl/crawldb $s1&lt;br /&gt;
bin/nutch invertlinks crawl/linkdb $s1&lt;br /&gt;
bin/nutch index crawl/indexes crawl/crawldb crawl/linkdb $s1&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Cette suite de commandes vous permet de parcourir et d´indexer 1000 adresses issues de votre base.&lt;br /&gt;
C&amp;#8217;est un très bon 1er test pour voir si cela fonctionne. &lt;/p&gt;
&lt;h4&gt;Shake it, baby!&lt;/h4&gt;
&lt;p&gt;Une autre commande intéressante est &lt;em&gt;readdb&lt;/em&gt; avec l&amp;#8217;option &lt;em&gt;stats&lt;/em&gt;, qui permet d&amp;#8217;obtenir des informations sur le contenu de votre base  :&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
$ bin/nutch readdb crawl/crawldb/ -stats&lt;br /&gt;
CrawlDb statistics start: crawl/crawldb/&lt;br /&gt;
Statistics for CrawlDb: crawl/crawldb/&lt;br /&gt;
TOTAL urls:     3377315&lt;br /&gt;
...&lt;br /&gt;
min score:      0.0&lt;br /&gt;
avg score:      0.13178158&lt;br /&gt;
max score:      401.402&lt;br /&gt;
status 1 (db_unfetched):        2966337&lt;br /&gt;
status 2 (db_fetched):  300008&lt;br /&gt;
status 3 (db_gone):     46659&lt;br /&gt;
status 4 (db_redir_temp):       27857&lt;br /&gt;
status 5 (db_redir_perm):       36454&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Une bonne idées serait de mettre en place un système de monitoring sur ces informations pour suivre le déroulement. Par contre, il faut faire attention car la commande prend plusieurs minutes à s&amp;#8217;exécuter.  (donc hors de question de la placer dans un plugin munin, un mail tous les soirs serait une meilleur méthode). &lt;/p&gt;
&lt;h4&gt;Damn&amp;#8230; I&amp;#8217;m looking good!&lt;/h4&gt;
&lt;p&gt;Vous pouvez tester en ligne de commande  le fonctionnement du moteur de recherche :&lt;br /&gt;
&lt;code&gt;$ bin/nutch org.apache.nutch.searcher.NutchBean apache&lt;br /&gt;
Total hits: 6413&lt;br /&gt;
 0 20100104001440/http://xmlgraphics.apache.org/fop/&lt;br /&gt;
 ... be part of Apache's XML Graphics project . Demonstration ... goals of the Apache FOP project are to ...&lt;br /&gt;
 1 20100103201220/http://velocity.apache.org/&lt;br /&gt;
 ... Library Site building Site tools Apache Reference Apache Website How the ASF ... way in its field. Apache&lt;br /&gt;
...&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Voilà cela fonctionne en ligne de commande, nous pouvons passer à l&amp;#8217;interface end user (enfin un moteur de recherche en ligne de commande c&amp;#8217;est très pratique aussi &lt;img src=&quot;http://www.csquad.org/wp-includes/images/smilies/icon_wink.gif&quot; alt=&quot;;-)&quot; class=&quot;wp-smiley&quot; /&gt;  )&lt;/p&gt;
&lt;h3&gt;Configuration de l&amp;#8217;interface web&lt;/h3&gt;
&lt;p&gt;Nutch fournir un application pour Tomcat / Jboss. Il suffit de la déployer et de lui indiquer l&amp;#8217;emplacement de votre index de la manière suivante :&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
# cd /opt/nutch&lt;br /&gt;
# cp nutch-1.0.war /var/lib/tomcat5.5/webapps&lt;br /&gt;
... attendre&lt;br /&gt;
# vim /var/lib/tomcat5.5/webapps/nutch-1.0/WEB-INF/classes/nutch-default.xml&lt;br /&gt;
... remplacer la value de &lt;em&gt;searcher.dir&lt;/em&gt;  par /opt/nutch/crawl&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Mais aussi modifier la sécurité de tomcat, via le fichier &lt;em&gt;/etc/default/tomcat5.5&lt;/em&gt; en mettant la variable &lt;em&gt;TOMCAT5_SECURITY&lt;/em&gt; à no.&lt;br /&gt;
Ou bien en créant un fichier policy donnant l&amp;#8217;accès au répertoire &lt;em&gt;/opt/nutch/crawl&lt;/em&gt;. (c&amp;#8217;est plus propre &lt;img src=&quot;http://www.csquad.org/wp-includes/images/smilies/icon_wink.gif&quot; alt=&quot;;-)&quot; class=&quot;wp-smiley&quot; /&gt;  )&lt;/p&gt;
&lt;p&gt;Vous pouvez ensuite redémarrer tomcat et accèder au moteur de recherche via votre navigateur sur le port 8180.&lt;/p&gt;
&lt;h3&gt;Problèmes rencontrés&lt;/h3&gt;
&lt;p&gt;Voici quelques problèmes que j&amp;#8217;ai rencontré lors de mes tests de la version 1.0 de Nutch :&lt;/p&gt;
&lt;h4&gt;La directive merge ne fonctionne pas&lt;/h4&gt;
&lt;p&gt;Impossible de &lt;em&gt;fusionner&lt;/em&gt; deux index, il est nécessaire de re-creer l&amp;#8217;ensemble de l&amp;#8217;index à chaque fois.&lt;/p&gt;
&lt;h4&gt;La directive fetch flanche&lt;/h4&gt;
&lt;p&gt;Lorsque trop nombreux sites sont choisis dans la liste des sites à parcourir par le robot d&amp;#8217;indexation à l&amp;#8217;aide de l&amp;#8217;option &lt;em&gt;topN&lt;/em&gt;, le programme produit une erreur et le &lt;em&gt;segement&lt;/em&gt; produit est corrompu. (c&amp;#8217;est pour cette raison que je limite le nombre de site dans un segment à 5000)&lt;/p&gt;
&lt;h3&gt;Maintenance de l&amp;#8217;index&lt;/h3&gt;
&lt;p&gt;Une fois le moteur de recherche mise en place, il faut maintenir l&amp;#8217;index à jours. Pour cela, j&amp;#8217;ai mis en place un simple script de crawl avec cron qui se lance tous les soirs :&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
bin/nutch generate crawl/crawldb crawl/segments -topN 5000&lt;br /&gt;
s1=`ls -d crawl/segments/2* | tail -1`&lt;br /&gt;
bin/nutch fetch $s1&lt;br /&gt;
bin/nutch updatedb crawl/crawldb $s1&lt;br /&gt;
bin/nutch invertlinks crawl/linkdb $s1&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
et un autre qui re-créer l&amp;#8217;index :&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
rm -rf crawl/indexes/&lt;br /&gt;
bin/nutch index crawl/indexes/ crawl/crawldb/ crawl/linkdb/ crawl/segments/*&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Optimisation du robot d&amp;#8217;indexation&lt;/h3&gt;
&lt;p&gt;La principale difficulté de ce projet est l&amp;#8217;indexation d&amp;#8217;une énorme quantité de données avec des moyens techniques très limité.&lt;br /&gt;
Voici donc quelques idées pour optimiser l&amp;#8217;indexation de votre moteur de recherche. &lt;/p&gt;
&lt;h4&gt;Utiliser le serveur mandataire de votre fournisseur d&amp;#8217;accès à Internet&lt;/h4&gt;
&lt;p&gt;Vous pouvez ajouter l&amp;#8217;adresse du serveur mandataire de votre FAI dans le fichier &lt;em&gt;conf/nutch-site.xml&lt;/em&gt; :&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
&amp;lt;property&gt;&lt;br /&gt;
  &amp;lt;name&gt;http.proxy.host&amp;lt;/name&gt;&lt;br /&gt;
  &amp;lt;value&gt;proxy.free.fr&amp;lt;/value&gt;&lt;br /&gt;
&amp;lt;/property&gt;&lt;br /&gt;
&amp;lt;property&gt;&lt;br /&gt;
  &amp;lt;name&gt;http.proxy.port&amp;lt;/name&gt;&lt;br /&gt;
  &amp;lt;value&gt;3128&amp;lt;/value&gt;&lt;br /&gt;
&amp;lt;/property&gt;&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Note : On me signale dans l&amp;#8217;oreillette, que &lt;a href=&quot;http://www.freenews.fr/spip.php?article7300&quot;&gt;mon FAI à fermer son proxy&lt;/a&gt; à cause d&amp;#8217;une sombre histoire de &lt;a href=&quot;http://fr.wikipedia.org/wiki/Loi_Cr%C3%A9ation_et_Internet&quot;&gt;Haute Autorité De l&amp;#8217;Ouverture Postale Inopinée&lt;/a&gt;.&lt;/p&gt;
&lt;h4&gt;Mise en place d&amp;#8217;un serveur DNS locale&lt;/h4&gt;
&lt;p&gt;Vous avez besoin de mettre en place un serveur cache DNS locale qui prend en charge les requêtes du robot. Vous pouvez faire cela avec &lt;a href=&quot;https://www.isc.org/products/BIND/&quot;&gt;ISC BIND&lt;/a&gt; ou bien &lt;a href=&quot;http://www.phys.uu.nl/~rombouts/pdnsd.html&quot;&gt;pdnsd&lt;/a&gt;. &lt;/p&gt;
&lt;h4&gt;Augmentation du nombre de Threads&lt;/h4&gt;
&lt;p&gt;Vous pouvez aussi augmenter le nombre de processus utiliser par le robot d&amp;#8217;indexation en modifiant les variables du fichier de configuration :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;fetcher.threads.fetch&lt;/em&gt; : nombre de threads au total (42) ;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pour plus d&amp;#8217;informations, vous pouvez voir sur le wiki du projet : &lt;a href=&quot;http://wiki.apache.org/nutch/OptimizingCrawls&quot;&gt;OptimizingCrawls&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Imposer^WIntégrer Nutch&lt;/h3&gt;
&lt;p&gt;Voici quelques astuces pour intégrer Nutch à votre architecture. &lt;/p&gt;
&lt;h4&gt;Mozilla Firefox&lt;/h4&gt;
&lt;p&gt;Pour Mozilla Firefox, le système de plugin permet d&amp;#8217;inclure votre &lt;a href=&quot;https://developer.mozilla.org/en/Creating_OpenSearch_plugins_for_Firefox&quot;&gt;propre moteur de recherche&lt;/a&gt;.&lt;br /&gt;
Pour faire cela, il faut placer le fichier &lt;a href=&quot;http://www.csquad.org/wp-content/contrib/nutch.xml&quot;&gt;nutch.xml&lt;/a&gt; dans votre profile Firefox : &lt;em&gt;~/.mozilla/firefox/*.default/searchplugins&lt;/em&gt; (en remplacant par l&amp;#8217;addresse de votre instance ) .&lt;/p&gt;
&lt;h4&gt;DNS Menteur&lt;/h4&gt;
&lt;p&gt;Vous pouvez modifier la configuration de votre DNS pour résoudre le domaine google avec l&amp;#8217;adresse de votre moteur de recherche. (Ouais, je sais Net Neutrality, toussa &lt;img src=&quot;http://www.csquad.org/wp-includes/images/smilies/icon_wink.gif&quot; alt=&quot;;-)&quot; class=&quot;wp-smiley&quot; /&gt;  ). En modifiant la feuille de style de l&amp;#8217;interface web certains utilisateurs ne verront surement pas la diffèrence.&lt;/p&gt;
&lt;h3&gt;Est-ce bien raisonnable ?&lt;/h3&gt;
&lt;p&gt;Vous allez me dire. Héberger son propre moteur de recherche chez soit, quelle drôle d&amp;#8217;idée  &lt;img src=&quot;http://www.csquad.org/wp-includes/images/smilies/icon_wink.gif&quot; alt=&quot;;-)&quot; class=&quot;wp-smiley&quot; /&gt;&lt;br /&gt;
Je pousse, le concept d&amp;#8217;&lt;a href=&quot;http://fr.wikipedia.org/wiki/Auto-h%C3%A9bergement&quot;&gt;Auto-hébergement&lt;/a&gt; au maximum, mais il est clair que j&amp;#8217;ai fait cette article &lt;em&gt;&amp;#8220;Just for fun&amp;#8221;&lt;/em&gt;, car même si je ne peut indexer que 5000 sites par jours (le script fonctionne durant les heures creuses) , soit 1 825 000 en un an, je vais avoir beaucoup de mal à indexer les 4 446 480 urls de DMOZ.&lt;/p&gt;
&lt;h3&gt;Références&lt;/h3&gt;
&lt;p&gt;Voici quelques références intéressantes sur le sujet :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://infolab.stanford.edu/~backrub/google.html&quot;&gt;The Anatomy of a Large-Scale Hypertextual Web Search Engine&lt;/a&gt; : description de l&amp;#8217;architecture de Google ;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.schneier.com/blog/archives/2009/12/my_reaction_to.html&quot;&gt;La réponse de Bruce Schneier&lt;/a&gt; à Eric Schmidt ;&lt;/li&gt;
&lt;li&gt;Le &lt;a href=&quot;http://lucene.apache.org/nutch/tutorial8.html&quot;&gt;tutorial&lt;/a&gt; pour les versions 0.8.x de Nutch ;&lt;/li&gt;
&lt;li&gt;Le &lt;a href=&quot;http://wiki.apache.org/nutch/FrontPage&quot;&gt;Wiki&lt;/a&gt; du projet Nutch ; &lt;/li&gt;
&lt;li&gt;Un &lt;a href=&quot;http://www.bustedtees.com/skynet&quot;&gt;tee short&lt;/a&gt; très googlitude ;&lt;/li&gt;
&lt;li&gt;Un autre tutorial similaire pour une version plus ancienne : &lt;a href=&quot;http://goupil.arnaud.free.fr/nutch.php&quot;&gt;Installation de Nutch 0.8.1 sous Ubuntu 6.10&lt;/a&gt; d&amp;#8217;Arnaud Goupil ;&lt;/li&gt;
&lt;li&gt;Le blog du groupe de travail francophone : &lt;a href=&quot;http://frutch.blogspot.com/&quot;&gt;Frutch&lt;/a&gt; ;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.motrech.com/&quot;&gt;Motrech&lt;/a&gt;, le blog consacré aux moteurs de recherche. &lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;Vous avez maintenant à votre disposition un moteur de recherche personnel.&lt;br /&gt;
Et vous êtes libre de rechercher des choses sans que personne ne puisse le savoir &lt;img src=&quot;http://www.csquad.org/wp-includes/images/smilies/icon_wink.gif&quot; alt=&quot;;-)&quot; class=&quot;wp-smiley&quot; /&gt;&lt;br /&gt;
L&amp;#8217;étape la plus dure est de se passer de l&amp;#8217;utilisation google &lt;img src=&quot;http://www.csquad.org/wp-includes/images/smilies/icon_wink.gif&quot; alt=&quot;;-)&quot; class=&quot;wp-smiley&quot; /&gt;&lt;br /&gt;
Si vous voulez aller plus loin dans le monde des moteurs de recherche libre vous pouvez intégrer Nutch avec &lt;a href=&quot;http://lucene.apache.org/solr/features.html&quot;&gt;Solr&lt;/a&gt;, comme décrit dans cette article : &lt;a href=&quot;http://www.lucidimagination.com/blog/2009/03/09/nutch-solr/&quot;&gt;Using Nutch with Solr&lt;/a&gt;.&lt;br /&gt;
Afin d&amp;#8217;obtenir un moteur de recherche professionnel pour une entreprise. (principalement pour éviter la fuite d&amp;#8217;information).&lt;br /&gt;
Ou bien si vous si êtes intéressé par un produit similaire aux &lt;a href=&quot;http://www.google.com/enterprise/intranet_search.html&quot;&gt;Solutions d&amp;#8217;entreprise&lt;/a&gt; de Google.&lt;/p&gt;
&lt;p&gt;Pour finir, la petite cerise sur la gâteau, comme Nutch utilise &lt;a href=&quot;http://hadoop.apache.org/&quot;&gt;Hadoop&lt;/a&gt;, il &lt;em&gt;scale&lt;/em&gt; comme un troupeau éléphants &lt;img src=&quot;http://www.csquad.org/wp-includes/images/smilies/icon_wink.gif&quot; alt=&quot;;-)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;</description>
	<pubDate>lun, 11 jan 2010 22:22:26 +0000</pubDate>
</item>
<item>
	<title>Carl Chenet: Bonne année !</title>
	<guid permalink="False">http://carlchenet.wordpress.com/?p=195</guid>
	<link>http://carlchenet.wordpress.com/2010/01/04/bonne-annee/</link>
	<description>&lt;br /&gt;&lt;p&gt;C&amp;#8217;est le moment traditionnel d&amp;#8217;annoncer ses bonnes résolutions pour l&amp;#8217;année à venir. Pour ne pas déroger à la tradition, voici ce à quoi je vais essayer de me tenir :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Continuer à développer mes activités dans Debian. Je gère&lt;a title=&quot;Paquets Debian gérés par Carl Chenet&quot; href=&quot;http://qa.debian.org/developer.php?login=chaica@ohmytux.com&quot; target=&quot;_blank&quot;&gt; 11 paquets à ce jour&lt;/a&gt;, majoritairement des petits projets prometteurs écrits en Python et souhaite intégrer encore quelques nouveautés. J&amp;#8217;avais suspendu mon travail sur &lt;a title=&quot;Page d'accueil du projet Reportbug&quot; href=&quot;http://packages.debian.org/sid/reportbug&quot; target=&quot;_blank&quot;&gt;Reportbug&lt;/a&gt; et vais tâcher de m&amp;#8217;y remettre dès cette semaine.&lt;/li&gt;
&lt;li&gt;Communiquer davantage sur mon travail dans les logiciels libres, et ce afin de permettre une plus grande visibilité des petits projets que j&amp;#8217;essaie de promouvoir au sein de Debian.&lt;/li&gt;
&lt;li&gt;Apprendre un nouveau langage. Je m&amp;#8217;intéressais de façon intermittente au &lt;a title=&quot;Page du projet Haskell&quot; href=&quot;http://haskell.org/&quot; target=&quot;_blank&quot;&gt;Haskell&lt;/a&gt; et je vais essayer de faire l&amp;#8217;effort cette année pour acquérir une réelle maîtrise du langage.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Sur ce, je vous souhaite encore une très bonne année 2010 à tous !&lt;/p&gt;
&lt;p&gt;Ps :&lt;br /&gt;
&lt;img class=&quot;alignnone&quot; title=&quot;I'm going to Fosdem 2010&quot; src=&quot;http://www.fosdem.org/promo/going-to&quot; alt=&quot;&quot; width=&quot;150&quot; height=&quot;89&quot; /&gt;&lt;br /&gt;
Si vous souhaitez me rencontrer là-bas, laissez-moi un message dans les commentaires.&lt;/p&gt;
  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/carlchenet.wordpress.com/195/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/carlchenet.wordpress.com/195/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/carlchenet.wordpress.com/195/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/carlchenet.wordpress.com/195/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/carlchenet.wordpress.com/195/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/carlchenet.wordpress.com/195/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/carlchenet.wordpress.com/195/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/carlchenet.wordpress.com/195/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/carlchenet.wordpress.com/195/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/carlchenet.wordpress.com/195/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=carlchenet.wordpress.com&amp;blog=7722010&amp;post=195&amp;subd=carlchenet&amp;ref=&amp;feed=1&quot; /&gt;</description>
	<pubDate>lun, 04 jan 2010 18:38:02 +0000</pubDate>
</item>
<item>
	<title>Carl Chenet: Bélier dans GNU/Linux magazine France</title>
	<guid permalink="False">http://carlchenet.wordpress.com/?p=188</guid>
	<link>http://carlchenet.wordpress.com/2010/01/03/belier-dans-gnulinux-magazine-france/</link>
	<description>&lt;br /&gt;&lt;p&gt;Bonjour à tous,&lt;/p&gt;
&lt;p&gt;Un article détaillant le fonctionnement de &lt;a title=&quot;Page d'accueil du projet Bélier&quot; href=&quot;http://www.ohmytux.com/belier&quot; target=&quot;_blank&quot;&gt;Bélier&lt;/a&gt;, l&amp;#8217;outil d&amp;#8217;automatisation de connexions SSH complexes, est paru dans le numéro 123 (janvier 2010) de GNU/Linux Magazine France (GLMF pour les initiés).  Un bon moyen de découvrir les possibilités offertes par ce programme autrement que par &lt;a title=&quot;Documentation officielle du projet Bélier&quot; href=&quot;http://www.ohmytux.com/belier/documentation.html&quot; target=&quot;_blank&quot;&gt;la documentation officielle&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;À bientôt&lt;/p&gt;
  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/carlchenet.wordpress.com/188/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/carlchenet.wordpress.com/188/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/carlchenet.wordpress.com/188/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/carlchenet.wordpress.com/188/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/carlchenet.wordpress.com/188/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/carlchenet.wordpress.com/188/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/carlchenet.wordpress.com/188/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/carlchenet.wordpress.com/188/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/carlchenet.wordpress.com/188/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/carlchenet.wordpress.com/188/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=carlchenet.wordpress.com&amp;blog=7722010&amp;post=188&amp;subd=carlchenet&amp;ref=&amp;feed=1&quot; /&gt;</description>
	<pubDate>dim, 03 jan 2010 11:56:44 +0000</pubDate>
</item>
<item>
	<title>Shams Fantar: Des commandes bash pures et dures</title>
	<guid>urn:md5:d1dfdfa3d5bfbea0459faf5e2640e445</guid>
	<link>http://about-gnulinux.info/dotclear/index.php?post/2009/12/29/Des-commandes-bash-pures-et-dures</link>
	<description>&lt;p&gt;Je trouve que beaucoup d'utilisateurs de bash ne connaissent pas certaines astuces utiles liées à des commandes usuelles, parce qu'elles ne sont pas assez mises en avant dans les documentations. Nous allons donc voir ici quelques commandes/astuces bash que tout le monde ne connait pas.&lt;/p&gt;


&lt;h2&gt;Les expressions : utlisation de &quot;?&quot; :&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Afficher tous les répertoires/fichiers comportant un seul caractère après le point :&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;ls *.? # ajoutez autant de &quot;?&quot; que vous souhaitez (??? pour trois caractères)&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;Afficher tous les répertoires/fichiers comportant 5 caractères :&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;ls &lt;acronym&gt;&lt;/acronym&gt;? # adaptez le nombre de &quot;?&quot;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;Afficher  tous les fichiers/répertoires dont le nom débute par &quot;a&quot; ou &quot;b&quot; :&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;ls [ab]* # vous pouvez remplacer les lettres, et même en ajouter/supprimer&lt;/pre&gt;


&lt;h2&gt;Redirections :&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Rediriger les erreurs renvoyées par une commande :&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;macommande 2&amp;gt; erreur.file # vous pouvez faire 2&amp;gt;&amp;gt; pour ne pas écraser le erreur.file si il existe&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;Rediriger les erreurs renvoyées par une commande vers &quot;nul part&quot; :&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;macommande 2&amp;gt; /dev/null&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;Rediriger le résultat d'une commande dans un fichier qui n'existe pas :&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt; ls | tee my_file&lt;/pre&gt;

&lt;p&gt;ou&lt;/p&gt;

&lt;pre&gt; ls &amp;gt; my_file&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;Rediriger le résultat d'une commande dans un fichier qui existe (on veut concaténer) :&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt; ls | tee -a my_file&lt;/pre&gt;

&lt;p&gt;ou&lt;/p&gt;

&lt;pre&gt; ls &amp;gt;&amp;gt; my_file&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;Rediriger le résultat de plusieurs commandes dans un fichier, en restant dans le shell courant :&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;(cd /root/ ; pwd ; ls) &amp;gt; file&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;Rediriger le résultat de plusieurs commandes dans un fichier, en allant dans /root :&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;{ cd /root/ ; pwd ; ls ;} &amp;gt; file&lt;/pre&gt;


&lt;p&gt;Voilà globalement des astuces bien utiles mais trop peu utilisées !&lt;/p&gt;</description>
	<pubDate>mar, 29 déc 2009 19:05:00 +0000</pubDate>
</item>
<item>
	<title>J&amp;#233;r&amp;#233;my Verda: Simple Scan : Numériser simplement sous GNU/Linux</title>
	<guid permalink="False">http://blog.v-jeremy.net/?p=606</guid>
	<link>http://blog.v-jeremy.net/simple-scan-numeriser-simplement-sous-gnulinux/</link>
	<description>&lt;p&gt;Comme son nom l&amp;#8217;indique, Simple Scan est une interface toute simple pour numériser vos textes et images sous GNU/Linux. Il s&amp;#8217;agit d&amp;#8217;une sur-couche à Sane (votre scanner devant donc être détecté par ce dernier pour fonctionner) mais qui se veut plus simple que Xsane. Il dispose cependant de bien moins d&amp;#8217;options que ce dernier, mais fais très bien son travail.&lt;/p&gt;
&lt;p&gt;Il vous propose la numérisation en mode texte ou en mode image. Une fois votre document numériser, il vous permet de le recadrer, de le sauvegarder ou bien de l&amp;#8217;envoyer directement par e-mail via votre logiciel par défaut.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://blog.v-jeremy.net/wp-content/uploads/2009/12/simple-scan.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-medium wp-image-607&quot; title=&quot;Simple Scan&quot; src=&quot;http://blog.v-jeremy.net/wp-content/uploads/2009/12/simple-scan-300x162.jpg&quot; alt=&quot;&quot; width=&quot;300&quot; height=&quot;162&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Cliquez sur l&amp;#8217;image pour l&amp;#8217;agrandir.&lt;/p&gt;
&lt;p&gt;En bref, un logiciel qui fait le travail qu&amp;#8217;on lui demande sans poser trop de questions.&lt;/p&gt;
&lt;p&gt;Idéal lorsqu&amp;#8217;on désire rapidement numériser un document, mais moins lorsqu&amp;#8217;on désire peaufiner toute une série d&amp;#8217;option.&lt;/p&gt;
&lt;p&gt;Pour plus d&amp;#8217;information au sujet de Simple Scan, cela ce passe sur &lt;a title=&quot;Simple Scan&quot; href=&quot;https://launchpad.net/simple-scan&quot;&gt;cette page&lt;/a&gt; du launchpad.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;small&gt;&lt;a href=&quot;http://blog.v-jeremy.net/simple-scan-numeriser-simplement-sous-gnulinux/&quot;&gt;Article&lt;/a&gt; écrit par &lt;a href=&quot;http://blog.v-jeremy.net&quot;&gt;Jérémy Verda&lt;/a&gt; et sous licence &lt;a href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/be/&quot;&gt;Creative Commons BY-NC-SA&lt;/a&gt;.
&lt;br /&gt;
&lt;/small&gt;&lt;/p&gt;
	Tags:&lt;a href=&quot;http://blog.v-jeremy.net/tag/gnome/&quot; title=&quot;GNOME&quot; rel=&quot;tag&quot;&gt;GNOME&lt;/a&gt;, &lt;a href=&quot;http://blog.v-jeremy.net/tag/gnulinux/&quot; title=&quot;Gnu/Linux&quot; rel=&quot;tag&quot;&gt;Gnu/Linux&lt;/a&gt;, &lt;a href=&quot;http://blog.v-jeremy.net/tag/libreopen-source/&quot; title=&quot;Libre/Open-source&quot; rel=&quot;tag&quot;&gt;Libre/Open-source&lt;/a&gt;, &lt;a href=&quot;http://blog.v-jeremy.net/tag/planet-libre/&quot; title=&quot;Planet Libre&quot; rel=&quot;tag&quot;&gt;Planet Libre&lt;/a&gt;, &lt;a href=&quot;http://blog.v-jeremy.net/tag/scriptslogiciel/&quot; title=&quot;Scripts/Logiciel&quot; rel=&quot;tag&quot;&gt;Scripts/Logiciel&lt;/a&gt;&lt;br /&gt;</description>
	<pubDate>mar, 29 déc 2009 16:37:47 +0000</pubDate>
</item>
<item>
	<title>Christophe Nowicki: Notifications Nagios par Téléphone</title>
	<guid permalink="False">http://www.csquad.org/?p=780</guid>
	<link>http://www.csquad.org/2009/12/09/notifications-nagios-par-telephone/</link>
	<description>&lt;p&gt;J&amp;#8217;ai configuré mon instance de &lt;a href=&quot;http://www.nagios.org/&quot;&gt;Nagios&lt;/a&gt; pour recevoir une notification par téléphone en cas d&amp;#8217;incident. (déclenchement d&amp;#8217;une alarme ou d&amp;#8217;un détecteur d&amp;#8217;eau / fumée dans mon &lt;a href=&quot;http://www.csquad.org/installation-domotique/&quot;&gt;installation domotique&lt;/a&gt;). &lt;/p&gt;
&lt;p&gt;Ce billet décrit comment mettre en place un système de  la notification par téléphone avec Nagios.&lt;/p&gt;
&lt;h3&gt;Pré-requis&lt;/h3&gt;
&lt;p&gt;Vous avez besoin des composants suivants :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Une distribution &lt;a href=&quot;http://www.debian.org/&quot;&gt;Debian GNU/Linux&lt;/a&gt; ;&lt;/li&gt;
&lt;li&gt;Une installation fonctionnelle de &lt;a href=&quot;http://www.nagios.org/&quot;&gt;Nagios&lt;/a&gt; ; &lt;/li&gt;
&lt;li&gt;Une PABX IP avec le support du protocole SIP, comme &lt;a href=&quot;http://www.asterisk.org/&quot;&gt;Asterisk&lt;/a&gt; ;&lt;/li&gt;
&lt;li&gt;Un système de Synthèse vocale fonctionnelle, comme &lt;a href=&quot;http://espeak.sourceforge.net/&quot;&gt;eSpeak&lt;/a&gt; + &lt;a href=&quot;http://tcts.fpms.ac.be/synthesis/mbrola.html&quot;&gt;MBROLA&lt;/a&gt; ;&lt;/li&gt;
&lt;li&gt;Un client SIP en ligne de commande comme &lt;a href=&quot;http://www.pjsip.org/pjsua.htm&quot;&gt;PJSUA&lt;/a&gt;. &lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Installation&lt;/h3&gt;
&lt;p&gt;Le client SIP en ligne de commande PJSUA n&amp;#8217;est pas disponible dans les paquets du projet Debian.&lt;br /&gt;
Il est donc nécessaire de l&amp;#8217;installer manuellement à l&amp;#8217;aide du classique : &lt;em&gt;configure, make, make install&lt;/em&gt;.&lt;br /&gt;
La procédure est décrite dans ce billet : &lt;a href=&quot;http://blog.nicolargo.com/2009/02/un-client-sip-en-ligne-de-commande.html&quot;&gt;Un client SIP en ligne de commande&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Pour l&amp;#8217;installation du système de synthèse vocale, vous pouvez vous référer à mon précèdent billet sur le sujet : &lt;a href=&quot;http://www.csquad.org/2009/08/27/text-to-speech-avec-espeak-mbrola-et-speech-dispatcher/&quot;&gt;Text-to-Speech avec eSpeak, MBROLA et Speech Dispatcher&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Configuration&lt;/h3&gt;
&lt;p&gt;Vous devez créer un compte SIP pour Nagios sur votre PABX et tester que l&amp;#8217;enregistrement est fonctionnel. &lt;/p&gt;
&lt;p&gt;Pour cela vous avez besoin d&amp;#8217;un fichier de configuration spécifique à Nagios pour PJSUA, dans &lt;em&gt;/etc/nagios/sip.cfg&lt;/em&gt; par exemple :&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
--id sip:nagios@pabx.csquad.lan&lt;br /&gt;
--registrar sip:pabx.csquad.lan&lt;br /&gt;
--realm *&lt;br /&gt;
--username nagios&lt;br /&gt;
--password secret&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Vous pouvez ensuite tester l&amp;#8217;enregistrement en ligne de commande :&lt;br /&gt;
&lt;code&gt;$ pjsua --config-file /etc/nagios/sip.cfg&lt;br /&gt;
...&lt;br /&gt;
 11:17:05.376    pjsua_acc.c  sip:nagios@pabx.csquad.lan: registration success, status=200 (OK), will re-register in 300 seconds&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Un appel de test :&lt;br /&gt;
&lt;code&gt;$ pjsua --config-file /etc/nagios/sip.cfg --null-audio sip:secretariat@pabx.csquad.lan&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Ensuite un appel de test audio avec un message :&lt;br /&gt;
&lt;code&gt; $ espeak -v mb/mb-fr1 &quot;E.T. téléphone maison&quot; | /usr/local/bin/mbrola /usr/share/mbrola/fr1/fr1 - test.wav&lt;br /&gt;
$ pjsua --config-file /etc/nagios/sip.cfg --play-file=test.wav --auto-play --null-audio sip:secretariat@pabx.csquad.lan&lt;br /&gt;
$ rm -f test.wav&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;On met le tout dans un petit script &lt;a href=&quot;http://expect.nist.gov/&quot;&gt;expect&lt;/a&gt; pour prendre en charge la déconnections de manière polie :&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
#!/usr/bin/expect  --&lt;br /&gt;
set timeout 45&lt;br /&gt;
set addr [lindex $argv 0]&lt;br /&gt;
set text [lindex $argv 1]&lt;br /&gt;
exec /usr/bin/espeak -v mb/mb-fr1 $text | /usr/local/bin/mbrola /usr/share/mbrola/fr1/fr1 - /tmp/phone-call.wav;&lt;br /&gt;
spawn /usr/local/bin/pjsua --app-log-level=3 --config-file /etc/nagios/sip.cfg --play-file /tmp/phone-call.wav --auto-play --null-audio --max-calls 1 sip:$addr&lt;br /&gt;
expect {&lt;br /&gt;
        &quot;DISCONNCTD&quot; {&lt;br /&gt;
                exit&lt;br /&gt;
        }&lt;br /&gt;
        timeout {&lt;br /&gt;
                send &quot;h\n&quot;&lt;br /&gt;
                exit&lt;br /&gt;
        }&lt;br /&gt;
        eof {&lt;br /&gt;
                exit&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Et voilà &lt;img src=&quot;http://www.csquad.org/wp-includes/images/smilies/icon_wink.gif&quot; alt=&quot;;-)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;
&lt;p&gt;Il ne nous reste plus qu&amp;#8217;à configurer ce type de notification dans Nagios.&lt;br /&gt;
Pour cela, il faut modifier le fichier &lt;em&gt;contacts.cfg&lt;/em&gt; :&lt;br /&gt;
&lt;code&gt;# 'nagios-phone' contact definition&lt;br /&gt;
define contact{&lt;br /&gt;
        contact_name                    nagios-phone&lt;br /&gt;
        alias                           Nagios Admin via Phone&lt;br /&gt;
        service_notification_period     24x7 ; mouahahahahahaha&lt;br /&gt;
        host_notification_period        24x7 ; moiahahahahahahah&lt;br /&gt;
        service_notification_options    w,u,c,r&lt;br /&gt;
        host_notification_options       d,u,r&lt;br /&gt;
        service_notification_commands   notify-by-phone&lt;br /&gt;
        host_notification_commands      host-notify-by-phone&lt;br /&gt;
        email sip:secretariat@pabx.csquad.lan&lt;br /&gt;
        }&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Puis le fichier &lt;em&gt;misccommands.cfg&lt;/em&gt; :&lt;br /&gt;
&lt;code&gt;# 'notify-by-phone' personnal command definition&lt;br /&gt;
define command{&lt;br /&gt;
  command_name notify-by-phone&lt;br /&gt;
  command_line /usr/local/bin/phone-call.sh $CONTACTEMAIL$ &quot;$NOTIFICATIONTYPE$ alert - $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$&quot;&lt;br /&gt;
}&lt;br /&gt;
# 'host-notify-by-phone' personnal command definition&lt;br /&gt;
define command{&lt;br /&gt;
  command_name host-notify-by-phone&lt;br /&gt;
  command_line /usr/local/bin/phone-call.sh $CONTACTEMAIL$ &quot;Host $HOSTSTATE$ alert for $HOSTNAME$!&quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Ensuite, vous pouvez définir &lt;em&gt;nagios-phone&lt;/em&gt; comme un contact pour des services ou hosts. &lt;/p&gt;
&lt;p&gt;Il faut aussi modifier la valeur de la variable &lt;a href=&quot;http://nagios.sourceforge.net/docs/2_0/configmain.html#notification_timeout&quot;&gt;notification_timeout&lt;/a&gt; dans le fichier de configuration &lt;em&gt;nagios.cfg&lt;/em&gt;, pour avoir le temps de décrocher le téléphone et d&amp;#8217;en tendre le message. &lt;/p&gt;
&lt;h3&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;Vous n&amp;#8217;avez plus aucune excuse pour ne pas brancher vos esclaves^Wéquipe d&amp;#8217;administrateurs systèmes directement sur le système de surveillance de vos serveurs &lt;img src=&quot;http://www.csquad.org/wp-includes/images/smilies/icon_wink.gif&quot; alt=&quot;;-)&quot; class=&quot;wp-smiley&quot; /&gt;  &lt;/p&gt;
&lt;p&gt;Plus sérieusement, la notification par téléphone est une méthode très intrusive. Il est nécessaire de décrocher le téléphone. Il faut donc l&amp;#8217;utiliser avec parcimonie. &lt;/p&gt;</description>
	<pubDate>mer, 09 déc 2009 19:39:02 +0000</pubDate>
</item>
<item>
	<title>Shams Fantar: Faire du multi-écrans avec xrandr</title>
	<guid>urn:md5:f47b23fcdac77ffe6e45d532e2d43392</guid>
	<link>http://about-gnulinux.info/dotclear/index.php?post/2009/12/08/Faire-du-multi-%C3%A9crans-avec-xrandr</link>
	<description>&lt;p&gt;Vous allez voir dans cet article comment utiliser deux écrans affichant la même chose avec un même écran (c'est ce que nous appellons le &quot;multi-écrans&quot;). Nous allons utiliser xrandr, ce dernier est normalement déjà sur votre système.&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;Hypothèses&lt;/strong&gt; : vous avez un pc portable (ou de bureau) avec un écran, et vous souhaiteriez y ajouter un second écran affichant les mêmes choses. Tout peut être fait en tant que simple utilisateur.&lt;/p&gt;


&lt;h3&gt;Obtenir des informations sur l'écran de votre pc portable :&lt;/h3&gt;


&lt;pre&gt;xrandr&lt;/pre&gt;


&lt;p&gt;Voici la sortie de la commande :&lt;/p&gt;


&lt;pre&gt;$ xrandr 
Screen 0: minimum 320 x 200, current 1280 x 1024, maximum 1600 x 1600
VGA disconnected (normal left inverted right x axis y axis) 338mm x 270mm
LVDS connected 1280x800+0+0 (normal left inverted right x axis y axis) 331mm x 207mm
  1280x800       60.0*+   60.0  
  1280x768       60.0  
  1024x768       60.0  
  800x600        60.3  
  640x480        59.9  
TV disconnected (normal left inverted right x axis y axis)&lt;/pre&gt;


&lt;p&gt;&lt;strong&gt;LVDS&lt;/strong&gt; : ceci représente l'écran du pc..&lt;br /&gt;
&lt;strong&gt;VGA&lt;/strong&gt; :  ceci représente le second écran (pas encore branché).&lt;/p&gt;


&lt;h3&gt;Ajouter le second écran :&lt;/h3&gt;


&lt;p&gt;Nous allons ajouter le second écran. Le premier et le second n'ont pas la même résolution (dans mon cas). Je dois donner deux résolutions différentes aux écrans. A noter que vous ne pouvez ajouter que les résolutions indiquées avec la commande &quot;xrandr&quot;. Une commande suffit :&lt;/p&gt;


&lt;pre&gt;xrandr --output VGA --mode 1280x1024 --output LVSD --mode 1280x768&lt;/pre&gt;


&lt;p&gt;&lt;ins&gt;Détails&lt;/ins&gt; :&lt;/p&gt;


&lt;pre&gt;--output VGA --mode 1280x1024&lt;/pre&gt;


&lt;p&gt;Ceci est pour la résolution du second écran.&lt;/p&gt;


&lt;pre&gt; --output LVSD --mode 1280x768&lt;/pre&gt;


&lt;p&gt;Ceci est pour la résolution de l'écran du pc.&lt;/p&gt;


&lt;h3&gt;Ajouter des résolutions (c'est possible !) :&lt;/h3&gt;


&lt;p&gt;Si la résolution que vous voulez n'est pas disponible, vous devez ajouter un &quot;mode&quot;, lisez cet &lt;a href=&quot;http://www.arunviswanathan.com/node/53&quot;&gt;article (en)&lt;/a&gt; pour plus d'informations.&lt;/p&gt;


&lt;h3&gt;Déconnecter un écran :&lt;/h3&gt;


&lt;p&gt;Si vous ne voulez pas utiliser l'écran du pc :&lt;/p&gt;



&lt;pre&gt;xrandr --output VGA --mode 1280x1024 --output LVDS --off&lt;/pre&gt;


&lt;p&gt;Et pour le second écran :&lt;/p&gt;


&lt;pre&gt;xrandr --output LVDS --mode 1280x768 --output VGA --off&lt;/pre&gt;


&lt;h3&gt;Logiciel graphique :&lt;/h3&gt;


&lt;p&gt;Un logiciel avec une interface graphique pour gérer tout cela est disponible : lxrandr.&lt;/p&gt;</description>
	<pubDate>mar, 08 déc 2009 14:43:00 +0000</pubDate>
</item>
<item>
	<title>Eric Veiras Galisson: sixth sense: quand le réel et le virtuel se mêlent...</title>
	<guid permalink="False">urn:md5:8c5a5535292593a133bc7293ba6d2ab1</guid>
	<link>http://blog.sietch-tabr.com/index.php/post/2009/12/01/sixth-sense%3A-quand-le-r%C3%A9el-et-le-virtuel-se-m%C3%AAlent...</link>
	<description>&lt;p&gt;tout simplement &lt;strong&gt;énorme&lt;/strong&gt; et bientôt disponible en open source&lt;/p&gt;

 



&lt;p&gt;à voir sur le site de &lt;a href=&quot;http://www.ted.com/talks/pranav_mistry_the_thrilling_potential_of_sixthsense_technology.html&quot;&gt;TED&lt;/a&gt; [via &lt;a href=&quot;http://www.blendernation.com/sixth-sense-technology/&quot;&gt;blendernation&lt;/a&gt;]&lt;/p&gt;


&lt;p&gt;je vous l&amp;#8217;avais dit&amp;#160;: É-NOR-ME&amp;#160;!&lt;/p&gt;</description>
	<pubDate>mar, 01 déc 2009 06:44:00 +0000</pubDate>
</item>
<item>
	<title>Benoit Peccatte: Back to the trees</title>
	<guid permalink="False">http://linux-attitude.fr/?p=652</guid>
	<link>http://linux-attitude.fr/post/back-to-the-trees-2</link>
	<description>&lt;p&gt;I'm back ! Pour ceux qui suivent, les vacances c'était sympa. Allez au Vietnam, vous verrez, c'est beau et pas cher.&lt;/p&gt;


&lt;p&gt;Aujourd'hui, comme à chaque fois que je sens que je n'avance pas trop, je vais faire une liste de sujets que j'aurais aimé traiter mais dont je sais pour lesquels je ne trouverai pas le temps et le courage d'écrire un article, j'essaie donc de vous fournir un lien intéressant à la place.&lt;/p&gt;


&lt;p&gt;Sujet non traités :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.glendix.org/gsoc/&quot; hreflang=&quot;en&quot;&gt;Glendix&lt;/a&gt; : plein de bonnes idée donc le concept d'une nouvelle interruption pour implémenter une nouvelle série de syscall&lt;/li&gt;
&lt;li&gt;Utiliser GPG sur les webmails : &lt;a href=&quot;http://fr.getfiregpg.org/s/home&quot; title=&quot;http://fr.getfiregpg.org/s/home&quot;&gt;http://fr.getfiregpg.org/s/home&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Optimisation assistée de mysql : &lt;a href=&quot;http://blog.mysqltuner.com/faq/&quot; title=&quot;http://blog.mysqltuner.com/faq/&quot;&gt;http://blog.mysqltuner.com/faq/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Suspendre et reprendre des processus individuellement : &lt;a href=&quot;http://www.checkpointing.org/&quot; title=&quot;http://www.checkpointing.org/&quot;&gt;http://www.checkpointing.org/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Les &lt;a href=&quot;http://www.ibm.com/developerworks/aix/library/au-badunixhabits.html&quot; hreflang=&quot;en&quot;&gt;bonnes habitudes&lt;/a&gt; de l'unixien&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Lectures intéressantes :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Récupérer l'état de la mémoire après un démarrage à froid c'est possible, &lt;a href=&quot;http://www.mcgrewsecurity.com/tools/msramdmp/&quot; hreflang=&quot;en&quot;&gt;attention à vos mots de passe ...&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://sysadvent.blogspot.com/&quot; hreflang=&quot;en&quot;&gt;25 articles&lt;/a&gt; pour sysadmin&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.move-your-tux.fr/?langue=fr&quot; hreflang=&quot;fr&quot;&gt;Déplacez tux dans la vraie vie&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.travailleursduweb.com/2008/03/26/faits-et-erreurs-du-developpement-logiciel.html&quot; hreflang=&quot;fr&quot;&gt;Faits et erreurs du développement logiciel&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pas d'article parce que sujet trop naze :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;xmond et &lt;a href=&quot;http://www.digipedia.pl/man/doc/view/xmonui.1x.html&quot; hreflang=&quot;en&quot;&gt;xmonui &lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
	Tags:&lt;a href=&quot;http://linux-attitude.fr/tag/lectures&quot; title=&quot;Lectures&quot; rel=&quot;tag&quot;&gt;Lectures&lt;/a&gt;, &lt;a href=&quot;http://linux-attitude.fr/tag/planet-libre&quot; title=&quot;planet-libre&quot; rel=&quot;tag&quot;&gt;planet-libre&lt;/a&gt;&lt;br /&gt;</description>
	<pubDate>mar, 24 nov 2009 17:35:06 +0000</pubDate>
</item>
<item>
	<title>Florent Gallaire: Google Chrome OS</title>
	<guid permalink="False">http://debian.flext.net/?p=59</guid>
	<link>http://debian.flext.net/google-chrome-os/</link>
	<description>&lt;p&gt;Aujourd&amp;#8217;hui à 19 heures, heure de Paris, Google a enfin livré les informations techniques de son Google &lt;a href=&quot;http://www.chromium.org/chromium-os&quot; target=&quot;_blank&quot;&gt;Chrome OS&lt;/a&gt; basé sur GNU/Linux.&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;aligncenter size-full wp-image-62&quot; title=&quot;chromeOS&quot; src=&quot;http://debian.flext.net/wp-content/uploads/2009/11/chromeOS.png&quot; alt=&quot;chromeOS&quot; width=&quot;450&quot; height=&quot;259&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Le système est, on n&amp;#8217;en sera pas surpris, totalement orienté &amp;#8220;Web&amp;#8221;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;toutes les applications ChromeOS sont des Webapps, en fait l&amp;#8217;&lt;a href=&quot;http://www.chromium.org/chromium-os/user-experience&quot; target=&quot;_blank&quot;&gt;interface de Chrome OS&lt;/a&gt; est principalement le navigateur web Chrome en plein écran.&lt;/li&gt;
&lt;li&gt; toutes les données sont &amp;#8220;in the cloud&amp;#8221;, l&amp;#8217;avantage étant que la défaillance ou la perte de son ordinateur n&amp;#8217;a aucune incidence sur l&amp;#8217;utilisateur, il lui suffit d&amp;#8217;en prendre un autre et tout recommence de manière transparente ; par contre on est bien sûr en plein dans l&amp;#8217;évolution vers &lt;a href=&quot;http://www.guardian.co.uk/technology/2008/sep/29/cloud.computing.richard.stallman&quot; target=&quot;_blank&quot;&gt;une informatique &amp;#8220;à la Big Brother&amp;#8221;&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Le boot ultra-rapide est une spécificité importante : 7 secondes pour arriver à l&amp;#8217;écran de login, puis 3 secondes supplémentaires pour l&amp;#8217;accès au bureau fonctionnel.&lt;/p&gt;
&lt;p&gt;Il semble qu&amp;#8217;un grand travail ait été accompli sur les &lt;a href=&quot;http://www.chromium.org/chromium-os/chromiumos-design-docs/security-overview&quot; target=&quot;_blank&quot;&gt;problématiques de sécurité&lt;/a&gt;, notamment sur le processus de boot et la stratégie des droits d&amp;#8217;écriture de la partition racine.&lt;/p&gt;
&lt;p&gt;Google Chrome OS ne permettra pas de base de faire fonctionner les applications Android : &amp;#8220;tout est webapp&amp;#8221;, et supportera les processeurs X86 et ARM.&lt;/p&gt;
&lt;p&gt;Bien sûr comme c&amp;#8217;est un logiciel libre, chacun peut décider de rajouter les fonctionnalités manquantes au &lt;a href=&quot;http://www.chromium.org/chromium-os/building-chromium-os/getting-the-chromium-os-source-code&quot; target=&quot;_blank&quot;&gt;code source&lt;/a&gt; !&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://googleblog.blogspot.com/2009/11/releasing-chromium-os-open-source.html&quot; target=&quot;_blank&quot;&gt;L&amp;#8217;annonce officielle&lt;/a&gt; sur le blog de Google.&lt;/p&gt;</description>
	<pubDate>jeu, 19 nov 2009 19:54:52 +0000</pubDate>
</item>
<item>
	<title>Shams Fantar: Logiciels de surveillance</title>
	<guid>urn:md5:9ae122b35b5a3c0e71465095be7bc70d</guid>
	<link>http://about-gnulinux.info/dotclear/index.php?post/2009/11/16/Logiciels-de-surveillance</link>
	<description>&lt;p&gt;Quelques noms de logiciels pour surveiller votre serveur :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;munin (graphiques) ;&lt;/li&gt;
&lt;li&gt;cacti ;&lt;/li&gt;
&lt;li&gt;monit : surveillance ;&lt;/li&gt;
&lt;li&gt;vnstat(-gui) : quantité de données passant par votre interfaces réseaux&lt;/li&gt;
&lt;li&gt;mailgraph : graphiques qui donnent des stats sur les emails ;&lt;/li&gt;
&lt;li&gt;nagios : surveillance complète ;&lt;/li&gt;
&lt;li&gt;pflogsumm : surveillance des mails ;&lt;/li&gt;
&lt;li&gt;smartctl : surveillance de vos disques dur ;&lt;/li&gt;
&lt;li&gt;logwatch&lt;/li&gt;
&lt;/ul&gt;</description>
	<pubDate>lun, 16 nov 2009 17:55:00 +0000</pubDate>
</item>
<item>
	<title>Rodolphe Quiédeville: Paquet debian pour pgtune</title>
	<guid permalink="False">urn:md5:4bdb64869b55b3221371e5c27dc5f46e</guid>
	<link>http://blog.rodolphe.quiedeville.org/index.php?post/2009/11/Paquet-debian-pour-pgtune</link>
	<description>&lt;p&gt;Le paquet debian pour &lt;a href=&quot;http://pgfoundry.org/projects/pgtune/&quot;&gt;pgtune&lt;/a&gt; est finit et uploadé sur les serveurs FTP. Vous pouvez suivre son évolution au travers du bug report ITP &lt;a href=&quot;http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=553975&quot;&gt;#553975&lt;/a&gt;. La file d'inclusion de nouveaux paquets est assez chargée ces temps-ci, cela va peut-être prendre plusieurs jours pour voir le paquet apparaître dans SID. Je laisse le paquet disponible dans &lt;a href=&quot;http://mentors.debian.net/cgi-bin/sponsor-pkglist?action=details;package=pgtune&quot;&gt;mentors&lt;/a&gt; le temps de son inclusion.&lt;/p&gt;</description>
	<pubDate>dim, 15 nov 2009 17:46:00 +0000</pubDate>
</item>
<item>
	<title>J&amp;#233;r&amp;#233;my Verda: Installation d’une Debian sur l’EeePC 1005HA-H</title>
	<guid permalink="False">http://blog.v-jeremy.net/?p=556</guid>
	<link>http://blog.v-jeremy.net/installation-dune-debian-sur-leeepc-1005ha-h/</link>
	<description>&lt;p&gt;J&amp;#8217;ai fait récemment l&amp;#8217;acquisition d&amp;#8217;un &lt;a href=&quot;http://www.ldlc.be/fiche/PB00093742.html&quot;&gt;EeePC 1005HA-H&lt;/a&gt;. Celui-ci m&amp;#8217;a été livré avec Windows Seven Starter (je pourrais largement &amp;#8220;troller&amp;#8221; sur cette version mais bon ce n&amp;#8217;est pas le sujet) et un disque dur de 250Go. J&amp;#8217;ai bien entendu voulu installer Debian sur ce dernier mais tout en réalisant un dual boot avec Seven.&lt;/p&gt;
&lt;p&gt;Je me suis donc renseigné pour voir comment Debian supportait ce modèle et bonne nouvelle, ce dernier est vraiment bien géré. On retrouve toutes les touches de fonctions, la mise en veille et l&amp;#8217;hibernation. Ainsi que le support réseaux et de la carte graphique. Et ce sans devoir fouiller sur Google pour trouver de bon tutoriels, en effet, tout est utilisable directement après l&amp;#8217;installation.&lt;/p&gt;
&lt;p&gt;J&amp;#8217;ai voulu faire l&amp;#8217;installation sur base d&amp;#8217;une Squeeze (actuelle Testing) pour ensuite passer après configuration sur une Sid/Exp. Cela me permettra aussi de voir ce que la Testing a dans le ventre. Avant de débuter l&amp;#8217;installation j&amp;#8217;ai effectué un partitionnement comme suis : une partition pour Seven (environ 50Go, une partition de données pour avoir accès depuis les deux OS et une partition en ext4 pour Debian d&amp;#8217;environ 60Go). J&amp;#8217;ai aussi vérifié si Grub2 (qui est le loader par défaut sur Squeeze) et le loader de Windows Seven ne rentrait pas en conflit mais aucun soucis. Ensuite j&amp;#8217;ai suivi &lt;a title=&quot;Installation EeePC 1005HA-H sous Debian&quot; href=&quot;http://wiki.debian.org/DebianEeePC/Model/1005HA&quot;&gt;le tutoriel&lt;/a&gt; (en anglais) du wiki Debian dédié à l&amp;#8217;installation sur ce modèle d&amp;#8217;EeePc et j&amp;#8217;avais même mis en favoris &lt;a href=&quot;http://wiki.debian.org/DebianEeePC/HowTo/Configure&quot;&gt;la page suivante&lt;/a&gt; pour avoir les dernières astuces au cas où, mais ce ne fut pas nécessaire.&lt;/p&gt;
&lt;p&gt;Au final, j&amp;#8217;ai un EeePc sous Debian avec toutes les fonctions du netbook que je peux retrouver sous Windows tout en étant sur un OS libre et avec une consommation mémoire d&amp;#8217;environ 10% là où j&amp;#8217;atteins minimum 30 à 40% sous Seven. En clair, j&amp;#8217;en suis pleinement satisfait !&lt;/p&gt;
&lt;p&gt;Vous pourrez trouver un &lt;a href=&quot;http://www.blogeee.net/2009/08/test-eeepc-1005ha-h/&quot;&gt;test de l&amp;#8217;EeePC 1005HA-H&lt;/a&gt; sur Blogeee.net et &lt;a href=&quot;http://wiki.debian.org/fr/EeePC/TipsAndTricks&quot;&gt;quelques astuces&lt;/a&gt; sur le wiki Debian à cette page.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;small&gt;&lt;a href=&quot;http://blog.v-jeremy.net/installation-dune-debian-sur-leeepc-1005ha-h/&quot;&gt;Article&lt;/a&gt; écrit par &lt;a href=&quot;http://blog.v-jeremy.net&quot;&gt;Jérémy Verda&lt;/a&gt; et sous licence &lt;a href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/be/&quot;&gt;Creative Commons BY-NC-SA&lt;/a&gt;.
&lt;br /&gt;
&lt;/small&gt;&lt;/p&gt;
	Tags:&lt;a href=&quot;http://blog.v-jeremy.net/tag/debian/&quot; title=&quot;Debian&quot; rel=&quot;tag&quot;&gt;Debian&lt;/a&gt;, &lt;a href=&quot;http://blog.v-jeremy.net/tag/gnulinux/&quot; title=&quot;Gnu/Linux&quot; rel=&quot;tag&quot;&gt;Gnu/Linux&lt;/a&gt;, &lt;a href=&quot;http://blog.v-jeremy.net/tag/libreopen-source/&quot; title=&quot;Libre/Open-source&quot; rel=&quot;tag&quot;&gt;Libre/Open-source&lt;/a&gt;, &lt;a href=&quot;http://blog.v-jeremy.net/tag/planet-libre/&quot; title=&quot;Planet Libre&quot; rel=&quot;tag&quot;&gt;Planet Libre&lt;/a&gt;&lt;br /&gt;</description>
	<pubDate>sam, 14 nov 2009 16:48:17 +0000</pubDate>
</item>
<item>
	<title>Sylvain Derosiaux: Créer une image ISO Debian avec les firmwares non libres</title>
	<guid permalink="False">http://blog.gnusquad.org/?p=331</guid>
	<link>http://blog.gnusquad.org/2009/11/06/creer-une-image-iso-debian-avec-les-firmwares-non-libres/</link>
	<description>&lt;p&gt;Les images ISO officielles de Debian, conformément aux &lt;abbr title=&quot;Debian Free Software Guidelines&quot;&gt;DFSG&lt;/abbr&gt;, ne contiennent pas de firmwares non libres ce qui peut poser problème lorsque l&amp;#8217;on a, par exemple, des serveurs équipés de carte réseaux &lt;em&gt;Broadcom NetXtreme II&lt;/em&gt; utilisant le module « &lt;em&gt;bnx2&lt;/em&gt; » qui nécessite un firmware évidemment non libre. Dans ce genre de cas, l&amp;#8217;installateur Debian demande de fournir ce dernier via une clé USB, c&amp;#8217;est bien mais je souhaitais sauter cette étape, c&amp;#8217;est pourquoi j&amp;#8217;ai développé un petit script s&amp;#8217;occupant d&amp;#8217;intégrer directement dans l&amp;#8217;image ISO les firmwares non libres disponibles dans la section « &lt;em&gt;non-free&lt;/em&gt; ». Voici le script pour les intéressés :&lt;/p&gt;
&lt;pre&gt;#!/bin/bash

#//////////////////////////////////////#
# Affiche l'aide du script             #
#                                      #
# @stdout Aide d'utilisation du script #
#//////////////////////////////////////#
usage(){
 echo &quot;Usage : $0 &amp;lt;architecture&amp;gt; (i386, amd64)&quot;
}

#/////////////////////////////////////////////////////////////#
# Teste si l'utilisateur est loggué en root ou non            #
#                                                             #
# @return Renvoie 0 si l'utilisateur est root sinon renvoie 1 #
#/////////////////////////////////////////////////////////////#
is_root(){
 if [[ $(id -u) -eq 0 ]]; then
 return 0 ;
 else
 return 1 ;
 fi
}

#///////////////////////////////////////////////////////////#
# Vérifie la présence des programmes utilisés par le script #
#                                                           #
# @return Renvoie 0 si tous les programmes sont présents    #
#///////////////////////////////////////////////////////////#
check_installed_software(){
    [[ -z $(which ar) || -z $(which genisoimage) || -z $(which wget) || -z $(which tar) || -z $(which zcat) || -z $(which cpio) ]] &amp;amp;&amp;amp; return 1 ;
}

#////////////////////////////////////////////////////////////////////////#
# Télécharge l'image ISO en version netinstall de l'architecture désirée #
#                                                                        #
# @param in $1 Architecture de l'ISO à télécharger                       #
# @stdout Nom du fichier de l'image ISO téléchargée                      #
#////////////////////////////////////////////////////////////////////////#
download_iso_netinstall(){
 local ISO=$(wget -q -O- http://cdimage.debian.org/debian-cd/current/$1/iso-cd/|sed -nr 's/.*(debian.+?netinst.iso).*/\1/p')
 [[ -z $ISO ]] &amp;amp;&amp;amp; {
 exit 1
 }
 wget &quot;http://cdimage.debian.org/debian-cd/current/$1/iso-cd/$ISO&quot; -O $ISO
 echo $ISO
}

#////////////////////////////////////////////////////////////////////#
# Extrait les fichiers d'une image ISO dans un répertoire temporaire #
#                                                                    #
# @param in $1 chemin de l'image ISO                                 #
# @stdout Chemin où se trouvent les fichiers extraits                #
#////////////////////////////////////////////////////////////////////#
function extract_files_from_iso(){
 local MOUNT_DIR=$(mktemp -d)
 local ISO_DIR=$(mktemp -du)
 mount -o loop $1 $MOUNT_DIR
 cp -a $MOUNT_DIR $ISO_DIR
 umount $MOUNT_DIR
 rmdir $MOUNT_DIR
 echo $ISO_DIR
}

#/////////////////////////////////////////////////////////////////////////////////////////////#
# Affiche le nom des paquets contenant les derniers firmwares non libres présents dans Debian #
#                                                                                             #
# @stdout Liste des paquets contenant les derniers firmwares non libres                       #
#/////////////////////////////////////////////////////////////////////////////////////////////#
list_firmware(){
 local FIRMWARE_DEB=$(wget -q -O- 'http://ftp.debian.org/debian/pool/non-free/f/firmware-nonfree/?C=N;O=D;V=1;F=0' | sed -nr &quot;s/^&amp;lt;li&amp;gt;&amp;lt;a href=\&quot;(.+?\.deb)\&quot;.*/\1/p&quot;)
 local FIRMWARE_NAME=$(echo &quot;$FIRMWARE_DEB&quot; | cut -f1 -d_ | uniq)
 local NAME
 for NAME in ${FIRMWARE_NAME[@]}; do
 echo &quot;$FIRMWARE_DEB&quot; | grep -m1 &quot;$NAME&quot;_
 done
}

#///////////////////////////////////////////////////////#
# Télécharge et extrait les paquets passés en paramètre #
#                                                       #
# @stdout Répertoire contenant les fichiers extraits    #
#///////////////////////////////////////////////////////#
download_and_extract_firmware(){
 local FIRMWARE_DIR=$(mktemp -d)
 cd $FIRMWARE_DIR

 while [[ $# -gt 0 ]]; do
 wget -q -O $1 &quot;http://ftp.debian.org/debian/pool/non-free/f/firmware-nonfree/$1&quot;
 ar x $1 data.tar.gz
 tar xvf data.tar.gz './lib/firmware' &amp;amp;&amp;gt; /dev/null
 rm $1 data.tar.gz
 shift
 done

 cd $OLDPWD
 echo $FIRMWARE_DIR
}

#///////////////////////////////////////////////////#
# Intègre les firmwares dans les initrd trouvés     #
#                                                   #
# @param $1 Répertoire où se trouvent le(s) initrd  #
# @param $2 Répertoire où se trouvent les firmwares #
#///////////////////////////////////////////////////#
merge_firmware_initrd(){
 local INITRD
 for INITRD in $(find $1 -name initrd.gz); do
 local TMP_DIR=$(mktemp -d)
 cd $TMP_DIR
 zcat $INITRD | cpio -i &amp;amp;&amp;gt; /dev/null
 cp -a $2/lib/firmware .
 find . -print0 | cpio -0 -H newc -o 2&amp;gt; /dev/null | gzip -c &amp;gt; $INITRD
 cd $OLDPWD
 rm -rf $TMP_DIR
 done
}

#////////////////////////////////////////////////////////////////////////////#
# Mise à jour des sommes MD5                                                 #
#                                                                            #
# @param $1 Répertoire où se trouve le fichier de sommes MD5 à mettre à jour #
#////////////////////////////////////////////////////////////////////////////#
update_md5sum(){
 cd $1
 find . -type f ! -name md5sum.txt -exec md5sum {} \; &amp;gt; md5sum.txt
 cd $OLDPWD
}

#/////////////////////////////////////////////////////////////////////////#
# Génère une image ISO à partir d'un répertoire                           #
#                                                                         #
# @param $1 Répertoire contenant les fichiers à intégrer dans l'image ISO #
# @param $2 Chemin vers le fichier à générer                              #
#/////////////////////////////////////////////////////////////////////////#
build_iso_image(){
 genisoimage -no-emul-boot -r -J -boot-load-size 4 -boot-info-table -b isolinux/isolinux.bin -c isolinux/boot.cat -o $2 $1 &amp;amp;&amp;gt; /dev/null
}

#///////////////////////#
# Vérifications de base #
#///////////////////////#
check_installed_software
[[ $? -eq 1 ]] &amp;amp;&amp;amp; {
    echo &quot;Certains programmes nécessaires au fonctionnement du script n'ont pas été trouvés.&quot; &amp;gt;&amp;amp;2
    exit 1
}

[[ $# &amp;lt; 1 ]] &amp;amp;&amp;amp; usage &amp;amp;&amp;amp; exit 1
ARCH=$1

! is_root &amp;amp;&amp;amp; {
 echo 'Ce script a besoin des droits root !' &amp;gt;&amp;amp;2
 exit 1
}

#///////////////////////////////#
# Téléchargement de l'image ISO #
#///////////////////////////////#
echo &quot;Téléchargement de l'image ISO&quot;
ISO=$(download_iso_netinstall $ARCH)
[[ $? -eq 1 ]] &amp;amp;&amp;amp; {
 echo &quot;Erreur : l'image ISO netinstall de l'architecture « $ARCH » n'a pas été trouvée.&quot; &amp;gt;&amp;amp;2
 exit 1
}

#/////////////////////#
# On crée l'image ISO #
#/////////////////////#
echo &quot;Extraction des fichiers de l'image ISO&quot;
ISO_DIR=$(extract_files_from_iso $ISO)
echo &quot;Téléchargement des firmwares&quot;
FIRMWARE_DIR=$(download_and_extract_firmware $(list_firmware))
echo &quot;Intégration des firmwares&quot;
merge_firmware_initrd $ISO_DIR $FIRMWARE_DIR
echo &quot;Création de l'image ISO finale&quot;
update_md5sum $ISO_DIR
NEW_ISO=${ISO/./.homemade.}
build_iso_image $ISO_DIR $NEW_ISO
echo &quot;Image ISO originale : $ISO&quot;
echo &quot; Nouvelle image ISO : $NEW_ISO&quot;

#////////////////////////////////////////#
# On nettoie les répertoires temporaires #
#////////////////////////////////////////#
rm -rf $FIRMWARE_DIR $ISO_DIR&lt;/pre&gt;
&lt;p&gt;Liens :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.gnusquad.org/wp-content/uploads/2009/11/debian_firmware.sh&quot;&gt;Script à télécharger&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.gnusquad.org/wp-content/uploads/2009/11/debian_firmware.ogv&quot;&gt;Vidéo de l&amp;#8217;exécution du script&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span id=&quot;more-331&quot;&gt;&lt;/span&gt;&lt;/p&gt;</description>
	<pubDate>ven, 06 nov 2009 19:53:01 +0000</pubDate>
</item>
<item>
	<title>Shams Fantar: Debian et le wifi</title>
	<guid>urn:md5:590b8f698fad4f3efe7355f44848fad2</guid>
	<link>http://about-gnulinux.info/dotclear/index.php?post/2009/11/01/Debian-et-le-wifi</link>
	<description>&lt;p&gt;Je vais vous expliquer ici comment installer et utiliser une clé wifi sous debian. L'installation en elle-même n'est pas très compliquée, mais il y a quelques problèmes qui peuvent arriver.&lt;/p&gt;


&lt;p&gt;Tout d'abord, il faut installer les bonnes applications, dont wireless-tools et les bons pilotes. Pour ma part, il me faut le pilote rt73, pour l'installer et le charger (via modprobe), j'ai suivi cette &lt;a href=&quot;http://wiki.debian.org/WiFi/rt73&quot;&gt;documentation&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;Vous devez chercher par vous-même quel pilote vous devez installer en fonction de votre clé wifi (c'est presque du cas par cas).&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;Donc voici le cas étudié&lt;/strong&gt; : vous avez un réseau wifi nommé &quot;mynetwork&quot; accessible avec une clé WEP (12345). Votre clé wifi a pour nom wlan1 (cela peut être wlan0).&lt;/p&gt;


&lt;h3&gt;I - Utilisation&lt;/h3&gt;


&lt;p&gt;Donc après avoir chargé le pilote (le votre) :&lt;/p&gt;

&lt;pre&gt; modprobe rt73 #remplacer rt73&lt;/pre&gt;


&lt;p&gt;Ensuite, il faut se connecter au réseau :&lt;/p&gt;

&lt;pre&gt; iwconfig wlan1 essid mynetwork&lt;/pre&gt;


&lt;p&gt;Il faut ensuite entrer la clé WEP (si il n'y aucune clé wep, passez cette étape)&lt;/p&gt;

&lt;pre&gt; iwconfig wlan1 key 12345&lt;/pre&gt;


&lt;p&gt;Nous allons ensuite nous attributer une IP statique (pour une IP via DHCP, faites dhclient wlan1) :&lt;/p&gt;

&lt;pre&gt; ifconfig wlan1 192.168.1.18&lt;/pre&gt;


&lt;p&gt;Puis (dans mon cas j'ai eu des soucis de route), on peut indiquer la route vers le routeur (ou le point wifi) :&lt;/p&gt;

&lt;pre&gt; route add default gw 192.168.1.1 wlan1&lt;/pre&gt;


&lt;p&gt;Puis il faut se réattribuer l'IP statique :&lt;/p&gt;

&lt;pre&gt; ifconfig wlan1 192.168.1.18&lt;/pre&gt;


&lt;p&gt;Nous verrons plus tard comment automatiser toute cette procédure.&lt;/p&gt;


&lt;h3&gt;II - Problèmes rencontrés :&lt;/h3&gt;


&lt;p&gt;Si vous passez entièrement par la ligne de commande, alors je vous déconseille d'avoir network-manager installé ! Il peut être la source de problèmes. Avec wpa_supplicant par exemple.&lt;/p&gt;


&lt;p&gt;Si vous n'arrivez pas à utiliser votre clé wifi, assurez-vous que dans le iwconfig wlan1, il n'y ait pas de &quot;Not Associated&quot;, si tel est le cas alors faites-ci :&lt;/p&gt;


&lt;pre&gt; iwconfig wlan1 ap any&lt;/pre&gt;


&lt;p&gt;Si vous obtenez un débit lent, plusieurs choses peuvent être en causes : signal trop faible, bit rate trop bas (faites un iwconfig pour voir de combien il est), qualité de réception mauvaise, etc. Essayez tout d'abord de rapprocher le plus proche possible l'AP sur lequel vous vous connectez, puis si ça ne fonctionne toujours pas, c'est soit le driver (cas rare), soit un problème de configuration !&lt;/p&gt;


&lt;h3&gt;III - Quelques commandes :&lt;/h3&gt;


&lt;p&gt;Voir les réseaux wifi disponibles :&lt;/p&gt;

&lt;pre&gt; iwlist scan&lt;/pre&gt;


&lt;p&gt;Voir si la clé wifi USB est reconnue par le système :&lt;/p&gt;

&lt;pre&gt; lsusb&lt;/pre&gt;


&lt;p&gt;N'oubliez pas de mettre les bons paramètres concernant le nom du périphérique (wlan*), la bonne IP du routeur ou encore la bonne clé WEP ! Chaque réseau posséde sa propre configuration.&lt;/p&gt;


&lt;p&gt;Ce billet résume beaucoup mais permet une utilisation basique de sa clé.&lt;/p&gt;</description>
	<pubDate>dim, 01 nov 2009 16:34:00 +0000</pubDate>
</item>
<item>
	<title>Guilhem Bonnefille: En attendant le replay sur freebox</title>
	<guid permalink="False">http://nathguil.free.fr/wordpress/?p=296</guid>
	<link>http://nathguil.free.fr/wordpress/?p=296</link>
	<description>&lt;p&gt;Quand elle fonctionne, la freebox est vraiment géniale. Mais il y a une fonctionnalité qui fait défaut c&amp;#8217;est l&amp;#8217;absence de support pour ce que toutes les chaînes nomment le « Replay ». Pour ceux qui connaissent pas, certaines chaînes diffusent, via internet, une sélection de leur programmes. Du coup, lorsque vous avez loupé une émission, inutile de pleurer, vous pouvez aller la voir sur le Net (et vous y casser les yeux car c&amp;#8217;est pas de la HD :-)).&lt;/p&gt;
&lt;p&gt;Récemment, le problème s&amp;#8217;est posé à la maison. J&amp;#8217;ai donc passé un peu de temps à chercher comment :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;télécharger une vidéo depuis Youtube (oui, dans notre cas, l&amp;#8217;émission en question était diffusée via Youtube) ;&lt;/li&gt;
&lt;li&gt;réencoder la vidéo pour la visualiser directement depuis le boitier HD de la Freebox.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;span id=&quot;more-296&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;Téléchargement&lt;/h2&gt;
&lt;p&gt;Après m&amp;#8217;ettre égaré sur des fils de discussions proposant des implémentation variées (python, bash&amp;#8230;), j&amp;#8217;ai finalement découvert que Debian propose des utilitaires directement dans les dépots officiels. L&amp;#8217;utilitaire de téléchargement se nomme &lt;a href=&quot;http://packages.qa.debian.org/c/clive.html&quot;&gt;clive&lt;/a&gt; ou &lt;a href=&quot;http://packages.qa.debian.org/c/cclive.html&quot;&gt;cclive&lt;/a&gt;. De plus, il y a une IHM pour rendre les choses carrément simplistes : &lt;a href=&quot;http://packages.qa.debian.org/a/abby.html&quot;&gt;abby&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Il suffit alors de surfer sur Youtube, identifier la vidéo et copier-coller l&amp;#8217;adresse dans l&amp;#8217;application. Un jeu d&amp;#8217;enfant.&lt;/p&gt;
&lt;h2&gt;Encodage&lt;/h2&gt;
&lt;p&gt;Bon, là, c&amp;#8217;est moins simple. En partie car Free c&amp;#8217;est français, du coup aucune chance d&amp;#8217;avoir une application dans le dépot Debian. J&amp;#8217;ai donc lancé celle que je connais, à savoir avidemux.&lt;/p&gt;
&lt;p&gt;Après quelques essais, j&amp;#8217;ai déterminé les réglages suivant :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AVI pour le conteneur ;&lt;/li&gt;
&lt;li&gt;copie pour l&amp;#8217;audio ;&lt;/li&gt;
&lt;li&gt;MPEG-4 (lavc) pour la vidéo en sélectionnant &amp;#8220;same qx&amp;#8221; dans les options.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Dépot&lt;/h2&gt;
&lt;p&gt;Et voilou, un dépot sur &lt;a href=&quot;ftp://freebox@hd1.freebox.fr&quot;&gt;ftp://freebox@hd1.freebox.fr&lt;/a&gt; et le tour est joué.&lt;/p&gt;
&lt;p&gt;Bon, une vidéo 320&amp;#215;200, réencodée et affichée sur un écran 82cm&amp;#8230; c&amp;#8217;est moche, mais c&amp;#8217;est mieux que rien.&lt;/p&gt;</description>
	<pubDate>dim, 01 nov 2009 16:08:28 +0000</pubDate>
</item>
<item>
	<title>Benoit Peccatte: Prompt String</title>
	<guid permalink="False">http://linux-attitude.fr/?p=574</guid>
	<link>http://linux-attitude.fr/post/prompt-string</link>
	<description>&lt;p&gt;&lt;strong&gt;Niveau&lt;/strong&gt; : &lt;img src=&quot;http://linux-attitude.fr/public/Pics/s.gif&quot; alt=&quot;Star&quot; /&gt; &lt;img src=&quot;http://linux-attitude.fr/public/Pics/s.gif&quot; alt=&quot;Star&quot; /&gt; &lt;img src=&quot;http://linux-attitude.fr/public/Pics/s.gif&quot; alt=&quot;Star&quot; /&gt; &lt;img src=&quot;http://linux-attitude.fr/public/Pics/e.gif&quot; alt=&quot;Empty&quot; /&gt; &lt;img src=&quot;http://linux-attitude.fr/public/Pics/e.gif&quot; alt=&quot;Empty&quot; /&gt;&lt;br /&gt;
&lt;strong&gt;Résumé&lt;/strong&gt; : export PS1=&quot;&amp;gt; &quot;&lt;/p&gt;


&lt;p&gt;Désolé de ne pas écrire plus souvent. Et ca risque de durer encore un peu puisque je pars en vacances ...&lt;/p&gt;



&lt;p&gt;PS veut dire prompt string.  Les 4 prompt string de bash sont les chaines de caractères affichées par le shell en différentes situations. Nous allons nous intéresser à PS1  mais sachez que la suite vaut pour toutes les autres.&lt;/p&gt;


&lt;h3&gt;Exemples&lt;/h3&gt;

&lt;p&gt;Je vais faire simple : des exemples de chaînes ainsi que la capture d'écran associée, il ne vous reste plus qu'a choisir et à copier/coller dans votre .bashrc&lt;/p&gt;


&lt;p&gt;Toutes les captures ont été faites avec les settings suivants :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;user : peck&lt;/li&gt;
&lt;li&gt;hostname : mamachine.linux-attitude.fr&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;Exemples unilignes&lt;/h4&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;PS1&lt;/th&gt;&lt;th&gt;Fond noir / Fond Blanc&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&quot;[\t] \[\e[01;32m\]\u\[\e[01;33m\]@\h\[\e[00m\]:\[\e[01;34m\]\w\[\e[00m\]\$ &quot;&lt;/td&gt;
&lt;td&gt;&lt;img src=&quot;http://linux-attitude.fr/public/Prompt/b01.png&quot; alt=&quot;black&quot; title=&quot;black&quot; class=&quot;alignnone size-full wp-image-578&quot; /&gt;
&lt;br /&gt;&lt;img src=&quot;http://linux-attitude.fr/public/Prompt/w01.png&quot; alt=&quot;white&quot; title=&quot;white&quot; class=&quot;alignnone size-full wp-image-578&quot; /&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&quot;\[\033[01;32m\]\u@\h \[\033[01;34m\]\W \$ \[\033[00m\]&quot;&lt;/td&gt;
&lt;td&gt;&lt;img src=&quot;http://linux-attitude.fr/public/Prompt/b02.png&quot; alt=&quot;black&quot; title=&quot;black&quot; class=&quot;alignnone size-full wp-image-578&quot; /&gt;
&lt;br /&gt;&lt;img src=&quot;http://linux-attitude.fr/public/Prompt/w02.png&quot; alt=&quot;white&quot; title=&quot;white&quot; class=&quot;alignnone size-full wp-image-578&quot; /&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;/table&gt;
&lt;tr&gt;
&lt;td&gt;&quot;\[\033[0;34m\][\[\033[0;31m\]$(date +%H%M)\[\033[0;34m\]]\[\033[0;34m\][\[\033[1;31m\]\u@\h:\w\[\033[0;34m\]]\[\033[1;37m\]$\[\033[0m\] &quot;&lt;/td&gt;
&lt;td&gt;&lt;img src=&quot;http://linux-attitude.fr/public/Prompt/b03.png&quot; alt=&quot;black&quot; title=&quot;black&quot; class=&quot;alignnone size-full wp-image-578&quot; /&gt;
&lt;br /&gt;&lt;img src=&quot;http://linux-attitude.fr/public/Prompt/w03.png&quot; alt=&quot;white&quot; title=&quot;white&quot; class=&quot;alignnone size-full wp-image-578&quot; /&gt;
&lt;/td&gt;
&lt;/tr&gt;


&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;
&amp;nbsp;&lt;br /&gt;&amp;nbsp;
&lt;/td&gt;
&lt;/tr&gt;




&lt;h4&gt;Exemples multilignes&lt;/h4&gt;

&lt;table&gt;
&lt;tr&gt;&lt;th&gt;PS1&lt;/th&gt;&lt;th&gt;Fond noir / Fond Blanc&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&quot;\[\e]0;\u@\h \w\a\]\[\e[1;31m\]\u\[\e[1;34m\]@\[\e[0;32m\]\h \[\e[0;33m\]\w \[\e[0;31m\]$(uptime|sed -e 's/.*: \([^,]*\), \([^,]*\), \([^,]*\).*/\1 \2 \3/') \[\e[0;34m\]\D{%Y-%m-%d %H:%M:%S} \[\e[0m\]\n\$ &quot;&lt;/td&gt;
&lt;td&gt;&lt;img src=&quot;http://linux-attitude.fr/public/Prompt/b04.png&quot; alt=&quot;black&quot; title=&quot;black&quot; class=&quot;alignnone size-full wp-image-578&quot; /&gt;
&lt;br /&gt;&lt;img src=&quot;http://linux-attitude.fr/public/Prompt/w04.png&quot; alt=&quot;white&quot; title=&quot;white&quot; class=&quot;alignnone size-full wp-image-578&quot; /&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;
&amp;nbsp;&lt;br /&gt;&amp;nbsp;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;



&lt;h4&gt;Exemples monochromes&lt;/h4&gt;

&lt;table&gt;
&lt;tr&gt;&lt;th&gt;PS1&lt;/th&gt;&lt;th&gt;Fond noir / Fond Blanc&lt;/th&gt;&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&quot;[\t][\u@\h:\w]\$ &quot;&lt;/td&gt;
&lt;td&gt;&lt;img src=&quot;http://linux-attitude.fr/public/Prompt/b05.png&quot; alt=&quot;black&quot; title=&quot;black&quot; class=&quot;alignnone size-full wp-image-578&quot; /&gt;
&lt;br /&gt;&lt;img src=&quot;http://linux-attitude.fr/public/Prompt/w05.png&quot; alt=&quot;white&quot; title=&quot;white&quot; class=&quot;alignnone size-full wp-image-578&quot; /&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&quot;\u@\h \w&gt; &quot;&lt;/td&gt;
&lt;td&gt;&lt;img src=&quot;http://linux-attitude.fr/public/Prompt/b06.png&quot; alt=&quot;black&quot; title=&quot;black&quot; class=&quot;alignnone size-full wp-image-578&quot; /&gt;
&lt;br /&gt;&lt;img src=&quot;http://linux-attitude.fr/public/Prompt/w06.png&quot; alt=&quot;white&quot; title=&quot;white&quot; class=&quot;alignnone size-full wp-image-578&quot; /&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&quot;\!|\h|$(uname -r)|\$?&gt; &quot;&lt;/td&gt;
&lt;td&gt;&lt;img src=&quot;http://linux-attitude.fr/public/Prompt/b07.png&quot; alt=&quot;black&quot; title=&quot;black&quot; class=&quot;alignnone size-full wp-image-578&quot; /&gt;
&lt;br /&gt;&lt;img src=&quot;http://linux-attitude.fr/public/Prompt/w07.png&quot; alt=&quot;white&quot; title=&quot;white&quot; class=&quot;alignnone size-full wp-image-578&quot; /&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&quot;\[\e[1;34m\]\u@\h \w&gt;\[\e[0m\] &quot;&lt;/td&gt;
&lt;td&gt;&lt;img src=&quot;http://linux-attitude.fr/public/Prompt/b08.png&quot; alt=&quot;black&quot; title=&quot;black&quot; class=&quot;alignnone size-full wp-image-578&quot; /&gt;
&lt;br /&gt;&lt;img src=&quot;http://linux-attitude.fr/public/Prompt/w08.png&quot; alt=&quot;white&quot; title=&quot;white&quot; class=&quot;alignnone size-full wp-image-578&quot; /&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&quot;\[\e]2;\u@\H \w\a\e[32;1m\]&gt;\[\e[0m\] &quot;&lt;/td&gt;
&lt;td&gt;&lt;img src=&quot;http://linux-attitude.fr/public/Prompt/b09.png&quot; alt=&quot;black&quot; title=&quot;black&quot; class=&quot;alignnone size-full wp-image-578&quot; /&gt;
&lt;br /&gt;&lt;img src=&quot;http://linux-attitude.fr/public/Prompt/w09.png&quot; alt=&quot;white&quot; title=&quot;white&quot; class=&quot;alignnone size-full wp-image-578&quot; /&gt;
&lt;br /&gt;(Ici tout est dans le titre)
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;




&lt;p&gt;Faites votre choix&lt;/p&gt;


&lt;h3&gt;Cookbook&lt;/h3&gt;


&lt;p&gt;Si les exemples ne vous conviennent pas, voici un ensemble de recettes pour créer un prompt qui vous ressemble :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;load average : &quot;\$(cut -d ' ' -f 1-3 /proc/loadavg)&quot;&lt;/li&gt;
&lt;li&gt;uptime : &quot;\$(uptime | cut -d, -f1 | sed -e 's/.*up//')&quot;&lt;/li&gt;
&lt;li&gt;un prompt qu'on peut copier/coller sans provoquer d'erreurs : &quot;: &amp;lt;texte&amp;gt; ;&quot;&lt;/li&gt;
&lt;li&gt;user@host:/répertoire : &quot;\u@\h:\w&quot;&lt;/li&gt;
&lt;li&gt;date et heure : &quot;[\d \t]&quot;&lt;/li&gt;
&lt;li&gt;un bip à chaque ligne : &quot;\[\a\]&quot;&lt;/li&gt;
&lt;li&gt;changer la couleur du texte (code couleur voir ci dessous) : &quot;\[\e[&amp;lt;code_couleur&amp;gt;m\]&quot;&lt;/li&gt;
&lt;li&gt;revenir à la couleur originale du shell (en fin de ligne) : &quot;\[\e[0m\]&quot;&lt;/li&gt;
&lt;li&gt;code de retour de la dernière commande : &quot;-&amp;gt; \$?&quot;&lt;/li&gt;
&lt;li&gt;nombre de jobs mis en background par le shell : &quot;[\j]&quot;&lt;/li&gt;
&lt;li&gt;nombre de jobs en pause : &quot;\$(jobs | wc -l | awk '{print $1}')&quot;&lt;/li&gt;
&lt;li&gt;nombre de processus en cours d'exécution : &quot;\$(ps ax | wc -l | tr -d ' ')&quot;&lt;/li&gt;
&lt;li&gt;afficher le tty en cours : &quot;$(temp=$(tty) ; echo ${temp:5})&quot;&lt;/li&gt;
&lt;li&gt;chemin limité à 20 caractères : &quot;\$(a='\w';b=\${a: -20};b=\${b:+..\$b};echo \${b:-\$a})&quot;&lt;/li&gt;
&lt;li&gt;changer le texte de titre du terminal (xterm, konsole ...) : &quot;\[\e]0;&amp;lt;Texte&amp;gt;\a\]&quot;&lt;/li&gt;
&lt;li&gt;afficher l'état de la gestion de version en cours (voir ci dessous) : &quot;$(__vcs_dir)&quot;&lt;/li&gt;
&lt;li&gt;afficher la sortie d'une commande : &quot;\$(&amp;lt;commande&amp;gt;)&quot;&lt;/li&gt;
&lt;/ul&gt;


&lt;h4&gt;Codes couleur ANSI&lt;/h4&gt;


&lt;p&gt;Il est possible d'indiquer plusieurs codes simultanément en les séparant par un ';'.&lt;/p&gt;


&lt;p&gt;From &lt;a href=&quot;http://en.wikipedia.org/wiki/ANSI_escape_code&quot; hreflang=&quot;en&quot;&gt;wikipedia&lt;/a&gt; :&lt;/p&gt;

&lt;table class=&quot;wikitable&quot;&gt;
&lt;caption&gt;Code couleur&lt;/caption&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;th&gt;Code&lt;/th&gt;
&lt;th&gt;Effect&lt;/th&gt;
&lt;th&gt;Note&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;Reset / Normal&lt;/td&gt;
&lt;td&gt;all attributes off&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Intensity: Bold&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Intensity: Faint&lt;/td&gt;
&lt;td&gt;not widely supported&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Italic: on&lt;/td&gt;
&lt;td&gt;not widely supported. Sometimes treated as inverse.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Underline: Single&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Blink: Slow&lt;/td&gt;
&lt;td&gt;less than 150 per minute&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Blink: Rapid&lt;/td&gt;
&lt;td&gt;MS-DOS ANSI.SYS; 150 per minute or more&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Image: Negative&lt;/td&gt;
&lt;td&gt;inverse or reverse; swap foreground and background&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;Conceal&lt;/td&gt;
&lt;td&gt;not widely supported&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;21&lt;/td&gt;
&lt;td&gt;Underline: Double&lt;/td&gt;
&lt;td&gt;not widely supported&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;22&lt;/td&gt;
&lt;td&gt;Intensity: Normal&lt;/td&gt;
&lt;td&gt;not bold and not faint&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;24&lt;/td&gt;
&lt;td&gt;Underline: None&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;25&lt;/td&gt;
&lt;td&gt;Blink: off&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;27&lt;/td&gt;
&lt;td&gt;Image: Positive&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;28&lt;/td&gt;
&lt;td&gt;Reveal&lt;/td&gt;
&lt;td&gt;conceal off&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;30–39&lt;/td&gt;
&lt;td&gt;Set foreground color, normal intensity&lt;/td&gt;
&lt;td&gt;3x, where x is from the color table below&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;40–49&lt;/td&gt;
&lt;td&gt;Set background color, normal intensity&lt;/td&gt;
&lt;td&gt;4x, where x is from the color table below&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;90–99&lt;/td&gt;
&lt;td&gt;Set foreground color, high intensity&lt;/td&gt;
&lt;td&gt;aixterm&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;100–109&lt;/td&gt;
&lt;td&gt;set background color, high intensity&lt;/td&gt;
&lt;td&gt;aixterm&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;


&lt;table class=&quot;wikitable&quot;&gt;
&lt;caption&gt;Table des couleurs&lt;/caption&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;th&gt;Intensité&lt;/th&gt;
&lt;th&gt;0&lt;/th&gt;
&lt;th&gt;1&lt;/th&gt;
&lt;th&gt;2&lt;/th&gt;
&lt;th&gt;3&lt;/th&gt;
&lt;th&gt;4&lt;/th&gt;
&lt;th&gt;5&lt;/th&gt;
&lt;th&gt;6&lt;/th&gt;
&lt;th&gt;7&lt;/th&gt;
&lt;th&gt;9&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;Normal&lt;/th&gt;
&lt;td&gt;Black&lt;/td&gt;
&lt;td&gt;Red&lt;/td&gt;
&lt;td&gt;Green&lt;/td&gt;
&lt;td&gt;Yellow&lt;sup id=&quot;cite_ref-4&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;http://linux-attitude.fr/feed#cite_note-4&quot;&gt;&lt;span&gt;[&lt;/span&gt;5&lt;span&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;&lt;/td&gt;
&lt;td&gt;Blue&lt;/td&gt;
&lt;td&gt;Magenta&lt;/td&gt;
&lt;td&gt;Cyan&lt;/td&gt;
&lt;td&gt;White&lt;/td&gt;
&lt;td&gt;reset&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;Brillant&lt;/th&gt;
&lt;td&gt;Black&lt;/td&gt;
&lt;td&gt;Red&lt;/td&gt;
&lt;td&gt;Green&lt;/td&gt;
&lt;td&gt;Yellow&lt;/td&gt;
&lt;td&gt;Blue&lt;/td&gt;
&lt;td&gt;Magenta&lt;/td&gt;
&lt;td&gt;Cyan&lt;/td&gt;
&lt;td&gt;White&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;





&lt;h4&gt;Gestion de version&lt;/h4&gt;


&lt;p&gt;Pour que la méthode de gestion de version fonctionne, il faut ajouter le code suivant dans son .bashrc :&lt;/p&gt;
&lt;pre&gt;
alias svnwdiff=&amp;quot;svn diff --diff-cmd /home/spaillar/vimdiff-wrapper.sh&amp;quot;
function cvswdiff { vimdiff $1 &amp;lt;(cvs co -p $2 $(cat $(dirname $1)/CVS/Repository)/$(basename $1)) ;} 

function vlog { 
# cvs
cvs_log() {
   [ -d &amp;quot;CVS&amp;quot; ] || return 1
   cvs log &amp;quot;$@&amp;quot; | vim -
}

# subversion
svn_log() {
    [ -d &amp;quot;.svn&amp;quot; ] || return 1
    svn log -v &amp;quot;$@&amp;quot; | vim -
}
# git
git_log() {
    base_dir=$(git rev-parse --show-cdup 2&amp;gt;/dev/null) || return 1
    git log --name-status &amp;quot;$@&amp;quot; | vim -
}

git_log &amp;quot;$@&amp;quot; || svn_log &amp;quot;$@&amp;quot; || cvs_log &amp;quot;$@&amp;quot;

}

function vwdiff {
vim -c &amp;quot;:VCSVimDiff&amp;quot; $1
}

function vpull { 
# cvs
cvs_pull() {
   [ -d &amp;quot;CVS&amp;quot; ] || return 1
   cvs -q up -d
}

# subversion
svn_pull() {
    [ -d &amp;quot;.svn&amp;quot; ] || return 1
    svn up 
}
# git
git_pull() {
    base_dir=$(git rev-parse --show-cdup 2&amp;gt;/dev/null) || return 1
    git pull 
}

git_pull &amp;quot;$@&amp;quot; || svn_pull &amp;quot;$@&amp;quot; || cvs_pull &amp;quot;$@&amp;quot;

}



_bold=$(tput bold)
_normal=$(tput sgr0)
_yellow=$(tput setaf 3)
_green=$(tput setaf 2)

__vcs_dir() {
  local vcs base_dir sub_dir ref
  sub_dir() {
  local sub_dir
  sub_dir=$(readlink -f &amp;quot;${PWD}&amp;quot;)
  sub_dir=${sub_dir#$1}
  echo ${sub_dir#/}
  }

  # git
  git_dir() {
      base_dir=$(git rev-parse --show-cdup 2&amp;gt;/dev/null) || return 1
      if [ -n &amp;quot;$base_dir&amp;quot; ]; then
        base_dir=`cd $base_dir; pwd`
      else
        base_dir=$PWD
      fi
      sub_dir=$(git rev-parse --show-prefix)
      sub_dir=&amp;quot;/${sub_dir%/}&amp;quot;
      ref=$(git symbolic-ref -q HEAD || git name-rev --name-only HEAD 2&amp;gt;/dev/null)
      ref=${ref#refs/heads/}
      vcs=&amp;quot;git&amp;quot;
      alias pull=&amp;quot;git pull&amp;quot;
      alias commit=&amp;quot;git commit&amp;quot;
      alias push=&amp;quot;git push&amp;quot;
#     alias revert=&amp;quot;svn revert&amp;quot;
    }

  # subversion
  svn_dir() {
      [ -d &amp;quot;.svn&amp;quot; ] || return 1
      base_dir=&amp;quot;.&amp;quot;
      while [ -d &amp;quot;$base_dir/../.svn&amp;quot; ]; do base_dir=&amp;quot;$base_dir/..&amp;quot;; done
      base_dir=`cd $base_dir; pwd`
      sub_dir=&amp;quot;/$(sub_dir &amp;quot;${base_dir}&amp;quot;)&amp;quot;
      ref=$(svn info &amp;quot;$base_dir&amp;quot; | awk '/^URL/ { sub(&amp;quot;.*/&amp;quot;,&amp;quot;&amp;quot;,$0); r=$0 } /^Revision/ { sub(&amp;quot;[^0-9]*&amp;quot;,&amp;quot;&amp;quot;,$0); print r&amp;quot;:&amp;quot;$0 }')
      vcs=&amp;quot;svn&amp;quot;
      alias pull=&amp;quot;svn up&amp;quot;
      alias commit=&amp;quot;svn commit&amp;quot;
      alias push=&amp;quot;svn ci&amp;quot;
      alias revert=&amp;quot;svn revert&amp;quot;
    }

  # mercurial
  hg_dir() {
      base_dir=&amp;quot;.&amp;quot;
      while [ ! -d &amp;quot;$base_dir/.hg&amp;quot; ]; do base_dir=&amp;quot;$base_dir/..&amp;quot;; [ $(readlink -f &amp;quot;${base_dir}&amp;quot;) = &amp;quot;/&amp;quot; ] &amp;amp;&amp;amp; return 1; done
      base_dir=$(readlink -f &amp;quot;$base_dir&amp;quot;)
      sub_dir=&amp;quot;/$(sub_dir &amp;quot;${base_dir}&amp;quot;)&amp;quot;
      ref=$(&amp;lt; &amp;quot;${base_dir}/.hg/branch&amp;quot;)
      hgqtop=$(hg qtop)
      if [[ $hgqtop == 'No patches applied' ]]; then 
        extra=&amp;quot;&amp;quot;;
      else 
        extra=&amp;quot; &amp;gt;&amp;gt; $hgqtop&amp;quot;
      fi
      vcs=&amp;quot;hg&amp;quot;
  }

  # cvs
  cvs_dir() {
      [ -d &amp;quot;CVS&amp;quot; ] || return 1
      base_dir=&amp;quot;.&amp;quot;
      while [ -d &amp;quot;$base_dir/../CVS&amp;quot; ]; do base_dir=&amp;quot;$base_dir/..&amp;quot;; done
      base_dir=`cd $base_dir; pwd`
      sub_dir=&amp;quot;/$(sub_dir &amp;quot;${base_dir}&amp;quot;)&amp;quot;
      vcs=&amp;quot;cvs&amp;quot;
      alias pull=&amp;quot;cvs -q up -d&amp;quot;
      alias commit=&amp;quot;cvs commit&amp;quot;
      alias push=&amp;quot;cvs ci&amp;quot;
      alias revert=&amp;quot;cvs revert&amp;quot;


  }

  # hg_dir || git_dir || svn_dir || cvs_dir || base_dir=&amp;quot;$PWD&amp;quot;
  git_dir || svn_dir || cvs_dir || base_dir=&amp;quot;$PWD&amp;quot;
  echo &amp;quot;${_green}${_bold}${vcs:+($vcs)}${_yellow}${_bold}${vcs:+[$ref]}${_normal}${base_dir/$HOME/~}${_yellow}${_bold}${vcs:+${_bold}${sub_dir}${_normal}$extra}&amp;quot;
}

PS1='${debian_chroot:+($debian_chroot)}\u@\h:$(__vcs_dir)${_normal}\$ '
&lt;/pre&gt;



&lt;p&gt;Et vous quel prompt utilisez vous ?&lt;/p&gt;
	Tags:&lt;a href=&quot;http://linux-attitude.fr/tag/commande&quot; title=&quot;Commande&quot; rel=&quot;tag&quot;&gt;Commande&lt;/a&gt;, &lt;a href=&quot;http://linux-attitude.fr/tag/planet-libre&quot; title=&quot;planet-libre&quot; rel=&quot;tag&quot;&gt;planet-libre&lt;/a&gt;&lt;br /&gt;</description>
	<pubDate>jeu, 29 oct 2009 21:51:18 +0000</pubDate>
</item>
<item>
	<title>Rodolphe Quiédeville: pgpool-II 2.2.5 dans Debian</title>
	<guid permalink="False">urn:md5:18b9de91de868694a5af9e1ee81b974c</guid>
	<link>http://blog.rodolphe.quiedeville.org/index.php?post/2009/10/pgpool2-en-route-pour-Debian</link>
	<description>&lt;p&gt;La dernière version de &lt;a href=&quot;http://pgfoundry.org/projects/pgpool/&quot;&gt;pgpool-II&lt;/a&gt;, la 2.2.5 vient d'être intégrée dans debian experimental, vous pouvez suivre son évolution au travers de la page du &lt;a href=&quot;http://packages.qa.debian.org/p/pgpool2.html&quot;&gt;package tracking system&lt;/a&gt; dédiée.&lt;/p&gt;</description>
	<pubDate>jeu, 29 oct 2009 08:57:00 +0000</pubDate>
</item>
<item>
	<title>Christophe Nowicki: Reconnaissance vocale sous GNU/Linux et domotique</title>
	<guid permalink="False">http://www.csquad.org/?p=554</guid>
	<link>http://www.csquad.org/2009/10/27/reconnaissance-vocale-avec-julius/</link>
	<description>&lt;p&gt;L&amp;#8217;objectif de cet article est de décrire mon avancement sur le système de &lt;a href=&quot;http://fr.wikipedia.org/wiki/Reconnaissance_vocale&quot;&gt;reconnaissance vocale&lt;/a&gt; dans mon &lt;a href=&quot;http://www.csquad.org/installation-domotique/&quot;&gt;installation domotique&lt;/a&gt;. En effet, pour mon usage personnel, j&amp;#8217;ai mis au point un &lt;a href=&quot;http://en.wikipedia.org/wiki/Chatterbot&quot;&gt;chatterbot&lt;/a&gt; pour contrôler de manière intuitive l&amp;#8217;appartement.&lt;br /&gt;
Cette technologie permet de tenir une discutions intuitive avec une maison intelligente pour lui faire exécuter des ordres.   (allez &lt;a href=&quot;http://www.imdb.com/title/tt0062622/&quot;&gt;Stanley&lt;/a&gt;, tu t&amp;#8217;es seulement planter de 10 ans &lt;img src=&quot;http://www.csquad.org/wp-includes/images/smilies/icon_wink.gif&quot; alt=&quot;;-)&quot; class=&quot;wp-smiley&quot; /&gt;  ) :&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
Moi&gt;Alfred?&lt;br /&gt;
Alfred&gt;Oui, monsieur.&lt;br /&gt;
Moi&gt;Allume la lumière du salon.&lt;br /&gt;
-- run xpl-sender -c x10.basic command=on device=a3&lt;br /&gt;
Alfred&gt;C'est fait.&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Le nom du bot est un hommage à &lt;a href=&quot;http://en.wikipedia.org/wiki/Alfred_Pennyworth&quot;&gt;Alfred Pennyworth&lt;/a&gt;. Allons faire un petit tour dans les entrailles de la batcave &lt;img src=&quot;http://www.csquad.org/wp-includes/images/smilies/icon_wink.gif&quot; alt=&quot;;-)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;
&lt;h3&gt;Définition du besoin&lt;/h3&gt;
&lt;p&gt;L&amp;#8217;accumulation des télécommandes sur mon installation domotique, fait chuter mon &lt;a href=&quot;http://en.wikipedia.org/wiki/Wife_acceptance_factor&quot;&gt;WAF&lt;/a&gt; de manière dramatique.&lt;br /&gt;
 En effet, pour regarder une chaîne de télévision ou allumer la lumière.&lt;br /&gt;
Il est nécessaire d&amp;#8217;utiliser deux ou trois télécommandes différentes.&lt;br /&gt;
Naviguer dans des interfaces, etc&amp;#8230;&lt;br /&gt;
Bref, pour des technologies donc l&amp;#8217;objectif est d&amp;#8217;améliorer la qualité de vie et rendre les taches quotidienne plus facile, j&amp;#8217;avais un gros problème &lt;img src=&quot;http://www.csquad.org/wp-includes/images/smilies/icon_wink.gif&quot; alt=&quot;;-)&quot; class=&quot;wp-smiley&quot; /&gt;&lt;br /&gt;
Après un petite discussion et une mise au point avec ma moitié, j&amp;#8217;ai réussi à vendre la solution de contrôle par la voix.&lt;br /&gt;
Belle connerie me voilà parti dans un domaine que je ne connais pas &lt;img src=&quot;http://www.csquad.org/wp-includes/images/smilies/icon_wink.gif&quot; alt=&quot;;-)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;
&lt;h4&gt;Première Approche&lt;/h4&gt;
&lt;p&gt;Je &lt;a href=&quot;http://www.touteladomotique.com/forum/viewtopic.php?t=2112&quot;&gt;lance une boue à la mer&lt;/a&gt; sur le forum &lt;em&gt;&amp;#8220;toute la domotique&amp;#8221;&lt;/em&gt;. &lt;/p&gt;
&lt;p&gt;Visiblement, je ne suis pas le seul à chercher ce genre de fonctionnalité. Actuellement, nous avons dans le domaine :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;l&amp;#8217;abominable &lt;a href=&quot;http://www.homeseer.com/&quot;&gt;HomeSeer&lt;/a&gt; qui fonctionne très mal en Anglais à l&amp;#8217;aide de l&amp;#8217;interface de reconnaissance vocale inclue dans &lt;a href=&quot;http://www.microsoft.com/enable/products/windowsvista/speech.aspx&quot;&gt;Microsoft Windows&lt;/a&gt; et la &lt;a href=&quot;http://en.wikipedia.org/wiki/Speech_Application_Programming_Interface&quot;&gt;SAPI&lt;/a&gt; ;&lt;/li&gt;
&lt;li&gt;Rien de spécifique à la domotique sous GNU/Linux, mais une belle galaxie de programmes dans le domaine.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Le choix du microphone&lt;/h3&gt;
&lt;p&gt;Ma petite dame voulais parler librement sans aucune contrainte et il n&amp;#8217;étais pas question de l&amp;#8217;équiper d&amp;#8217;un microphone.&lt;br /&gt;
J&amp;#8217;ai donc cherché une solution qui permet de capter la parole dans une pièce sans microphone sur la personne.&lt;br /&gt;
La solution magique s&amp;#8217;appelle la technique du &lt;a href=&quot;http://en.wikipedia.org/wiki/Microphone_array&quot;&gt;Microphone array&lt;/a&gt;.&lt;br /&gt;
Le principe est très simple, mettre en commun plusieurs microphones reliés à un &lt;a href=&quot;http://en.wikipedia.org/wiki/Digital_signal_processor&quot;&gt;DSP&lt;/a&gt; qui permet de faire le traitement du signal en fonction de l&amp;#8217;orientation physique des microphones.&lt;br /&gt;
J&amp;#8217;ai donc proposé de mettre en place chez moi le &lt;a href=&quot;http://groups.csail.mit.edu/cag/mic-array/images/array_pics/tn/dscf0483.jpg.html&quot;&gt;LOUD&lt;/a&gt; (non ce n&amp;#8217;est pas un radiateur &lt;img src=&quot;http://www.csquad.org/wp-includes/images/smilies/icon_wink.gif&quot; alt=&quot;;-)&quot; class=&quot;wp-smiley&quot; /&gt;  ).&lt;br /&gt;
Bon vous vous doutez bien que lorsque j&amp;#8217;ai proposé la solution du LOUD, j&amp;#8217;ai faillit passer  par la fenêtre &lt;img src=&quot;http://www.csquad.org/wp-includes/images/smilies/icon_wink.gif&quot; alt=&quot;;-)&quot; class=&quot;wp-smiley&quot; /&gt;   &lt;/p&gt;
&lt;table&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot;&gt;
&lt;img src=&quot;http://www.csquad.org/wp-content/uploads/2009/09/microphone_array.jpg&quot; alt=&quot;microphone_array&quot; title=&quot;microphone_array&quot; width=&quot;275&quot; height=&quot;142&quot; class=&quot;alignnone size-full wp-image-582&quot; /&gt;
&lt;/td&gt;
&lt;td&gt;
Heureusement, il existe des solutions plus simples telles que le &lt;a href=&quot;http://www.acousticmagic.com/&quot;&gt;Voice Tracker&lt;/a&gt; de chez Acoustic Magic. &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;Celui-ci permet de capter la parole dans une pièce, retraite le signal et permet d&amp;#8217;obtenir sur une prise Jack classique la voix et rien que la voix dans une pièce.&lt;br /&gt;
Magique &lt;img src=&quot;http://www.csquad.org/wp-includes/images/smilies/icon_wink.gif&quot; alt=&quot;;-)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;


&lt;p&gt;Je peux parler le dos tourner au microphone dans une pièce de 20m^2 et l&amp;#8217;ordinateur capte ma voix de manière impressionnante &lt;img src=&quot;http://www.csquad.org/wp-includes/images/smilies/icon_wink.gif&quot; alt=&quot;;-)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;
&lt;h3&gt;Le logiciel de reconnaissance vocale&lt;/h3&gt;
&lt;p&gt;Il y a principalement deux solutions dans le domaine sous GNU/Linux :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Le projet &lt;a href=&quot;http://cmusphinx.sourceforge.net/html/cmusphinx.php&quot;&gt;CMU Sphinx&lt;/a&gt; avec PocketSphinx, Sphinx-[234], etc&amp;#8230;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://julius.sourceforge.jp/en_index.php&quot;&gt;Julius&lt;/a&gt;, Open-Source Large Vocabulary CSR Engine Julius.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Sur ces deux moteurs de reconnaissance vocale, reposent de nombreux &lt;a href=&quot;http://www.voxforge.org/home/docs/faq/faq/what-is-a-dialog-manager&quot;&gt;Dialog Manager&lt;/a&gt;,  qui permettent d&amp;#8217;exploiter le moteurs pour faire de la téléphonie, de contrôle vocale, etc&amp;#8230; &lt;/p&gt;
&lt;h3&gt;Ma méthode&lt;/h3&gt;
&lt;p&gt;Soyons claire, je ne suis pas un expert en reconnaissance vocale et ce domaine est vraiment très difficile d&amp;#8217;accès et nécessite la compréhension de nombreuses notions.&lt;br /&gt;
J&amp;#8217;ai donc adopté la technique &lt;a href=&quot;http://www.epitech.eu/&quot;&gt;EPITECH&lt;/a&gt; : c&amp;#8217;est à dire faire en sorte que cela fonctionne. ( sans comprendre tout le contexte &lt;img src=&quot;http://www.csquad.org/wp-includes/images/smilies/icon_wink.gif&quot; alt=&quot;;-)&quot; class=&quot;wp-smiley&quot; /&gt;  )&lt;/p&gt;
&lt;h3&gt;Un bon informaticien est un informaticien feignant&lt;/h3&gt;
&lt;p&gt;Pour faire fonctionner Julius, il est nécessaire de lire à haute voix de nombreux mots pour enregistrer les différents &lt;a href=&quot;http://fr.wikipedia.org/wiki/Phon%C3%A8me&quot;&gt;phonèmes&lt;/a&gt; qui les composent. Afin de créer un &lt;a href=&quot;http://fr.wikipedia.org/wiki/Mod%C3%A8le_de_Markov_cach%C3%A9&quot;&gt;Modèle de Markov caché&lt;/a&gt; exploitable par le logiciel.&lt;br /&gt;
Voici donc comment je m&amp;#8217;y suis pris pour éviter cette phase fastidieuse du projet.&lt;/p&gt;
&lt;h4&gt;Utilisation d&amp;#8217;un logiciel de synthèse vocale&lt;/h4&gt;
&lt;p&gt;1 ère approche une solution assez &amp;#8220;&lt;em&gt;laide&lt;/em&gt;&amp;#8220;,  qui consiste à faire lire ces mots par un logiciel de &lt;a href=&quot;http://en.wikipedia.org/wiki/Speech_synthesis&quot;&gt;synthèse vocale&lt;/a&gt; comme &lt;a href=&quot;http://espeak.sourceforge.net/&quot;&gt;eSpeak&lt;/a&gt;. Mais le résultat n&amp;#8217;était pas très bon.&lt;/p&gt;
&lt;h4&gt;Utilisation d&amp;#8217;une collection d&amp;#8217;enregistrement audio&lt;/h4&gt;
&lt;p&gt;J&amp;#8217;ai par la suite découvert le &lt;a href=&quot;http://shtooka.net/fr/&quot;&gt;projet Shtooka&lt;/a&gt;, qui est une collection audio libre de mots français.&lt;br /&gt;
Tous les termes liés à la domotique ne sont pas disponible dans le projet mais il est très facile d&amp;#8217;ajouter ces termes à sa base de données locale.&lt;/p&gt;
&lt;h4&gt;Conversion texte vers Phonème&lt;/h4&gt;
&lt;p&gt;Une des étapes de l&amp;#8217;apprentissage de Julius est la conversion du texte en &lt;a href=&quot;http://fr.wikipedia.org/wiki/Phon%C3%A8me&quot;&gt;Phonèmes&lt;/a&gt;, pour résoudre ce problème, j&amp;#8217;ai utilisé l&amp;#8217;option -X de  &lt;a href=&quot;http://espeak.sourceforge.net/&quot;&gt;eSpeak&lt;/a&gt; dont voici un exemple de sortie :&lt;/p&gt;
&lt;pre&gt;$espeak -v fr -q -X &quot;lumière&quot;
Translate 'lumière'
  1     l        [l]

  1     u        [y]

  1     m        [m]

 21     i (A     [j]
  1     i        [i]

 43     è       [E]

  1     r        [r]

 22     e (_     []
  1     e        [@]

 lymj'Er&lt;/pre&gt;
&lt;h4&gt;Un peu de glu&lt;/h4&gt;
&lt;p&gt;Pour faire fonctionner tout ces éléments ensemble, je me suis fait un script Perl (très sale pour le moment) permettant de réaliser automatiquement toutes ces étapes :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;analyse des questions posées au robot ;&lt;/li&gt;
&lt;li&gt;la conversion des mots en phonèmes ; &lt;/li&gt;
&lt;li&gt;la diction des mots ;&lt;/li&gt;
&lt;li&gt;la création du modèle accoustique.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Il s&amp;#8217;agit de l&amp;#8217;automatisation de toutes les étapes de la création d&amp;#8217;un modèle acoustique du projet &lt;a href=&quot;http://www.voxforge.org/home/dev/acousticmodels/linux/create/htkjulius/tutorial&quot;&gt;VoxForge&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Les travaux en cours&lt;/h3&gt;
&lt;p&gt;Mon projet est disponible à cette adresse : &lt;a href=&quot;http://alfred.csquad.org/&quot;&gt;Alfred&lt;/a&gt;&lt;br /&gt;
Il est en cours de développement mais pour l&amp;#8217;instant il est possible de donner des ordres simples. &lt;/p&gt;
&lt;p&gt;J&amp;#8217;utilise &lt;a href=&quot;http://www.rivescript.com/&quot;&gt;RiveScript&lt;/a&gt; pour la définition des tâches et de la conversation. Ce langage de chatbot est plus puissant que  &lt;a href=&quot;http://en.wikipedia.org/wiki/AIML&quot;&gt;AIML&lt;/a&gt;. Car il permet d&amp;#8217;inclure du code Perl assez puissant dans le code de la conversation. Voici un exemple :&lt;br /&gt;
&lt;code&gt;$ more lib/Alfred/languages/en/x10.rs&lt;br /&gt;
+ switch * on&lt;br /&gt;
- do you want me to switch &amp;lt;star&amp;gt; on?&lt;br /&gt;
+ yes&lt;br /&gt;
% do you want me to switch * on&lt;br /&gt;
- &amp;lt;call&amp;gt;xpl_x10_send_on &amp;lt;botstar&amp;gt;&amp;lt;/botstar&amp;gt;&amp;lt;/call&amp;gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;$more lib/Alfred/modules/x10.rs&lt;br /&gt;
&gt; object xpl_x10_send_on perl&lt;br /&gt;
    my ($obj,$method,@args) = @_;&lt;br /&gt;
    $obj-&gt;{'xpl'}-&gt;send(&lt;br /&gt;
        message_type =&gt; 'xpl-cmnd', class =&gt; 'x10.basic',&lt;br /&gt;
        body =&gt; { command =&gt; 'on', device =&gt; 'a3'  });&lt;br /&gt;
 object&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Un petit appel à contribution&lt;/h3&gt;
&lt;p&gt;J'aurais gagné énormément de temps si le projet &lt;a href=&quot;http://www.voxforge.org/&quot;&gt;VoxForge&lt;/a&gt; avait reçu plus de contribution de la part des utilisateurs francophones.&lt;/p&gt;
&lt;p&gt;En effet, il n'y a pas assez de contribution pour pouvoir faire un modèle accoustique en Français.&lt;br /&gt;
Cela permettra de &lt;strong&gt;disposer d'un système de reconnaissance vocale libre&lt;/strong&gt; en Français.&lt;br /&gt;
Ce qui intéresse beaucoup de monde à mon avis &lt;img src=&quot;http://www.csquad.org/wp-includes/images/smilies/icon_wink.gif&quot; alt=&quot;;-)&quot; class=&quot;wp-smiley&quot; /&gt;&lt;br /&gt;
C'est donc un petit appel à contribution aux projets VoxForge et &lt;a href=&quot;http://shtooka.net/fr/&quot;&gt;Shtooka&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Références intéressantes&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Ensemble de &lt;a href=&quot;http://cookerspot.tuxfamily.org/wikka.php?wakka=ReconnaissanceVocale&quot;&gt;liens intéressants&lt;/a&gt; sur le sujet de la reconnaissance vocale sous GNU/Linux.&lt;/li&gt;
&lt;li&gt;Un exemple d'utilisation de Julius : &lt;a href=&quot;http://www.linux.com/archive/feature/134671&quot;&gt;Querying a database using open source voice control software&lt;/a&gt; ; &lt;/li&gt;
&lt;li&gt;Les &lt;a href=&quot;http://www.voxforge.org/home/dev/acousticmodels/linux&quot;&gt;tutoriels&lt;/a&gt; du projet VoxForge ;&lt;/li&gt;
&lt;li&gt;Le &lt;a href=&quot;http://sourceforge.jp/projects/julius/downloads/37581/Juliusbook-part-4.1.2-en.pdf&quot;&gt;Julius Book&lt;/a&gt;. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;/p&gt;</description>
	<pubDate>mar, 27 oct 2009 16:32:13 +0000</pubDate>
</item>
<item>
	<title>Rodolphe Quiédeville: Intégrer memcached et mysql</title>
	<guid permalink="False">urn:md5:622e24c9777860ca3a78968227e3f620</guid>
	<link>http://blog.rodolphe.quiedeville.org/index.php?post/2009/10/Int%C3%A9grer-memcache-et-mysql</link>
	<description>&lt;p&gt;Je vais décrire ici une technique pour mettre en cache mémoire, à l'aide de &lt;a href=&quot;http://www.danga.com/memcached/&quot;&gt;memcached&lt;/a&gt; les données d'une base mysql sans modifier le code applicatif. La technique consiste à utiliser &lt;a href=&quot;http://forge.mysql.com/wiki/MySQL_Proxy&quot;&gt;mysql-proxy&lt;/a&gt; et la librairie lua &lt;a href=&quot;http://github.com/clofresh/mysql-proxy-cache&quot;&gt;mysql-proxy-cache&lt;/a&gt;. Cette description se base sur une Debian Lenny.&lt;/p&gt;


&lt;p&gt;On débute par l'installation de memcached&lt;/p&gt;

&lt;pre&gt;
aptitude install memcached
&lt;/pre&gt;


&lt;p&gt;Ensuite nous allons installer les paquets nécessaire pour satisfaire les dépendances de la librairie.&lt;/p&gt;

&lt;pre&gt;
aptitude install lua5.1 liblua5.1-md5-0 liblua5.1-socket2 luarocks
&lt;/pre&gt;


&lt;p&gt;La librairie &lt;a href=&quot;http://luaforge.net/projects/luamemcached/&quot;&gt;luamemcached&lt;/a&gt; n'est pas actuellement dans les repository officiel mais il existe néanmoins un paquet debian.&lt;/p&gt;

&lt;pre&gt;
wget http://luaforge.net/frs/download.php/4041/liblua5.1-memcached0.deb
dpkg -i liblua5.1-memcached0.deb
&lt;/pre&gt;


&lt;p&gt;Pour la librairie mysql-proxy-cache qui nous intéresse ici nous pouvons la récupérer par &lt;a href=&quot;git://github.com/clofresh/mysql-proxy-cache.git&quot;&gt;git&lt;/a&gt; ou directement à l'adresse &lt;code&gt;http://github.com/clofresh/mysql-proxy-cache/raw/master/mysql-proxy-cache.lua&lt;/code&gt;.&lt;/p&gt;


&lt;p&gt;A partir de ce point nous considérons que le fichier lua a été sauvegardé dans &lt;code&gt;/usr/share/mysql-proxy/mysql-proxy-cache.lua&lt;/code&gt;&lt;/p&gt;


&lt;p&gt;Modifions maintenant le fichier de configuration de mysql-proxy pour que celui-ci se lance au démarrage et qu'il intègre la nouvelle librairie, la configuration se fait dans &lt;code&gt;/etc/default/mysql-proxy&lt;/code&gt;.&lt;/p&gt;

&lt;pre&gt;
ENABLED=&amp;quot;true&amp;quot;
OPTIONS=&amp;quot;--proxy-lua-script=/usr/share/mysql-proxy/mysql-proxy-cache.lua&amp;quot;
&lt;/pre&gt;


&lt;p&gt;Il reste à démarrer mysql-proxy avec le script d'init standard&lt;/p&gt;

&lt;pre&gt;
/etc/init.d/mysql-proxy start
&lt;/pre&gt;


&lt;p&gt;C'est désormais opérationnel, par défaut les résultats seront cachés pour une durée de 30 secondes. Le cache n'est pas dynamique dans le sens ou une donnée écrite ne sera pas rendue immédiatement, mais seulement au bout de 30 secondes, prenez garde donc si vous augmentez cette valeur.&lt;/p&gt;


&lt;p&gt;Pour vérifier que memcached est bien actif, vous pouvez vous connecter en telnet sur son port d'écoute (11211) et taper la commande &lt;code&gt;stats&lt;/code&gt;, vous obtiendrez quelque chose comme&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
stats
STAT pid 2539
STAT uptime 21318
STAT time 1256336412
STAT version 1.2.2
STAT pointer_size 32
STAT rusage_user 0.040002
STAT rusage_system 0.120007
STAT curr_items 3
STAT total_items 15
STAT bytes 50447
STAT curr_connections 2
STAT total_connections 651
STAT connection_structures 17
STAT cmd_get 1450
STAT cmd_set 15
STAT get_hits 1435
STAT get_misses 15
STAT evictions 0
STAT bytes_read 151263
STAT bytes_written 45156032
STAT limit_maxbytes 67108864
STAT threads 1
&lt;/pre&gt;


&lt;p&gt;Happy hacking&amp;nbsp;!&lt;/p&gt;</description>
	<pubDate>ven, 23 oct 2009 21:35:00 +0000</pubDate>
</item>

</channel>
</rss>
