<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xml:lang="fr">

  <title type="html">Humus numericus - Linux, Debian, etc.</title>
  <subtitle type="html"></subtitle>
  <link href="https://blog.nozav.org/feed/category/Linux-debian/atom" rel="self" type="application/atom+xml"/>
  <link href="https://blog.nozav.org/" rel="alternate" type="text/html"
  title=""/>
  <updated>2019-05-09T20:00:29+02:00</updated>
  <author>
    <name></name>
  </author>
  <id>urn:md5:c2531a830c9d2a52c5500061b4d5077e</id>
  <generator uri="http://www.dotclear.org/">Dotclear</generator>

  
  <entry>
    <title>How to limit Crashplan memory usage</title>
    <link href="https://blog.nozav.org/post/2011/09/14/How-to-limit-Crashplan-memory-usage" rel="alternate" type="text/html"
    title="How to limit Crashplan memory usage" />
    <id>urn:md5:8dbabdfa6be9a3cf2b2f550641f7e310</id>
    <published>2011-09-14T19:50:00+02:00</published>
          <updated>2011-09-14T21:51:19+02:00</updated>
            <author><name>Juba</name></author>
        <dc:subject>Linux, Debian, etc.</dc:subject>
        
    <content type="html">    
             &lt;p&gt;One of the downside of the &lt;a href=&quot;http://www.crashplan.com&quot;&gt;CrashPlan&lt;/a&gt; backup software is that, as a java application, it can use quite a lot of memory. &lt;/p&gt; &lt;p&gt; There's a simple way to limit this amount of memory, though. You just have to go into your Crashplan installation folder, (&lt;code&gt;/opt/crashplan/&lt;/code&gt; for me) and then edit the &lt;code&gt;bin/run.conf&lt;/code&gt; file from : &lt;/p&gt;    &lt;pre class=&quot;example&quot;&gt;SRV_JAVA_OPTS=&quot;-Dfile.encoding=UTF-8 -Dapp=CrashPlanService -DappBaseName=CrashPlan -Xms20m -Xmx512m -Djava.net.preferIPv4Stack=true -Dsun.net.inetaddr.ttl=300 -Dnetworkaddress.cache.ttl=300 -Dsun.net.inetaddr.negative.ttl=0 -Dnetworkaddress.cache.negative.ttl=0&quot;
GUI_JAVA_OPTS=&quot;-Dfile.encoding=UTF-8 -Dapp=CrashPlanDesktop -DappBaseName=CrashPlan -Xms20m -Xmx512m -Djava.net.preferIPv4Stack=true -Dsun.net.inetaddr.ttl=300 -Dnetworkaddress.cache.ttl=300 -Dsun.net.inetaddr.negative.ttl=0 -Dnetworkaddress.cache.negative.ttl=0&quot;
&lt;/pre&gt;    &lt;p&gt; Then change the &lt;code&gt;-Xmx512m&lt;/code&gt; argument on the first line (which is the maximum amount of memory the Crashplan service can use) to a lower value, for example : &lt;/p&gt;    &lt;pre class=&quot;example&quot;&gt;SRV_JAVA_OPTS=&quot;-Dfile.encoding=UTF-8 -Dapp=CrashPlanService -DappBaseName=CrashPlan -Xms20m -Xmx100m -Djava.net.preferIPv4Stack=true -Dsun.net.inetaddr.ttl=300 -Dnetworkaddress.cache.ttl=300 -Dsun.net.inetaddr.negative.ttl=0 -Dnetworkaddress.cache.negative.ttl=0&quot;
GUI_JAVA_OPTS=&quot;-Dfile.encoding=UTF-8 -Dapp=CrashPlanDesktop -DappBaseName=CrashPlan -Xms20m -Xmx512m -Djava.net.preferIPv4Stack=true -Dsun.net.inetaddr.ttl=300 -Dnetworkaddress.cache.ttl=300 -Dsun.net.inetaddr.negative.ttl=0 -Dnetworkaddress.cache.negative.ttl=0&quot;
&lt;/pre&gt;    &lt;p&gt; And then restart the Crashplan engine. &lt;/p&gt;</content>

    


      </entry>
  
  <entry>
    <title>Utiliser les styles KDE pour les applis KDE/Qt sous Gnome</title>
    <link href="https://blog.nozav.org/post/2011/07/29/Utiliser-les-styles-KDE-pour-les-applis-KDE/Qt-sous-Gnome" rel="alternate" type="text/html"
    title="Utiliser les styles KDE pour les applis KDE/Qt sous Gnome" />
    <id>urn:md5:d8ce798d9614a04c633bf2399503bce4</id>
    <published>2011-07-29T10:24:00+02:00</published>
          <updated>2011-07-29T12:22:39+02:00</updated>
            <author><name>Juba</name></author>
        <dc:subject>Linux, Debian, etc.</dc:subject>
        
    <content type="html">    &lt;p&gt;Depuis une récente mise à jour de Debian, mes applications KDE/Qt sous Gnome se sont mises à utiliser un thème le plus proche possible de mon thème GTK en usage. C'est bien pour l'uniformisation, mais le résultat était très moche.&lt;/p&gt;&lt;p&gt;J'ai donc essayé de remettre en place le thème &lt;em&gt;Oxygen &lt;/em&gt;utilisé jusque-là, mais celui-ci n'apparaissait pas dans la liste des styles possibles de &lt;code&gt;qtconfig.&lt;/code&gt;&lt;/p&gt;&lt;p&gt;La solution se trouve sur &lt;a href=&quot;https://wiki.archlinux.org/index.php/KDE#KDE_and_Qt_programs_look_bad_when_in_a_different_window_manager&quot;&gt;la page dédiée à KDE&lt;/a&gt; du wiki d'ArchLinux : depuis la version 4.6.1 de KDE il faut désormais lui indiquer où se trouvent les styles. Pour cela, une petite ligne supplémentaire dans son &lt;code&gt;~/.bashrc &lt;/code&gt;suffit :&lt;/p&gt;&lt;pre&gt;export QT_PLUGIN_PATH=$HOME/.kde4/lib/kde4/plugins/:/usr/lib/kde4/plugins/&lt;/pre&gt;&lt;p&gt;Il n'y a plus qu'à sélectionner le thème de son choix dans &lt;code&gt;qtconfig&lt;/code&gt; et normalement ça roule.&lt;/p&gt;</content>

    


      </entry>
  
  <entry>
    <title>Accélérer l'exécution de dpkg, apt-get ou aptitude</title>
    <link href="https://blog.nozav.org/post/2011/06/29/Acc%C3%A9l%C3%A9rer-l-ex%C3%A9cution-de-dpkg%2C-apt-get-ou-aptitude" rel="alternate" type="text/html"
    title="Accélérer l'exécution de dpkg, apt-get ou aptitude" />
    <id>urn:md5:ccea2c7a157286ac8540bf86780354c1</id>
    <published>2011-06-29T16:42:00+02:00</published>
          <updated>2011-06-29T18:42:58+02:00</updated>
            <author><name>Juba</name></author>
        <dc:subject>Linux, Debian, etc.</dc:subject>
        
    <content type="html">    
             &lt;p&gt;Petit conseil si votre &lt;code&gt;dpkg&lt;/code&gt; rame, si votre &lt;code&gt;apt-get&lt;/code&gt; se traîne comme une vieille chaussette ou si votre &lt;code&gt;aptitude&lt;/code&gt; a le dynamisme d'une histoire de &lt;i&gt;Petit ours brun&lt;/i&gt;, et si ces ralentissements se produisent lorsque ces programmes lisent leur base de données. &lt;/p&gt; &lt;p&gt; Après quelques recherches sur le Web, il semble que ce ralentissement provient des &lt;i&gt;très&lt;/i&gt; nombreux fichiers présents dans &lt;code&gt;/var/lib/dpkg/info&lt;/code&gt; et que &lt;code&gt;dpkg&lt;/code&gt; et consorts doivent lire de temps en temps. Avec le temps ces fichiers se fragmentent (ils se situent à des endroits dispersés sur votre disque dur) et leur lecture prend de plus en plus de temps. &lt;/p&gt; &lt;p&gt; Une solution peut être d'utiliser le script suivant, donné par &lt;i&gt;gmargo&lt;/i&gt; sur &lt;a href=&quot;http://ubuntuforums.org/showpost.php?p=8982829&amp;amp;postcount=11&quot;&gt;un forum ubuntu&lt;/a&gt;. &lt;/p&gt; &lt;p&gt; &lt;b&gt;Attention&lt;/b&gt;, j'ai utilisé ce script, je n'ai pas eu de problème et j'ai pu constater une amélioration significative des performances de &lt;code&gt;dpkg&lt;/code&gt; et &lt;code&gt;apt&lt;/code&gt;, &lt;b&gt;mais&lt;/b&gt; je ne peux en rien vous garantir qu'il ne va pas corrompre votre base de données de paquets ou autres choses désagréables. Donc utilisez-le à vos risques et périls et faites toutes les sauvegardes nécessaires avant &lt;img src=&quot;/themes/default/smilies/wink.png&quot; alt=&quot;;-)&quot; class=&quot;smiley&quot; /&gt; &lt;/p&gt; &lt;p&gt; Bref, voilà le script : &lt;/p&gt;    &lt;pre class=&quot;src src-sh&quot;&gt;&lt;span class=&quot;org-comment-delimiter&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;org-comment&quot;&gt;!/bin/&lt;/span&gt;&lt;span class=&quot;org-keyword&quot;&gt;sh&lt;/span&gt;&lt;span class=&quot;org-comment&quot;&gt;
