<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><rss xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Metal3d.org</title><link>http://www.metal3d.org/</link><description>Blog d'un presque geek :)</description><language>en</language><generator>Copix, module feed (http://www.copix.org)</generator><geo:lat>45.617351</geo:lat><geo:long>5.158199</geo:long><creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license><image><link>http://creativecommons.org/licenses/by-sa/3.0/</link><url>http://creativecommons.org/images/public/somerights20.gif</url><title>Some Rights Reserved</title></image><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/Metal3dorg" type="application/rss+xml" /><item><title>Copix Web Admin Design</title><link>http://feeds.feedburner.com/~r/Metal3dorg/~3/459625428/Copix-Web-Admin-Design</link><pubDate>Thu, 20 Nov 2008 08:40:52 -0600</pubDate><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[

<p>
Je n'ai pas trop eut le temps de me remettre à Copix, mon nouvel emploi me demande de travailler sur EZPublish et Drupal, et j'ai des soirée plutôt courtes... Cela n'empêche pas que j'ai entrepris un petit travail de réalisation basé sur <a href="http://mochaui.com/" title="MochaUI" class="wiki_exists">MochaUI</a> (en mootools) afin de voir ce que je peux faire pour l'administration de <a href="http:::www.copix.org" title="Copix" class="wiki_exists">Copix</a>.
</p>

<p>
Le résultat temporaire est le suivant:<br /><span style="display: inline"><img name="wiki_image" src="http://www.metal3d.org/captures/copix_ui.png" width="550" alt="copix_ui" /><span style="height:15px;margin-left: -15px;"><a href="http://www.metal3d.org/captures/copix_ui.png" target="_blank" title="Voir l'image en taille réelle"><img src="http://www.metal3d.org/themes/default/img/tools/loupe.png" alt="download"/></a></span></span><br />Cliquez sur la loupe ne bas à droite pour agrandir l'image...<br />Ce n'est clairement pas terminé, mais je pense pouvoir me débrouiller... <a href="http://mochaui.com/" title="MochaUI" class="wiki_exists">MochaUI</a> est franchement une usine RIA d'une puissance exemplaire et je suis encore étonné du resultat.
</p>

<p>
Bref, à ceux que ça intéresse, le thème "admin" sera dispo ici ou sur le svn de copix d'ici quelques temps... en attendant j'ai du travail moi :)
</p>

<p><a href="http://feeds.feedburner.com/~a/Metal3dorg?a=g53eP4"><img src="http://feeds.feedburner.com/~a/Metal3dorg?i=g53eP4" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/Metal3dorg?a=lbX4N"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=lbX4N" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=xBD6n"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=xBD6n" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=d8e2N"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=d8e2N" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=6ppTn"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=6ppTn" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=3GCtN"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=3GCtN" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Metal3dorg/~4/459625428" height="1" width="1"/>]]></content:encoded><description>&lt;p&gt;
Je n'ai pas trop eut le temps de me remettre à Copix, mon nouvel emploi me demande de travailler sur EZPublish et Drupal, et j'ai des soirée plutôt courtes... Cela n'empêche pas que j'ai entrepris un petit travail de réalisation basé sur ...&lt;/a&gt;
 ...&lt;/p&gt;</description><feedburner:origLink>http://www.metal3d.org/index.php/blog/ticket/2008/11/20/Copix-Web-Admin-Design?heading=Informatique</feedburner:origLink></item><item><title>PNG semi transparent sous IE 6</title><link>http://feeds.feedburner.com/~r/Metal3dorg/~3/452993425/PNG-semi-transparent-sous-IE-6</link><pubDate>Fri, 14 Nov 2008 08:38:02 -0600</pubDate><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[

<p>
Quel monteur HTML n'a jamais eut cette problématique ? devoir intégrer un div ayant un background transparent qui fonctionne sous IE 5.5 minimum ! Heureusement, une solution existe, et elle fonctionne quasi parfaitement. Elle n'utilise pas le pngfix qui bave bien trop souvent, et sons paramétrage est simple comme bonjour.
</p>

<p>
Il suffit d'aller sur la page <a href="http://www.twinhelix.com/css/iepngfix/" title="http://www.twinhelix.com/css/iepngfix/" class="wiki_exists">http://www.twinhelix.com/css/iepngfix/</a> où deux version existent. Pour la peine, j'utilise la version beta 2.0 qui se trouve ici: <a href="http://www.twinhelix.com/test/iepngfix.zip" title="http://www.twinhelix.com/test/iepngfix.zip" class="wiki_exists">http://www.twinhelix.com/test/iepngfix.zip</a>. Il suffit de dézipper le contenu et de placer <code>iepngfix.htc</code> et <code>blank.gif</code> dans un répertoire attitré. Pour vous simplifier la vie, mettez les deux fichiers au même endroit.
</p>

<p>
Reste à ajouter une seule et unique ligne dans votre CSS, par exemple pour que le fix gère les images (png) et les div (ayant un background png semi transparent):
</p>

<div class="wiki_code"><div class="css" style="font-family: monospace;"><br />
img, div <span style="color: #66cc66;">&#123;</span> behavior: <span style="color: #993333;">url</span><span style="color: #66cc66;">&#40;</span>répertoire/où/se/trouve/iepngfix.htc<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#125;</span><br />
&nbsp;</div></div>

<p>
Et voilà ! C'est tout... Maintenant, imaginons une feuille de style qui utilise ce code:
</p>

<div class="wiki_code"><div class="css" style="font-family: monospace;"><br />
body <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">/*fond.jpg est une image normal*/</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">background-image</span>: <span style="color: #993333;">url</span><span style="color: #66cc66;">&#40;</span>images/fond.jpg<span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #66cc66;">&#125;</span><br />
<br />
div<span style="color: #6666ff;">.semitransp </span><span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">/*Cette classe utilise un png semi <br />
&nbsp; &nbsp; &nbsp; &nbsp; transparent en fond, il faut donc voir le fond.jpg<br />
&nbsp; &nbsp; &nbsp; &nbsp; par transparence... le fix va le gérer*/</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">background-image</span>: <span style="color: #993333;">url</span><span style="color: #66cc66;">&#40;</span>images/semtransp.png<span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #66cc66;">&#125;</span><br />
<br />
&nbsp;</div></div>

<p>
Par miracle, ça fonctionne. Et c'est très joli, à vous de l'utiliser pour vous faire (enfin!) des designs qui puissent utiliser des png sans vous poser la question "arrggg mais comment je vais gérer ça sous IE 6 ???"
</p>

<p><a href="http://feeds.feedburner.com/~a/Metal3dorg?a=22dFgw"><img src="http://feeds.feedburner.com/~a/Metal3dorg?i=22dFgw" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/Metal3dorg?a=JOoQN"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=JOoQN" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=ktF5n"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=ktF5n" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=PvUVN"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=PvUVN" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=PBXyn"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=PBXyn" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=zJGvN"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=zJGvN" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Metal3dorg/~4/452993425" height="1" width="1"/>]]></content:encoded><description>&lt;p&gt;
Quel monteur HTML n'a jamais eut cette problématique ? devoir intégrer un div ayant un background transparent qui fonctionne sous IE 5.5 minimum ! Heureusement, une solution existe, et elle fonctionne quasi parfaitement. Elle n'utilise pas le ...&lt;/p&gt;</description><feedburner:origLink>http://metal3d.org/index.php/blog/ticket/2008/11/14/PNG-semi-transparent-sous-IE-6?heading=Developpement</feedburner:origLink></item><item><title>fglrx et compiz ecran blanc</title><link>http://feeds.feedburner.com/~r/Metal3dorg/~3/450574784/fglrx-et-compiz-ecran-blanc</link><pubDate>Wed, 12 Nov 2008 04:34:05 -0600</pubDate><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[

<p>
Alors que j'installe une Fedora 9 sur mon poste qui a une ATI (chose nouvelle pour moi), je me suis tenté à utiliser les modules "radeonhd" et "fglrx', ce dernier étant la version propriétaire qu'on me conseille d'utiliser. Bref, je veux installer compiz mais au démarrage des effets je me retrouve avec un écran blanc.
</p>

<p>
Pire, la commande <code>fglrxinfo</code> me renvoi constamment:
</p>

<div class="wiki_code"><div style="font-family: monospace;"><br />
X Error of failed request<br />
etc...<br />
&nbsp;</div></div>

<p>
J'ai donc trouvé ce qui coinçait! en fait, ce souci n'apparaît que sur les version 64 bits, à priori le paquet est un peu mal fichu. La correction se fait en 3 commandes:
</p>

<div class="wiki_code"><div style="font-family: monospace;"><br />
su -<br />
mkdir&nbsp; /usr/lib/dri/<br />
ln -s /usr/lib64/dri/fglrx_dri.so&nbsp; /usr/lib/dri/fglrx_dri.so<br />
&nbsp;</div></div>

<p>
Et oui, en fait Xorg tente de se linker dans le répertoire standard /usr/lib et non /usr/lib64. Après cette manipulation, il suffit de rebooter ou simplement fermer et relancer X (CTRL+ALT+BACKSPACE suffit)
</p>

<p>
Après avoir lancé compiz (paquet fusion-icon + fusion-icon-gtk), tout se passe très bien. J'ai prévenu la communauté Fedora, et je pense mailer rapidement le packageur.
</p>

<p><a href="http://feeds.feedburner.com/~a/Metal3dorg?a=dnWV6i"><img src="http://feeds.feedburner.com/~a/Metal3dorg?i=dnWV6i" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/Metal3dorg?a=POmKN"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=POmKN" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=JamYn"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=JamYn" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=0ItlN"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=0ItlN" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=1nlfn"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=1nlfn" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=7AWTN"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=7AWTN" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Metal3dorg/~4/450574784" height="1" width="1"/>]]></content:encoded><description>&lt;p&gt;
Alors que j'installe une Fedora 9 sur mon poste qui a une ATI (chose nouvelle pour moi), je me suis tenté à utiliser les modules "radeonhd" et "fglrx', ce dernier étant la version propriétaire qu'on me conseille d'utiliser. Bref, je veux ...&lt;/p&gt;</description><feedburner:origLink>http://metal3d.org/index.php/blog/ticket/2008/11/12/fglrx-et-compiz-ecran-blanc?heading=Informatique</feedburner:origLink></item><item><title>Une Astuce PHP</title><link>http://feeds.feedburner.com/~r/Metal3dorg/~3/448404398/Une-Astuce-PHP</link><pubDate>Mon, 10 Nov 2008 07:28:09 -0600</pubDate><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[

<p>
Un truc que je ne savais pas et que je viens d'apprendre en utilisant <a href="http://drupal.org/" title="Drupal" class="wiki_exists">Drupal</a>, si nous utilisons l'ouverture "longue" de balise PHP (long tag), il n'est pas nécessaire de fermer cette balise.
</p>

<p>
Cela peut être très utile, notamment pour les retour chariot oublié en bas de fichier, avec cette astuce vous n'aurez plus ce genre d'erreur.
</p>

<p>
Exemple de classe qui peut générer une erreur:
</p>

<div class="wiki_code"><div class="php" style="font-family: monospace;"><br />
<span style="color: #000000; font-weight: bold;"><?php</span><br />
<span style="color: #000000; font-weight: bold;">class</span> Foo <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp;public <span style="color: #000000; font-weight: bold;">function</span> bar<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; <a href="http://www.php.net/echo"><span style="color: #000066;">echo</span></a> <span style="color: #ff0000;">"Hello"</span>;<br />
&nbsp; &nbsp;<span style="color: #66cc66;">&#125;</span><br />
<span style="color: #66cc66;">&#125;</span><br />
<br />
<span style="color: #000000; font-weight: bold;">?></span><br />
<br />
&nbsp;</div></div>

<p>
Ici, nous avons oublié de supprimer la dernière ligne se trouvant après <code>?></code>, ce qui provoquera dans bien des cas une erreur du genre "header already send".
</p>

<p>
Voici comment vous pouvez écrire la classe sans générer d'erreur:
</p>

<div class="wiki_code"><div class="php" style="font-family: monospace;"><br />
<span style="color: #000000; font-weight: bold;"><?php</span><br />
<span style="color: #000000; font-weight: bold;">class</span> Foo <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp;public <span style="color: #000000; font-weight: bold;">function</span> bar<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; <a href="http://www.php.net/echo"><span style="color: #000066;">echo</span></a> <span style="color: #ff0000;">"Hello"</span>;<br />
&nbsp; &nbsp;<span style="color: #66cc66;">&#125;</span><br />
<span style="color: #66cc66;">&#125;</span><br />
<br />
<br />
&nbsp;</div></div>

<p>
Ici, plus de problème, toutes les lignes sont considérées comme étant du PHP. C'est un truc que je ne connaissais pas et je pense en parler à la <a href="http://www.copix.org" title="CopixTeam" class="wiki_exists">CopixTeam</a>.
</p>

<p><a href="http://feeds.feedburner.com/~a/Metal3dorg?a=tN1b6U"><img src="http://feeds.feedburner.com/~a/Metal3dorg?i=tN1b6U" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/Metal3dorg?a=IkirN"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=IkirN" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=9hCzn"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=9hCzn" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=w32TN"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=w32TN" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=IMujn"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=IMujn" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=O7u4N"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=O7u4N" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Metal3dorg/~4/448404398" height="1" width="1"/>]]></content:encoded><description>&lt;p&gt;
Un truc que je ne savais pas et que je viens d'apprendre en utilisant &lt;a href="http://drupal.org/" title="Drupal" class="wiki_exists"&gt;Drupal&lt;/a&gt;, si nous utilisons l'ouverture "longue" de balise PHP (long tag), il n'est pas nécessaire de fermer cette balise.
&lt;/p&gt;

&lt;p&gt;
Cela peut être très utile, notamment pour les ...&lt;/p&gt;</description><feedburner:origLink>http://metal3d.org/index.php/blog/ticket/2008/11/10/Une-Astuce-PHP?heading=Developpement</feedburner:origLink></item><item><title>Erreurs avec Eclipse et PDT</title><link>http://feeds.feedburner.com/~r/Metal3dorg/~3/448292336/Erreurs-avec-Eclipse-et-PDT</link><pubDate>Mon, 10 Nov 2008 04:47:10 -0600</pubDate><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[

<p>
Fraichement installé, ma fedora au travail fonctionne à merveille. Vient le moment où j'installe Eclipse et après un premier lancement je m'attèle à installer <a href="http://www.zend.com/en/community/pdt" title="PDT" class="wiki_exists">PDT</a>. Au lieu de prendre le "all-in-one-package" qui ne fonctionne que sur 32bits (et que mon poste est en 64bits), je préfère utiliser le Eclipse de ma Fedora, et installer PDT via le système interne de mise à jour.
</p>

<p>
Tout se passe bien, un mise à jour de WST, et je relance mon eclipse. J'ouvre mon projet PHP... puis un script, je clique dans l'éditeur pour avoir le focus et là !!! 
</p>

<div class="wiki_code"><div style="font-family: monospace;"><br />
An error has occurred. See error log for more details.<br />
org.eclipse.emf.ecore.util.EcoreEMap$DelegateEObjectContainmentEList<br />
&nbsp;</div></div>

<p>
Rien de bien grave puisque j'arrive à bosser tout de même... mais je regarde à tout hasard dans les logs générés, et je trouve la solution:
</p>

<div class="wiki_code"><div style="font-family: monospace;"><br />
java.lang.NoClassDefFoundError: org.eclipse.emf.ecore.util.EcoreEMap$DelegateEObjectContainmentEList<br />
&nbsp; &nbsp;at java.lang.Class.initializeClass(libgcj.so.9)<br />
&nbsp;</div></div>

