<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>GNU Squad</title>
	<atom:link href="http://blog.gnusquad.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.gnusquad.org</link>
	<description>Freedom computers</description>
	<lastBuildDate>Tue, 15 Jun 2010 06:04:14 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Sondage de la communauté Debian</title>
		<link>http://blog.gnusquad.org/2010/06/15/sondage-de-la-communaute-debian/</link>
		<comments>http://blog.gnusquad.org/2010/06/15/sondage-de-la-communaute-debian/#comments</comments>
		<pubDate>Tue, 15 Jun 2010 06:03:55 +0000</pubDate>
		<dc:creator>Sylvain</dc:creator>
				<category><![CDATA[Actualités]]></category>
		<category><![CDATA[Debian GNU/Linux]]></category>
		<category><![CDATA[Planet Libre]]></category>

		<guid isPermaLink="false">http://blog.gnusquad.org/?p=353</guid>
		<description><![CDATA[Suite à la préparation de la « mini debconf » qui s&#8217;est déroulée les 10 et 11 juin 2010 à Berlin, il a été décidé de proposer aux utilisateurs Debian, un petit sondage comportant différentes questions sur l&#8217;usage que vous faites de cet OS, de ses dérivés, sur votre avis concernant les cycles de publication, [...]]]></description>
			<content:encoded><![CDATA[<p>Suite à la préparation de la « <em>mini debconf</em> » qui s&#8217;est déroulée les 10 et 11 juin 2010 à Berlin, il a été décidé de proposer aux utilisateurs Debian, un petit sondage comportant différentes questions sur l&#8217;usage que vous faites de cet OS, de ses dérivés, sur votre avis concernant les cycles de publication, etc. Ça ne prend que deux minutes à remplir, je vous invite donc à remplir ce questionnaire et à le diffuser à la communauté. <img src='http://blog.gnusquad.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Lien : </p>
<ul>
<li><a href="https://spreadsheets.google.com/embeddedform?formkey=dDBMcWwtUmZBMXo1RFFHdG5jUEREb0E6MA">Sondage de la communauté Debian</a></li>
</ul>
<p><span id="more-353"></span></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gnusquad.org/2010/06/15/sondage-de-la-communaute-debian/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Créer une image ISO Debian avec les firmwares non libres</title>
		<link>http://blog.gnusquad.org/2009/11/06/creer-une-image-iso-debian-avec-les-firmwares-non-libres/</link>
		<comments>http://blog.gnusquad.org/2009/11/06/creer-une-image-iso-debian-avec-les-firmwares-non-libres/#comments</comments>
		<pubDate>Fri, 06 Nov 2009 19:53:01 +0000</pubDate>
		<dc:creator>Sylvain</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Debian GNU/Linux]]></category>
		<category><![CDATA[Développement]]></category>
		<category><![CDATA[Langages]]></category>
		<category><![CDATA[Système]]></category>
		<category><![CDATA[Planet Libre]]></category>

		<guid isPermaLink="false">http://blog.gnusquad.org/?p=331</guid>
		<description><![CDATA[Les images ISO officielles de Debian, conformément aux DFSG, ne contiennent pas de firmwares non libres ce qui peut poser problème lorsque l&#8217;on a, par exemple, des serveurs équipés de carte réseaux Broadcom NetXtreme II utilisant le module « bnx2 » qui nécessite un firmware évidemment non libre. Dans ce genre de cas, l&#8217;installateur Debian [...]]]></description>
			<content:encoded><![CDATA[<p>Les images ISO officielles de Debian, conformément aux <abbr title="Debian Free Software Guidelines">DFSG</abbr>, ne contiennent pas de firmwares non libres ce qui peut poser problème lorsque l&#8217;on a, par exemple, des serveurs équipés de carte réseaux <em>Broadcom NetXtreme II</em> utilisant le module « <em>bnx2</em> » qui nécessite un firmware évidemment non libre. Dans ce genre de cas, l&#8217;installateur Debian demande de fournir ce dernier via une clé USB, c&#8217;est bien mais je souhaitais sauter cette étape, c&#8217;est pourquoi j&#8217;ai développé un petit script s&#8217;occupant d&#8217;intégrer directement dans l&#8217;image ISO les firmwares non libres disponibles dans la section « <em>non-free</em> ». Voici le script pour les intéressés :</p>
<pre>#!/bin/bash

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

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

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

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

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

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

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

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

 cd $OLDPWD
 echo $FIRMWARE_DIR
}

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

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

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

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

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

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

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

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

#////////////////////////////////////////#
# On nettoie les répertoires temporaires #
#////////////////////////////////////////#
rm -rf $FIRMWARE_DIR $ISO_DIR</pre>
<p>Liens :</p>
<ul>
<li><a href='http://blog.gnusquad.org/wp-content/uploads/2009/11/debian_firmware.sh'>Script à télécharger</a></li>
<li><a href="http://blog.gnusquad.org/wp-content/uploads/2009/11/debian_firmware.ogv">Vidéo de l&#8217;exécution du script</a></li>
</ul>
<p><span id="more-331"></span></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gnusquad.org/2009/11/06/creer-une-image-iso-debian-avec-les-firmwares-non-libres/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
<enclosure url="http://blog.gnusquad.org/wp-content/uploads/2009/11/debian_firmware.ogv" length="6576519" type="video/ogg" />
		</item>
		<item>
		<title>Variables variables en Bash</title>
		<link>http://blog.gnusquad.org/2009/10/21/variables-variables-en-bash/</link>
		<comments>http://blog.gnusquad.org/2009/10/21/variables-variables-en-bash/#comments</comments>
		<pubDate>Wed, 21 Oct 2009 19:29:00 +0000</pubDate>
		<dc:creator>Sylvain</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Debian GNU/Linux]]></category>
		<category><![CDATA[Développement]]></category>
		<category><![CDATA[Langages]]></category>
		<category><![CDATA[Système]]></category>
		<category><![CDATA[Planet Libre]]></category>

		<guid isPermaLink="false">http://blog.gnusquad.org/?p=308</guid>
		<description><![CDATA[Il peut parfois être pratique d&#8217;avoir des noms de variables qui soient variables. C&#8217;est-à-dire un nom de variable qui est affecté et utilisé dynamiquement. En bash, il suffit de d&#8217;utiliser la construction « ${!variable} » pour déréférencer la variable ayant son nom contenu dans $variable. Voici un exemple d&#8217;utilisation concret :

#!/bin/bash

BACKUP_DAY=10
BACKUP_WEEK=4

LIST=( DAY WEEK )
for i [...]]]></description>
			<content:encoded><![CDATA[<p>Il peut parfois être pratique d&#8217;avoir des noms de variables qui soient variables. C&#8217;est-à-dire un nom de variable qui est affecté et utilisé dynamiquement. En <em>bash</em>, il suffit de d&#8217;utiliser la construction « <em>${!variable}</em> » pour déréférencer la variable ayant son nom contenu dans <em>$variable</em>. Voici un exemple d&#8217;utilisation concret :</p>
<pre>
#!/bin/bash

BACKUP_DAY=10
BACKUP_WEEK=4

LIST=( DAY WEEK )
for i in ${LIST[@]}; do
    i="BACKUP_$i"
    echo "$i : ${!i}"
done
</pre>
<p>Affichera :</p>
<pre>
BACKUP_DAY : 10
BACKUP_WEEK : 4
</pre>
<p>À lire :</p>
<ul>
<li><a href="http://man.gnusquad.org/bash/section-1/fr/">Man bash</a></li>
</ul>
<p><span id="more-308"></span></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gnusquad.org/2009/10/21/variables-variables-en-bash/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Équivalents de dirname &amp; basename en Bash</title>
		<link>http://blog.gnusquad.org/2009/10/21/equivalents-de-dirname-basename-en-bash/</link>
		<comments>http://blog.gnusquad.org/2009/10/21/equivalents-de-dirname-basename-en-bash/#comments</comments>
		<pubDate>Wed, 21 Oct 2009 16:16:28 +0000</pubDate>
		<dc:creator>Sylvain</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Debian GNU/Linux]]></category>
		<category><![CDATA[Développement]]></category>
		<category><![CDATA[Langages]]></category>
		<category><![CDATA[Système]]></category>
		<category><![CDATA[Planet Libre]]></category>

		<guid isPermaLink="false">http://blog.gnusquad.org/?p=293</guid>
		<description><![CDATA[Les programmes dirname et basename sont très pratiques lors de l&#8217;écriture de scripts bash mais impliquent une exécution externe ce que les puristes aiment bien éviter. Voici, pour les intéressés, leurs équivalents en bash accompagnés d&#8217;une batterie de tests pour valider leur fonctionnement par rapport aux programmes de base :

#!/bin/bash

function basename(){
    echo [...]]]></description>
			<content:encoded><![CDATA[<p>Les programmes <em>dirname</em> et <em>basename</em> sont très pratiques lors de l&#8217;écriture de scripts <em>bash</em> mais impliquent une exécution externe ce que les puristes aiment bien éviter. Voici, pour les intéressés, leurs équivalents en <em>bash</em> accompagnés d&#8217;une batterie de tests pour valider leur fonctionnement par rapport aux programmes de base :</p>
<pre>
#!/bin/bash

function basename(){
    echo ${1##*/}
}

function dirname(){
    local file=$1
    case $file in
        /*) ;;
        ./*) ;;
        *) file=./$file ;;
    esac
    file=${file%/*}
    echo ${file:-/}
}

PROGS=( dirname basename )
LIST_FILES=( /test.txt /tmp/test.txt /tmp/plop/test.txt ./test.txt ./tmp/test.txt ./tmp/plop/test.txt test.txt )

for prog in ${PROGS[@]}; do
    echo "--&gt; $prog &lt;--"
    for file in ${LIST_FILES[@]}; do
        SYSTEM=$(bash -c "$prog $file")
        MINE=$($prog $file)
        [[ $SYSTEM != $MINE ]] &#038;&#038; echo -e "$file\nSystème : $SYSTEM\nLe mien : $MINE"
    done
done
</pre>
<p>Une petite comparaison rapide entre les deux solutions montre des performances supérieures de 75% en faveur de la solution <em>bash</em>. En pratique, la différence sera bien évidemment insignifiante sauf si vous vous amusez à itérer un grand nombre de fois sur ces fonctions. <img src='http://blog.gnusquad.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Note : les options <em>&#8211;help</em>, <em>&#8211;version</em> ainsi que le paramètre permettant d&#8217;indiquer un suffixe pour <em>basename</em> ne sont pas pris en compte.</p>
<p>À lire :</p>
<ul>
<li><a href="http://man.gnusquad.org/dirname/section-1/fr/">Man dirname</a></li>
<li><a href="http://man.gnusquad.org/basename/section-1/fr/">Man basename</a></li>
<li><a href="http://man.gnusquad.org/bash/section-1/fr/">Man bash</a></li>
</ul>
<p><span id="more-293"></span></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gnusquad.org/2009/10/21/equivalents-de-dirname-basename-en-bash/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Afficher les caractères spéciaux dans Vim</title>
		<link>http://blog.gnusquad.org/2009/07/24/afficher-les-caracteres-speciaux-dans-vim/</link>
		<comments>http://blog.gnusquad.org/2009/07/24/afficher-les-caracteres-speciaux-dans-vim/#comments</comments>
		<pubDate>Fri, 24 Jul 2009 14:52:10 +0000</pubDate>
		<dc:creator>Sylvain</dc:creator>
				<category><![CDATA[Logiciels divers]]></category>
		<category><![CDATA[Vim]]></category>
		<category><![CDATA[Planet Libre]]></category>

		<guid isPermaLink="false">http://blog.gnusquad.org/?p=260</guid>
		<description><![CDATA[De temps à autre, lors de l&#8217;écriture de scripts, il m&#8217;arrive d&#8217;accompagner l&#8217;appui de la touche espace de sa voisine, la touche « ALT-GR » ce qui du coup crée une espace insécable, invisible sur le moment jusqu&#8217;à ce que le script plante (la plupart du temps après un « pipe &#8211; ALT-GR + 8 [...]]]></description>
			<content:encoded><![CDATA[<p>De temps à autre, lors de l&#8217;écriture de scripts, il m&#8217;arrive d&#8217;accompagner l&#8217;appui de la touche espace de sa voisine, la touche « <em>ALT-GR</em> » ce qui du coup crée une espace insécable, invisible sur le moment jusqu&#8217;à ce que le script plante (la plupart du temps après un « <em>pipe</em> &#8211; <em>ALT-GR + 8</em> »)…</p>
<p>Heureusement, grâce à Vim, il est possible d&#8217;afficher certains caractères spéciaux via les variables « <em>list</em> » et « <em>listchars</em> ».</p>
<p>« <em>list</em> » permet d&#8217;activer l&#8217;affichage des caractères spéciaux, on l&#8217;active en tapant « <em>set list</em> » et on le désactive en tapant « <em>set list!</em> » ou « <em>set nolist</em> ».<br />
« <em>listchars</em> » contient la liste des caractères spéciaux à afficher séparés par des virgules (le « <em>c</em> » après le « <em>:</em> » étant le caractère de remplacement à afficher) :</p>
<ul>
<li>Fin de ligne : « <em>eol:c</em> »</li>
<li>Tabulation : « <em>tab:xy</em> » (« <em>x</em> » étant le premier caractère de la tabulation, « <em>y</em> » étant le reste qui peut varier)</li>
<li>Espaces de fin de ligne : « <em>trail:c</em> »</li>
<li>Débordement à droite de la ligne par rapport à l&#8217;écran : « <em>extends:c</em> »</li>
<li>Débordement à gauche de la ligne par rapport à l&#8217;écran : « <em>precedes:c</em> »</li>
<li>Espace insécable : « <em>nbsp:c</em> »</li>
</ul>
<p>Voici, pour exemple, les paramètres provenant de mon fichier « <em>~/.vimrc</em> » :</p>
<pre>" Affiche les caractères spéciaux
set listchars=nbsp:¤,tab:&gt;-,trail:¤,extends:&gt;,precedes:&lt;
set list</pre>
<p>Avant :<br />
<img class="alignnone size-full wp-image-268" title="VIM (list = false)" src="http://blog.gnusquad.org/wp-content/uploads/2009/07/vim_nolistchars.png" alt="VIM (list = false)" width="340" height="158" /></p>
<p>Après:<br />
<img class="alignnone size-full wp-image-267" title="VIM (list = true)" src="http://blog.gnusquad.org/wp-content/uploads/2009/07/vim_listchars.png" alt="VIM (list = true)" width="340" height="158" /></p>
<p>Sympa, non ? Merci vim ! <img src='http://blog.gnusquad.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
<span id="more-260"></span></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gnusquad.org/2009/07/24/afficher-les-caracteres-speciaux-dans-vim/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Habillez vos commentaires facilement grâce à Vim</title>
		<link>http://blog.gnusquad.org/2009/07/22/habillez-vos-commentaires-facilement-grace-a-vim/</link>
		<comments>http://blog.gnusquad.org/2009/07/22/habillez-vos-commentaires-facilement-grace-a-vim/#comments</comments>
		<pubDate>Wed, 22 Jul 2009 11:20:35 +0000</pubDate>
		<dc:creator>Sylvain</dc:creator>
				<category><![CDATA[Logiciels divers]]></category>
		<category><![CDATA[Vim]]></category>
		<category><![CDATA[Planet Libre]]></category>

		<guid isPermaLink="false">http://blog.gnusquad.org/?p=242</guid>
		<description><![CDATA[J&#8217;ai pour habitude d&#8217;afficher de jolis commentaires bien démarqués du code source afin de pouvoir les lire très rapidement sans devoir les chercher. Hors, selon les langages de programmation, ceux-ci ne s&#8217;écrivent pas de la même façon. Je vous propose donc une petite macro (à placer dans votre « ~/.vimrc ») permettant d&#8217;habiller facilement vos [...]]]></description>
			<content:encoded><![CDATA[<p>J&#8217;ai pour habitude d&#8217;afficher de jolis commentaires bien démarqués du code source afin de pouvoir les lire très rapidement sans devoir les chercher. Hors, selon les langages de programmation, ceux-ci ne s&#8217;écrivent pas de la même façon. Je vous propose donc une petite macro (à placer dans votre « <em>~/.vimrc</em> ») permettant d&#8217;habiller facilement vos commentaires ; celle-ci étant accessible grâce à la touche <strong>F8</strong> en mode normal.</p>
<p>Voici la macro en question :</p>
<pre>
map &lt;F8&gt; :call Comment()&lt;CR&gt;

function! Comment()
    let ext = expand("%:e")

    if ext == 'html' || ext == 'htm'
        execute "normal yyPPI&lt;!--^[lDjI   ^[j^DI--&gt;^[j"
        return
    endif

    if ext == 'php' || ext == 'js'
        execute "normal I// ^[A //^[yyPv$r/yyjpj"
        return
    endif

    if ext == 'txt'
        execute "normal I| ^[A |^[yyPr+lv$r-$r+yyjpj"
        return
    endif

    if ext == 'tex'
        execute "normal I% ^[A %^[yyPr%lv$r/$r%yyjpj"
        return
    endif

    if ext == 'c' || ext == 'cpp' || ext == 'cc' || ext == 'h' || ext == 'hpp'
        execute "normal yyPPI/*^[lDjI   ^[j^DI*/^[j"
        return
    endif

    " Style de commentaire par défaut
    if ext == 'sh' || ext == 'py' || ext == 'pl' || 1
        execute "normal I# ^[A #^[yyPr#lv$r/$r#yyjpj"
        return
    endif
endfunction
</pre>
<p>J&#8217;ai deux petites remarques à faire :</p>
<ol>
<li>« <em>^[</em> » correspond à « <em>ECHAP</em> » que l&#8217;on écrit en appuyant sur « <em>CTRL+V</em> » puis « <em>ECHAP</em> »;</li>
<li>le style de commentaire par défaut doit être sur la dernière ligne à cause du test « <em>|| 1</em> » qui dans tous les cas validera la condition.</li>
</ol>
<p>Voici le résultat obtenu selon le format de fichier :</p>
<ul>
<li>
Extension du fichier <em>html</em> ou <em>htm</em> :</p>
<pre>
&lt;!--
   Hello GNU Squad !
--&gt;
</pre>
</li>
<li>
Extension du fichier <em>php</em> ou <em>js</em> :</p>
<pre>
///////////////////////
// Hello GNU Squad ! //
///////////////////////
</pre>
</li>
<li>
Extension du fichier <em>txt</em> :</p>
<pre>
+-------------------+
| Hello GNU Squad ! |
+-------------------+
</pre>
</li>
<li>
Extension du fichier <em>tex</em> :</p>
<pre>
%///////////////////%
% Hello GNU Squad ! %
%///////////////////%
</pre>
</li>
<li>
Extension du fichier <em>c</em>, <em>cpp</em>, <em>h</em> ou <em>hpp</em> :</p>
<pre>
/*
   Hello GNU Squad !
*/
</pre>
</li>
<li>
Extension du fichier <em>sh</em>, <em>py</em>, <em>pl</em> et tout le reste :</p>
<pre>
#///////////////////#
# Hello GNU Squad ! #
#///////////////////#
</pre>
</li>
</ul>
<p>À vous d&#8217;agrémenter ou de modifier selon vos besoins, si vous avez besoin d&#8217;aide, n&#8217;hésitez-pas à passer par les commentaires <img src='http://blog.gnusquad.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
<span id="more-242"></span></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gnusquad.org/2009/07/22/habillez-vos-commentaires-facilement-grace-a-vim/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Gérer ses templates pour Vim sans fichiers externes</title>
		<link>http://blog.gnusquad.org/2009/06/25/gerer-ses-templates-pour-vim-sans-fichiers-externes/</link>
		<comments>http://blog.gnusquad.org/2009/06/25/gerer-ses-templates-pour-vim-sans-fichiers-externes/#comments</comments>
		<pubDate>Thu, 25 Jun 2009 10:50:45 +0000</pubDate>
		<dc:creator>Sylvain</dc:creator>
				<category><![CDATA[Logiciels divers]]></category>
		<category><![CDATA[Vim]]></category>
		<category><![CDATA[Planet Libre]]></category>

		<guid isPermaLink="false">http://blog.gnusquad.org/?p=210</guid>
		<description><![CDATA[Suite à un billet posté sur le site Informatique et liberté évoquant une solution originale pour gérer ses templates avec Vim, j&#8217;ai décidé d&#8217;améliorer un peu la technique en utilisant la puissance de ce superbe éditeur combinée à celle de sed.
Habituellement, pour chaque template, nous créons un fichier externe placé dans notre dossier personnel ~/.vim. [...]]]></description>
			<content:encoded><![CDATA[<p>Suite à un billet posté sur le site <a href="http://informatique-et-liberte.tuxfamily.org/2009/06/23/vim-et-son-vimrc-la-gestion-des-templates/trackback/">Informatique et liberté</a> évoquant une solution originale pour gérer ses templates avec <em>Vim</em>, j&#8217;ai décidé d&#8217;améliorer un peu la technique en utilisant la puissance de ce superbe éditeur combinée à celle de <em>sed</em>.</p>
<p>Habituellement, pour chaque template, nous créons un fichier externe placé dans notre dossier personnel <em>~/.vim</em>. Prenons l&#8217;exemple d&#8217;un template HTML dans <em>~/.vim/templates/html</em> que l&#8217;on appellerait de cette manière dans notre fichier de configuration <em>~/.vimrc</em> :</p>
<pre>autocmd BufNewFile *.html 0r ~/.vim/templates/html</pre>
<p>Logiciels utilisés :</p>
<ul>
<li>Vim 7.2</li>
<li>GNU Sed 4.2</li>
</ul>
<p>Le but du jeu est de centraliser toute notre configuration dans notre <em>~/.vimrc</em> et donc d&#8217;y inclure nos templates. Le seul moyen, à ma connaissance, est de mettre ceux-ci en commentaires afin qu&#8217;ils n&#8217;interfèrent pas avec le reste de la configuration, il ne restera plus alors qu&#8217;à trouver le template adéquat, pour cela on passera par des marqueurs de début et de fin de template, voici donc ma solution :</p>
<pre>" BEGIN HTML
" &lt;html&gt;
"     &lt;head&gt;
"         &lt;title&gt;Hello gnusquad !&lt;/title&gt;
"     &lt;/head&gt;
" &lt;/html&gt;
" END HTML

autocmd BufNewFile *.html call Template('HTML')

function! Template(type)
    exe "0r !sed -n '/^\"\\s*BEGIN " . a:type . "$/,/^\"\\s*END " . a:type . "$/ {s///;/^$/d;s/^\" //;p}' $MYVIMRC"
    echo '--> INFO : Template ' . a:type . ' charge < --'
endfunction</pre>
<p>Nous retrouvons donc en première partie le template mis en commentaire et délimité par les marqueurs « <strong>BEGIN HTML</strong> » et « <strong>END HTML</strong> », la deuxième partie appelle la fonction « <strong>Template</strong> » avec en paramètre « <strong>HTML</strong> » lorsque l'on crée un nouveau fichier ayant son nom correspondant au motif « <strong>*.html</strong> », la troisième et dernière partie contient la fonction « <strong>Template</strong> » proprement dite qui prend donc un paramètre servant à délimiter le template, on y trouve une jolie ligne de <em>sed</em> qui paraît obscure à première vue mais qui est très simple : on localise et ne traite que la partie contenue entre « <strong>BEGIN xxx</strong> » et « <strong>END xxx </strong> », on supprime ces deux lignes puis les lignes vides puis on décommente le template, le tout étant inséré dans le buffer courant. <img src='http://blog.gnusquad.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Vous aurez donc compris qu'il est très simple d'ajouter de nouveaux templates : il suffit juste que le paramètre passé à la fonction « <em>Template</em> » corresponde à la partie présente après « <em>BEGIN</em> » et « <em>END</em> » de votre template. <img src='http://blog.gnusquad.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><span id="more-210"></span></pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.gnusquad.org/2009/06/25/gerer-ses-templates-pour-vim-sans-fichiers-externes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Visualisez la hiérarchie de vos inclusions PHP avec « Inclued »</title>
		<link>http://blog.gnusquad.org/2009/03/06/visualisez-la-hierarchie-de-vos-inclusions-php-avec-inclued/</link>
		<comments>http://blog.gnusquad.org/2009/03/06/visualisez-la-hierarchie-de-vos-inclusions-php-avec-inclued/#comments</comments>
		<pubDate>Fri, 06 Mar 2009 19:58:14 +0000</pubDate>
		<dc:creator>Sylvain</dc:creator>
				<category><![CDATA[Debian GNU/Linux]]></category>
		<category><![CDATA[Développement]]></category>
		<category><![CDATA[Langages]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Système]]></category>
		<category><![CDATA[Planet Libre]]></category>

		<guid isPermaLink="false">http://blog.gnusquad.org/?p=152</guid>
		<description><![CDATA[L&#8217;extension PECL « Inclued » permet de tracer et d&#8217;enregistrer sous forme hiérarchique, l&#8217;ensemble des inclusions de fichiers durant l&#8217;exécution d&#8217;un script PHP.
Prenons pour exemple le monstrueux WordPress, voici ce que l&#8217;on peut obtenir :

Mis à part le fait que ce genre de graphe est toujours sympa à voir, il permet de se faire une [...]]]></description>
			<content:encoded><![CDATA[<p>L&#8217;extension <abbr title="PHP Extension Community Library">PECL</abbr> « <em>Inclued</em> » permet de tracer et d&#8217;enregistrer sous forme hiérarchique, l&#8217;ensemble des inclusions de fichiers durant l&#8217;exécution d&#8217;un script PHP.</p>
<p>Prenons pour exemple le monstrueux WordPress, voici ce que l&#8217;on peut obtenir :</p>
<p><a href="http://img527.imageshack.us/img527/4869/inclued185541.png"><img src="http://blog.gnusquad.org/wp-content/uploads/2009/03/wordpress-inclued-tiny1.png" alt="WordPress Inclued" title="WordPress Inclued" width="218" height="160" class="alignnone size-full wp-image-177" /></a></p>
<p>Mis à part le fait que ce genre de graphe est toujours sympa à voir, il permet de se faire une idée sur la qualité d&#8217;un code :</p>
<ul>
<li>Pourquoi ce fichier est inclut alors qu&#8217;il n&#8217;est pas utilisé ?</li>
<li>Pourquoi ce fichier est inclut ici plutôt que là ?</li>
<li>Pourquoi ce fichier n&#8217;est pas inclus en utilisant les primitives *_once ?</li>
<li>Pourquoi les inclusions proviennent uniquement de ce fichier ?</li>
<li>etc.</li>
</ul>
<p>Passons au vif du sujet ! Pour commencer nous allons installer les paquets nécessaires pour la suite des opérations :</p>
<ul>
<li><em>php5-dev</em> et <em>make</em> pour la compilation de l&#8217;extension</li>
<li><em>php5-cli</em> et <em>graphviz</em> pour la génération des images</li>
</ul>
<pre>
<strong>root@gnusquad</strong>:~# aptitude install php5-dev php5-cli make graphviz
</pre>
<p>Une fois ces paquets installés, téléchargeons l&#8217;extension « <em>Inclued</em> » et décompressons la d&#8217;un trait :</p>
<pre>
<strong>root@gnusquad</strong>:~# wget -q -O - http://pecl.php.net/get/inclued | tar zx
</pre>
<p>Compilons cette dernière :</p>
<pre>
<strong>root@gnusquad</strong>:~# cd inclued-0.1.0
<strong>root@gnusquad</strong>:~/inclued-0.1.0# phpize
<strong>root@gnusquad</strong>:~/inclued-0.1.0# ./configure
<strong>root@gnusquad</strong>:~/inclued-0.1.0# make
</pre>
<p>L&#8217;étape qui suit consiste à indiquer à PHP de charger cette nouvelle extension :</p>
<pre>
<strong>root@gnusquad</strong>:~/inclued-0.1.0# cp modules/inclued.so /usr/lib/php5/20060613+lfs
<strong>root@gnusquad</strong>:~/inclued-0.1.0# vi /etc/php5/conf.d/inclued.ini

extension=inclued.so
inclued.enabled=on
inclued.dumpdir=/tmp
</pre>
<p>On peut dès lors redémarrer le serveur web, <em>Apache</em> en l&#8217;occurence, sachant que désormais, chaque accès à un fichier PHP (via le web ou en CLI) générera un fichier dans le répertoire <em>/tmp</em> donc méfiance !</p>
<pre>
<strong>root@gnusquad</strong>:~/inclued-0.1.0# /etc/init.d/apache2 restart
</pre>
<p>Sachez qu&#8217;il est également possible d&#8217;activer l&#8217;extension au niveau du serveur web en utilisant les directives <em>php_admin_flag</em> et <em>php_admin_value</em> ce qui permet de limiter l&#8217;extension à un vhost par exemple. Malheureusement, et contrairement à ce qui est indiqué sur le site PHP, il n&#8217;est pas possible d&#8217;utiliser ces directives dans un fichier <em>.htaccess</em>.</p>
<p>Les fichiers générés n&#8217;étant pas directement des images, il faut les convertir à l&#8217;aide d&#8217;un script fourni avec l&#8217;extension que nous enroberons de notre propre script afin de nous faciliter la vie :</p>
<pre>
<strong>root@gnusquad</strong>:~/inclued-0.1.0# cp gengraph.php /usr/local/bin
<strong>root@gnusquad</strong>:~/inclued-0.1.0# cd $_
<strong>root@gnusquad</strong>:/usr/local/bin# vi gengraph

#!/bin/bash
echo "Generating file $1.png"
exec >/dev/null
php -d "inclued.enabled=Off" $(dirname $0)/gengraph.php -i $1 -o $1.dot
dot -Tpng -o $1.png $1.dot
rm $1
rm $1.dot

<strong>root@gnusquad</strong>:/usr/local/bin# chmod +x $_
</pre>
<p>Voilà, le plus dur est fait, il ne vous reste plus qu&#8217;à aller sur une page web PHP et à générer l&#8217;image :</p>
<pre>
<strong>root@gnusquad</strong>:/usr/local/bin# cd /tmp
<strong>root@gnusquad</strong>:/tmp# ls
inclued.00688.1
<strong>root@gnusquad</strong>:/tmp# gengraph inclued.00688.1
<strong>root@gnusquad</strong>:/tmp# ls
inclued.00688.1.png
</pre>
<p>À lire :</p>
<ul>
<li><a href="http://fr.php.net/manual/en/book.inclued.php">Documentation PHP sur Inclued</a></li>
<li><a href="http://pecl.php.net/package/inclued">Package Inclued sur la PECL</a></li>
</ul>
<p>Mise à jour du 05 mai 2009 : pour effectuer la compilation encore plus simplement, il suffit de taper « <em>pecl install channel://pecl.php.net/inclued-0.1.0</em> » et le tour est joué ! <img src='http://blog.gnusquad.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
<span id="more-152"></span></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gnusquad.org/2009/03/06/visualisez-la-hierarchie-de-vos-inclusions-php-avec-inclued/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Modifier le « User-Agent » sous Firefox &amp; Thunderbird</title>
		<link>http://blog.gnusquad.org/2009/02/25/modifier-le-user-agent-sous-firefox-thunderbird/</link>
		<comments>http://blog.gnusquad.org/2009/02/25/modifier-le-user-agent-sous-firefox-thunderbird/#comments</comments>
		<pubDate>Wed, 25 Feb 2009 11:54:56 +0000</pubDate>
		<dc:creator>Sylvain</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Logiciels divers]]></category>
		<category><![CDATA[Planet Libre]]></category>

		<guid isPermaLink="false">http://blog.gnusquad.org/?p=140</guid>
		<description><![CDATA[Rien de plus simple, il suffit d&#8217;aller dans l&#8217;éditeur de configuration des ces outils :

Sous Firefox, il faut taper « about:config » dans la barre de navigation
Sous Thunderbird, il faut aller dans le menu « Édition -> Préférences », sélectionner l&#8217;onglet « Avancé » puis « Général » et cliquer sur « Éditeur de configuration» [...]]]></description>
			<content:encoded><![CDATA[<p>Rien de plus simple, il suffit d&#8217;aller dans l&#8217;éditeur de configuration des ces outils :</p>
<ul>
<li>Sous Firefox, il faut taper « <em>about:config</em> » dans la barre de navigation</li>
<li>Sous Thunderbird, il faut aller dans le menu « Édition -> Préférences », sélectionner l&#8217;onglet « Avancé » puis « Général » et cliquer sur « Éditeur de configuration» </li>
</ul>
<p>Ensuite, il faut ajouter (ou modifier si elle existe déjà) une chaîne de caractères que vous nommerez « <em>general.useragent.override</em> », la valeur que vous rentrerez par la suite sera utilisée par Firefox ou Thunderbird pour spécifier l&#8217;« <em>User-Agent</em> ».</p>
<p>À lire :</p>
<ul>
<li><a href="http://fr.wikipedia.org/wiki/User_agent">Wikipédia : User-Agent</a></li>
</ul>
<p><span id="more-140"></span></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gnusquad.org/2009/02/25/modifier-le-user-agent-sous-firefox-thunderbird/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Problème d&#8217;accès à l&#8217;IP publique d&#8217;une Freebox à travers le NAT</title>
		<link>http://blog.gnusquad.org/2009/02/23/probleme-d-acces-a-l-ip-publique-dune-freebox-a-travers-le-nat/</link>
		<comments>http://blog.gnusquad.org/2009/02/23/probleme-d-acces-a-l-ip-publique-dune-freebox-a-travers-le-nat/#comments</comments>
		<pubDate>Mon, 23 Feb 2009 06:20:24 +0000</pubDate>
		<dc:creator>Sylvain</dc:creator>
				<category><![CDATA[Debian GNU/Linux]]></category>
		<category><![CDATA[Système]]></category>
		<category><![CDATA[Planet Libre]]></category>

		<guid isPermaLink="false">http://blog.gnusquad.org/?p=97</guid>
		<description><![CDATA[Voici un état des lieux : je dispose d&#8217;une Freebox v4, j&#8217;ai activé le NAT et le DHCP (adresses IP fixées par adresse MAC) pour mes PC. Il y en a un qui est entièrement accessible depuis internet grâce à l&#8217;option « IP DMZ » présente dans la console d&#8217;administration de la Freebox qui redirige [...]]]></description>
			<content:encoded><![CDATA[<p>Voici un état des lieux : je dispose d&#8217;une Freebox v4, j&#8217;ai activé le NAT et le DHCP (adresses IP fixées par adresse MAC) pour mes PC. Il y en a un qui est entièrement accessible depuis internet grâce à l&#8217;option « IP DMZ » présente dans la console d&#8217;administration de la Freebox qui redirige toutes les connexions entrantes non encore établies en provenance d&#8217;internet vers l&#8217;adresse IP désignée, dans mon cas 192.168.0.1. Mon adresse IP publique est associée au domaine <em>gnusquad.org</em> donc tout le traffic à destination de ce domaine part sur le PC ayant l&#8217;IP 192.168.0.1.</p>
<p>Voici un schéma afin d&#8217;être plus clair :<br />
<img src="http://blog.gnusquad.org/wp-content/uploads/2009/02/graph1.png" alt="Graphique Freebox" title="Graphique Freebox" width="469" height="296" class="alignnone size-full wp-image-130" /></p>
<p>Le problème est qu&#8217;il est impossible depuis le PC ayant l&#8217;IP 192.168.0.2 d&#8217;accéder, par exemple, à mon blog (<a href="blog.gnusquad.org">http://blog.gnusquad.org</a>), la résolution DNS renvoyant mon adresse IP publique et la Freebox ne redirigeant le traffic « IP DMZ » que depuis le WAN et non le LAN !</p>
<p>Ma solution initiale était d&#8217;ajouter sur le PC ayant l&#8217;IP 192.168.0.2, une entrée dans le fichier « <em>/etc/hosts</em> » qui pour rappel, permet de fixer une adresse IP pour une liste de domaines et de sous-domaines :</p>
<pre><strong>root@gnusquad</strong>:~# vi /etc/hosts

192.168.0.1 gnusquad.org www.gnusquad.org blog.gnusquad.org man.gnusquad.org
...</pre>
<p>Cette solution a le mérite d&#8217;être simple et rapide à mettre en œuvre mais a comme désavantage le fait de devoir tenir à jour cette entrée par rapport à la liste grandissante des sous-domaines hébergés sur la même machine.</p>
<p>Il était donc temps de trouver une solution plus confortable, c&#8217;est pourquoi j&#8217;ai décidé d&#8217;installer un proxy DNS, en l&#8217;occurence <em>pdnsd</em> qui me permettrait de modifier les enregistrements DNS à ma guise.</p>
<pre><strong>root@gnusquad</strong>:~# aptitude install pdnsd</pre>
<p>L&#8217;installation vous demandera si vous préférez utiliser les DNS fournis par le programme <em>resolvconf</em>, les DNS des serveurs racines ou bien encore si vous préférez les indiquer manuellement.<br />
Utilisant <em>resolvconf</em>, ce que je vous conseille au passage, j&#8217;ai choisi cette option ce qui aura pour conséquence, au lancement de <em>pdnsd</em> de mettre l&#8217;IP 127.0.0.1 dans le fichier <em>/etc/resolv.conf</em> à la place des DNS de votre FAI, ces derniers étant utilisés par le proxy pour la résolution de noms.</p>
<p>Il faut ensuite, désactiver la génération automatique du fichier de configuration du proxy en commentant la ligne <em>AUTO_MODE</em> du fichier <em>/etc/default/pdnsd.conf</em> . Vous pouvez également spécifiez des options de démarrage via la variable <em>START_OPTIONS</em> ce qui peut être utile pour activer le mode debug (option<em> &#8211;debug</em>). Voici ce que ça donne une fois le fichier modifié :</p>
<pre><strong>root@gnusquad</strong>:~# cat /etc/default/pdnsd.conf

# do we start pdnsd ?
START_DAEMON=yes
# auto-mode, overrides /etc/pdsnd.conf if set [see /usr/share/pdnsd/]
#AUTO_MODE=resolvconf
# optional CLI options to pass to pdnsd(8)
START_OPTIONS="--debug"</pre>
<p>Maintenant il ne reste plus qu&#8217;à configurer le proxy DNS pour renvoyer l&#8217;IP 192.168.0.2 pour toutes demandes de résolution de noms portant sur le domaine <em>gnusquad.org</em> ce qui se fait aisément une fois après avoir lu la man page du fichier <em>pdnsd.conf</em> :</p>
<pre><strong>root@gnusquad</strong>:~# vi /etc/pdnsd.conf

...
rr {
    name=gnusquad.org;
    ns=localhost;
    reverse=on;
    a=192.168.0.1;
}
rr {
    name=*.gnusquad.org;
    a=192.168.0.1;
}
...</pre>
<p>Il ne reste plus qu&#8217;à redémarrer le proxy DNS pour que les changements soient pris en compte :</p>
<pre><strong>root@gnusquad</strong>:~# /etc/init.d/pdnsd restart
Stopping pdnsd.
Starting pdnsd.
</pre>
<p>Pour terminer, sachez que <em>pdnsd</em> fait également office de cache DNS pour accélérer les résolutions de noms, ce cache se trouve dans le fichier <em>/var/cache/pdnsd/pdnsd.cache</em> que vous pouvez supprimer sans souci si vous rencontrez quelques problèmes durant vos tests. Quant aux logs, ceux-ci se trouvent dans le fichier <em>/var/cache/pdnsd/pdnsd.debug</em>.</p>
<p>À lire :</p>
<ul>
<li><a href="http://fr.wikipedia.org/wiki/R%C3%A9solution_de_noms">Résolution de noms</a></li>
<li><a href="http://man.gnusquad.org/pdnsd/section-8/en/">Man pdnsd</a></li>
<li><a href="http://man.gnusquad.org/pdnsd.conf/section-5/en/">Man pdnsd.conf</a></li>
<li><a href="http://man.gnusquad.org/resolvconf/section-8/en/">Man resolvconf</a></li>
</ul>
<p><span id="more-97"></span></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gnusquad.org/2009/02/23/probleme-d-acces-a-l-ip-publique-dune-freebox-a-travers-le-nat/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