&lt;/span&gt;
&lt;span class=&quot;org-comment-delimiter&quot;&gt;# &lt;/span&gt;&lt;span class=&quot;org-comment&quot;&gt;Script to reorder the /var/lib/dpkg/info directory to speed up &quot;dpkg -S&quot;.
&lt;/span&gt;&lt;span class=&quot;org-comment-delimiter&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;org-comment&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;org-comment-delimiter&quot;&gt;# &lt;/span&gt;&lt;span class=&quot;org-comment&quot;&gt;Original by Peter Cordes, from Ubuntu Forums thread
&lt;/span&gt;&lt;span class=&quot;org-comment-delimiter&quot;&gt;# &lt;/span&gt;&lt;span class=&quot;org-comment&quot;&gt;http://ubuntuforums.org/showthread.php?p=8982470
&lt;/span&gt;&lt;span class=&quot;org-comment-delimiter&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;org-comment&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;org-comment-delimiter&quot;&gt;# &lt;/span&gt;&lt;span class=&quot;org-comment&quot;&gt;&quot;Safer&quot; modified version by gmargo 2009-03-17
&lt;/span&gt;
&lt;span class=&quot;org-comment-delimiter&quot;&gt;# &lt;/span&gt;&lt;span class=&quot;org-comment&quot;&gt;Original Code:
&lt;/span&gt;&lt;span class=&quot;org-comment-delimiter&quot;&gt;# &lt;/span&gt;&lt;span class=&quot;org-comment&quot;&gt;cd
&lt;/span&gt;&lt;span class=&quot;org-comment-delimiter&quot;&gt;# &lt;/span&gt;&lt;span class=&quot;org-comment&quot;&gt;strace -efile -o dpkg.tr dpkg -S /bin/ls
&lt;/span&gt;&lt;span class=&quot;org-comment-delimiter&quot;&gt;# &lt;/span&gt;&lt;span class=&quot;org-comment&quot;&gt;cd /var/lib/dpkg
&lt;/span&gt;&lt;span class=&quot;org-comment-delimiter&quot;&gt;# &lt;/span&gt;&lt;span class=&quot;org-comment&quot;&gt;mkdir info.new
&lt;/span&gt;&lt;span class=&quot;org-comment-delimiter&quot;&gt;# &lt;/span&gt;&lt;span class=&quot;org-comment&quot;&gt;grep '^open' ~/dpkg.tr | sed -r '/dpkg\/info/sX.*&quot;(.*)&quot;.*X\1Xp' -n | xargs sudo cp -a -t info.new 
&lt;/span&gt;&lt;span class=&quot;org-comment-delimiter&quot;&gt;# &lt;/span&gt;&lt;span class=&quot;org-comment&quot;&gt;# cmd line length limits prevent info/*.  I could have used rsync -au info/ info.new
&lt;/span&gt;&lt;span class=&quot;org-comment-delimiter&quot;&gt;# &lt;/span&gt;&lt;span class=&quot;org-comment&quot;&gt;sudo cp -iau info/[a-k]* info.new/
&lt;/span&gt;&lt;span class=&quot;org-comment-delimiter&quot;&gt;# &lt;/span&gt;&lt;span class=&quot;org-comment&quot;&gt;sudo cp -iau info/[l]* info.new/
&lt;/span&gt;&lt;span class=&quot;org-comment-delimiter&quot;&gt;# &lt;/span&gt;&lt;span class=&quot;org-comment&quot;&gt;sudo cp -iau info/[m-z]* info.new/
&lt;/span&gt;&lt;span class=&quot;org-comment-delimiter&quot;&gt;# &lt;/span&gt;&lt;span class=&quot;org-comment&quot;&gt;diff -ur info info.new/
&lt;/span&gt;&lt;span class=&quot;org-comment-delimiter&quot;&gt;# &lt;/span&gt;&lt;span class=&quot;org-comment&quot;&gt;sudo rm -rf info
&lt;/span&gt;&lt;span class=&quot;org-comment-delimiter&quot;&gt;# &lt;/span&gt;&lt;span class=&quot;org-comment&quot;&gt;sudo mv info.new info
&lt;/span&gt;&lt;span class=&quot;org-comment-delimiter&quot;&gt;# &lt;/span&gt;&lt;span class=&quot;org-comment&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;org-comment-delimiter&quot;&gt;# &lt;/span&gt;&lt;span class=&quot;org-comment&quot;&gt;sync
&lt;/span&gt;&lt;span class=&quot;org-comment-delimiter&quot;&gt;# &lt;/span&gt;&lt;span class=&quot;org-comment&quot;&gt;echo 3 | sudo tee /proc/sys/vm/drop_caches
&lt;/span&gt;&lt;span class=&quot;org-comment-delimiter&quot;&gt;# &lt;/span&gt;&lt;span class=&quot;org-comment&quot;&gt;time dpkg -S /bin/ls
&lt;/span&gt;

&lt;span class=&quot;org-comment-delimiter&quot;&gt;# &lt;/span&gt;&lt;span class=&quot;org-comment&quot;&gt;Modified code:
&lt;/span&gt;
&lt;span class=&quot;org-variable-name&quot;&gt;ORIGINAL&lt;/span&gt;=/var/lib/dpkg/info
&lt;span class=&quot;org-variable-name&quot;&gt;NEW&lt;/span&gt;=/var/lib/dpkg/info.new
&lt;span class=&quot;org-variable-name&quot;&gt;BACKUP&lt;/span&gt;=/var/lib/dpkg/info.saved.$(date &lt;span class=&quot;org-string&quot;&gt;&quot;+%Y%m%d_%H%M%S&quot;&lt;/span&gt;)

&lt;span class=&quot;org-comment-delimiter&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;org-comment&quot;&gt;------------------------------
&lt;/span&gt;&lt;span class=&quot;org-comment-delimiter&quot;&gt;# &lt;/span&gt;&lt;span class=&quot;org-comment&quot;&gt;You must be root or use sudo.
&lt;/span&gt;&lt;span class=&quot;org-comment-delimiter&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;org-comment&quot;&gt;------------------------------
&lt;/span&gt;&lt;span class=&quot;org-keyword&quot;&gt;if&lt;/span&gt; [ &lt;span class=&quot;org-sh-quoted-exec&quot;&gt;`id -u`&lt;/span&gt; -ne 0 ] ; &lt;span class=&quot;org-keyword&quot;&gt;then&lt;/span&gt;
    &lt;span class=&quot;org-builtin&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;org-string&quot;&gt;&quot;ERROR: You must be root for this to work!&quot;&lt;/span&gt;
    &lt;span class=&quot;org-keyword&quot;&gt;exit&lt;/span&gt; 1
&lt;span class=&quot;org-keyword&quot;&gt;fi&lt;/span&gt;

&lt;span class=&quot;org-keyword&quot;&gt;if&lt;/span&gt; [ -e &lt;span class=&quot;org-string&quot;&gt;&quot;$NEW&quot;&lt;/span&gt; ]; &lt;span class=&quot;org-keyword&quot;&gt;then&lt;/span&gt;
    &lt;span class=&quot;org-builtin&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;org-string&quot;&gt;&quot;Remove $NEW directory first.&quot;&lt;/span&gt;
    &lt;span class=&quot;org-keyword&quot;&gt;exit&lt;/span&gt; 1
&lt;span class=&quot;org-keyword&quot;&gt;fi&lt;/span&gt;

&lt;span class=&quot;org-builtin&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;org-string&quot;&gt;&quot;Time to perform search for package that provides ls, before optimization:&quot;&lt;/span&gt;
sync
&lt;span class=&quot;org-builtin&quot;&gt;echo&lt;/span&gt; 3 &amp;gt; /proc/sys/vm/drop_caches
time dpkg -S /bin/ls

mkdir &lt;span class=&quot;org-string&quot;&gt;&quot;$NEW&quot;&lt;/span&gt;
&lt;span class=&quot;org-variable-name&quot;&gt;rc&lt;/span&gt;=$&lt;span class=&quot;org-variable-name&quot;&gt;?&lt;/span&gt; ; &lt;span class=&quot;org-keyword&quot;&gt;if&lt;/span&gt; [ $&lt;span class=&quot;org-variable-name&quot;&gt;rc&lt;/span&gt; -ne 0 ] ; &lt;span class=&quot;org-keyword&quot;&gt;then &lt;/span&gt;&lt;span class=&quot;org-builtin&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;org-string&quot;&gt;&quot;ERROR: mkdir $NEW failed rc=$rc&quot;&lt;/span&gt; ; &lt;span class=&quot;org-keyword&quot;&gt;exit&lt;/span&gt; 2 ; &lt;span class=&quot;org-keyword&quot;&gt;fi&lt;/span&gt;
chmod 755 &lt;span class=&quot;org-string&quot;&gt;&quot;$NEW&quot;&lt;/span&gt;

&lt;span class=&quot;org-builtin&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;org-string&quot;&gt;&quot;Optimize:&quot;&lt;/span&gt;
strace -efile -o /tmp/dpkg.tr.$&lt;span class=&quot;org-variable-name&quot;&gt;$&lt;/span&gt; dpkg -S /bin/ls &amp;gt;/dev/null
grep &lt;span class=&quot;org-string&quot;&gt;'^open'&lt;/span&gt; /tmp/dpkg.tr.$&lt;span class=&quot;org-variable-name&quot;&gt;$&lt;/span&gt; | sed -r &lt;span class=&quot;org-string&quot;&gt;'/dpkg\/info/sX.*&quot;(.*)&quot;.*X\1Xp'&lt;/span&gt; -n | xargs cp -p -t &lt;span class=&quot;org-string&quot;&gt;&quot;$NEW&quot;&lt;/span&gt;
find /var/lib/dpkg/info -type f -print | xargs cp -pu -t &lt;span class=&quot;org-string&quot;&gt;&quot;$NEW&quot;&lt;/span&gt;
rm -f /tmp/dpkg.tr.$&lt;span class=&quot;org-variable-name&quot;&gt;$&lt;/span&gt;

&lt;span class=&quot;org-comment-delimiter&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;org-comment&quot;&gt;--------------------------------------------------
&lt;/span&gt;&lt;span class=&quot;org-comment-delimiter&quot;&gt;# &lt;/span&gt;&lt;span class=&quot;org-comment&quot;&gt;Rename old info directory.
&lt;/span&gt;&lt;span class=&quot;org-comment-delimiter&quot;&gt;# &lt;/span&gt;&lt;span class=&quot;org-comment&quot;&gt;DO NOT DELETE UNTIL YOU ARE CONVINCED dpkg WORKS.
&lt;/span&gt;&lt;span class=&quot;org-comment-delimiter&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;org-comment&quot;&gt;--------------------------------------------------
&lt;/span&gt;&lt;span class=&quot;org-builtin&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;org-string&quot;&gt;&quot;Create backup:&quot;&lt;/span&gt;
&lt;span class=&quot;org-keyword&quot;&gt;if&lt;/span&gt; [ -e &lt;span class=&quot;org-string&quot;&gt;&quot;$BACKUP&quot;&lt;/span&gt; ]; &lt;span class=&quot;org-keyword&quot;&gt;then&lt;/span&gt;
    &lt;span class=&quot;org-builtin&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;org-string&quot;&gt;&quot;Backup directory $BACKUP already exists.&quot;&lt;/span&gt;
    &lt;span class=&quot;org-keyword&quot;&gt;exit&lt;/span&gt; 1