<p>
Le plus important ici, c'est que par défaut nous utilisons <code>libgcj</code> au lieu d'un JDK... A priori, PDT a besoin d'un JRE ou JDK complet, la solution simple pour résoudre le soucis est donc de faire:
</p>

<div class="wiki_code"><div style="font-family: monospace;"><br />
su -lc "yum install java-1.6.0-openjdk"<br />
&nbsp;</div></div>

<p>
puis de relancer eclipse. Les soucis disparaîtront, et mieux encore, Eclipse sera un chouillat plus rapide. 
</p>

<p>
Ce n'est pas une erreur de packaging, contrairement à ce que l'on peut penser. Le choix a été fait d'utiliser gcc-gcj pour des raisons de performances et de place. Si un jour un paquet RPM pour PDT voit le jour, les dépendances seront certainement modifiée.
</p>

<p>
Voilà voilà, à vous de jouer.
</p>

<p><a href="http://feeds.feedburner.com/~a/Metal3dorg?a=BQO2c5"><img src="http://feeds.feedburner.com/~a/Metal3dorg?i=BQO2c5" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/Metal3dorg?a=a8QXN"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=a8QXN" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=32G6n"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=32G6n" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=EUnaN"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=EUnaN" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=xK12n"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=xK12n" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=YDrHN"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=YDrHN" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Metal3dorg/~4/448292336" height="1" width="1"/>]]></content:encoded><description>&lt;p&gt;
Fraichement installé, ma fedora au travail fonctionne à merveille. Vient le moment où j'installe Eclipse et après un premier lancement je m'attèle à installer &lt;a href="http://www.zend.com/en/community/pdt" title="PDT" class="wiki_exists"&gt;PDT&lt;/a&gt;. Au lieu de prendre le "all-in-one-package" qui ne fonctionne que sur 32bits ...&lt;/p&gt;</description><feedburner:origLink>http://metal3d.org/index.php/blog/ticket/2008/11/10/Erreurs-avec-Eclipse-et-PDT?heading=Developpement</feedburner:origLink></item><item><title>Ubuntu en image</title><link>http://feeds.feedburner.com/~r/Metal3dorg/~3/438311867/Ubuntu-en-image</link><pubDate>Fri, 31 Oct 2008 12:42:32 -0500</pubDate><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[

<p>
Allez pour vous montrer à quel point Ubuntu est foireux, regardez donc ces 3 images qui vont suivre. Cette série de photo est une retranscription de ce que je vis 3 fois par jour minimum.
</p>

<p>
En premier, je bosse tranquilement et hop:
</p>

<p>
<span style="display: inline"><img name="wiki_image" src="http://www.metal3d.org/captures/ubuntu1.jpg" alt="ubuntu1" /></span> 
</p>

<p>
Joli, après les écrans bleus de windows, les écran verts de Ubuntu. Bon, CTRL+ALT+BACKSPACE pour revenir sur Xorg... Et hop écran noir... 
</p>

<p>
Ha, bien il passe au noir... bon alors je fais CTRL+ALT+F1... 
<span style="display: inline"><img name="wiki_image" src="http://www.metal3d.org/captures/ubuntu2.jpg" alt="ubuntu2" /></span>
</p>

<p>
Je me connecte donc avec mon compte et hop !
<span style="display: inline"><img name="wiki_image" src="http://www.metal3d.org/captures/ubuntu3.jpg" alt="ubuntu3" /></span>
</p>

<p>
Ha... sympa... bon on teste des trucs:
</p>

<div class="wiki_code"><div style="font-family: monospace;"><br />
sudo /etc/init.d/gdm restart<br />
#sans succès...<br />
sudo init 3<br />
sudo init 5<br />
#rien... pas d'affichage... pourtant je fais CTRL+ALT+F7/F8 mais un écran noir...<br />
&nbsp;</div></div>

<p>
Rien dans les log X, rien dans les messages du noyau, rien... rien qui me disent ce qu'il se passe.
</p>

<p>
Reste plus qu'à rebooter... 
</p>

<p>
Sympathique cette distribution... 
</p>

<p><a href="http://feeds.feedburner.com/~a/Metal3dorg?a=McBWDM"><img src="http://feeds.feedburner.com/~a/Metal3dorg?i=McBWDM" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/Metal3dorg?a=ZfdQM"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=ZfdQM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=qywym"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=qywym" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=pmFSM"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=pmFSM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=rmYgm"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=rmYgm" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=8eVfM"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=8eVfM" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Metal3dorg/~4/438311867" height="1" width="1"/>]]></content:encoded><description>&lt;p&gt;
Allez pour vous montrer à quel point Ubuntu est foireux, regardez donc ces 3 images qui vont suivre. Cette série de photo est une retranscription de ce que je vis 3 fois par jour minimum.
&lt;/p&gt;

&lt;p&gt;
En premier, je bosse tranquilement et hop:
&lt;/p&gt;

&lt;p&gt;
&lt;span style="display: inline"&gt;&lt;img name="wiki_image" src="http://www.metal3d.org/captures/ubuntu1.jpg" alt="ubuntu1" /&gt;&lt;/span&gt; ...&lt;/p&gt;</description><feedburner:origLink>http://www.metal3d.org/index.php/blog/ticket/2008/10/31/Ubuntu-en-image?heading=Informatique</feedburner:origLink></item><item><title>Ubuntu fr de pire en pire</title><link>http://feeds.feedburner.com/~r/Metal3dorg/~3/436329405/Ubuntu-fr-de-pire-en-pire</link><pubDate>Wed, 29 Oct 2008 17:28:57 -0500</pubDate><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[

<p>
C'est officiel, on m'a définitivement banni du canal #ubuntu-fr. La raison ? simple comme bonjour. Un opérateur du canal <strong>a cherché mon pseudo sur google</strong> et il est tombé sur mon blog. Voyant ces deux tickets:
<a href="http://www.metal3d.org/index.php/blog/ticket/2008/10/28/Canal-Ubuntu--fr-de-plus-en-plus-idiots" title="http://www.metal3d.org/index.php/blog/ticket/2008/10/28/Canal-Ubuntu--fr-de-plus-en-plus-idiots" class="wiki_exists">http://www.metal3d.org/index.php/blog/ticket/2008/10/28/Canal-Ubuntu--fr-de-plus-en-plus-idiots</a> et <a href="http://www.metal3d.org/index.php/blog/ticket/2008/10/14/Critique-du-canal-IRC-ubuntu-fr" title="http://www.metal3d.org/index.php/blog/ticket/2008/10/14/Critique-du-canal-IRC-ubuntu-fr" class="wiki_exists">http://www.metal3d.org/index.php/blog/ticket/2008/10/14/Critique-du-canal-IRC-ubuntu-fr</a> ce dernier m'a banni avec la raison "crache ton venin sur ton blog"
</p>

<p>
Comportement d'abus de pouvoir, magnifique façon de parlementer. Un utilisateur adorateur de ce canal vient donc m'insulter en privé... cela dure 1h40... je peux ensuite parler à l'opérateur qui m'a banni. Ce dernier m'invite sur #ubuntu-fr-geeks qui n'a de "geek" que le nom. Là bas, deux opérateurs commencent leur sermon absolument pas "modérés" m'affligeant d'insulter gravement la communauté Ubuntu. Me donnant une importance grave sur un blog qui ne fait (ici) qu'une centaine de visite par jour, je me vois donc accusé d'un outrage impardonnable!
</p>

<p>
Incroyable mais vrai, alors que la discussion arrivait à se calmer, un troisième arrive et balance "mais il sert à rien lui" (en parlant évidemment de moi). 
</p>

<p>
Je vous résume quand même la situation, je suis banni pour avoir discréditer le canal #ubuntu-fr, ou plutôt la manière dont on prend des gens pour plus crétins qu'ils ne sont. Toute personne ayant au moins cherché le sens de la critique comprendra que je parle des "répondants" qui n'ont de cesse que de prendre certains utilisateurs pour des crétins... Je n'ai:
</p>
<ul>
<li> pas donné l'adresse de mon blog sur le canal</li>
<li> pas insulté une personne sur le canal</li>
<li> pas foodé</li>
<li> fait que répondre à un utilisateur en privé sans avoir concerter le canal</li>
</ul>


<p>
Le ticket a été donc recherché par l'opérateur en question, <strong>la diffamation n'a eut lieu que sur ce blog</strong>.
</p>

<p>
Donc, cela implique que si un utilisateur parle en mal de windows, alors Microsoft peut lui annuler son droit d'entrée sur un site ? ou alors que si jamais vous critiquez un tableau d'un maître d'art vous n'aurez plus le droit de venir en parler dans ses vernissages ? 
</p>

<p>
Voilà, en me banissant définitivement (mais pas tant que ça car j'ai plusieurs méthodes pour y retourner si je voulais bien, mais là honnêtement j'ai pas trop envie à moi d'y aller pour balancer mes tickets en flood pour avoir une vraie bonne raison d'être banni) ils n'ont fait que conforter mes propos. 
</p>

<p>
Ce canal est bourré de gens très biens, de débutants qui apprennent et comprennent Linux grâce à Ubuntu et aux réponses de pas mal de membres, mais ce canal est pourri par trop de personne moralement épris d'une vanité sans nom. Ces même personnes qui ne savent pas "répondre" sauf en plaçant un "+m" sur un canal et/ou en kickant/bannissant pour "punir" comme des gamins ceux qui n'entrent pas dans le moule.
</p>

<p>
Je tire un coup de chapeau à ces gens, qui auraient simplement put répondre sur mon blog, comme je ne supprime pas les messages (même agressifs) des participants. Sachez que j'ai décidé de viré mes installation Ubuntu et que je vais faire le tour des blog à plus fort traffic pour expliquer un peu le comportement des opérateurs de #ubuntu-fr contre une "grande gueule" comme moi. 
</p>

<p>
Sachez en dernier lieu que je suis très content de leur réaction, je ne suis pas attaché à ces personnes et ce ban n'est finalement qu'un bonne excuse pour continuer mon "combat" contre cette distribution bancale gérée par des trop de vaniteux personnages en mal de reconnaissance et de pouvoir.
</p>

<p>
Désolé pour la communauté qui aurait put croire que je parlais d'elle dans mes tickets, je ne vous attaquais pas, vous, humbles utilisateurs, mais seulement les 80 personnes sur 200 que j'ai vu coller parfaitement à mes accusations.
</p>

<p>
Si vous avez dit du mal de ubuntu sur un blog, changez de pseudonyme avant d'aller sur leur canal.
</p>

<p>
Amis du troll, venez commenter ce biller, si je reconnais un admin de #ubuntu-fr sur les commentaires, je supprimerai celui-ci censurant de la même manière leur propos ici que les miens là bas.
</p>

<p><a href="http://feeds.feedburner.com/~a/Metal3dorg?a=frQ24C"><img src="http://feeds.feedburner.com/~a/Metal3dorg?i=frQ24C" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/Metal3dorg?a=ju7ZM"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=ju7ZM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=Tmgkm"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=Tmgkm" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=DekiM"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=DekiM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=FPvFm"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=FPvFm" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=HYNNM"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=HYNNM" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Metal3dorg/~4/436329405" height="1" width="1"/>]]></content:encoded><description>&lt;p&gt;
C'est officiel, on m'a définitivement banni du canal #ubuntu-fr. La raison ? simple comme bonjour. Un opérateur du canal &lt;strong&gt;a cherché mon pseudo sur google&lt;/strong&gt; et il est tombé sur mon blog. Voyant ces deux ...&lt;/a&gt;
 ...&lt;/p&gt;</description><feedburner:origLink>http://www.metal3d.org/index.php/blog/ticket/2008/10/29/Ubuntu-fr-de-pire-en-pire?heading=Informatique</feedburner:origLink></item><item><title>Comparaison Windows vs Linux</title><link>http://feeds.feedburner.com/~r/Metal3dorg/~3/435919638/Comparaison-Windows-vs-Linux</link><pubDate>Wed, 29 Oct 2008 09:45:47 -0500</pubDate><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[

<p>
Je viens de tomber par hasard sur un ticket du blog FramaBlog, lui même inspiré d'un ticket venant d'un autre blog
Les deux billets vous montrent une théorie que je peux appuyer par ma propre expérience relatant la complexité et le coût d'une opération selon le système d'exploitation que vous utilisez:
<span style="display: inline"><img name="wiki_image" src="http://www.framablog.org/public/divers/difficulty-divide.png" alt="difficulty-divide" /></span>
</p>

<p>
Selon cette théorie, <em>plus une opération à réaliser est complexe, plus le «coût» est important</em>. Mais la variation de la courbe de coût tend à monter très rapidement sous Windows alors qu'elle est n'évolue quasiment plus sous Linux.
</p>

<p>
Le coût n'est pas forcément pécunier, mais nous pouvons parler de temps, de ressources, de mémoire... bref cette courbe fonctionne pour la plupart des comparaison "coût/complexité".
</p>

<p>
Bref, en d'autres termes, Linux est un peu plus <em>coûteux</em> (encore une fois on ne parle pas forcément d'argent) pour des opération simples, mais devient rentable à partir du moment où vous voulez aller un peu plus loin avec votre configuration.
</p>

<p>
Je vous laisse tout de même aller voir l'explication complète sur le blog de framablog pour la version française:  <a href="http://www.framablog.org/index.php/post/2008/06/07/windows-vs-linux-comparaison" title="Comparaison graphique entre Windows et Linux" class="wiki_exists">Comparaison graphique entre Windows et Linux</a> ou sur le blog de l'auteur original pour la version anglaise: <a href="http://www.workswithu.com/2008/05/26/the-difficulty-divide/" title="Windows vs. Linux: Understanding the Difficulty Divide" class="wiki_exists">Windows vs. Linux: Understanding the Difficulty Divide</a>
</p>

<p><a href="http://feeds.feedburner.com/~a/Metal3dorg?a=l1tsh6"><img src="http://feeds.feedburner.com/~a/Metal3dorg?i=l1tsh6" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/Metal3dorg?a=RWa8M"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=RWa8M" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=yE1tm"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=yE1tm" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=O5n4M"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=O5n4M" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=iTXcm"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=iTXcm" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=2qEwM"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=2qEwM" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Metal3dorg/~4/435919638" height="1" width="1"/>]]></content:encoded><description>&lt;p&gt;
Je viens de tomber par hasard sur un ticket du blog FramaBlog, lui même inspiré d'un ticket venant d'un autre blog
Les deux billets vous montrent une théorie que je peux appuyer par ma propre expérience relatant la complexité et le coût d'une ...&lt;/p&gt;</description><feedburner:origLink>http://www.metal3d.org/index.php/blog/ticket/2008/10/29/Comparaison-Windows-vs-Linux?heading=Informatique</feedburner:origLink></item><item><title>Canal Ubuntu-fr de plus en plus idiots</title><link>http://feeds.feedburner.com/~r/Metal3dorg/~3/434783591/Canal-Ubuntu--fr-de-plus-en-plus-idiots</link><pubDate>Tue, 28 Oct 2008 09:47:20 -0500</pubDate><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[

<p>
Alors dans la série "je persiste et signe", après <a href="http://www.metal3d.org/index.php/blog/ticket/2008/10/14/Critique-du-canal-IRC-ubuntu-fr" title="ce billet que j'ai rédigé" class="wiki_exists">ce billet que j'ai rédigé</a>, je me retrouve sur le canal IRC #ubuntu-fr "par erreur"... en fait, xchat sur Ubuntu vous connecte sur le canal. Toujours par hasard, je vois un certain "tiky" s'exprimer sur le fait que xchat est payant sur windows et il trouve ça "injuste". Il donne son avis, et après quelques minutes:
</p>

<div class="wiki_code"><div style="font-family: monospace;"><br />
* uBOTu-fr met un ban sur *!*@AAubervilliers-154-1-24-101.w90-3.abo.wanadoo.fr<br />
* uBOTu-fr a expulsé tiky de #ubuntu-fr (#ubuntu-fr == support /j #ubuntu-fr-offtopic -- 5 minutes - [NikO])<br />
&nbsp;</div></div>

<p>
Traduisez: expulsé 5 minutes... bravo
</p>

<p>
Je prends sa défence, expliquant qu'il a le droit de s'exprimer... et hop:
</p>

<div class="wiki_code"><div style="font-family: monospace;"><br />
* Vous avez été expulsé de #ubuntu-fr par uBOTu-fr (#ubuntu-fr == support /j #ubuntu-fr-offtopic -- 5 minutes - [NikO])<br />
-uBOTu-fr- you are now banned during 299 on #ubuntu-fr : #ubuntu-fr == support /j #ubuntu-fr-offtopic -- 5 minutes - [NikO]<br />
&nbsp;</div></div>

<p>
Bravo à cette bande de zouaves persuadés de bien faire... On apprécie encore une fois leur idée de la "liberté" en terme d'expression cette fois.
</p>

<p><a href="http://feeds.feedburner.com/~a/Metal3dorg?a=BgLRZe"><img src="http://feeds.feedburner.com/~a/Metal3dorg?i=BgLRZe" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/Metal3dorg?a=dI0uM"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=dI0uM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=k2GDm"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=k2GDm" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=xytnM"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=xytnM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=nBvGm"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=nBvGm" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=gqOiM"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=gqOiM" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Metal3dorg/~4/434783591" height="1" width="1"/>]]></content:encoded><description>&lt;p&gt;
Alors dans la série "je persiste et signe", après &lt;a href="http://www.metal3d.org/index.php/blog/ticket/2008/10/14/Critique-du-canal-IRC-ubuntu-fr" title="ce billet que j'ai rédigé" class="wiki_exists"&gt;ce billet que j'ai rédigé&lt;/a&gt;, je me retrouve sur le canal IRC #ubuntu-fr "par erreur"... en fait, xchat sur Ubuntu vous connecte sur le canal. Toujours par hasard, je vois un certain "tiky" ...&lt;/p&gt;</description><feedburner:origLink>http://www.metal3d.org/index.php/blog/ticket/2008/10/28/Canal-Ubuntu--fr-de-plus-en-plus-idiots?heading=Autre</feedburner:origLink></item><item><title>OpenOffice en mode serveur</title><link>http://feeds.feedburner.com/~r/Metal3dorg/~3/431144318/OpenOffice-en-mode-serveur</link><pubDate>Fri, 24 Oct 2008 03:35:22 -0500</pubDate><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[

<p>
Il est parfois compliqué de créer des documents dignes de ce nom en PDF à partir de templates... Soit on tente d'utiliser des librairies telles que FPDF, HTPM2PDF pas forcément très classes, soit on cherche à monter une solution plus qualitative. Il existe des solution propriétaires très bien faites (dans le genre de Adobe...) mais dans un monde où le libre prend le dessus, nous pouvons monter des solutions très professionnelles.
</p>