&lt;span class=&quot;org-keyword&quot;&gt;fi&lt;/span&gt;
mv &lt;span class=&quot;org-string&quot;&gt;&quot;$ORIGINAL&quot;&lt;/span&gt; &lt;span class=&quot;org-string&quot;&gt;&quot;$BACKUP&quot;&lt;/span&gt;
&lt;span class=&quot;org-variable-name&quot;&gt;rc&lt;/span&gt;=$&lt;span class=&quot;org-variable-name&quot;&gt;?&lt;/span&gt; ; &lt;span class=&quot;org-keyword&quot;&gt;if&lt;/span&gt; [ $&lt;span class=&quot;org-variable-name&quot;&gt;rc&lt;/span&gt; -ne 0 ] ; &lt;span class=&quot;org-keyword&quot;&gt;then &lt;/span&gt;&lt;span class=&quot;org-builtin&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;org-string&quot;&gt;&quot;ERROR: mv $ORIGINAL $BACKUP failed rc=$rc&quot;&lt;/span&gt; ; &lt;span class=&quot;org-keyword&quot;&gt;exit&lt;/span&gt; 2 ; &lt;span class=&quot;org-keyword&quot;&gt;fi&lt;/span&gt;

mv &lt;span class=&quot;org-string&quot;&gt;&quot;$NEW&quot;&lt;/span&gt; &lt;span class=&quot;org-string&quot;&gt;&quot;$ORIGINAL&quot;&lt;/span&gt;
&lt;span class=&quot;org-variable-name&quot;&gt;rc&lt;/span&gt;=$&lt;span class=&quot;org-variable-name&quot;&gt;?&lt;/span&gt; ; &lt;span class=&quot;org-keyword&quot;&gt;if&lt;/span&gt; [ $&lt;span class=&quot;org-variable-name&quot;&gt;rc&lt;/span&gt; -ne 0 ] ; &lt;span class=&quot;org-keyword&quot;&gt;then &lt;/span&gt;&lt;span class=&quot;org-builtin&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;org-string&quot;&gt;&quot;ERROR: mv $NEW $ORIGINAL failed rc=$rc&quot;&lt;/span&gt; ; &lt;span class=&quot;org-keyword&quot;&gt;exit&lt;/span&gt; 2 ; &lt;span class=&quot;org-keyword&quot;&gt;fi&lt;/span&gt;

&lt;span class=&quot;org-builtin&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;org-string&quot;&gt;&quot;Dpkg search time after optimization:&quot;&lt;/span&gt;
sync
&lt;span class=&quot;org-builtin&quot;&gt;echo&lt;/span&gt; 3 &amp;gt; /proc/sys/vm/drop_caches
time dpkg -S /bin/ls

&lt;/pre&gt;   </content>

    


      </entry>
  
  <entry>
    <title>Envoi de mail automatisé en cas d'erreur suite à un git pull</title>
    <link href="https://blog.nozav.org/post/2011/04/15/Envoi-de-mail-automatis%C3%A9-en-cas-d-erreur-suite-%C3%A0-un-git-pull" rel="alternate" type="text/html"
    title="Envoi de mail automatisé en cas d'erreur suite à un git pull" />
    <id>urn:md5:bd5c4711333f78aa1273d9cdbb0e1a68</id>
    <published>2011-04-15T14:10:00+02:00</published>
          <updated>2011-04-15T16:11:53+02:00</updated>
            <author><name>Juba</name></author>
        <dc:subject>Linux, Debian, etc.</dc:subject>
        
    <content type="html">    
             &lt;p&gt;J'utilise &lt;a href=&quot;http://git-scm.com/&quot;&gt;git&lt;/a&gt; pour différentes choses au quotidien, mais en particulier pour synchroniser divers fichiers entre différentes machines (fichiers de conf, fichiers org, etc.). &lt;/p&gt; &lt;p&gt; Pour cela j'ai un scipt shell très simple qui se lance à chaque démarrage ou extinction de la machine et qui effectue une série de &lt;code&gt;git pull&lt;/code&gt; / &lt;code&gt;git push&lt;/code&gt;. Un truc du genre : &lt;/p&gt;    &lt;pre class=&quot;src src-sh&quot;&gt;&lt;span class=&quot;org-builtin&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;org-string&quot;&gt;&quot;-&amp;gt; Syncing ~&quot;&lt;/span&gt;
&lt;span class=&quot;org-builtin&quot;&gt;cd&lt;/span&gt; /home/julien
git pull
git add .
git commit -a -m  &lt;span class=&quot;org-string&quot;&gt;&quot;Maj auto home&quot;&lt;/span&gt; 
git push 
&lt;/pre&gt;    &lt;p&gt; Le problème avec cette méthode est que je ne regarde pas sytématiquement la sortie de ce script, et que je peux donc passer à côté de messages d'erreur me signalant des conflits non résolus suite à un &lt;i&gt;merge&lt;/i&gt; automatique. Je cherchais donc un moyen d'être averti par mail si ce type d'erreur se produit. &lt;/p&gt; &lt;p&gt; Suite à une &lt;a href=&quot;http://stackoverflow.com/questions/5674640/how-to-make-git-send-an-email-in-case-of-unresolved-merge&quot;&gt;question sur StackOverflow&lt;/a&gt;, j'ai pu voir qu'il ne semble pas y avoir de &lt;a href=&quot;http://www.kernel.org/pub/software/scm/git/docs/githooks.html&quot;&gt;hook&lt;/a&gt; dans git pour ce type de cas de figure. Je me suis donc rabattu sur le code de retour de &lt;code&gt;git pull&lt;/code&gt;. &lt;/p&gt; &lt;p&gt; Ce qui donne en gros le code suivant : &lt;/p&gt;    &lt;pre class=&quot;src src-sh&quot;&gt;&lt;span class=&quot;org-builtin&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;org-string&quot;&gt;&quot;-&amp;gt; Syncing ~&quot;&lt;/span&gt;
&lt;span class=&quot;org-builtin&quot;&gt;cd&lt;/span&gt; /home/julien
git pull 2&amp;gt; /tmp/git_pull_output.txt
&lt;span class=&quot;org-keyword&quot;&gt;if&lt;/span&gt; [ $? != 0 ]
&lt;span class=&quot;org-keyword&quot;&gt;then&lt;/span&gt; mail -s &lt;span class=&quot;org-string&quot;&gt;&quot;[git] Git pull failed for home&quot;&lt;/span&gt; julien &amp;lt; /tmp/git_pull_output.txt 
&lt;span class=&quot;org-keyword&quot;&gt;fi&lt;/span&gt;
&lt;/pre&gt;    &lt;p&gt; Maintenant j'attends d'avoir un vrai conflit pour voir si ça marche… &lt;img src=&quot;/themes/default/smilies/smile.png&quot; alt=&quot;:-)&quot; class=&quot;smiley&quot; /&gt; &lt;/p&gt; </content>

    


      </entry>
  
  <entry>
    <title>Modifier la hauteur de la «addon bar» sous Firefox 4</title>
    <link href="https://blog.nozav.org/post/2011/01/17/Modifier-la-hauteur-de-la-addon-bar-sous-Firefox-4" rel="alternate" type="text/html"
    title="Modifier la hauteur de la «addon bar» sous Firefox 4" />
    <id>urn:md5:aa880a95cfa003fd9285eccf5f506a0f</id>
    <published>2011-01-17T08:41:00+01:00</published>
          <updated>2011-03-21T18:47:09+01:00</updated>
            <author><name>Juba</name></author>
        <dc:subject>Linux, Debian, etc.</dc:subject>
        
    <content type="html">    &lt;p&gt;Depuis la beta 8 de Firefox 4, la barre de statut a été remplacé par une «barre de modules» (&lt;em&gt;addon bar&lt;/em&gt;). L&amp;#8217;argument était de fournir un espace plus configurable avec possibilité d&amp;#8217;y placer n&amp;#8217;importe quel bouton ou widget. &lt;/p&gt;
&lt;p&gt; Un comportement qui m&amp;#8217;a dérangé avec cette nouveauté est l&amp;#8217;affichage de l&amp;#8217;url des liens survolés dans la barre d&amp;#8217;adresse à la place de la barre de statut&amp;#160;: je ne suis pas arrivé à m&amp;#8217;y faire, même au bout de plusieurs semaines. La solution s&amp;#8217;appelle &lt;em&gt;Status-4-evar&lt;/em&gt;, une extension permettant de retrouver le fonctionnement «classique» de la barre de statut&amp;#160;: &lt;/p&gt;
&lt;p&gt; &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/235283/&quot;&gt;https://addons.mozilla.org/en-US/firefox/addon/235283/&lt;/a&gt; &lt;/p&gt;
&lt;p&gt; Un autre petit problème était la hauteur de cette nouvelle barre, plus importante que précédemment, gâchant inutilement un espace vertical parfois précieux. Ceci peut se régler facilement en éditant son fichier &lt;code&gt;userChrome.css&lt;/code&gt; (celui-ci se trouve dans le répertoire &lt;code&gt;~/.mozilla/firefox/&amp;lt;blahblah&amp;gt;.default/chrome/&lt;/code&gt;) et en y ajoutant&amp;#160;: &lt;/p&gt;
&lt;pre class=&quot;src src-css&quot;&gt;&lt;span class=&quot;ATTRLIST-1&quot;&gt;&lt;span class=&quot;ATTRLIST&quot;&gt;#add&lt;/span&gt;&lt;/span&gt;on-bar {
&lt;span class=&quot;org-keyword&quot;&gt;padding:&lt;/span&gt; 1px &lt;span class=&quot;org-keyword&quot;&gt;!important&lt;/span&gt;;
&lt;span class=&quot;org-keyword&quot;&gt;height:&lt;/span&gt; 25px &lt;span class=&quot;org-keyword&quot;&gt;!important&lt;/span&gt;;
}
&lt;/pre&gt;</content>

    


      </entry>
  
  <entry>
    <title>Ce blog est désormais accessible en nozav.42 !</title>
    <link href="https://blog.nozav.org/post/2010/12/30/Ce-blog-est-d%C3%A9sormais-accessible-en-nozav.42-%21" rel="alternate" type="text/html"
    title="Ce blog est désormais accessible en nozav.42 !" />
    <id>urn:md5:5013e8901e327fe4e1f3fd3671bfcaee</id>
    <published>2010-12-30T00:23:00+01:00</published>
          <updated>2010-12-30T01:28:46+01:00</updated>
            <author><name>Juba</name></author>
        <dc:subject>Linux, Debian, etc.</dc:subject>
        <dc:subject>dns</dc:subject><dc:subject>sysadmin</dc:subject><dc:subject>web</dc:subject>
    <content type="html">    &lt;p&gt;Pour tester et soutenir &lt;a href=&quot;https://www.42registry.org/&quot;&gt;l&amp;#8217;expérience 42&lt;/a&gt;, ce blog est désormais accessible via l&amp;#8217;adresse&amp;#160;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://nozav.42/&quot; title=&quot;http://nozav.42/&quot;&gt;http://nozav.42/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&amp;#8230;si bien sûr votre système a été configuré pour résoudre ce nouveau TLD alternatif.&lt;/p&gt;


&lt;p&gt;Pour savoir comment faire (c&amp;#8217;est pas forcément trivial, le plus simple est sans doute d&amp;#8217;utiliser les DNS fournis par Geeknode), comprendre le projet, voire enregistrer votre propre nom de domaine en .42, c&amp;#8217;est là&amp;#160;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.42registry.org/&quot; title=&quot;https://www.42registry.org/&quot;&gt;https://www.42registry.org/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content>

    


      </entry>
  
  <entry>
    <title>Console graphique avec grub2 sous Debian</title>
    <link href="https://blog.nozav.org/post/2010/11/12/Console-graphique-avec-grub2-sous-Debian" rel="alternate" type="text/html"
    title="Console graphique avec grub2 sous Debian" />
    <id>urn:md5:e0e279e9aabdd8316f223a2aa95e6384</id>
    <published>2010-11-12T09:42:00+01:00</published>
          <updated>2010-11-12T10:42:49+01:00</updated>
            <author><name>Juba</name></author>
        <dc:subject>Linux, Debian, etc.</dc:subject>
        <dc:subject>debian</dc:subject><dc:subject>grub</dc:subject><dc:subject>sysadmin</dc:subject>
    <content type="html">    &lt;p&gt;Le passage à grub2 sous Debian a entraîné quelques changements dans la configuration du bootloader, et notamment si on souhaite obtenir une console graphique au moment du boot et pas seulement 25 lignes et 80 colonnes de texte.&lt;/p&gt;


&lt;p&gt;À noter que l&amp;#8217;ancienne méthode fonctionne toujours, à savoir passer un argument supplémentaire du type &lt;code&gt;vga=788&lt;/code&gt; dans les paramètres du noyau, mais ça n&amp;#8217;est plus la méthode recommandée.&lt;/p&gt;


&lt;p&gt;Si on regarde dans le fichier &lt;code&gt;/etc/default/grub&lt;/code&gt;, on constate la présence d&amp;#8217;un paramètre &lt;code&gt;GRUB_GFXMODE&lt;/code&gt; qui permet de spécifier une résolution pour les consoles graphiques. Celui-ci fonctionne pour l&amp;#8217;invite de grub (celle où vous pouvez choisir quel noyau booter), mais n&amp;#8217;est pas prise en compte pour la console qui s&amp;#8217;affiche ensuite. Pour cela il manque en effet un paramètre, que nous pouvons ajouter à l&amp;#8217;aide de la ligne suivante dans &lt;code&gt;/etc/default/grub&lt;/code&gt;&amp;#160;:&lt;/p&gt;

&lt;pre&gt;
GRUB_GFXPAYLOAD_LINUX=keep
&lt;/pre&gt;


&lt;p&gt;Mettez ensuite à jour votre grub&amp;#160;:&lt;/p&gt;

&lt;pre&gt;
$ sudo update-grub
&lt;/pre&gt;


&lt;p&gt;Et voilà&amp;#160;! Vous devriez normalement avoir une jolie console graphique au prochain démarrage.&lt;/p&gt;


&lt;p&gt;En guise de complément, on pourra aussi noter que&amp;#160;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;on peut configurer la police de la console graphique et sa taille en modifiant les paramètres &lt;code&gt;FONTFACE&lt;/code&gt; et &lt;code&gt;FONTSIZE&lt;/code&gt; du fichier &lt;code&gt;/etc/default/console-setup&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;si vous ne savez pas quelle résolution indiquer dans &lt;code&gt;GRUB_GFXMODE&lt;/code&gt;, vous pouvez ouvrir une console grub en tapant sur &lt;code&gt;c&lt;/code&gt; à l&amp;#8217;invite de grub et tapez ensuite la commande &lt;code&gt;vbeinfo&lt;/code&gt;, qui liste les modes graphiques supportés par votre système.&lt;/li&gt;
&lt;/ul&gt;</content>

    


      </entry>
  
  <entry>
    <title>How to automatically generate timelines that can be split between several pages</title>
    <link href="https://blog.nozav.org/post/2010/08/30/How-to-automatically-generate-timelines-that-can-be-split-between-several-pages" rel="alternate" type="text/html"
    title="How to automatically generate timelines that can be split between several pages" />
    <id>urn:md5:6902c3ab75c29b7be91ed37ce8edd3d8</id>
    <published>2010-08-30T14:55:00+02:00</published>
          <updated>2011-01-04T01:08:18+01:00</updated>
            <author><name>Juba</name></author>
        <dc:subject>Linux, Debian, etc.</dc:subject>
        <dc:subject>latex</dc:subject><dc:subject>ruby</dc:subject><dc:subject>timeline</dc:subject>
    <content type="html">    &lt;a class=&quot;FlattrButton&quot; style=&quot;display:none;&quot; rev=&quot;flattr;button:compact;&quot; href=&quot;http://github.com/juba/timeline-generator&quot;&gt;&lt;/a&gt;



&lt;p&gt;I recently wanted to create a PDF timeline that could be automatically split between several A4 pages for later cutting and pasting. After a bit of LaTeX and Ruby I finally came out with a little timeline-generator script&amp;#160;:&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;http://github.com/juba/timeline-generator&quot;&gt;http://github.com/juba/timeline-generator&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;The principle is quite simple&amp;#160;: you specify several parameters in a config file such as the start and end dates, the number of A4 sheets, the sheets orientation, etc., and the script generates two PDF files&amp;#160;: one with your timeline on one big page, and another with the same timeline split between the given number of A4 pages. To make cut-and-pasting easier, the second file includes crop marks and a small overlapping between pages.&lt;/p&gt;




&lt;p&gt;To take a look at what the generated files look like&amp;#160;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://github.com/juba/timeline-generator/raw/master/examples/output.pdf&quot;&gt;an example timeline on one big page&lt;/a&gt; (PDF)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://github.com/juba/timeline-generator/raw/master/examples/output_pages.pdf&quot;&gt;the same timeline automatically split between 5 A4 pages&lt;/a&gt; (PDF)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The title, months names and number formatting are in french, but english is also supported.&lt;/p&gt;


&lt;p&gt;Optionally, a calendar scale (days and months of year) and a time of day scale (hours and minutes) can be added at the bottom of the timeline. The idea is to allow some comparisons such as «if the 0 to 2010 timeline was a day, the World War II would have taken place between 23h09 and 23h14. If it was a year, it would have happened between December 18th and December 20th».&lt;/p&gt;


&lt;p&gt;If you have access to a functional installation of Ruby and PDFLaTeX, the script should be quite easy to use. Everything is explained in the README file on GitHub.&lt;/p&gt;


&lt;p&gt;But if you are interested by this type of timeline, don&amp;#8217;t hesitate to drop me a mail or a comment with the main parameters (start and end date, number of sheets&amp;#8230;), and I&amp;#8217;ll generate and send you back the PDF files.&lt;/p&gt;</content>

    


      </entry>
  
  <entry>
    <title>Générer automatiquement des frises chronologiques sur plusieurs pages</title>
    <link href="https://blog.nozav.org/post/2010/08/30/G%C3%A9n%C3%A9rer-automatiquement-des-frises-chronologiques-sur-plusieurs-pages" rel="alternate" type="text/html"
    title="Générer automatiquement des frises chronologiques sur plusieurs pages" />
    <id>urn:md5:fbbcfa7494840f24359a8506392c9bd7</id>
    <published>2010-08-30T14:44:00+02:00</published>
          <updated>2010-09-11T11:49:03+02:00</updated>
            <author><name>Juba</name></author>
        <dc:subject>Linux, Debian, etc.</dc:subject>
        <dc:subject>chronologie</dc:subject><dc:subject>latex</dc:subject><dc:subject>ruby</dc:subject>
    <content type="html">    &lt;a class=&quot;FlattrButton&quot; style=&quot;display:none;&quot; rev=&quot;flattr;button:compact;&quot; href=&quot;http://github.com/juba/timeline-generator&quot;&gt;&lt;/a&gt;



&lt;p&gt;Je me suis récemment amusé à essayer de fabriquer des frises chronologiques avec l&amp;#8217;idée de les imprimer sur plusieurs pages A4 pouvant être découpées et réassemblées par la suite. Comme je ne voulais pas faire ça à la main et avoir quelque chose de réutilisable, j&amp;#8217;ai mélangé un peu de &lt;em&gt;Ruby&lt;/em&gt; et de &lt;em&gt;LaTeX&lt;/em&gt;, ce qui a donné un script automatique de génération de chronologies&amp;#160;:&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;http://github.com/juba/timeline-generator&quot;&gt;http://github.com/juba/timeline-generator&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;Le principe est assez simple&amp;#160;: vous indiquez dans un fichier de configuration différents paramètres, dont évidemment la date de départ, la date de fin, le nombre de feuilles A4, leur orientation, etc., etc. (quasiment tous les aspects de mise en page sont configurables), et le script vous génère deux fichiers PDF&amp;#160;: l&amp;#8217;un avec votre frise chronologique sur une seule grande page, et l&amp;#8217;autre découpée en autant de feuilles A4 que désiré. Avec en plus, si c&amp;#8217;est pas le bonheur, des marques pour la découpe et un petit recouvrement d&amp;#8217;une page sur l&amp;#8217;autre pour faciliter l&amp;#8217;assemblage.&lt;/p&gt;


&lt;p&gt;Pour avoir un aperçu du résultat&amp;#160;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://github.com/juba/timeline-generator/raw/master/examples/output.pdf&quot;&gt;exemple de chronologie sur une seule grande page&lt;/a&gt; (PDF)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://github.com/juba/timeline-generator/raw/master/examples/output_pages.pdf&quot;&gt;la même chronologie découpée automatiquement en 5 pages A4&lt;/a&gt; (PDF)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Vous remarquerez au bas de la chronologie une petite originalité&amp;#160;: la présence d&amp;#8217;un axe représentant les jours et mois de l&amp;#8217;année, et d&amp;#8217;un autre représentant les heures de la journée. L&amp;#8217;idée est de pouvoir effectuer des comparaisons du genre &lt;em&gt;«si la période de 0 à 2010 était une journée, la seconde guerre mondiale aurait lieu entre 23h09 et 23h14. Si c&amp;#8217;était une année, elle aurait eu lieu entre le 18 et le 20 décembre»&lt;/em&gt;. Je ne sais pas encore si c&amp;#8217;est une bonne idée ou si c&amp;#8217;est plus perturbant qu&amp;#8217;autre chose, mais en tous cas on peut supprimer ces &amp;#8220;extras&amp;#8221; dans le fichier de configuration.&lt;/p&gt;


&lt;p&gt;Si vous avez une installation fonctionnelle de Ruby et PDFLaTeX sur votre machine, ça devrait être assez simple à faire tourner, les explications sont données dans le fichier README sur Github (en anglais).&lt;/p&gt;


&lt;p&gt;Dans le cas contraire, si vous êtes intéressé par une chronologie de ce type, n&amp;#8217;hésitez pas à m&amp;#8217;envoyer un mail avec les principaux paramètres (date de départ, date de fin, nombre de pages&amp;#8230;) et je vous renverrai le résultat.&lt;/p&gt;


&lt;p&gt;Bon, reste plus qu&amp;#8217;à trouver un mur pour afficher tout ça, maintenant&amp;#8230; &lt;img src=&quot;/themes/default/smilies/smile.png&quot; alt=&quot;:-)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;</content>

    


      </entry>
  
  <entry>
    <title>Comment protéger une adresse mail destinée à un enfant ?</title>
    <link href="https://blog.nozav.org/post/2010/03/08/Comment-prot%C3%A9ger-une-adresse-mail-destin%C3%A9e-%C3%A0-un-enfant" rel="alternate" type="text/html"
    title="Comment protéger une adresse mail destinée à un enfant ?" />
    <id>urn:md5:58501b772327eb36e261af23dd67a873</id>
    <published>2010-03-08T17:05:00+01:00</published>
          <updated>2010-03-08T18:09:20+01:00</updated>
            <author><name>Juba</name></author>
        <dc:subject>Linux, Debian, etc.</dc:subject>
        <dc:subject>enfants</dc:subject><dc:subject>linux</dc:subject><dc:subject>mailman</dc:subject><dc:subject>postfix</dc:subject>
    <content type="html">    &lt;p&gt;L&amp;#8217;autre jour ma fille de six ans et demi a eu envie que je lui installe un client mail sur son interface sur notre ordi familial. J&amp;#8217;ai trouvé que c&amp;#8217;était une bonne idée, mais je ne voulais évidemment pas utiliser une adresse ouverte à tous les vents, avec risque notamment de recevoir des spams inappropriés. La cahier des charges était donc le suivant&amp;#160;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;que les deux parents reçoivent systématiquement une copie des messages reçus sur la boîte&amp;#160;;&lt;/li&gt;
&lt;li&gt;que les messages reçus sur la boîte mail ne soient diffusés qu&amp;#8217;après validation manuelle de la part d&amp;#8217;un des deux parents&amp;#160;;&lt;/li&gt;
&lt;li&gt;ajouter la possibilité de &lt;em&gt;&amp;#8220;whitelister&amp;#8221;&lt;/em&gt; certaines adresses d&amp;#8217;expédition pour ne pas avoir à valider systématiquement les messages qui en proviennent&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Oui, bon, je sais, ça fait un peu &lt;em&gt;big brother&lt;/em&gt;, mais vu le type de spam qu&amp;#8217;on reçoit parfois, y compris sur des adresses a priori totalement privées, je préfère bétonner un maximum pour l&amp;#8217;instant.&lt;/p&gt;


&lt;p&gt;Je me suis demandé comment faire ça avec Postfix, Procmail ou je ne sais quel assemblage d&amp;#8217;applications que j&amp;#8217;utilise pour le mail, et puis j&amp;#8217;ai finalement trouvé une solution que je trouve pas trop compliquée, et qui passe par la création d&amp;#8217;une liste de diffusion, ici avec Mailman.&lt;/p&gt;


&lt;p&gt;Donc voici la marche à suivre&amp;#160;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Créer une liste de diffusion nommée &lt;code&gt;prenom@domaine.org&lt;/code&gt; (l&amp;#8217;adresse mail publique attribuée à l&amp;#8217;enfant)&lt;/li&gt;
&lt;li&gt;Mettre les mails des parents comme administrateurs de la liste&lt;/li&gt;
&lt;li&gt;La configurer pour que tous les envois soient modérés par défaut, avec validation manuelle des administrateurs de la liste&lt;/li&gt;
&lt;li&gt;Créer une adresse mail &amp;#8220;de transit&amp;#8221; du type &lt;code&gt;mail.prenom@domaine.org&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Abonner à la liste &lt;code&gt;prenom@domaine.org&lt;/code&gt; les deux parents, ainsi que &lt;code&gt;mail.prenom@domaine.org&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Configurer le client mail sur l&amp;#8217;ordi familial pour aller lire les mails sur la boîte &lt;code&gt;mail.prenom@domaine.org&lt;/code&gt;, tout en envoyant les mails avec l&amp;#8217;adresse &lt;code&gt;prenom@domaine.org&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Et voilou&amp;#160;! À partir de là, chaque message envoyé à &lt;code&gt;prenom@domaine.org&lt;/code&gt; passe par une phase de modération, et les deux parents reçoivent un mail avec un lien leur permettant de rejeter ou valider le message, et en plus la possibilité de placer l&amp;#8217;expéditeur sur liste blanche (ou liste noire) pour éviter les validations ultérieures. Une fois le message validé, il est ensuite transféré de manière transparente sur la boite &lt;code&gt;mail.prenom@domaine.org&lt;/code&gt; (donc à l&amp;#8217;enfant) et sur les boîtes des parents.&lt;/p&gt;


&lt;p&gt;Voilà, je ne sais pas si c&amp;#8217;est très clair, mais ça a le mérite de fonctionner en tous cas &lt;img src=&quot;/themes/default/smilies/smile.png&quot; alt=&quot;:-)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;</content>

    


      </entry>
  
  <entry>
    <title>Comment révoquer une clé PGP</title>
    <link href="https://blog.nozav.org/post/2010/03/08/Comment-r%C3%A9voquer-une-cl%C3%A9-PGP" rel="alternate" type="text/html"
    title="Comment révoquer une clé PGP" />
    <id>urn:md5:b2587faa48df24428ea40bba64d262bd</id>
    <published>2010-03-08T15:38:00+01:00</published>
          <updated>2010-03-08T16:38:30+01:00</updated>
            <author><name>Juba</name></author>
        <dc:subject>Linux, Debian, etc.</dc:subject>
        <dc:subject>gnupg</dc:subject><dc:subject>linux</dc:subject><dc:subject>pgp</dc:subject><dc:subject>sysadmin</dc:subject><dc:subject>vie privée</dc:subject>
    <content type="html">    &lt;p&gt;Je viens de révoquer une clé PGP avec GnuPG pour une ancienne adresse mail. Voici la marche à suivre.&lt;/p&gt;


&lt;p&gt;D&amp;#8217;abord il faut noter l&amp;#8217;identifiant de la clé publique que l&amp;#8217;on souhaite révoquer. Pour cela on fait un&amp;#160;:&lt;/p&gt;
&lt;pre&gt;
$ gpg --list-keys
&lt;/pre&gt;


&lt;p&gt;Et on note l&amp;#8217;identifiant (8 caractères hexadécimaux du type A1B2C3D4). Ensuite on génère un certificat de révocation qu&amp;#8217;on stocke dans un fichier&amp;#160;:&lt;/p&gt;
&lt;pre&gt;
$ gpg --gen-revoke A1B2C3D4 &amp;gt; revoke.txt
&lt;/pre&gt;


&lt;p&gt;Puis on importe ce certificat de révocation&amp;#160;:&lt;/p&gt;
&lt;pre&gt;
$ gpg --import revoke.txt
&lt;/pre&gt;


&lt;p&gt;On exporte la clé publique désormais révoquée&amp;#160;:&lt;/p&gt;
&lt;pre&gt;
$ gpg --export -a A1B2C3D4
&lt;/pre&gt;


&lt;p&gt;On peut alors uploader la sortie de cette dernière commande sur un serveur de clé type &lt;a href=&quot;http://pgp.mit.edu&quot; hreflang=&quot;en&quot;&gt;pgp.mit.edu&lt;/a&gt; et d&amp;#8217;ici peu, le monde entier sera informé que votre clé ne doit plus être utilisée.&lt;/p&gt;</content>

    


      </entry>
  
  <entry>
    <title>Don't put a dot in your cronjobs names !</title>
    <link href="https://blog.nozav.org/post/2010/02/10/Don-t-put-a-dot-in-your-cronjobs-names-%21" rel="alternate" type="text/html"
    title="Don't put a dot in your cronjobs names !" />
    <id>urn:md5:2edc0160261bd574f96664f96d6e3f09</id>
    <published>2010-02-10T17:23:00+01:00</published>
          <updated>2010-03-08T17:53:43+01:00</updated>
            <author><name>Juba</name></author>
        <dc:subject>Linux, Debian, etc.</dc:subject>
        <dc:subject>cron</dc:subject><dc:subject>sysadmin</dc:subject>
    <content type="html">    &lt;p&gt;So you just setup a wonderful new cron job on your server that will make your life easier and your family happy. You put it in your &lt;code&gt;/etc/cron.d&lt;/code&gt; in a file called &lt;code&gt;wonderfulcronjob.sh&lt;/code&gt; but&amp;#8230; your job is never launched.&lt;/p&gt;


&lt;p&gt;You checked the permissions, the crontab syntax, ran the script manually, evertything is fine. You checked your syslog, but nothing is reported on it, not even the fact that the job is started. What&amp;#8217;s the problem&amp;#160;?&lt;/p&gt;


&lt;p&gt;The answer is in the &lt;code&gt;run-parts&lt;/code&gt; manual page&amp;#160;:&lt;/p&gt;


&lt;blockquote&gt;&lt;p&gt;If  the &amp;#8212;lsbsysinit  option  is not given then the names must consist entirely of upper and lower  case  letters,  digits,  underscores,  and hyphens.&lt;/p&gt;&lt;/blockquote&gt;


&lt;p&gt;So if you put a dot in your cron job name, it will not be run at all. Rename it to &lt;code&gt;wonderfulcronjob-sh&lt;/code&gt; or just &lt;code&gt;wonderfulcronjob&lt;/code&gt; and everything should work fine.&lt;/p&gt;


&lt;p&gt;Thanks to &lt;a href=&quot;http://arnaud.luquin.info/&quot; hreflang=&quot;fr&quot;&gt;birdy&lt;/a&gt; for finding this one&amp;#8230;&lt;/p&gt;</content>

    


      </entry>
  
  <entry>
    <title>Problème d'encodage dans des session SSH</title>
    <link href="https://blog.nozav.org/post/2009/09/03/Probl%C3%A8me-d-encodage-dans-des-session-SSH" rel="alternate" type="text/html"
    title="Problème d'encodage dans des session SSH" />
    <id>urn:md5:4b1e115a6c2264b9ee094adeb07ccac0</id>
    <published>2009-09-03T12:52:00+02:00</published>
          <updated>2009-09-03T12:53:33+02:00</updated>
            <author><name>Juba</name></author>
        <dc:subject>Linux, Debian, etc.</dc:subject>
        
    <content type="html">    &lt;p&gt;Ça fait un moment que je cherchais la solution à un problème assez banal : je me connectais en SSH à un serveur tournant en iso-8859-1 depuis un autre serveur tournant lui en utf-8. Résultat : l'édition de fichiers comportant des caractères hors-ASCII était tout simplement impossible…&lt;/p&gt;

&lt;p&gt;Je viens de trouver une solution grâce à cette page :&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.haypocalc.com/wiki/Sshq&quot;&gt;http://www.haypocalc.com/wiki/Ssh&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;La solution est un petit programme qui s'appelle &lt;tt&gt;luit&lt;/tt&gt;, et qui est disponible dans le paquet &lt;tt&gt;x11-utils&lt;/tt&gt; :&lt;/p&gt;

&lt;pre class='src'&gt;
# apt-get install x11-utils
&lt;/pre&gt;

&lt;p&gt;Une fois le paquet installé, il suffit d'appeler &lt;tt&gt;lui&lt;/tt&gt; juste avant d'appeler &lt;tt&gt;ssh&lt;/tt&gt; en lui indiquant l'encodage du serveur de destination via le paramètre &lt;tt&gt;encoding&lt;/tt&gt;. Dans le cas cité précdemment (connexion d'un serveur en UTF-8 vers un serveur en iso-8859-1) ça fait donc :&lt;/p&gt;