<p>
Voici donc une solution que j'utilise en production. Elle utilise OpenOffice (v 3) en mode serveur et un script Python pour lancer la génération de document. Bien que le fonctionnement reste relativement simple, l'installation sur un serveur de production est très tortueuse. En effet, un serveur de production ne peut pas se permettre de laisser tourner un serveur X (Xorg, serveur d'affichage) pour des raison de sécurité et de fiabilité. Seulement voilà... OpenOffice a une facheuse <strong>fenêtre de premier démarrage</strong> que nous ne pouvons pas "zapper". De plus, OpenOffice est avant tout un système graphique et demande donc la possibilité d'utiliser des polices, des rendus, bref il lui faut un serveur X ou quelque chose qui y ressemble.
</p>

<p>
Même si le second point n'est pas bloquant, le premier l'est ! Heureusement Linux (ou tout autre Unix, Unix/Like) est bourré de configuration qui permettent de faire énormément de manipulations pour s'en sortir. Notemment, nous allons nous régler nos soucis grâce à:
</p>
<ul>
<li> ssh avec forward X11 pour initialiser OpenOffice pour une première utilisation</li>
<li> utiliser Xvfb pour laisser tourner le serveur dans un X virtuel (X = serveur d'affichage)</li>
</ul>


<p>
Le revers de la médaille, c'est qu'il va falloir passer quelques minutes les mains dans le cambouis afin de rendre la plateforme fonctionnelle.
</p>

<a name="Tr--s-important"></a><h3>Très important</h3>

<p>
Dans ce billet, je vous demande de vous connecter en SSH et de quitter les sessions pour vous reconnecter... Il est très important que vous fassiez cela et ne pas utiliser la commande "su - utilisateur". En fait, ce que je vous présente ici demande une véritable "reconnexion" à SSH dans la plupart des cas, notamment en ce qui concerne le Forward X11 SSH. Si vous tentez de faire "su - office" je vous assure que l'export d'affichage ne va pas macher. Il faut réellement se connecter en SSH avec cet utilisateur directement.
</p>

<p>
Voilà qui est dit.
</p>

<a name="Pr--sentation"></a><h3>Présentation</h3>

<p>
Je vais donc vous montrer comment procéder sur une CentOS 5.2 pour installer et configurer un Xvfb + OpenOffice 3 et lancer un serveur OpenOffice. Je vous présenterai aussi un exemple de code Python qui pourra créer des fichier PDF depuis un fichier .odt, .doc, .html... bref, faire ce que sait faire openoffice mais cette fois ci depuis une ligne de commande.
</p>

<p>
Assurez vous que vous pouvez être root sur votre serveur, que vous avez assez d'espace disque (minimum 200Mo). J'estimerai dés à présent que vous avez déjà travaillé sur un serveur Linux, car les commandes peuvent parfois paraitre ésotériques.
</p>

<p>
Enfin, si vous êtes sur une Debian ou Ubuntu, ou tout autre distribution, je vous remercie de me donner la liste des paquets que je mettrai à jour dans ce ticket.
</p>

<p>
Prêt ? FEU !
</p>

<a name="Pr--requis"></a><h4>Prérequis</h4>

<p>
Il y a quelques prérequis à satisfaire, notemment avoir Java, Xvfb, xauth et quelques polices prêtes à l'emploi. On commence par se rendre sur notre serveur distant et on installe les paquets nécéssaires:
</p>

<div class="wiki_code"><div style="font-family: monospace;"><br />
$ ssh root@server<br />
$ yum install java xorg-x11-server-Xvfb xauth xorg-x11-fonts-75dpi xorg-x11-font-utils xorg-x11-fonts-base.noarch liberation-fonts<br />
<br />
&nbsp;</div></div>

<p>
[edit pour Debian et Ubuntu]<br />Pour Debian et Ubuntu, ces paquets semblent être les plus appropriés, à tester
</p>

<div class="wiki_code"><div style="font-family: monospace;"><br />
su - <br />
#ou pour ubuntu<br />
sudo -s<br />
apt-get install xfonts-75dpi xfs ttf-liberation xvfb openjdk-6-jdk openjdk-6-jre <br />
<br />
#sur debian, c'est plus corsé... il faut installer:<br />
#d'abord Java, téléhargez le puis:<br />
$ chmod 755 jre-6u10-linux-i586.bin<br />
$ ./jre-6u10-linux-i586.bin<br />
$ mv /jre1.6.0_10 /opt/java<br />
$ apt-get install libxext6 libsm6&nbsp; xbase-clients xfonts-base xfonts-75dpi xfs xvfb<br />
<br />
#dans tous les cas, relancez xfs (X Front Server)<br />
$ /etc/init.d/xfs restart<br />
&nbsp;</div></div>

<p>
Voilà, on passe à OpenOffice...
</p>

<a name="OpenOffice"></a><h4>OpenOffice</h4>

<p>
Je suis allé sur le site de OpenOffice pour prendre l'adresse que je donne à manger à "wget", si une version supérieure à la 3.0.0 existe, vous pouvez remplacer le lien dans les lignes qui suivent par la version qui vous intéresse.
</p>

<p>
Sachez aussi que cela fonctionnera avec une version 2.X.
</p>

<p>
Donc, toujours sur le serveur distant en ssh connecté en "root":
</p>

<div class="wiki_code"><div style="font-family: monospace;"><br />
$ cd /tmp<br />
#Pour Fedora, Centos, RHEL...<br />
$ wget http://sunsite.rediris.es/mirror/openoffice.org/localized/fr/3.0.0/OOo_3.0.0_LinuxIntel_install_wJRE_fr.tar.gz<br />
$ tar zxvf OOo_3.0.0_LinuxIntel_install_fr_deb.tar.gz<br />
$ cd OOO300_m9_native_packed-1_fr.9358/RPMS/<br />
$ rpm -ivh ./*.rpm<br />
<br />
#si vous êtes sur une vraie debian, faites:<br />
$ export JAVA_HOME=/opt/java<br />
<br />
#Pour Debian ou ubuntu<br />
$ wget&nbsp; wget http://mirrors.evolva.ro/openoffice.org/localized/fr/3.0.0/OOo_3.0.0_LinuxIntel_install_fr_deb.tar.gz<br />
$ tar zxvf OOO300_m9_native_packed-1_fr.9358/DEBS/ooobasis3.0-core02_3.0.0-9_i386.deb<br />
$ cd&nbsp; OOO300_m9_native_packed-1_fr.9358/DEBS/<br />
$ dpkg -i ./*.deb<br />
&nbsp;</div></div>

<p>
Cela a pour effet d'installer OpenOffice à la mode "openoffice"... c'est à dire que les RPM (ou .deb pour Debian) sont génériques et installent tout dans /opt. Donc vous allez avoir des répertoire openoffice qui vont apparaitre dans /opt. Normal, ce répertoire est d'ailleurs le plus adéquat pour des installations de ce genre... tout est installé à part et c'est mieux selon moi.
</p>

<p>
Pour des raisons de sécurité, nous ne lancerons pas OpenOffice avec "root" mais un utilisateur plus restreint. Créons cet utilisateur que nous nommerons "office":
</p>

<div class="wiki_code"><div style="font-family: monospace;"><br />
adduser office<br />
passwd office<br />
#là on vous demande de taper 2 fois le mot de passe<br />
&nbsp;</div></div>

<p>
Très bien, il faut maintenant lancer OpenOffice avec cet utilisateur... sauf que si vous testez maintenant, vous allez vous rendre compte que ça ne marchera pas puisque nous n'avons pas de X qui tourne. 
</p>

<p>
Comme je vous l'ai dit, OpenOffice va vous demander de remplir un formulaire... et sans affichage ça va se compliquer.
</p>

<p>
Et Xvfb n'est pas encore la solution puisque qu'il est virtuel, cela ne nous avancera pas encore puisque l'affichage doit être **réel* pour le moment. La solution est d'utiliser le serveur X que vous avez chez vous...
</p>

<p>
Et oui, c'est possible! SSH, encore lui, permet de déporter l'affichage sur une autre machine, et comme vous êtes sous Linux, vous allez pouvoir permettre l'utilisation de votre X pour une session SSH. C'est magique :) 
</p>

<p>
Mais là il va falloir configurer deux ou trois choses... En premier lieu le serveur ssh distant.
</p>

<div class="wiki_code"><div style="font-family: monospace;"><br />
$ vi /etc/ssh/sshd_config<br />
# trouvez les lignes X11Forwarding et X11DisplayOffset, <br />
# enlevez les diéses devant si besoin et placez les <br />
# valeurs "yes" et 10 comme indiqué:<br />
X11Forwarding yes<br />
X11DisplayOffset 10<br />
<br />
# enfin, sauvez le fichier, relancez le service sshd...<br />
$ /etc/init.d/sshd reload<br />
<br />
# quittez votre session SSH<br />
exit<br />
&nbsp;</div></div>

<p>
Pour le serveur on est ok, on passe à votre machine, le client (qui va faire office de serveur X pour l'installation)
</p>

<a name="Pr--paration-sur-le-client"></a><h3>Préparation sur le client</h3>

<p>
Avant de nous reconnecter à notre serveur, il faut que votre poste client (le votre, chez vous) puisse récupérer les forward X, voici comment on procède:
</p>

<div class="wiki_code"><div style="font-family: monospace;"><br />
$ su -lc "gedit /etc/ssh/ssh_config"<br />
Host *<br />
&nbsp; &nbsp;ForwardAgent yes&nbsp; <br />
&nbsp; &nbsp;ForwardX11 no<br />
#on sauve, on quitte puis on autorise les connexions avec xhost<br />
xhost +<br />
&nbsp;</div></div>

<p>
Maintenant, on peut se connecter via SSH avec l'option "-X" qui demande un forward X11 depuis le serveur ssh distant
</p>

<p>
Etant donné que je veux configurer OpenOffice pour l'uitilisateur "office", je me connecte avec cet utilisateur:
</p>

<div class="wiki_code"><div style="font-family: monospace;"><br />
$ ssh -X office@server<br />
xmessage "Je teste mon serveur distant"<br />
&nbsp;</div></div>

<p>
Vous devriez voir un petit popup apparaitre chez vous avec écris "Je teste mon serveur distant" sur votre bureau. Pressez le bouton "Okay", c'est bon, le forward fonctionne. Alors lançons notre openoffice depuis le serveur:
</p>

<p>
Pour information, ce qu'il vient de se passer c'est que le programme xmessage fonctionnait bien sur le serveur distant, mais il a utiliser le serveur X de votre machine pour s'afficher. On dit merci à SSH et on continue:
</p>

<div class="wiki_code"><div style="font-family: monospace;"><br />
#pour Debian<br />
$ export JAVA_HOME=/opt/java<br />
<br />
#puis, pour tout le monde:<br />
$ /opt/openoffice.org3/program/soffice<br />
&nbsp;</div></div>

<p>
Cela va être un peu plus lent, ceci étant dut au temps que l'affichage arrive depuis le serveur distant jusque sur votre poste. 
</p>

<p>
Un assistant apparait, remplissez les champs, cliquez sur "Suivant" ou "Next". Lorsque vous avez fini, OpenOffice vous présente sa fenêtre principale. Vous pouvez quitter OpenOffice, c'est fini. 
</p>

<p>
Fermez votre session ssh en tapant <code>exit</code> dans le shell.
</p>

<a name="Revenir----une-configuration-plus-s--curis--e"></a><h3>Revenir à une configuration plus sécurisée</h3>

<p>
Il faut maintenant revenir à un mode sécurisé. On se reconnecte en root sur le serveur:
</p>

<div class="wiki_code"><div style="font-family: monospace;"><br />
$ ssh root@server<br />
$ vi /etc/ssh/sshd_config<br />
# recherchez la ligne X11Forwarding et remettez la valeur "no", <br />
# commentez aussi X11DisplayOffset 10 en y mettant un dièse en début de ligne:<br />
X11Forwarding no<br />
#X11DisplayOffset 10<br />
#Sauvez, fermez...<br />
<br />
$ /etc/init.d/sshd reload<br />
$ exit<br />
&nbsp;</div></div>

<p>
Voilà, maintenant que nous avons coupé notre forward X11, nous somme revenu à un mode normal.
</p>

<p>
Je vous rassure, on n'aura plus à le faire :) 
</p>

<p>
Nous avons donc terminé avec l'installation et l'initialisation de OpenOffice. On passe au service.
</p>

<a name="Testons-Xvfb-et-OpenOffice"></a><h3>Testons Xvfb et OpenOffice</h3>

<p>
Il faut maintenant que OpenOffice fonctionne dans un serveur d'affichage, mais Xorg n'étant pas la solution la plus viable pour un serveur de production, nous allons utiliser un serveur purement virtuel. Le projet Xorg nous propose donc un serveur Xvfb, ou X virtual frame buffer. Tout programme peut se lancer dans cet affichage, personne ne pourra voir le programme en question visuellement, mais il fonctionne comme si il était vraiment affiché. 
</p>

<p>
Rappelez vous que nous parlons de serveur d'affichage, et comme un service réseau nous pouvons avoir des ports. En fait, sous Linux et Unix en général, nous pouvons avoir plusieurs session X en route. Chaque affichage porte un numéro, c'est ce que nous appellons le port, auquel on se connecte pour afficher un programme. Par défaut, le port est ":0". Mais pour des raisons de sûreté (sait-on jamais si un jour je veux lancer Xorg...) je vais utiliser ":1".
</p>

<p>
On retourne sur le serveur et on lance un serveur Xvfb. On lui spécifie un port d'affichage (à ne pas confondre avec un port réseau), ici ':1'
</p>

<div class="wiki_code"><div style="font-family: monospace;"><br />
$ ssh root@server<br />
$ Xvfb :1 &<br />
&nbsp;</div></div>

<p>
Je met un '&' pour pouvoir reprendre contrôle de la ligne de commande, Xvfb est donc lancé en "tâche de fond", pour le fermer, il suffira te "tuer" le processus. 
</p>

<p>
Ne pas prendre compte de l'erreur: <br /><code>Starting Xvfb (Virtual X server)error opening security policy file /usr/lib/xserver/SecurityPolicy</code>
</p>

<p>
Je tenterai de trouver pourquoi nous avons cette erreur, mais cela ne gène pas vraiment le fonctionnement.
</p>

<p>
Reste à lancer OpenOffice.org sur le Xvfb
</p>

<a name="Lancement-du-serveur-OpenOffice"></a><h4>Lancement du serveur OpenOffice</h4>

<p>
Ouvrez une console à coté, connectez vous avec "office" en ssh sur le serveur. Nous allons déporter l'affichage dans ":1" grâce à l'export de variable DISPLAY. 
</p>

<div class="wiki_code"><div style="font-family: monospace;"><br />
$ ssh office@server<br />
#pour tout le monde<br />
$ export PATH=/opt/openoffice.org3/program:$PATH<br />
$ export DISPLAY=:1<br />
#Debian:<br />
$ export JAVA_HOME=/opt/java<br />
<br />
#pour tout le monde<br />
$ soffice.bin -headless -invisible '-accept=socket,host=localhost,port=8123;urp;' &<br />
&nbsp;</div></div>

<p>
La dernière commande est lancée en tâche de fond. Je vais vous présenter succinctement les options utilisées:
</p>
<ul>
<li> -headless coupe toute interaction utilisateur</li>
<li> -invisible, pas la peine de vous préciser ce que cela veut dire</li>
<li> -accept prend une série d'options<ul>
<li> d'abord socket,host=localhost,port8123 spécifie que nous ouvrons un socket sur "localhost" (boucle locale réseau, donc seuelement pour les connexion depuis ce serveur), port 8123.</li>
<li> urp: UNO request Protocol, on spécifie que le port attendra des paquets spécifiques à UNO (on y viendra après)</li></ul>
</li></ul>
</li>
</ul>


<p>
Vérifions donc que tout cela a fonctionné:
</p>

<div class="wiki_code"><div style="font-family: monospace;"><br />
$ ps ax | grep soffice<br />
#vous devez voir quelques lignes apparaitre contenant "soffice.bin"<br />
$ su -<br />
$ netstat -taupe | grep 8123<br />
# et là, vous devez avoir une réponse qui vous dit que le port 8123 est en écoute, par exemple:<br />
[root@sd-12345 ~]# netstat -taupe | grep 8123<br />
tcp&nbsp; &nbsp; &nbsp; &nbsp; 0&nbsp; &nbsp; &nbsp; 0 sd-12345:8123&nbsp; *:*&nbsp; LISTEN&nbsp; &nbsp;office&nbsp; &nbsp;44387576&nbsp; 20974/soffice.bin<br />
&nbsp;</div></div>

<p>
Voilà, on a bel et bien un serveur OpenOffice qui tourne sur le serveur virtuel Xvfb. OpenOffice attend qu'on lui envoi des commandes sur le port 8123.
</p>

<p>
Afin de discuter avec lui, nous allons nous pencher sur PyUNO, l'interface python avec le module UNO qui permet de travailler avec OpenOffice.
</p>

<a name="PyUno"></a><h3>PyUno</h3>

<p>
OpenOffice est livré avec un python propre à lui. Je préfère largement utiliser ce python que celui de mon installation puisqu'il ne me pose pas de problème en ce qui concerne les chemins de modules.
</p>

<p>
Voici donc un script python qui me permet de tester mon service OpenOffice:
</p>

<div class="wiki_code"><div class="python" style="font-family: monospace;"><br />
<span style="color: #808080; font-style: italic;">#!/usr/bin/env python</span><br />
<span style="color: #808080; font-style: italic;"># -*- coding: utf-8 -*-</span><br />
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">sys</span><br />
<br />
<br />
<span style="color: #808080; font-style: italic;">#importe le module UNO</span><br />
<span style="color: #ff7700;font-weight:bold;">import</span> uno<br />
<span style="color: #ff7700;font-weight:bold;">from</span> com.<span style="color: black;">sun</span>.<span style="color: black;">star</span>.<span style="color: black;">beans</span> <span style="color: #ff7700;font-weight:bold;">import</span> PropertyValue<br />
<br />
<span style="color: #808080; font-style: italic;">#le port où se connecter</span><br />
port=<span style="color: #483d8b;">"8123"</span><br />
<span style="color: #808080; font-style: italic;">#fichier d'entré et de sorite</span><br />
inputfile = uno.<span style="color: black;">systemPathToFileUrl</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">sys</span>.<span style="color: black;">argv</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span><br />
outputfile = uno.<span style="color: black;">systemPathToFileUrl</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">sys</span>.<span style="color: black;">argv</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">2</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span><br />
<br />
<span style="color: #808080; font-style: italic;"># Récupération d'un manager de service</span><br />
context = uno.<span style="color: black;">getComponentContext</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br />
resolver = context.<span style="color: black;">ServiceManager</span>.<span style="color: black;">createInstanceWithContext</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">"com.sun.star.bridge.UnoUrlResolver"</span>, context<span style="color: black;">&#41;</span><br />
ctx = resolver.<span style="color: black;">resolve</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">"uno:socket,host=localhost,port="</span>+port+<span style="color: #483d8b;">";urp;StarOffice.ComponentContext"</span><span style="color: black;">&#41;</span><br />
smgr = ctx.<span style="color: black;">ServiceManager</span><br />
<br />
<span style="color: #808080; font-style: italic;"># Charge le document d'entrée</span><br />
properties = <span style="color: black;">&#91;</span><span style="color: black;">&#93;</span><br />
p = PropertyValue<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br />
p.<span style="color: black;">Name</span> = <span style="color: #483d8b;">"Hidden"</span><br />
p.<span style="color: black;">Value</span> = <span style="color: #008000;">True</span><br />
properties.<span style="color: black;">append</span><span style="color: black;">&#40;</span>p<span style="color: black;">&#41;</span><br />
properties = <span style="color: #008000;">tuple</span><span style="color: black;">&#40;</span>properties<span style="color: black;">&#41;</span><br />
<br />
desktop = smgr.<span style="color: black;">createInstanceWithContext</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">"com.sun.star.frame.Desktop"</span>, ctx<span style="color: black;">&#41;</span><br />
doc = desktop.<span style="color: black;">loadComponentFromURL</span><span style="color: black;">&#40;</span>inputfile, <span style="color: #483d8b;">"_blank"</span>, <span style="color: #ff4500;">0</span>, properties<span style="color: black;">&#41;</span><br />
<br />
<span style="color: #808080; font-style: italic;"># Création de propriétés de sauvegardes</span><br />
properties = <span style="color: black;">&#91;</span><span style="color: black;">&#93;</span><br />
p = PropertyValue<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br />
<span style="color: #808080; font-style: italic;"># On autorise l'écrasement de fichier</span><br />
p.<span style="color: black;">Name</span> = <span style="color: #483d8b;">"Overwrite"</span><br />
p.<span style="color: black;">Value</span> = <span style="color: #008000;">True</span><br />
properties.<span style="color: black;">append</span><span style="color: black;">&#40;</span>p<span style="color: black;">&#41;</span><br />
<br />
<span style="color: #808080; font-style: italic;"># on utilise le filtre PDF</span><br />
p = PropertyValue<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br />
p.<span style="color: black;">Name</span> = <span style="color: #483d8b;">"FilterName"</span><br />
p.<span style="color: black;">Value</span> = <span style="color: #483d8b;">'writer_pdf_Export'</span><br />
properties.<span style="color: black;">append</span><span style="color: black;">&#40;</span>p<span style="color: black;">&#41;</span><br />
<br />
<span style="color: #808080; font-style: italic;">#on passe la variable en type 'tuple'</span><br />
properties = <span style="color: #008000;">tuple</span><span style="color: black;">&#40;</span>properties<span style="color: black;">&#41;</span><br />
<br />
<span style="color: #808080; font-style: italic;">#on sauve</span><br />
doc.<span style="color: black;">storeToURL</span><span style="color: black;">&#40;</span>outputfile, properties<span style="color: black;">&#41;</span><br />
<span style="color: #808080; font-style: italic;">#on relache</span><br />
doc.<span style="color: black;">dispose</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br />
&nbsp;</div></div>

<p>
Donc, voilà comment tester, enregistrez le script ci-dessus sur /home/office/test.py (sur le serveur distant), ouvrez un shell SSH
</p>

<div class="wiki_code"><div style="font-family: monospace;"><br />
$ ssh office@server<br />
$ /opt/openoffice.org3/program/python test.py /chemin/complet/du/fichier.odt /chemin/complet/du/fichier.pdf<br />
&nbsp;</div></div>

<p>
Oui, je sais, il faut donner un chemin <strong>complet</strong> et non relatif... j'ai pas codé ce script pour qu'il soit fonctionnel dans tous les cas, mais pour tester l'installation. Si tout se passe bien vous allez avoir un PDF bien propre et bien réglé.
</p>

<a name="On-nettoie-et-on-monte-un-vrai-service"></a><h3>On nettoie et on monte un vrai service</h3>

<p>
Ok, nous avons tout lancer à la main. Reste maintenant à faire un script de type "service". Je suis sous CentOS (donc un genre de RedHat), ceci ne sera pas exact pour Debian et Ubuntu, je vous laisserai me donner les spécifications si vous le souhaitez.
</p>

<p>
J'utilise donc le système Red Hat qui demande d'utiliser le script /etc/init.d/functions afin d'utiliser les fonctions "deamon" et "killproc".
</p>

<p>
Commencez par vous connecter en root et fermez tous les processus restants de Xvfb et soffice
</p>

<div class="wiki_code"><div style="font-family: monospace;"><br />
killall Xvfb<br />
killall soffice.bin<br />
&nbsp;</div></div>

<p>
Et maintenant, créez un fichier /etc/init.d/ooffice, placez ce code dedans:
</p>

<div class="wiki_code"><div class="bash" style="font-family: monospace;"><br />
<span style="color: #808080; font-style: italic;">#!/bin/bash</span><br />
<span style="color: #808080; font-style: italic;">#</span><br />
<span style="color: #808080; font-style: italic;"># chkconfig: 345 20 100</span><br />
<span style="color: #808080; font-style: italic;"># description: OpenOffice server listener</span><br />
<span style="color: #808080; font-style: italic;">#</span><br />
. /etc/init.d/functions<br />
<br />
<span style="color: #0000ff;">PIDFILE=</span><span style="color: #ff0000;">"/var/lock/subsys/ooservice"</span><br />
<span style="color: #0000ff;">PORT=</span><span style="color: #ff0000;">"8123"</span><br />
<span style="color: #0000ff;">USER=</span><span style="color: #ff0000;">"office"</span><br />
<br />
<span style="color: #b1b100;">case</span> <span style="color: #ff0000;">"$1"</span> <span style="color: #b1b100;">in</span><br />
start<span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#91;</span> -f <span style="color: #0000ff;">$PIDFILE</span> <span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#93;</span>; <span style="color: #b1b100;">then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066;">echo</span> <span style="color: #ff0000;">"A server is already active"</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066;">exit</span> <span style="color: #cc66cc;">1</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">fi</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066;">echo</span> -n <span style="color: #ff0000;">"Starting Xvfb (Virtual X server)"</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; daemon Xvfb :<span style="color: #cc66cc;">1</span>&nbsp; &<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">RETVAL=</span>$?<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066;">echo</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#91;</span> <span style="color: #0000ff;">$RETVAL</span> -eq <span style="color: #cc66cc;">0</span> <span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#93;</span>; <span style="color: #b1b100;">then</span>&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sleep <span style="color: #cc66cc;">2</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066;">echo</span> -n <span style="color: #ff0000;">"Starting OpenOffice Server on port $PORT"</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; daemon <span style="color: #ff0000;">"su - $USER -c <span style="color: #000099; font-weight: bold;">\"</span>export PATH=/opt/openoffice.org3/program/:<span style="color: #000099; font-weight: bold;">\$</span>PATH; export DISPLAY=:1; soffice -headless -invisible '-accept=socket,host=localhost,port=$PORT;urp;'<span style="color: #000099; font-weight: bold;">\"</span>"</span> &<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066;">echo</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">else</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066;">echo</span> -n <span style="color: #ff0000;">"Kill all processus... error appears"</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; killproc Xvfb<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; killproc soffice.bin&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">fi</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066;">echo</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#91;</span> <span style="color: #0000ff;">$RETVAL</span> -eq <span style="color: #cc66cc;">0</span> <span style="color: #66cc66;">&#93;</span> && touch <span style="color: #0000ff;">$PIDFILE</span><br />
;;<br />
stop<span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066;">echo</span> -n <span style="color: #ff0000;">"Stopping OpenOffice"</span>&nbsp; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; killproc soffice.bin<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066;">echo</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066;">echo</span> -n <span style="color: #ff0000;">"Stopping Xvfb (Virtual X server)"</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; killproc Xvfb<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">RETVAL=</span>$?<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066;">echo</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#91;</span> <span style="color: #0000ff;">$RETVAL</span> -eq <span style="color: #cc66cc;">0</span> <span style="color: #66cc66;">&#93;</span> && rm -f <span style="color: #0000ff;">$PIDFILE</span><br />
;;<br />
restart<span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; $<span style="color: #cc66cc;">0</span> stop<br />
&nbsp; &nbsp; &nbsp; &nbsp; $<span style="color: #cc66cc;">0</span> start<br />
&nbsp; &nbsp; &nbsp; &nbsp; ;;<br />
*<span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066;">echo</span> <span style="color: #ff0000;">"Usage: $0 {start|stop|restart}"</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066;">exit</span> <span style="color: #cc66cc;">1</span><br />
<span style="color: #b1b100;">esac</span><br />
<br />
<span style="color: #000066;">exit</span> <span style="color: #cc66cc;">0</span><br />
&nbsp;</div></div>

<p>
En ce qui concerne Debian, je n'ai pas tout sous la main pour coder un bon daemon, mais ceci peut <strong>largement</strong> faire l'affaire. En premier lieu, ouvrez /home/office/.bashrc et placez en fin de fichier:
</p>

<div class="wiki_code"><div style="font-family: monospace;"><br />
#Debian, export de JAVA_HOME<br />
export JAVA_HOME=/opt/java<br />
&nbsp;</div></div>

<p>
Sur Ubuntu il n'y aura pas de souci normalement... puis ce script fera office de démon:
</p>

<div class="wiki_code"><div class="bash" style="font-family: monospace;"><br />
<br />
<span style="color: #808080; font-style: italic;">#!/bin/bash</span><br />
<span style="color: #808080; font-style: italic;">#</span><br />
<span style="color: #808080; font-style: italic;"># chkconfig: 345 20 100</span><br />
<span style="color: #808080; font-style: italic;"># description: OpenOffice server listener</span><br />
<span style="color: #808080; font-style: italic;">#</span><br />
<br />
<span style="color: #0000ff;">USER=</span><span style="color: #ff0000;">"office"</span><br />
<span style="color: #0000ff;">PORT=</span><span style="color: #ff0000;">"8123"</span><br />
<span style="color: #0000ff;">PIDFILE=</span><span style="color: #ff0000;">"/var/lock/subsys/ooservice"</span><br />
<br />
start<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#91;</span> -f <span style="color: #0000ff;">$PIDFILE</span> <span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#93;</span>; <span style="color: #b1b100;">then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066;">echo</span> <span style="color: #ff0000;">"A server is already active"</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066;">exit</span> <span style="color: #cc66cc;">1</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">fi</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066;">echo</span> -n <span style="color: #ff0000;">"Starting Xvfb (Virtual X server):"</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; Xvfb :<span style="color: #cc66cc;">1</span> &<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; sleep <span style="color: #cc66cc;">2</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066;">echo</span> -n <span style="color: #ff0000;">"Starting OpenOffice Server:"</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; su - <span style="color: #0000ff;">$USER</span> -c <span style="color: #ff0000;">"export PATH=/opt/openoffice.org3/program/:<span style="color: #000099; font-weight: bold;">\$</span>PATH; export DISPLAY=:1; soffice -headless -invisible '-accept=socket,host=localhost,port=$PORT;urp;'"</span>&nbsp; > /dev/null <span style="color: #cc66cc;">2</span>>&<span style="color: #cc66cc;">1</span> &<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#91;</span> $? -eq <span style="color: #cc66cc;">0</span> <span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#93;</span> && touch <span style="color: #0000ff;">$PIDFILE</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066;">return</span> <span style="color: #cc66cc;">0</span><br />
<span style="color: #66cc66;">&#125;</span><br />
<br />
stop<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066;">echo</span> -n <span style="color: #ff0000;">"Stopping OpenOffice"</span>&nbsp; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; killall soffice.bin<br />
&nbsp; &nbsp; &nbsp; &nbsp; sleep <span style="color: #cc66cc;">1</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066;">echo</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066;">echo</span> -n <span style="color: #ff0000;">"Stopping Xvfb (Virtual X server)"</span>&nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; killall Xvfb<br />
&nbsp; &nbsp; &nbsp; &nbsp; rm -f <span style="color: #0000ff;">$PIDFILE</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066;">echo</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066;">return</span> <span style="color: #cc66cc;">0</span><br />
<span style="color: #66cc66;">&#125;</span><br />
<span style="color: #b1b100;">case</span> <span style="color: #ff0000;">"$1"</span> <span style="color: #b1b100;">in</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; start<span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; start<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ;;<br />
&nbsp; &nbsp; &nbsp; &nbsp; stop<span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; stop<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ;;<br />
&nbsp; &nbsp; &nbsp; &nbsp; restart<span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; stop<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; start<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ;;<br />
&nbsp; &nbsp; &nbsp; &nbsp; *<span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066;">echo</span> <span style="color: #ff0000;">"Usage: $PROG {start|stop|restart}"</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066;">exit</span> <span style="color: #cc66cc;">1</span><br />
<span style="color: #b1b100;">esac</span><br />
&nbsp;</div></div>

<p>
Et voilà, vous le sauvez, et pour lancer le service vous faites:
</p>

<div class="wiki_code"><div style="font-family: monospace;"><br />
/etc/init.d/ooffice start<br />
&nbsp;</div></div>

<p>
et pour le couper:
</p>

<div class="wiki_code"><div style="font-family: monospace;"><br />
/etc/init.d/ooffice stop<br />
&nbsp;</div></div>

<p>
Vous pouvez aussi relancer le service pour le rafraichir:
</p>

<div class="wiki_code"><div style="font-family: monospace;"><br />
/etc/init.d/ooffice restart<br />
&nbsp;</div></div>

<p>
Vous pouvez bien entendu demander un démarrage au lancement du serveur grâce aux options "chkconfig" placées dans l'entête du script. La commande qui activera le daemon est:
</p>

<div class="wiki_code"><div style="font-family: monospace;"><br />
chkconfig --add ooffice<br />
&nbsp;</div></div>

<p>
Ou pour Ubuntu et Debian:
</p>

<div class="wiki_code"><div style="font-family: monospace;"><br />
update-rc.d ooffice defaults 99<br />
&nbsp;</div></div>

<p>
Vous remarquerez que j'utilise un "su -c office..." pour lancer la commande "soffice", cela a pour effet de lancer une commande en tant qu'un utilisateur particulier. 
</p>

<a name="Pour-finir"></a><h3>Pour finir</h3>

<p>
Reste à voir ce que vous en ferez... sachez que le format ODT (Open Document) est en fait un zip. Si vous décompressez le fichier, vous y verrez un fichier "content.xml" dans lequel vous pouvez remplacer du texte, des balises... donc il vous suffit de créer un fichier odt, et de l'utiliser comme patron (template) pour générer des documents.
</p>

<p>
Vous pourrez donc faire des script PHP, Perl, Bash... qui feront des remplacements et de la génération de PDF à la volée. Le seul "hic" pour le moment c'est que j'utilise Python. "hic" parce que je fais pas mal de service web et que je trouve gênant d'utiliser un appel de commande système depuis PHP vers un script Python.
</p>

<p>
Il existe un projet qui se nomme PHPuno mais encore en phase alpha et je ne sais même pas si il fonctionne correctement... 
</p>

<p>
Autre point, il est vrai que pour un gros lot de fichier à générer sur un court laps de temps (genre 2-3 documents/secondes), il serait préférable de créer un "pooler" de document. Cela pourra faire l'objet d'un autre billet. Voilà pour ce billet, j'espère que cela vous a aidé. Si vous avez des questions, n'hésitez pas !
</p>

<p>
[edit 27 oct. 2008]<br />J'ai découvert ce projet de daemon OpenOffice: <a href="http://udk.openoffice.org/python/oood/index.html" title="http://udk.openoffice.org/python/oood/index.html" class="wiki_exists">http://udk.openoffice.org/python/oood/index.html</a>. Ce daemon permet même plusieurs instance de serveur. A vérifier et tester :)
</p>

<p>
[edit 27 oct. 2008]<br />J'ai beaucoup corrigé le billet pour que cela fonctionne sur Ubuntu et Debian. Il faudra tout de même tester :)
</p>

<p>
[edit 27 oct. 2008]<br />Correction du script Python. Reste à corriger pour Debian (on a eut des soucis avec Vainvain pour installer sur une Debian en dev... mais c'est passé)
</p>

<p>
[edit 27 oct. 2008]<br />Correction pour Debian (pas Ubuntu) afin d'avoir un Java qui marche et un bon export de JAVA_HOME avant lancement de soffice. Chez nous ça a fonctionné
</p>

<p><a href="http://feeds.feedburner.com/~a/Metal3dorg?a=mF38dW"><img src="http://feeds.feedburner.com/~a/Metal3dorg?i=mF38dW" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/Metal3dorg?a=ktziM"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=ktziM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=z7AUm"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=z7AUm" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=aR86M"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=aR86M" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=8xYam"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=8xYam" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=FsCvM"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=FsCvM" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Metal3dorg/~4/431144318" height="1" width="1"/>]]></content:encoded><description>&lt;p&gt;
Il est parfois compliqué de créer des documents dignes de ce nom en PDF à partir de templates... Soit on tente d'utiliser des librairies telles que FPDF, HTPM2PDF pas forcément très classes, soit on cherche à monter une solution plus ...&lt;/p&gt;</description><feedburner:origLink>http://www.metal3d.org/index.php/blog/ticket/2008/10/24/OpenOffice-en-mode-serveur?heading=Informatique</feedburner:origLink></item><item><title>Prochain design du blog</title><link>http://feeds.feedburner.com/~r/Metal3dorg/~3/427368139/Prochain-design-du-blog</link><pubDate>Tue, 21 Oct 2008 06:00:19 -0500</pubDate><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[

<p>
Tiens, en passant... Je suis en train de me préparer un nouveau design de blog. Plus sombre, certes, mais plus compact à la vue. Vous pouvez voir un aperçu de maquette ici:
<span style="display: inline"><img name="wiki_image" src="http://www.metal3d.org/captures/nextdesign.png" width="500" alt="nextdesign" /><span style="height:15px;margin-left: -15px;"><a href="http://www.metal3d.org/captures/nextdesign.png" target="_blank" title="Voir l'image en taille réelle"><img src="http://www.metal3d.org/themes/default/img/tools/loupe.png" alt="download"/></a></span></span>
</p>

<p>
Je passe en deux colonnes sur la droite question de pouvoir placer les "pubs" et autres "fioritures" de manière plus clair.
</p>

<p>
Par contre, je me demande si cela ne va pas devenir "austère"... Sachant que le adsense google va passer en fond noir... 
</p>

<p><a href="http://feeds.feedburner.com/~a/Metal3dorg?a=jMGjTl"><img src="http://feeds.feedburner.com/~a/Metal3dorg?i=jMGjTl" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/Metal3dorg?a=Z2dnM"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=Z2dnM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=XkuMm"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=XkuMm" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=BZjuM"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=BZjuM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=Nl4jm"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=Nl4jm" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=Zg1bM"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=Zg1bM" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Metal3dorg/~4/427368139" height="1" width="1"/>]]></content:encoded><description>&lt;p&gt;
Tiens, en passant... Je suis en train de me préparer un nouveau design de blog. Plus sombre, certes, mais plus compact à la vue. Vous pouvez voir un aperçu de maquette ici:
&lt;span style="display: inline"&gt;&lt;img name="wiki_image" src="http://www.metal3d.org/captures/nextdesign.png" width="500" alt="nextdesign" /&gt;&lt;span style="height:15px;margin-left: -15px;"&gt;&lt;a href="http://www.metal3d.org/captures/nextdesign.png" target="_blank" title="Voir l'image en taille réelle"&gt;&lt;img src="http://www.metal3d.org/themes/default/img/tools/loupe.png" alt="download"/&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;p&gt;
Je passe en deux colonnes sur la droite question de pouvoir placer ...&lt;/p&gt;</description><feedburner:origLink>http://www.metal3d.org/index.php/blog/ticket/2008/10/21/Prochain-design-du-blog?heading=Developpement</feedburner:origLink></item><item><title>Copix module Blog</title><link>http://feeds.feedburner.com/~r/Metal3dorg/~3/426299977/Copix-module-Blog</link><pubDate>Mon, 20 Oct 2008 05:41:45 -0500</pubDate><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[

<p>
Enfin une correction du module de blog à corriger. Correction massive en fait.
Depuis le temps que je vois ces fichus soucis sur mon calendrier, je me demandais si un jour j'allais me poser un peu sur ce qui coinçais à ce point.
</p>

<p>
Les soucis apparents était:
</p>
<ul>
<li> calendrier qui ne modifiait pas réellement la page lors du clique sur une date</li>
<li> pas d'affichage de tags dans le billet lui même</li>
<li> mauvaise gestion du cache lors de l'ajout d'un billet</li>
<li> et quelques bugs par-ci par-là... </li>
</ul>


<p>
Ce week-end, après un passage à la JDLL, je me suis donc repenché vite-fait sur ce qui m'énervait. J'ai mis en production le nouveau module de blog pour voir ce qu'il donnait. Deux jours de production et du mieux, du beaucoup mieux !
</p>

<p>
En gros:
</p>
<ul>
<li> meilleure gestion de référencement</li>
<li> url plus logiques</li>
<li> affichage des tags sans casse</li>
<li> plus de logs d'erreurs !</li>
</ul>


<p>
Bref, le module de blog prend un forme plus avantageuse. Reste à finaliser la cohésion avec le module "feed", un glossaire plus complet... et passer au w3c :)
</p>

<p>
Si vous repérez un bug dans mon blog, n'hésitez surtout pas à commenter sur ce ticket.
</p>

<p>
A prévoir pour la suite:
</p>
<ul>
<li> choisir de suivre les commentaires du ticket par mail</li>
<li> choisir de suivre les commentaires du ticket par RSS</li>
</ul>


<p>
mais pour cela, c'est le module "comment" qui doit être modifié.
</p>

<p>
Je pense que tout devrait passer cette semaine, et j'espère pouvoir vous proposer un package Copix Blog d'ici ce week-end.
</p>

<p><a href="http://feeds.feedburner.com/~a/Metal3dorg?a=PHX5YC"><img src="http://feeds.feedburner.com/~a/Metal3dorg?i=PHX5YC" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/Metal3dorg?a=c89QM"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=c89QM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=iEsLm"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=iEsLm" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=ejdUM"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=ejdUM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=r9XKm"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=r9XKm" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=DfYMM"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=DfYMM" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Metal3dorg/~4/426299977" height="1" width="1"/>]]></content:encoded><description>&lt;p&gt;
Enfin une correction du module de blog à corriger. Correction massive en fait.
Depuis le temps que je vois ces fichus soucis sur mon calendrier, je me demandais si un jour j'allais me poser un peu sur ce qui coinçais à ce point.
&lt;/p&gt;

&lt;p&gt;
Les soucis ...&lt;/p&gt;</description><feedburner:origLink>http://www.metal3d.org/index.php/blog/ticket/2008/10/20/Copix-module-Blog?heading=Developpement</feedburner:origLink></item><item><title>Spectacle de Roland Magdane</title><link>http://feeds.feedburner.com/~r/Metal3dorg/~3/426216947/Spectacle-de-Roland-Magdane</link><pubDate>Mon, 20 Oct 2008 03:23:30 -0500</pubDate><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[

<p>
Ma fiancée m'a offert le le mois dernier une place pour le spéctacle de Roland Magdane à la bourse du travail (Lyon) qui a eut lieu hier. Nous y sommes donc allé avec un peu d'avance pour trouver une place de parking. Nous marchions dans les ruelles, passant finalement par derrière la salle de spectacle. Et tout à coup, qui vois-je discuter dans la rue: Roland Magdane.
</p>

<p>
"Chérie, sors les billets et un stylo !!!". Et hop, un petit serrage de main, et un autographe sur les billets. La soirée s'annonce bien.
</p>

<p>
Entrée dans la salle, nous sommes bien placés, nous attendons de voir commencer le spectacle "Best Of". Arrive enfin l'extinction des lumières en salle, le public qui appelle M. Roland Magdane... et le voilà !
</p>

<p>
Le spectacle commence par quelques mots sur ses 30 ans de carrière, et cela biffurque rapidement sur un des ces sketchs les plus connus "celui qui a inventé la langue française". 
</p>

<p>
S'en suivent alors les sketchs que nous connaissons tous, de la lettre à sa maman, jusqu'à sa maison en Normandie, passant par le barbecue et son fils qui est trop lent. Quelques sketchs que je ne connaissais pas, comme son voyage de cure amincissante.
</p>

<p>
Petit souci de micro, R.Magdane doit le changer en plein milieu du spectacle. On admire alors sa capacité à gérer les impondérables. 
</p>

<p>
Évidemment, Magdane ajoute des petites notes spéciales en rapport à l'actualité, le rappel fut orchestré par son dentiste... 
</p>

<p>
Que dire ? que j'ai vraiment bien rit, malgré le fait qu'on connaisse ses sketchs depuis des années nous ne pouvons pas nous empêcher de rigoler à ces mimiques, ses jeux de voix, sa finesse dans l'humour et le personnage est tellement attachant. Il joue avec le public, nous remercie en fin de spectacle de lui avoir permis ces 30 années de déconnade. 
</p>

<p>
Si vous avez un jour l'occasion d'aller le voir, n'hésitez pas, c'est bon à souhait.
</p>

<p><a href="http://feeds.feedburner.com/~a/Metal3dorg?a=6e0zTv"><img src="http://feeds.feedburner.com/~a/Metal3dorg?i=6e0zTv" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/Metal3dorg?a=kkR3M"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=kkR3M" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=u6qAm"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=u6qAm" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=QxnxM"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=QxnxM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=v3QGm"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=v3QGm" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=IElCM"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=IElCM" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Metal3dorg/~4/426216947" height="1" width="1"/>]]></content:encoded><description>&lt;p&gt;
Ma fiancée m'a offert le le mois dernier une place pour le spéctacle de Roland Magdane à la bourse du travail (Lyon) qui a eut lieu hier. Nous y sommes donc allé avec un peu d'avance pour trouver une place de parking. Nous marchions dans les ...&lt;/p&gt;</description><feedburner:origLink>http://www.metal3d.org/index.php/blog/ticket/2008/10/20/Spectacle-de-Roland-Magdane?heading=Fun</feedburner:origLink></item><item><title>Copix lors de la JDLL</title><link>http://feeds.feedburner.com/~r/Metal3dorg/~3/424738782/Copix-lors-de-la-JDLL</link><pubDate>Sat, 18 Oct 2008 16:59:14 -0500</pubDate><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[

<p>
Comme je vous l'ai annoncé, la Copix Team était présente à la JDLL en ce jour de grâce 18 octobre 2008 à Lyon. C'est de retour de cette journée que je viens raconter un petit peu de cette journée riche en rencontres et évènements.
</p>

<p>
Tout d'abord, un merci à Brice pour les photos que vous verrez ici: <a href="http://www.flickr.com/photos/bricef/sets/72157608146495915/" title="http://www.flickr.com/photos/bricef/sets/72157608146495915/" class="wiki_exists">http://www.flickr.com/photos/bricef/sets/72157608146495915/</a> Si vous me cherchez, je suis le maigrelet à queue de cheval qui tente de faire marcher le rétroprojecteur (en vain) avant ma "conférence éclaire". Conférence éclair = conférence en 10 minutes pour vous rendre compte que c'est ingérable... Quoiqu'il en soit le journée a été pleine de visites à notre stand. On a converti des développeurs (peut-être), on a eut des conversation de confrontation inter techno... bref on nous a bien vu et entendu.
</p>

<p>
Nous avons rencontré deux membres du projet <a href="http://www.lescomplexes.com/" title="La poule ou l'oeuf" class="wiki_exists">La poule ou l'oeuf</a>. Leur projet extrêmement intéressant de gestion de livre nous a bluffé. Entendez par là: gestion d'écriture de livre sur une appli web extrêmement bien pensée. Nous en reparlerons avec la Copix Team pour écrire un manuel avec cet outil.
</p>

<p>
C'est non sans joie que nous avons aussi rencontré les joyeux étudiants portant leur t-shirt <a href="http://www.flickr.com/photos/bricef/2950990167/" title="Geekness" class="wiki_exists">Geekness</a> de l'INSA. Très sympathiques !
</p>

<p>
J'ai aussi la chance de rencontrer "Kiko" et "Karl Le rouge" du projet Fedora-fr. Chose marrante, le stand Fedora-fr se trouvait pile à coté du stand Ubuntu, ce qui m'a valut le droit de tout faire pour ne pas "troller" :p
</p>

<p>
Beaucoup de pros se sont intéressé à nous, beaucoup sont reparti avec nos badges, nos cartes, et même un <a href="http://www.flickr.com/photos/bricef/2950990167/" title="autographe de Gérald" class="wiki_exists">autographe de Gérald</a> (huhuhu, Gérald va me tuer:) )
</p>

<p>
Et enfin <a href="http://apprendrelinux.blogspot.com/" title="Guillaume Paton" class="wiki_exists">Guillaume Paton</a> nous a rendu visite avec sa future femme, tiens il s'est retenu de troller lui aussi ;)
</p>

<p>
Voilà voilà, nous remercions évidemment toutes les personnes qui nous ont rendu visite. Et nous espérons les revoir sur le forum, le site et/ou IRC.
</p>

<p><a href="http://feeds.feedburner.com/~a/Metal3dorg?a=IZOnpg"><img src="http://feeds.feedburner.com/~a/Metal3dorg?i=IZOnpg" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/Metal3dorg?a=stxCM"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=stxCM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=I0x0m"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=I0x0m" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=iX1VM"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=iX1VM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=un2Tm"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=un2Tm" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=rLojM"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=rLojM" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Metal3dorg/~4/424738782" height="1" width="1"/>]]></content:encoded><description>&lt;p&gt;
Comme je vous l'ai annoncé, la Copix Team était présente à la JDLL en ce jour de grâce 18 octobre 2008 à Lyon. C'est de retour de cette journée que je viens raconter un petit peu de cette journée riche en rencontres et évènements.
&lt;/p&gt;

&lt;p&gt;
Tout ...&lt;/p&gt;</description><feedburner:origLink>http://www.metal3d.org/index.php/blog/ticket/2008/10/18/Copix-lors-de-la-JDLL?heading=Informatique</feedburner:origLink></item><item><title>Firefox 3.1b1 qui etonnante</title><link>http://feeds.feedburner.com/~r/Metal3dorg/~3/421688154/Firefox-3.1b1-qui-etonnante</link><pubDate>Wed, 15 Oct 2008 10:32:52 -0500</pubDate><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[

<p>
Je sais que je suis un peu à la bourre pour parler d'un truc de ce genre, mais j'ai testé la dernière "beta" de Firefox que j'ai put trouver ici:<br /><a href="http://www.mozilla.com/en-US/firefox/all-beta.html" title="http://www.mozilla.com/en-US/firefox/all-beta.html" class="wiki_exists">http://www.mozilla.com/en-US/firefox/all-beta.html</a>. Étonnante, rapide, et enfin du repos pour le processeur et la RAM !!! 
</p>

<p>
Quand vous avez téléchargé l'archive Linux (en français), <strong>fermez firefox 3.0</strong> et procédez de cette manière:
</p>
<ul>
<li> décompressez l'archive sur le Bureau (clique droit &rarr; extraire ici)</li>
<li> ouvrez un terminal et tapez:</li>
</ul>


<div class="wiki_code"><div style="font-family: monospace;"><br />
cd Bureau/firefox<br />
./run-mozilla.sh ./firefox<br />
&nbsp;</div></div>

<p>
J'ai ouvert Dailymotion, Youtube, mon blog, gmail, j'ai lancé des gros sites plein d'ajax (netvibes, igoogle...) j'ai rafraichi comme un sauvage les pages... et je reste à 87Mo de RAM maxi, valeur qui redescend à 78Mo juste après. Ça change beaucoup de la version 3.0.2 qui me prenais quasiment le double. Là mon CPU ne monte pas à 80% sur Youtube ou Deezer, j'ai l'impression (enfin !) que la navigation est légère :)
</p>

<p>
L'ouverture est ultra rapide, que ce soit le lancement du navigateur ou l'affichage d'une page. 
</p>

<p>
<strong>Pour activer le nouveau moteur Javascript Tracemonkey</strong> qui remplace l'ancien SpiderMonkey, faites cette manipulation:
</p>
<ul>
<li> dans la barre d'url tapez "about:config" et dites "oui je ferais attention, promis"</li>
<li> dans le champ de recherche, tapez: <code>javascript.options.jit.content</code></li>
<li> double-cliquez pour voir apparaitre "true" à la place de "false" sur la droite</li>
<li> fermez firefox 3.1b1 et relancez le comme je vous l'ai montré ci dessus:</li>
</ul>


<div class="wiki_code"><div style="font-family: monospace;"><br />
./run-mozilla.sh ./firefox<br />
&nbsp;</div></div>

<p>
Cette fois-ci, 10Mo de moins dans la RAM, et les scripts sont exécuté encore plus rapidement... Franchement cette nouvelle mouture promet, et ce n'est qu'une beta ! 
</p>

<p>
Attendons la suite :) 
</p>

<p>
Alors évidemment, les extensions que vous avez installé ne marcherons pas... pour le moment, ça viendra lorsque Firefox sera en version stable.
</p>

<p>
Mais pour les impatients, les curieux, ou pour ceux qui veulent savoir comment leur site fonctionnera sur la prochaine mouture de Firefox, n'hésitez pas à tester.
</p>

<p><a href="http://feeds.feedburner.com/~a/Metal3dorg?a=WOkqu0"><img src="http://feeds.feedburner.com/~a/Metal3dorg?i=WOkqu0" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/Metal3dorg?a=qYoKM"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=qYoKM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=F8pom"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=F8pom" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=BBveM"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=BBveM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=Tprom"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=Tprom" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=gEjnM"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=gEjnM" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Metal3dorg/~4/421688154" height="1" width="1"/>]]></content:encoded><description>&lt;p&gt;
Je sais que je suis un peu à la bourre pour parler d'un truc de ce genre, mais j'ai testé la dernière "beta" de Firefox que j'ai put trouver ici:&lt;br /&gt;&lt;a href="http://www.mozilla.com/en-US/firefox/all-beta.html" title="http://www.mozilla.com/en-US/firefox/all-beta.html" class="wiki_exists"&gt;http://www.mozilla.com/en-US/firefox/all-beta.html&lt;/a&gt;. Étonnante, rapide, et enfin du repos pour le ...&lt;/p&gt;</description><feedburner:origLink>http://www.metal3d.org/index.php/blog/ticket/2008/10/15/Firefox-3.1b1-qui-etonnante?heading=Informatique</feedburner:origLink></item><item><title>Naissance de finance etudiant</title><link>http://feeds.feedburner.com/~r/Metal3dorg/~3/420508605/Naissance-de-finance-etudiant</link><pubDate>Tue, 14 Oct 2008 07:45:45 -0500</pubDate><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[

<p>
Né de la réussite de <a href="http://www.marketing-etudiant.fr" title="Marketing-etudiant.fr" class="wiki_exists">Marketing-etudiant.fr</a> (+ de 150 000 membres inscrits) et <a href="http://www.doc-etudiant.fr" title="Doc-etudiant.fr" class="wiki_exists">Doc-etudiant.fr</a>, EfficaWeb lance aujourd'hui <a href="http://www.finance-etudiant.fr" title="Finance-etudiant.fr" class="wiki_exists">Finance-etudiant.fr</a> afin d'apporter les mêmes services aux <u>étudiants en finance</u> et en se basant toujours sur le modèle du <strong>gratuit</strong>. 
</p>

<a href="http://www.finance-etudiant.fr" title="finance &eacute;tudiant, le portail des &eacute;tudiants en finance"><img src="http://www.finance-etudiant.fr/images/bandeaux/bando_468x60.gif" alt="finance &eacute;tudiant, le portail des &eacute;tudiants en finance" width="468" height="60" /></a>

<p>
Avec plus de 150 000 membres inscrits sur <a href="http://www.marketing-etudiant.fr" title="http://www.marketing-etudiant.fr" class="wiki_exists">http://www.marketing-etudiant.fr</a>, <a href="http://www.finance-etudiant.fr" title="http://www.finance-etudiant.fr" class="wiki_exists">http://www.finance-etudiant.fr</a> propose aujourd'hui les mêmes services aux étudiants en finance. 
</p>

<p>
Extrait du communiqué de presse: <br /><a href="http://www.finance-etudiant.fr" title="Finance-etudiant.fr" class="wiki_exists">Finance-etudiant.fr</a> a la particularité de faciliter les échanges entre les étudiants tout en proposant un espace de
rencontre entre étudiants et professionnels.
Ainsi, les étudiants :
</p>
<ol>
<li> partagent leurs documents (exposés, mémoires, rapports...)</li>
<li> s’entraident sur les forums</li>
<li> participent à des concours</li>
<li> réagissent sur l’actualité</li>
<li> déposent leur CV</li>
</ol>


<p>
Les professionnels :
</p>
<ol>
<li> relatent l’actualité</li>
<li> déposent leurs offres de stage</li>
<li> échangent avec les étudiants sur les forums</li>
<li> annoncent leurs salons / programmes de formation</li>
<li> recrutent via le vivier de CV</li>
</ol>


<p>
Donc, étudiants en finance, n'attendez pas et allez vous inscrire sur <a href="http://www.finance-etudiant.fr" title="Finance-etudiant.fr" class="wiki_exists">Finance-etudiant.fr</a>
</p>

<p><a href="http://feeds.feedburner.com/~a/Metal3dorg?a=1LSp8V"><img src="http://feeds.feedburner.com/~a/Metal3dorg?i=1LSp8V" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/Metal3dorg?a=SgrfM"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=SgrfM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=gysUm"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=gysUm" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=Bd69M"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=Bd69M" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=Wikvm"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=Wikvm" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=pDjOM"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=pDjOM" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Metal3dorg/~4/420508605" height="1" width="1"/>]]></content:encoded><description>&lt;p&gt;
Né de la réussite de &lt;a href="http://www.marketing-etudiant.fr" title="Marketing-etudiant.fr" class="wiki_exists"&gt;Marketing-etudiant.fr&lt;/a&gt; (+ de 150 000 membres inscrits) et &lt;a href="http://www.doc-etudiant.fr" title="Doc-etudiant.fr" class="wiki_exists"&gt;Doc-etudiant.fr&lt;/a&gt;, EfficaWeb lance aujourd'hui &lt;a href="http://www.finance-etudiant.fr" title="Finance-etudiant.fr" class="wiki_exists"&gt;Finance-etudiant.fr&lt;/a&gt; afin d'apporter les mêmes services aux &lt;u&gt;étudiants en finance&lt;/u&gt; et en se basant toujours sur le modèle ...&lt;/p&gt;</description><feedburner:origLink>http://www.metal3d.org/index.php/blog/ticket/2008/10/14/Naissance-de-finance-etudiant?heading=Informatique</feedburner:origLink></item><item><title>Critique du canal IRC ubuntu fr</title><link>http://feeds.feedburner.com/~r/Metal3dorg/~3/420431186/Critique-du-canal-IRC-ubuntu-fr</link><pubDate>Tue, 14 Oct 2008 05:32:37 -0500</pubDate><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[

<p>
Je viens (encore une fois) de me rendre compte du pourquoi Ubuntu et moi ne vivons pas une belle histoire d'amour. Même si <strong>je défends l'idée qu'elle est simple, pratique pour un débutant, assez réactive pour des besoins basiques</strong>, je me confronte toujours à ce même refrain: <em>communauté qui n'en fait qu'à sa tête</em>. Mais aujourd'hui, j'ai la confirmation qu'elle est tout aussi dénigrante et dénuée d'estime des autres que méprisante.
</p>

<p>
<strong>Je ne pèse pas mes mots, je le sais...</strong> mais après une discussion de seulement 10 minutes sur le canal #ubuntu-fr (irc.freenode.net sur IRC) je me suis rendu compte à quel point je déteste l'ambiance et les réactions des Ubunteros. Pour faire simple, je suis allé là bas pour demander si Ubuntu intègrait "<a href="http://online.gnome.org/" title="gnome-online" class="wiki_exists">gnome-online</a>". Ce qui revient à demander en fait "il y a un dépôt ?" puisque je ne trouvais pas ce paquet... et que je sais pertinemment que des dépôts <em>non-officiels</em> sont un peu partout et n'importe où.
</p>

<p>
Les réponses ont commencée par être <em>"J'aime pas"</em>, puis <em>"t'as qu'à faire un VPN et tu l'as ton online desktop"</em> (mais bien sûr)... Viennent en même temps les critiques: <em>"pfff c'est null, et puis c'est pas aujourd'hui qu'on fera du online-desktop"</em>, <em>"encore un truc de marketeux qui marchera pas"</em>... Dans tout cela, je n'ai donc pas eut ma réponse. Montrant alors le site <a href="http://online.gnome.org" title="http://online.gnome.org" class="wiki_exists">http://online.gnome.org</a>, ça continue <em>"pfff gnome... pas pour moi"</em>... bon... Je continue pas.
</p>

<p>
Arrivé enfin à l'ultime vanne <em>"lol, online-desktop, ça me fait bien rire, j'adore comme ils essaient de le vendre"</em>. La tentation a été trop grande, je n'ai pu que répondre une troll sans nom, mais quasi justifié <em>"ce qui me fait rire moi, c'est une distribution qui veut se vendre comme pratique, sécurisée et révolutionnaire et qu'on regarde son historique de trous de sécurité laissés par des packageurs hâtifs, et qu'on se penche sur les version dépassées des logiciels installés sur la distribution"</em>
</p>

<p>
Oui, c'est méchant et gratuit, mais bon... on se refait pas et cela n'engage que moi :) 
</p>

<p>
Quoiqu'il en soit, depuis que je travaille sur Ubuntu - sur le poste de mon entreprise (allez savoir pourquoi j'ai voulu la tester malgré tout ce que j'en pense)  - j'ai souvent eut recours à ce canal IRC. Le dédain de ces personnes qui gère ou participent à ce canal est plus qu'arroguant, on est à la limite de l'insulte (mais tout en politesse). Prenons un exemple. Par mégarde, de temps en temps je ne tape pas "quand" mais "qd"... Paf, un message du bot qui te remercie de ne pas parle en langage SMS et t'indique un site sur la langue française. Genre: "tu peux apprendre à écrire en français ?"  Je suis tout à fait d'accord avec le principe de demander de parler correctement, mais la forme utilisée est franchement indécente.
</p>

<p>
<strong>Ce n'est pas la première altercation que j'ai là bas</strong>, la dernière avant celle-ci était une demande d'information sur openjdk... on m'a simplement envoyé paître en me demandant <em>"pourquoi tu prends pas le jdk de sun ?"</em> (<em>note:</em> encore une belle image de la défense du logiciel libre que nous montre Ubuntu)...  Ou alors, je demandais pourquoi les paquets PHP était nommé un coup "php-xxx" et un autre "php5-xxx", <strong>cette question était d'ordre qualitative et non critique</strong>, mais ils ne l'ont pas entendu de cette oreille. Et pourtant croyez moi je n'avais agressé personne.
</p>

<p>
Vous voyez, sans chercher à défendre les autres distributions que j'utilise, les canaux IRC que je visite en général sont très sympathiques, ouverts et pleins d'idées. Sur le canal #fedora-fr il n'est pas rare de faire éloge d'une autre distribution, #mandriva-fr n'a pas attaqué quand j'ai dis que je passais sur Fedora et m'ont même demander des retours pour savoir ce qui m'a plut...
</p>

<p>
Je viens de discuter avec un membre de #fedora-fr de la distribution "<a href="http://www.gentoo.org/" title="Gentoo" class="wiki_exists">Gentoo</a>". Et on ne l'a pas attaqué... bien au contraire on la couvre d'éloges (évidemment pour une personne qui veut se mijoter une installation sur mesure).
</p>

<p>
Bref, l'ouverture d'esprit et le sens auto-critique des gens de #ubuntu-fr devraient sérieusement être remis en question. Oui Ubuntu est simple, oui elle est pas moche, oui elle fonctionne pas mal du tout... mais par pitié regardez autour de vous!  Ubuntu est loin (très loin même) d'arriver à la hauteur technique, à la qualité de sécurité, à la qualité de packages et de stabilité de ces <em>"concurrentes"</em>. D'ailleurs, c'est marrant, j'ai mis ce mot entre guillemets parce que je n'ai vu apparaître ce mot de manière récurrente que sur #ubuntu-fr... les autres canaux n'utilisent pas franchement ce mot.
</p>

<p>
A ceux qui vont commenter, allez-y: soyez mesquins, soyez ironiques en disant "mais oui, ubuntu c'est trop nase y'a que Fedora qui déchire tout" (chose que je n'ai jamais dite...), balancez que je suis trop technicien pour utiliser Ubuntu... mais souvenez vous de deux chose:
</p>
<ol>
<li> je parlais ici de la communauté ubuntu sur #ubuntu-fr</li>
<li> je ne suis pas ancré à une distrib, d'ailleurs j'en utilise 5 en tout à la maison</li>
</ol>


<p>
Ce qui est certain, c'est que je vois de plus en plus de gens sur Ubuntu se plaindre et passer à autre chose... 
</p>

<p>
A vos trolls, prêts... ?
</p>

<p><a href="http://feeds.feedburner.com/~a/Metal3dorg?a=LqjKe8"><img src="http://feeds.feedburner.com/~a/Metal3dorg?i=LqjKe8" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/Metal3dorg?a=af1TM"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=af1TM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=iChom"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=iChom" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=iWpsM"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=iWpsM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=dZpRm"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=dZpRm" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=yM0XM"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=yM0XM" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Metal3dorg/~4/420431186" height="1" width="1"/>]]></content:encoded><description>&lt;p&gt;
Je viens (encore une fois) de me rendre compte du pourquoi Ubuntu et moi ne vivons pas une belle histoire d'amour. Même si &lt;strong&gt;je défends l'idée qu'elle est simple, pratique pour un débutant, assez réactive pour des besoins basiques&lt;/strong&gt;, je me ...&lt;/p&gt;</description><feedburner:origLink>http://www.metal3d.org/index.php/blog/ticket/2008/10/14/Critique-du-canal-IRC-ubuntu-fr?heading=Autre</feedburner:origLink></item><item><title>Logrotate ou la rotation de log facile</title><link>http://feeds.feedburner.com/~r/Metal3dorg/~3/419617234/Logrotate-ou-la-rotation-de-log-facile</link><pubDate>Mon, 13 Oct 2008 10:26:40 -0500</pubDate><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[

<p>
Je vous ai parlé de la sauvegarde de données avec transfère sur FTP sur ma dédibox <a href="http://www.metal3d.org/index.php/blog/ticket/2008/10/10/Sauvegarde-automatis%C3%A9-en-Bash" title="dans cet article - Sauvegarde Automatisée" class="wiki_exists">dans cet article - Sauvegarde Automatisée</a>, et vous avez put voir comment automatiser cela avec un crontab. Ce crontabe écrivait un fichier "daté" par jour. Pour faire un peu mieux (et je vais éditer le billet à ces fins) et plus propre, voyons comment créer une rotation de logs via <strong>logrotate</strong>.
</p>

<p>
logrotate est une "démon" (deamon) qui va s'occuper de sauvegarder régulièrement des logs en les renommant et en les compressant si besoin. L'intérêt est d'avoir un historique de logs paramétrable et de scinder les logs pour ne pas avoir à manipuler des gros fichiers. Ce découpage peut se faire de manière journalière, hebdomadaire, mensuelle ou annuelle. 
</p>

<p>
Chaque logs (ou groupes de logs) se paramètre dans un simple fichier texte. La plupart des distributions modernes propose un répertoire <code>/etc/logrotate.d/</code> ou se trouve une série de fichier de configuration. A nous de créer le notre.
</p>

<p>
Nous allons faire simple, mais alors très simple. En premier, on corrige notre "crontab", désormais, on écrit dans un seul et unique fichier: <code>/var/log/save.log</code>
</p>

<div class="wiki_code"><div style="font-family: monospace;"><br />
# crontab -e<br />
0 4 * * * /usr/local/tools/save >> /var/log/save.log<br />
&nbsp;</div></div>

<p>
Ce qui veut dire que tous les jours à 4h00 du matin, j'ai une sauvegarde qui se fait (voir le billet <a href="[http://www.metal3d.org/index.php/blog/ticket/2008/10/10/Sauvegarde-automatis%C3%A9-en-Bash" title="sur la sauvegarde automatisée" class="wiki_exists">sur la sauvegarde automatisée</a>) et dont les résultats sont envoyés dans le fichier <code>/var/log/save.log</code>.
</p>

<p>
Tous les jours, le fichier <code>/var/log/save.log</code> grossi... et à la longue il risquerait de devenir difficile à lire, trop gros pour être traité facilement et surtout il aura un historique trop ancien pour être intéressant. J'estime qu'une semaine de log est très suffisant, et que 1 mois est <em>sécurisant</em>.
</p>

<p>
C'est donc ce que nous allons faire, créer un fichier de configuration de rotation de logs. Voici donc le fichier que je crée <code>/etc/logrotate.d/savescript</code>:
</p>

<div class="wiki_code"><div style="font-family: monospace;"><br />
/var/log/save.log {<br />
&nbsp; &nbsp; #Rotation mensuelle<br />
&nbsp; &nbsp; monthly<br />
<br />
&nbsp; &nbsp; #Faire 4 rotation dans la période (donc ici 4 par mois = 1 log par semaine)<br />
&nbsp; &nbsp; rotate 4<br />
<br />
&nbsp; &nbsp; #si le fichier est manquant, ne pas générer d'erreur et continuer<br />
&nbsp; &nbsp; missingok<br />
}<br />
&nbsp;</div></div>

<p>
Et c'est tout ! Donc, toutes les semaines <code>logrotate</code> va faire une <code>rotation</code>. Il va supprimé le plus ancien log (donc save.log.3) puis il va pousser les logs:
</p>
<ul>
<li> /var/log/save.log.2 devient /var/log/save.log.3</li>
<li> /var/log/save.log.1 devient /var/log/save.log.2</li>
<li> /var/log/save.log devient /var/log/save.log.1</li>
</ul>


<p>
Mes fichiers son donc du plus récent au plus ancien:
</p>
<ul>
<li> /var/log/save.log  - log en cours</li>
<li> /var/log/save.log.1 - log de la semaine précédente</li>
<li> /var/log/save.log.2 - log d'il y a 2 semaines</li>
<li> /var/log/save.log.3 - log d'il y a 3 semaines</li>
</ul>


<p>
Tout est automatique, c'est franchement simple à mettre en oeuvre et vous ne vous soucirez plus de la taille de vos logs...
</p>

<p>
Je vous conseille de lire la page <a href="http://linux.die.net/man/8/logrotate" title="http://linux.die.net/man/8/logrotate" class="wiki_exists">http://linux.die.net/man/8/logrotate</a> ou simplement faire <code>man logrotate</code> qui vous donnera un très bon aperçut des options proposées par cet outil qui est pourtant l'un des plus anciens du monde Unix.
</p>

<p>
Voilà, à vous de jouer :)
</p>

<p><a href="http://feeds.feedburner.com/~a/Metal3dorg?a=Zlo5WR"><img src="http://feeds.feedburner.com/~a/Metal3dorg?i=Zlo5WR" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/Metal3dorg?a=ZggmM"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=ZggmM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=SIWHm"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=SIWHm" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=ZQVdM"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=ZQVdM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=4qWjm"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=4qWjm" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=pHeyM"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=pHeyM" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Metal3dorg/~4/419617234" height="1" width="1"/>]]></content:encoded><description>&lt;p&gt;
Je vous ai parlé de la sauvegarde de données avec transfère sur FTP sur ma dédibox &lt;a href="http://www.metal3d.org/index.php/blog/ticket/2008/10/10/Sauvegarde-automatis%C3%A9-en-Bash" title="dans cet article - Sauvegarde Automatisée" class="wiki_exists"&gt;dans cet article - Sauvegarde Automatisée&lt;/a&gt;, et vous avez put voir comment automatiser cela avec un crontab. Ce crontabe écrivait un fichier "daté" par jour. ...&lt;/p&gt;</description><feedburner:origLink>http://www.metal3d.org/index.php/blog/ticket/2008/10/13/Logrotate-ou-la-rotation-de-log-facile?heading=Admin+Linux</feedburner:origLink></item><item><title>Chrome sur Linux</title><link>http://feeds.feedburner.com/~r/Metal3dorg/~3/426216948/Chrome-sur-Linux</link><pubDate>Sun, 12 Oct 2008 11:51:23 -0500</pubDate><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[

<p>
<a href="http://fr.wikipedia.org/wiki/Google_Chrome" title="Chrome" class="wiki_exists">Chrome</a> sur Linux, qu'attendions nous pour l'avoir ? Tant il est vrai que nous attendons une compilation native de <a href="http://www.google.com/chrome/index.html?hl=fr" title="Chrome" class="wiki_exists">Chrome</a>, <a href="http://www.codeweavers.com/" title=" codeweavers" class="wiki_exists"> codeweavers</a>s'est penché sur le souci en passant par wine, et vous propose des rpm (Fedora, Centos, Mandriva, RedHat...), des .deb (Ubuntu, Debian...) et si vous n'entrez pas dans ces configurations, un script bash est là pour vous l'installer.
</p>

<p>
A partir de là, une entrée dans le menu "Applications" (ou le menu K de Kde) apparait: "CrossOver Chromium". Pour le lancer en ligne de commande, il suffit de taper "chromium" et le tour est joué. Petite précision, un jeux existe avec ce nom là, je me demande bien si y'aurait pas un conflit qui nous attend...
</p>

<p>
Codeweaver a toujours été là, en parallèle à Wine, pour faire le maximum pour intégrer des applications native Windows vers Linux et Mac. Aujourd'hui, c'est au tour de chrome, le fameux navigateurs de Google, d'être porté de cette manière vers Linux.
</p>

<p>
Certes, cela ne vaut pas une compilation native Linux, mais ça a le mérite de marcher ! D'ailleurs, ce billet est rédigé sur chrome. 
</p>

<p>
Pour installer Chrome sur votre Linux, les liens sont sur la droite à cette page:<br /><a href="http://www.codeweavers.com/services/ports/chromium/" title="http://www.codeweavers.com/services/ports/chromium/" class="wiki_exists">http://www.codeweavers.com/services/ports/chromium/</a>
</p>

<p><a href="http://feeds.feedburner.com/~a/Metal3dorg?a=y24T4P"><img src="http://feeds.feedburner.com/~a/Metal3dorg?i=y24T4P" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/Metal3dorg?a=mSOMM"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=mSOMM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=AjrIm"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=AjrIm" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=NOEYM"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=NOEYM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=lLcAm"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=lLcAm" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Metal3dorg?a=4D65M"><img src="http://feeds.feedburner.com/~f/Metal3dorg?i=4D65M" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Metal3dorg/~4/426216948" height="1" width="1"/>]]></content:encoded><description>&lt;p&gt;
&lt;a href="http://fr.wikipedia.org/wiki/Google_Chrome" title="Chrome" class="wiki_exists"&gt;Chrome&lt;/a&gt; sur Linux, qu'attendions nous pour l'avoir ? Tant il est vrai que nous attendons une compilation native de &lt;a href="http://www.google.com/chrome/index.html?hl=fr" title="Chrome" class="wiki_exists"&gt;Chrome&lt;/a&gt;, &lt;a href="http://www.codeweavers.com/" title=" codeweavers" class="wiki_exists"&gt; codeweavers&lt;/a&gt;s'est penché sur le souci en passant par wine, et vous propose des rpm (Fedora, Centos, Mandriva, RedHat...), des ...&lt;/p&gt;</description><feedburner:origLink>http://www.metal3d.org/index.php/blog/ticket/2008/10/12/Chrome-sur-Linux?heading=Informatique</feedburner:origLink></item><item><title>Sauvegarde automatisé en Bash</title><link>http://feeds.feedburner.com/~r/Metal3dorg/~3/416680937/Sauvegarde-automatis%C3%A9-en-Bash</link><pubDate>Fri, 10 Oct 2008 05:39:04 -0500</pubDate><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[

<p>
On m'a demandé hier soir sur un canal IRC comment je procédais à ma sauvegarde sur Dedibox via le FTP distant mis à disposition. L'idée étant de transmettre sur le FTP distant des fichiers à sauvegarder et ce régulièrement...
</p>

<p>
Il existe des programmes de sauvegardes assez complets à paramétrer et configurer, mais étant donnée le peu de répertoire que je cherche à sauver, je ne voyais pas trop l'intérêt dans mon cas. Un simple script bash bien bricolé peut suffir, et c'est ce que je vais vous montrer.
</p>

<p>
Nous allons créer un petit script bash qui va créer une archive de nos données à sauvegarder (www et un dump Mysql), puis se connecte au FTP et envoit les fichiers. L'automatisation des sauvegardes de fichier n'est pas le plus compliqué, là où on commence à se poser des questions c'est le moment où il faut se connecter au FTP, s'authentifier et envoyer les fichiers... 
</p>

<p>
Voilà donc la solution que j'ai trouvé. Elle n'est pas parfaite, mais elle a le mérite de fonctionner. 
</p>

<a name="Archivage-des-fichiers"></a><h3>Archivage des fichiers</h3>

<p>
Commençons par le début, l'idée est de faire un .tar, ou tar.gz ou tag.bz2 (appelé tarball) de nos répertoires à sauver. Pour <code>/var/www</code> nous ferons, dans notre script, quelque chose du genre:
</p>

<div class="wiki_code"><div class="bash" style="font-family: monospace;"><br />
<span style="color: #808080; font-style: italic;">#on crée un répertoire de sauvegarde temporaire</span><br />
mkdir -p /tmp/save_dir<br />
<span style="color: #808080; font-style: italic;">#on entre dedans</span><br />
<span style="color: #000066;">cd</span> /tmp/savedir<br />
<br />
<span style="color: #808080; font-style: italic;">#puis on archive nos données</span><br />
tar cf www.tar /var/www<br />
<span style="color: #808080; font-style: italic;">#si nous voulions le compresser en gz (plus lent):</span><br />
<span style="color: #808080; font-style: italic;">#tar cfz www.tar.gz /var/www</span><br />
<span style="color: #808080; font-style: italic;">#ou en bz2 (encore plus compressé, mais encore plus lent)</span><br />
<span style="color: #808080; font-style: italic;">#tar cfj www.tar.bz2 /var/www</span><br />
<br />
&nbsp;</div></div>

<p>
L'option "cf" veut dire "<strong>c</strong>ompress <em>in</em> <strong>f</strong>ile". L'option "z" signifie  "gzip", et "j" signifie "bz2". C'est dans la page de man de ma commande <code>tar</code> que vous pouvez trouver ces informations.
</p>

<p>
Cela crée donc une archive de notre répertoire /var/www. 
</p>

<a name="Dump-de-MySQL"></a><h3>Dump de MySQL</h3>

<p>
Passons au dump mysql, une commande permet de créer une archive des données au format SQL: mysqldump.
</p>

<p>
Remplacez user par votre nom d'utilisateur mysql qui a le plus de droits, et donnez le mot de passe à la place de password:
</p>

<div class="wiki_code"><div style="font-family: monospace;"><br />
mysqldump -u user -p password<br />
&nbsp;</div></div>

<p>
On peut redirriger la sortie dans un fichier afin de sauvegarder tout ça:
</p>

<div class="wiki_code"><div style="font-family: monospace;"><br />
mysqldump -u user -p password > /tmp/savedir/mysqldump.sql<br />
&nbsp;</div></div>

<p>
Sauf que voilà... j'ai pas mal de bases de données et je préfèrerai les séparer à raison de un fichier SQL par base. Donc, par exemple, si j'ai une base "Foo" je devrai faire:
</p>

<div class="wiki_code"><div style="font-family: monospace;"><br />
mysqldump -u user -p password Foo > /tmp/savedir/mysqldump.Foo.sql<br />
&nbsp;</div></div>

<p>
Sauf que je ne veux pas m'amuser à changer mon script de sauvegarde chaque fois que je crée ou que je supprime une base... Il faut donc automatiser aussi la récupération des noms de base de données et envoyer la commande mysqldump pour chacune d'elle. C'est en fait plus simple que vous ne le pensez.
</p>

<p>
Mysql vous afficher les noms de bases de données via la commande "show databases;", il suffit de faire ceci pour s'en rendre compte:
</p>

<div class="wiki_code"><div style="font-family: monospace;"><br />
echo "show databases;" | mysql-u user -p password<br />
Database<br />
Foo<br />
Bar<br />
Baz<br />
&nbsp;</div></div>

<p>
Aïe... zut... j'ai "Database" qui apparait mais c'est en fait le nom de la colonne qui apparait pour ma demande... "Database" n'est pas une base... et bien on va la supprimer de la sortie avec <code>sed</code>:
</p>

<div class="wiki_code"><div style="font-family: monospace;"><br />
echo "show databases;" | mysql-u user -p password | sed "s/Database//"<br />
<br />
Foo<br />
Bar<br />
Baz<br />
&nbsp;</div></div>

<p>
Beaucoup mieux! Bon, pour chaque élement de la liste on va sauver notre base dans un fichier...
</p>

<div class="wiki_code"><div class="bash" style="font-family: monospace;"><br />
<span style="color: #808080; font-style: italic;">#je crée un répertoire pour mes bases et j'y entre</span><br />
mkdir -p /tmp/save_dir/dbs<br />
<span style="color: #000066;">cd</span> /tmp/save_dir/dbs<br />
<br />
<span style="color: #808080; font-style: italic;">#je récupère la liste:</span><br />
<span style="color: #0000ff;">DBS=</span>`<span style="color: #000066;">echo</span> <span style="color: #ff0000;">"show databases;"</span> | mysql-u <user> -p <password> | sed <span style="color: #ff0000;">"s/Database//"</span>`<br />
<span style="color: #b1b100;">for</span> db <span style="color: #b1b100;">in</span> <span style="color: #0000ff;">$DBS</span><br />
<span style="color: #b1b100;">do</span><br />
&nbsp; &nbsp; &nbsp;mysqldump -u user -p password <span style="color: #0000ff;">$db</span> > <span style="color: #0000ff;">$db</span>.sql<br />
<span style="color: #b1b100;">done</span><br />
&nbsp;</div></div>

<p>
Reste à compresser le répertoire:
</p>

<div class="wiki_code"><div class="bash" style="font-family: monospace;"><br />
<span style="color: #808080; font-style: italic;">#on remonte d'un cran dans les répertoires:</span><br />
<span style="color: #000066;">cd</span> ..<br />
<span style="color: #808080; font-style: italic;">#ou alors directment</span><br />
<span style="color: #808080; font-style: italic;">#cd /tmp/save_dir</span><br />
<br />
<span style="color: #808080; font-style: italic;">#on compresse</span><br />
tar cf dbs.tar dbs<br />
<span style="color: #808080; font-style: italic;">#ou en tar.gz</span><br />
<span style="color: #808080; font-style: italic;">#tar cfz dbs.tar.gz dbs</span><br />
<span style="color: #808080; font-style: italic;">#ou en bz2</span><br />
<span style="color: #808080; font-style: italic;">#tar cfj dbs.tar.gz dbs</span><br />
&nbsp;</div></div>

<a name="Envoit-au-FTP"></a><h3>Envoit au FTP</h3>

<p>
Voilà, en ce qui concerne la récupération des données et leur archivage, c'est bon... Reste à nous connecter au FTP, s'authentifier, puis envoyer les données. Il va falloir user d'une <em>astuce</em> pour envoyer les commandes ftp. On va imaginer qu'on utilise le FTP de Dedibox, adaptez cela à votre guise pour d'autres FTP.
</p>

<p>
Normalement, en mode "interactif", nous devrions faire, :
</p>

<div class="wiki_code"><div style="font-family: monospace;"><br />
[root@sd-XXXXX ~]# ftp dedibackup.dedibox.fr<br />
Connected to dedibackup2.dedibox.fr.<br />
220- <br />
Je backup ... <br />
&nbsp; __&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _&nbsp; &nbsp;<br />
&nbsp;/&nbsp; )&nbsp; _&nbsp; _/&nbsp; '&nbsp; /&nbsp; _&nbsp; _&nbsp; /&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_)&nbsp; <br />
/(_/&nbsp; (- (/&nbsp; /&nbsp; () (/ (&nbsp; /( (/&nbsp; /)&nbsp; &nbsp;/__&nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;... donc je suis<br />
&nbsp;<br />
Espace disque&nbsp; : 40To&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
En cas de difficulte de connexion, contactez<br />
l'assistance technique Dedibox<br />
&nbsp;<br />
RAPPEL : Les uploads ne sont pas autorises<br />
depuis une adresse IP externe au reseau Dedibox.<br />
&nbsp;<br />
220 Bienvenue sur Dedibackup 2 - Identifiez-vous<br />
530 login first<br />
530 login first<br />
KERBEROS_V4 rejected as an authentication type<br />
&nbsp;</div></div>

<p>
Arrrive alors l'invite de commande FTP, on nous demande un  login (ici par exemple "sd-XXXX") et un mot de passe à taper quand on nous le demande:
</p>

<div class="wiki_code"><div style="font-family: monospace;"><br />
Name (dedibackup.dedibox.fr:root): sd-XXXX<br />
331 Mot de passe obligatoire<br />
Password: (je tape mon mot de passe)<br />
230 Identifiants Dedibackup acceptes<br />
Remote system type is UNIX.<br />
Using binary mode to transfer files.<br />
ftp> <br />
&nbsp;</div></div>

<p>
Tout est interactif... automatiser cela parait compliqué... en fait... non. Il suffit d'envoyer le flux de commande à la volée. On la refait... d'abord sortez de l'invite ftp en tapant <code>quit</code>
</p>

<div class="wiki_code"><div style="font-family: monospace;"><br />
ftp> quit<br />
221 A bientot<br />
[root@sd-XXXXX ~]# <br />
&nbsp;</div></div>

<p>
Regardez:
</p>

<div class="wiki_code"><div style="font-family: monospace;"><br />
# ftp -i -n dedibackup.dedibox.fr << EOF<br />
quote user sd-XXXX<br />
quote pass MON_MOT_DE_PASSE<br />
quit<br />
EOF<br />
&nbsp;</div></div>

<p>
Ok, on a quitté après authentification et on revient à l'invite de commande du Shell. Les option "-i" et "-n" font respectivement "couper le mode interactif" et "utilise l'auto-login".
</p>

<p>
Donc, si nous somme dans le répertoire de sauvegarde, on pourrait envoyer le dump MySQL pour tester:
</p>

<div class="wiki_code"><div style="font-family: monospace;"><br />
# ftp -i -n dedibackup.dedibox.fr << EOF<br />
quote user sd-XXXX<br />
quote pass MON_MOT_DE_PASSE<br />
put dbs.tar<br />
quit<br />
EOF<br />
&nbsp;</div></div>

<p>
Après un petit moment, le fichier se retrouve sur le ftp... 
</p>

<a name="Premier-script-simple"></a><h3>Premier script simple</h3>

<p>
Bien. On récapitule:
</p>
<ul>
<li> on sait archiver notre répertoire /var/www</li>
<li> on sait dumper les bases mysql </li>
<li> on sait se connecter au FTP et envoyer un fichier.</li>
</ul>


<p>
Il serait bon de ne pas écraser nos sauvegardes, et donc de garder une sauvegarde par jour. On va donc "dater" nos fichiers, par exemple en leur donnant un nom qui contient la date.
</p>

<p>
Allons-y, on regarde ce que propose Linux pour afficher une date.:
</p>

<div class="wiki_code"><div style="font-family: monospace;"><br />
# date<br />
jeu oct&nbsp; 9 23:36:59 CEST 2008<br />
&nbsp;</div></div>

<p>
Un peu long comme nom, et puis avec les espaces on va avoir du mal à "échapper" tout ça... sachant que nous utilisons une sauvegarde par jour, l'heure ne nous importe pas... et il serait préférable d'avoir une date au forma "Ymd" (Anneée sur 4 chiffre, mois sur deux chiffre et jour sur deux chiffre). Donc d'avoir en résultat pour le 9 octobre 2008: "20081009".
</p>

<p>
Un petit tour dans la page de <code>man</code> de la commande <code>date</code> et on trouve ce que nous cherchons.
</p>

<div class="wiki_code"><div style="font-family: monospace;"><br />
# date +"%Y%m%d"<br />
20081009<br />
&nbsp;</div></div>

<p>
J'ai donc ce qu'il me faut pour commencer un bon script... <strong>attention la suite n'est pas le script définitif, allez jusqu'au bout de l'article !!!</strong>
</p>

<p>
Voilà, donc un premier scrip qui peut marcher:
</p>

<div class="wiki_code"><div class="bash" style="font-family: monospace;"><br />
<span style="color: #808080; font-style: italic;">#!/bin/bash</span><br />
<span style="color: #0000ff;">DATE=</span>`date +<span style="color: #ff0000;">"%Y%m%d"</span>`<br />
<span style="color: #0000ff;">MYSQLUSER=</span><span style="color: #ff0000;">"myuser"</span><br />
<span style="color: #0000ff;">MYSQLPASS=</span><span style="color: #ff0000;">"mypass"</span><br />
<span style="color: #0000ff;">MYSQLOPTS=</span><span style="color: #ff0000;">"-u $MYSQLUSER -p $MYSQLPASS"</span><br />
<span style="color: #0000ff;">FTPSERVER=</span><span style="color: #ff0000;">"dedibackup.dedibox.fr"</span><br />
<span style="color: #0000ff;">FTPUSER=</span><span style="color: #ff0000;">"sd-XXXXX"</span><br />
<span style="color: #0000ff;">FTPPASSWD=</span><span style="color: #ff0000;">"MON_MOT_DE_PASSE"</span><br />
<br />
<br />
<span style="color: #808080; font-style: italic;">#cette commande crée les répertoire save_dir et mysqldump</span><br />
mkdir -p /tmp/save_dir/mysqldump<br />
<br />
tar cf www.<span style="color: #0000ff;">$DATE</spa