&lt;pre class='src'&gt;
$ luit -encoding iso-8859-1 ssh user@server
&lt;/pre&gt;

Et voilou…</content>

    


      </entry>
  
  <entry>
    <title>Modifier le raccourci clavier de rechargement (Mod+q) dans Xmonad</title>
    <link href="https://blog.nozav.org/post/2009/06/16/Modifier-le-raccourci-clavier-de-rechargement-dans-Xmonad" rel="alternate" type="text/html"
    title="Modifier le raccourci clavier de rechargement (Mod+q) dans Xmonad" />
    <id>urn:md5:527afde29946ceb45ccf788e45e8f03f</id>
    <published>2009-06-16T10:50:00+02:00</published>
          <updated>2009-06-16T10:51:39+02:00</updated>
            <author><name>Juba</name></author>
        <dc:subject>Linux, Debian, etc.</dc:subject>
        
    <content type="html">    &lt;p&gt;Ça fait maintenant un bon bout de temps que j'utilise &lt;a href=&quot;http://www.xmonad.org/&quot;&gt;xmonad&lt;/a&gt; comme
&lt;em&gt;window manager&lt;/em&gt; (après être passé par Ion3 et dwm), et je crois bien
que je vais y rester au moins pour un petit moment, tant la
flexibilité et la richesse des extensions est impressionnante une fois
qu'on a un peu pris en main la syntaxe du fichier de configuration
(écrit en &lt;em&gt;Haskell&lt;/em&gt;).
&lt;/p&gt;
&lt;p&gt;
Aujourd'hui j'avais décidé de modifier le raccourci clavier de
recompilation et de rechargement dynamique de la configuration, par
défaut assigné à &lt;code&gt;Mod+q&lt;/code&gt;. Le problème est que j'utilise &lt;code&gt;Mod+s&lt;/code&gt;
fréquemment pour un afficher un terminal de type &lt;em&gt;scratchpad&lt;/em&gt;, et que
j'ai tendance à faire des &lt;code&gt;Mod+q&lt;/code&gt; à la place de &lt;code&gt;Mod+s&lt;/code&gt;. Je souhaitais
donc réassigner la commande &lt;code&gt;Mod+q&lt;/code&gt; à &lt;code&gt;Ctrl+Mod+q&lt;/code&gt;.
&lt;/p&gt;
&lt;p&gt;
Pour cela, il faut aller voir dans le fichier de configuration par
défaut à quelle commande est associé &lt;code&gt;Mod+q&lt;/code&gt;, d'autant que cela semble
avoir changé dans une récente version d'&lt;em&gt;xmonad&lt;/em&gt;. La config par défaut
se trouve dans le paquet &lt;code&gt;libghc6-xmonad-doc&lt;/code&gt;, qu'il faut donc
installer :
&lt;/p&gt;
&lt;pre class=&quot;src src-Shell-script&quot;&gt;sudo apt-get install libghc6-xmonad-doc&lt;br /&gt;zless /usr/share/doc/libghc6-xmonad-doc/examples/xmonad.hs.gz&lt;/pre&gt;
&lt;p&gt;
On voit alors que par défaut &lt;code&gt;Mod+q&lt;/code&gt; est associée à :
&lt;/p&gt;
&lt;pre class=&quot;src src-Haskell&quot;&gt;restart &lt;span style=&quot;color: rgb(188, 143, 143);&quot;&gt;&quot;xmonad&quot;&lt;/span&gt; True&lt;/pre&gt;
&lt;p&gt;
Il suffit donc de modifier la partie raccourcis clavier de son
&lt;code&gt;~/.xmonad/xonad.hs&lt;/code&gt; en ajoutant quelque chose comme :
&lt;/p&gt;
&lt;pre class=&quot;src src-Haskell&quot;&gt;    , ((modMask .|. controlMask,  xK_q  ), restart &lt;span style=&quot;color: rgb(188, 143, 143);&quot;&gt;&quot;xmonad&quot;&lt;/span&gt; True)&lt;br /&gt;    , ((modMask,               xK_q     ), spawn &lt;span style=&quot;color: rgb(188, 143, 143);&quot;&gt;&quot;&quot;&lt;/span&gt;)&lt;/pre&gt;
&lt;p&gt;
Et voilou !
&lt;/p&gt;</content>

    


      </entry>
  
  <entry>
    <title>How to display your identi.ca timeline on your blog</title>
    <link href="https://blog.nozav.org/post/2009/03/11/How-to-display-your-identi.ca-timeline-on-your-blog" rel="alternate" type="text/html"
    title="How to display your identi.ca timeline on your blog" />
    <id>urn:md5:76ed02d121bab3db7cf764c3739a750d</id>
    <published>2009-03-11T10:46:00+01:00</published>
          <updated>2011-01-04T01:08:31+01:00</updated>
            <author><name>Juba</name></author>
        <dc:subject>Linux, Debian, etc.</dc:subject>
        
    <content type="html">    &lt;p&gt;I recently tried to use &lt;a href=&quot;http://identi.ca&quot;&gt;identi.ca&lt;/a&gt;, a microblogging service similar to
&lt;a href=&quot;http://www.twitter.com&quot;&gt;Twitter&lt;/a&gt;, but with a big difference&amp;#160;: it is a free web application
based on the free microblogging software &lt;a href=&quot;http://laconi.ca/&quot;&gt;Laconica&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
One thing I rapidly tried to do is to display my user timeline on this
blog, as many Twitter users do. Fortunately I found a great little
javascript written by &lt;a href=&quot;http://kentbrewster.com&quot;&gt;Kent Brewster&lt;/a&gt; and called &lt;a href=&quot;http://kentbrewster.com/identica-badge/&quot;&gt;identica-badge&lt;/a&gt;, which
does 99% of what I wanted. I only tweaked it a little bit in order to
display my user timeline (instead of my friends timeline), to add a
link to the identi.ca and (optionnaly) twitter user page, etc.
&lt;/p&gt;
&lt;p&gt;Since Kent kindly answer to my licence question on this post&amp;#8217;s comments, the file can be downloaded and is ditributed under a Creative Commons 3.0 attributions, noncommercial, share-alike licence&amp;#160;:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Download &lt;a href=&quot;https://blog.nozav.org/public/js/identica-badge.js&quot;&gt;identica-badge.js&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; To use it, just edit the javascript file to adapt the configuration settings (in the loadDefaults function), and call it from any HTML-like file with&amp;#160;:&lt;/p&gt;
&lt;pre&gt;&amp;lt;div id=&quot;identica_update_list&quot;&amp;gt;&lt;br /&gt;&amp;lt;script type=&quot;text/javascript&quot; src=&quot;https://blog.nozav.org/path/to/identica-badge.js&quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;/pre&gt;</content>

    


      </entry>
  
  <entry>
    <title>Éditer un blog sous Dotclear directement depuis Emacs</title>
    <link href="https://blog.nozav.org/post/2009/03/04/%C3%89diter-un-blog-sous-Dotclear-directement-depuis-Emacs" rel="alternate" type="text/html"
    title="Éditer un blog sous Dotclear directement depuis Emacs" />
    <id>urn:md5:78edcc1c6c3d199bb03ef4994d953423</id>
    <published>2009-03-04T16:54:00+01:00</published>
          <updated>2009-06-16T14:07:39+02:00</updated>
            <author><name>Juba</name></author>
        <dc:subject>Linux, Debian, etc.</dc:subject>
        
    <content type="html">    &lt;p&gt;Il est en effet possible de poster des billets ou d'éditer des
billets déjà existants directement depuis Emacs, avec quelques
limitations : les billets sont rédigés en HTML (pas de syntaxe Wiki),
il n'est pas possible d'ajouter des images ou des fichiers joints, et
les tags ne sont pas gérés.&lt;/p&gt;

&lt;p&gt;Pour cela, nous allons utiliser &lt;a
href=&quot;http://www.emacswiki.org/emacs/WebloggerMode&quot; hreflang=&quot;en&quot;&gt;weblogger.el&lt;/a&gt;
et décrire les étapes nécessaires à sa configuration.&lt;/p&gt;

&lt;p&gt;Première chose, télécharger les fichiers &lt;a
href=&quot;http://www.emacswiki.org/cgi-bin/emacs/xml-rpc.el&quot;&gt;xml-rpc.el&lt;/a&gt;
et &lt;a
href=&quot;http://www.emacswiki.org/cgi-bin/emacs/weblogger.el&quot;&gt;weblogger.el&lt;/a&gt;
et les placer quelque part dans son &lt;tt&gt;load-path&lt;/tt&gt;.&lt;/p&gt;

&lt;p&gt;Ensuite, on modifie son &lt;tt&gt;.emacs&lt;/tt&gt; et on y ajoute :&lt;/p&gt;

&lt;pre&gt;
(require 'weblogger)
&lt;/pre&gt;

&lt;p&gt;Si vous souhaitez que &lt;tt&gt;weblogger&lt;/tt&gt; se souvienne de vos mots
de passe de connexion, vous pouvez également ajouter :&lt;/p&gt;

&lt;pre&gt;
(setq weblogger-save-password t)
&lt;/pre&gt;

&lt;p&gt;Connectez-vous à votre Dotclear, sélectionnez le blog souhaité et
allez sur la page &lt;i&gt;Paramètres du blog&lt;/i&gt;. Là, activez l'interface
&lt;tt&gt;XML-RPC&lt;/tt&gt; et notez, en bas de page, les indications données sur
cette interface, notamment l'URL et le numéro d'identifiant.&lt;/p&gt;

&lt;p&gt;Retournez ensuite dans Emacs et faites un &lt;tt&gt;M-x
weblogger-setup-weblog&lt;/tt&gt;, et répondez aux questions posées à l'aide
des paramètres donnés par Dotclear. À la fin, donnez un nom à cette
configuration.&lt;/p&gt;

&lt;p&gt;Vous pouvez recommencer les deux étapes précédentes si vous
souhaitez éditer plusieurs blogs différents avec
&lt;tt&gt;weblogger&lt;/tt&gt;.&lt;/p&gt;

&lt;p&gt;À cette étape vous pouvez utiliser &lt;tt&gt;weblogger&lt;/tt&gt; directement
en faisant &lt;tt&gt;M-x weblogger-start-entry&lt;/tt&gt; par exemple, et en vous
référant aux raccourcis indiqués directement dans le fichier
&lt;tt&gt;weblogger.el&lt;/tt&gt;. En gros, utilisez &lt;tt&gt;C-x C-s&lt;/tt&gt; pour
enregistrer et publier votre nouveau billet, &lt;tt&gt;C-c C-p&lt;/tt&gt; et
&lt;tt&gt;C-c C-n&lt;/tt&gt; pour naviguer parmi les billets déjà existants,
etc. Pour attribuer une catégorie à un billet, vous pouvez l'ajouter
dans le champ &lt;tt&gt;Keywords&lt;/tt&gt;, mais en utilisant le nom interne de
Dotclear (ainsi pour ce billet, j'ai utilisé &lt;tt&gt;Linux-debian&lt;/tt&gt; et
non &lt;tt&gt;Linux, Debian, etc.&lt;/tt&gt;.&lt;/p&gt;

&lt;p&gt;Comme j'édite plusieurs blogs différents, j'ai créé des fonctions me
permettant de passer facilement de l'un à l'autre (même si ça a l'air
déjà possible avec les fonctions fournies par &lt;tt&gt;weblogger&lt;/tt&gt;.&lt;/p&gt;

&lt;p&gt;Par exemple, pour sélectionner le blog &lt;i&gt;Humus numericus&lt;/i&gt;, j'ai
créé la fonction &lt;i&gt;ad hoc&lt;/i&gt; suivante (en remplaçant la chaîne
&lt;tt&gt;&quot;Humus numericus&quot;&lt;/tt&gt; par le nom donné à la configuration lors de
l'appel à &lt;tt&gt;weblogger-setup-weblog&lt;/tt&gt;) :&lt;/p&gt;

&lt;pre&gt;
(defun jb-hn ()
  &quot;Lance Weblogger sur Humus numericus&quot;
  (interactive)
  (weblogger-select-configuration &quot;Humus numericus&quot;)
  (weblogger-fetch-entries)
  (weblogger-start-entry))
&lt;/pre&gt;

&lt;p&gt;Il suffit alors de faire un &lt;tt&gt;M-x jb-hn&lt;/tt&gt; pour basculer
directement sur un nouveau billet du blog choisi. On peut de la sorte
créer autant de fonctions qu'on a de blogs à éditer...&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Mise à jour 2009-06-16 :&lt;/b&gt; Depuis peu, j'avais des problèmes
avec weblogger et Dotclear, les billets composés en HTML voyaient les
balises transformées en entités. J'ai résolu la chose en modifiant le
fichier &lt;tt&gt;xml-rpc.el&lt;/tt&gt;, ligne 356, en remplaçant :&lt;/p&gt;

&lt;pre&gt;
`((value nil (string nil ,(url-insert-entities-in-string value))))
&lt;/pre&gt;

Par :

&lt;pre&gt;
`((value nil (string nil ,value)))
&lt;/pre&gt;</content>

    


      </entry>
  
  <entry>
    <title>Synchroniser Liferea entre deux systèmes</title>
    <link href="https://blog.nozav.org/post/2009/03/04/Synchroniser-Liferea-entre-deux-syst%C3%A8mes" rel="alternate" type="text/html"
    title="Synchroniser Liferea entre deux systèmes" />
    <id>urn:md5:b555941d1fb48fd6edbe794532341bf5</id>
    <published>2009-03-04T15:36:00+01:00</published>
          <updated>2009-06-16T11:39:44+02:00</updated>
            <author><name>Juba</name></author>
        <dc:subject>Linux, Debian, etc.</dc:subject>
        
    <content type="html">    &lt;p&gt;Jusqu'à présent j'utilisais &lt;i&gt;Netvibes&lt;/i&gt; pour suivre mes
différents flux RSS, mais j'ai fini par y trouver deux inconvénients
majeurs :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;les problèmes de respect de la vie privée liés au fait de confier
à une boîte privée l'ensemble de ses lectures quotidiennes ;&lt;/li&gt;
&lt;li&gt;la relative lenteur de l'interface en Ajax qui, bien que pas mal
foutue du tout, avait tendance à rallonger le temps déjà bien trop
long passé quotidiennement à suivre mes flux.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;J'ai donc choisi de me porter plutôt vers un vrai lecteur RSS, en
l'occurrence &lt;a href=&quot;http://liferea.sourceforge.net/&quot;&gt;liferea&lt;/a&gt;,
qui me semble avoir le plus de fonctionnalités.&lt;/p&gt;
&lt;p&gt;Le problème était alors d'arriver à synchroniser l'état de lecture
des différents fils entre les différentes machines sur lesquelles je
travaille, problème d'autant plus délicat que la base &lt;tt&gt;sqlite&lt;/tt&gt;
utilisée par &lt;i&gt;liferea&lt;/i&gt; pour stocker ces informations est plutôt
du genre «sensible».&lt;/p&gt;
&lt;p&gt;Je suis heureusement tombé sur un script de synchronisation depuis
un blog norvégien :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.rolfs.no/2008/03/26/sync-lifereash-syncing-script/&quot;&gt;
http://www.rolfs.no/2008/03/26/sync-lifereash-syncing-script/
&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ce script ne correspond pas à mon cas de figure, car il effectue la
synchronisation directement entre les deux machines via SSH, tandis
que dans mon cas je passe par un serveur intermédiaire pour stocker
les données depuis une machine et les récupérer sur l'autre, ce qui
simplifie en partie le travail. J'ai donc utilisé le script comme base
de départ pour arriver au résultat suivant :&lt;/p&gt;
&lt;pre&gt;
#!/bin/bash
# Source : http://www.rolfs.no/2008/03/26/sync-lifereash-syncing-script/
# DEBUT CONFIGURATION
DIR=/home/julien/.liferea_1.4
BACKUPDIR=$DIR/backup/`date --rfc-3339=date`
REMOTE=&quot;z&quot; # ip of remote machine
REMOTEDIR=$DIR
if [ &quot;xjulien&quot; = &quot;x`whoami`&quot; ]; then
echo &quot;User is julien: OK&quot;
else
echo &quot;Only run as user julien&quot;
exit 1
fi
# FIN CONFIGURATION
test -e /tmp/sync-liferea_has_run &amp;&amp; rm /tmp/sync-liferea_has_run
echo &quot;--- Syncing Liferea ---&quot;
pgrep liferea-bin &amp;&amp; {
echo &quot;Liferea is running. Stopping it.&quot;
pkill liferea-bin
sleep 1
}
test -e $DIR/liferea.db || {
echo &quot;ERROR: $DIR/liferea.db does not exist&quot;
exit 1
}
test -e $DIR/feedlist.opml || {
echo &quot;ERROR: $DIR/feedlist.opml does not exist&quot;
exit 1
}
test -e $DIR/liferea.db-journal &amp;&amp; {
echo &quot;ERROR: liferea.db-journal exists in $DIR/&quot;
echo &quot;Unclean shutdown or is liferea still running? Find out/fix, then rerun liferea-sync.&quot;
exit 1
}
echo &quot;Creating $BACKUPDIR&quot;
mkdir -p $BACKUPDIR
echo &quot;Making backup to $BACKUPDIR&quot;
cp -v $DIR/feedlist.opml $BACKUPDIR/
cp -v $DIR/liferea.db $BACKUPDIR/
cp -v $DIR/feedlist.opml.backup $BACKUPDIR/
# Using rsync to preserve when file was last changed..
echo &quot;&quot;
echo &quot;--- Syncing IN ---&quot;
echo &quot;&quot;
rsync -vazu -e &quot;ssh&quot;  -f '+ /feedlist.opml' -f '+ /feedlist.opml.backup' -f '+ /liferea.db' -f '- **'  $REMOTE:$REMOTEDIR/ $DIR
echo &quot;&quot;
echo &quot;--- Syncing OUT ---&quot;
echo &quot;&quot;
rsync -vazu -e &quot;ssh&quot; -f '+ /feedlist.opml' -f '+ /feedlist.opml.backup' -f '+ /liferea.db' -f '- **' $DIR/ $REMOTE:$REMOTEDIR
touch /tmp/sync-liferea_has_run &amp;&amp; exit 0
&lt;/pre&gt;
&lt;p&gt;L'utilisation du fichier temporaire
&lt;tt&gt;/tmp/sync-liferea_has_run&lt;/tt&gt; est parfaitement optionnelle, elle
me permet juste de ne lancer liferea automatiquement au démarrage de
ma session X que si la synchronisation a bien eu lieu. Pour cela j'ai
juste rajouté la ligne suivante dans mon &lt;tt&gt;~/.xsession&lt;/tt&gt; :&lt;/p&gt;
&lt;pre&gt;
while [ ! -e /tmp/sync-liferea_has_run ]; do sleep 1; done &amp;&amp; liferea-bin &amp;
&lt;/pre&gt;</content>

    


      </entry>
  
  <entry>
    <title>Autologin sans GDM</title>
    <link href="https://blog.nozav.org/post/2009/03/04/Autologin-sans-GDM" rel="alternate" type="text/html"
    title="Autologin sans GDM" />
    <id>urn:md5:51584ca7fcfa8764d08b925ca80f7121</id>
    <published>2009-03-04T15:21:00+01:00</published>
          <updated>2009-03-04T16:22:22+01:00</updated>
            <author><name>Juba</name></author>
        <dc:subject>Linux, Debian, etc.</dc:subject>
        
    <content type="html">    &lt;p&gt;L'&lt;i&gt;autologin&lt;/i&gt; est une fonctionnalité permettant de connecter
automatiquement un utilisateur au démarrage de Linux, sans qu'il ait à
s'identifier. Cela peut paraître un brin dangereux, mais ça l'est
beaucoup moins si on utilise une partition chiffrée qui demande de
toutes manières un mot de passe au démarrage.&lt;/p&gt;

&lt;p&gt;Jusqu'à présent j'utilisais GDM pour pouvoir profiter simplement de
l'autologin, mais on ne peut pas dire que ça soit la solution la plus
légère qui soit. Mais grâce à un &lt;a
href=&quot;http://forums.debian.net/viewtopic.php?t=29333&quot;&gt;post sur un
forum de Debian&lt;/a&gt;, je peux désormais le faire sans aucune dépendance
supplémentaire. Pour cela il suffit de modifier &lt;tt&gt;/etc/inittab&lt;/tt&gt;
et de commenter la ligne :&lt;/p&gt;

&lt;pre&gt;
#1:2345:respawn:/sbin/getty 38400 tty1
&lt;/pre&gt;

&lt;p&gt;Tout en ajoutant la ligne :&lt;/p&gt;

&lt;pre&gt;
1:2345:respawn:/bin/login -f YOUR_USER_NAME tty1 &lt;/dev/tty1 &gt;/dev/tty1 2&gt;&amp;1
&lt;/pre&gt;

&lt;p&gt;Si on souhaite qu'en plus de l'autologin la session X soit démarrée
directement sans avoir à taper de &lt;tt&gt;startx&lt;/tt&gt; il suffit de
rajouter les lignes suivantes à la fin de son &lt;tt&gt;~/.bash_profile&lt;/tt&gt;
:&lt;/p&gt;

&lt;pre&gt;
if [ -z &quot;$DISPLAY&quot; ] &amp;&amp; [ $(tty) = /dev/tty1 ]; then
   while true
   do
        startx --
        sleep 10
   done
fi 
&lt;/pre&gt;

&lt;p&gt;Ceci évite que X soit démarré lorsqu'on se connecte en ssh ou sur une
autre console que &lt;tt&gt;tty1&lt;/tt&gt;.&lt;/p&gt;</content>

    


      </entry>
  
  <entry>
    <title>Astuces Linux du jour</title>
    <link href="https://blog.nozav.org/post/2008/12/02/Astuces-Linux-du-jour" rel="alternate" type="text/html"
    title="Astuces Linux du jour" />
    <id>urn:md5:3293041399fbb3ac00a0d3b4cd39935b</id>
    <published>2008-12-02T00:19:00+01:00</published>
          <updated>2008-12-19T23:20:32+01:00</updated>
            <author><name>Juba</name></author>
        <dc:subject>Linux, Debian, etc.</dc:subject>
        <dc:subject>debian</dc:subject><dc:subject>ipv6</dc:subject><dc:subject>linux</dc:subject><dc:subject>ssh</dc:subject><dc:subject>sysadmin</dc:subject>
    <content type="html">    &lt;h3&gt;Ajouter un utilisateur à un groupe rapido&lt;/h3&gt;


&lt;p&gt;Jusqu'ici, quand je voulais m'ajouter à un groupe, je faisais un bête :&lt;br /&gt;&lt;/p&gt;

&lt;pre&gt;
# adduser julien group
&lt;/pre&gt;


&lt;p&gt;Problème&amp;nbsp;: dans ces cas-là on est obligé de fermer sa session pour que le changement soit pris en compte. Et bien je viens de découvrir la commande &lt;code&gt;newgrp&lt;/code&gt; qui permet de faire ça directement :&lt;br /&gt;&lt;/p&gt;

&lt;pre&gt;
$ sudo adduser username group
$ newgrp group
&lt;/pre&gt;

&lt;ul&gt;
&lt;li&gt;Source&amp;nbsp;: &lt;a href=&quot;http://linuxfr.org/comments/911699.html#911699&quot; title=&quot;http://linuxfr.org/comments/911699.html#911699&quot;&gt;http://linuxfr.org/comments/911699....&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Accélérer les connexions SSH&lt;/h3&gt;


&lt;p&gt;Si vous avez tendance à vous connecter souvent aux mêmes serveurs, les versions récentes d'openSSH permettent d'accélérer les temps de connexion via du multiplexage de connexion. Pour cela il faut rajouter les lignes suivantes dans &lt;code&gt;~/.ssh/config&lt;/code&gt; (fichiers à mettre en 600)&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
Host *
ControlPath ~/.ssh/mux_socket-%r@%h:%p
&lt;/pre&gt;


&lt;p&gt;Puis de lancer un ssh de la manière suivante (par exemple dans votre &lt;code&gt;.xsession&lt;/code&gt;&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
ssh -fMN nomduserveur
&lt;/pre&gt;


&lt;p&gt;A partir de là les temps d'établissement de connexion vers ce serveur seront beaucoup plus rapides...&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Source&amp;nbsp;: &lt;a href=&quot;http://linuxfr.org/comments/911768.html#911768&quot; title=&quot;http://linuxfr.org/comments/911768.html#911768&quot;&gt;http://linuxfr.org/comments/911768....&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Faire de l'ipv6 facilement&lt;/h3&gt;


&lt;p&gt;J'avais déjà essayé deux ou trois manières de me connecter en ipv6 depuis la maison, mais c'est en général un peu lorudingue&amp;nbsp;: faut s'inscrire chez un &lt;em&gt;tunnel broker&lt;/em&gt;, mettre en place des scripts, avoir une IP fixe... Mais je viens de tomber sur un article de &lt;em&gt;Debian administration&lt;/em&gt; qui présente le paquet &lt;code&gt;miredo&lt;/code&gt; qui permet de faire tout ça de manière hyper-simple. Une commande suffit&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
# apt-get install install miredo
&lt;/pre&gt;


&lt;p&gt;Et vous aurez la joie de voir la &lt;a href=&quot;http://www.kame.net/&quot; hreflang=&quot;en&quot;&gt;tortue danser&lt;/a&gt;&amp;nbsp;!&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Source&amp;nbsp;: &lt;a href=&quot;http://www.debian-administration.org/articles/621&quot; title=&quot;http://www.debian-administration.org/articles/621&quot;&gt;http://www.debian-administration.or...&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content>

    


      </entry>
  
  <entry>
    <title>Quelles belles courbes !</title>
    <link href="https://blog.nozav.org/post/2008/11/25/Quelles-belles-courbes-%21" rel="alternate" type="text/html"
    title="Quelles belles courbes !" />
    <id>urn:md5:01baa75cce998caed10ed5dbcb7cd777</id>
    <published>2008-11-25T11:09:00+01:00</published>
          <updated>2008-11-25T12:09:35+01:00</updated>
            <author><name>Juba</name></author>
        <dc:subject>Linux, Debian, etc.</dc:subject>
        <dc:subject>postfix</dc:subject><dc:subject>script</dc:subject><dc:subject>sysadmin</dc:subject>
    <content type="html">    &lt;p&gt;Que voilà :&lt;br /&gt;&lt;/p&gt;


&lt;p&gt;&lt;img src=&quot;https://blog.nozav.org/public/images/z.nozav.org-postfix_mailqueue-day.png&quot; alt=&quot;Munin postfix mailqueue&quot; style=&quot;display:block; margin:0 auto;&quot; title=&quot;Munin postfix mailqueue, nov. 2008&quot; /&gt;&lt;/p&gt;


&lt;p&gt;C'est quoi donc&amp;nbsp;? C'est le nombre de mails contenus dans la file d'attente du postfix de ce serveur... La jolie courbe bleue qui monte qui monte ce sont les 15000 mails reçus dans la nuit de dimanche à lundi suite à un envoi massif de spams depuis un autre serveur qui ne m'appartient pas mais dont je reçois les mails d'admin. Les 15000 mais sont tous les &lt;em&gt;Undelivered mail returned to sender&lt;/em&gt; résultant de cet envoi de spams.&lt;/p&gt;



&lt;p&gt;Bon ben tout ça n'a pas plu à mon postfix, mais surtout à mon dspam, qui a régulièrement lâché après les différentes relances effectuées dans la journée. Ça n'est que dans la soirée que j'ai vraiment pu m'occuper du problème (Lles jolies courbes verrtes sur la figure), surveiller dspam et le relancer lorsqu'il plantait. Mais vu le débit (pas plus d'un mail à la seconde, pas sûr que mon installation soit bien optimisée), j'en avais pour un moment.&lt;br /&gt;&lt;/p&gt;


&lt;p&gt;Heureusement, j'ai pu trouver un &lt;a href=&quot;http://wiki.ouitech.fr/doku.php/tutoriels/gnu_linux/applications/script_pfdel_postfix&quot; hreflang=&quot;fr&quot;&gt;petit script&lt;/a&gt; permettant de supprimer des mails de la file d'attente à partir d'un regexp sur le résultat de &lt;code&gt;postqueue -p&lt;/code&gt;. Résultat, le script suivant&amp;nbsp;:&lt;/p&gt;



&lt;pre&gt;while true; do for i in $( sudo postqueue -p |head -n 500 | grep -i mail |awk '{print $1}'|sed s/\*// );do sudo postsuper -d $i; done; done&lt;/pre&gt;


&lt;p&gt;m'a permis de terminer l'évacuation du bouchon vers 2h du matin, au lieu de beaucoup plus tard...&lt;/p&gt;</content>

    


      </entry>
  
</feed>
