<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/Styles/Feed" media="screen"?>
<rdf:RDF
	xmlns="http://purl.org/rss/1.0/"
	xmlns:cc="http://web.resource.org/cc/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:xlink="http://www.w3.org/1999/xlink"
	xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
>

<channel rdf:about="http://blog.webnaute.net/RSS">
	<title>Webnaute</title>
	<link>http://blog.webnaute.net/</link>
	<description>Mes impressions sur le web, les standards et autre…</description>
	<dc:date>2007-04-07T19:50:45+02:00</dc:date>
	<dc:language>fr</dc:language>
	<dc:creator>Bobe (bobe&#x40;webnaute.net)</dc:creator>
	<dc:rights>Licence Attribution-NonCommercial 2.5 de Creative Commons</dc:rights>
	<cc:license rdf:resource="http://creativecommons.org/licenses/by-nc/2.5/"/>

	<items>
	<rdf:Seq>
		<rdf:li rdf:resource="http://blog.webnaute.net/2007/04/07/Apt-proxy_limitation_acc%C3%A8s/"/>
		<rdf:li rdf:resource="http://blog.webnaute.net/2006/08/29/Ibiza/"/>
		<rdf:li rdf:resource="http://blog.webnaute.net/2006/08/13/Wamailer_et_OpenPGP/"/>
		<rdf:li rdf:resource="http://blog.webnaute.net/2006/07/27/Mise_%C3%A0_jour_de_XHTML2/"/>
		<rdf:li rdf:resource="http://blog.webnaute.net/2006/07/03/Signets_et_mots-cl%C3%A9s/"/>
		<rdf:li rdf:resource="http://blog.webnaute.net/2006/05/23/SQL_et_structure_arborescente/"/>
		<rdf:li rdf:resource="http://blog.webnaute.net/2006/05/19/Kiff_la_force/"/>
		<rdf:li rdf:resource="http://blog.webnaute.net/2006/05/17/Un_cookie_pas_si_r%C3%A9calcitrant/"/>
		<rdf:li rdf:resource="http://blog.webnaute.net/2006/05/16/Liens_en_vrac/"/>
		<rdf:li rdf:resource="http://blog.webnaute.net/2006/05/02/Cookie_r%C3%A9calcitrant/"/>
		<rdf:li rdf:resource="http://blog.webnaute.net/2006/04/10/WD_window_object/"/>
		<rdf:li rdf:resource="http://blog.webnaute.net/2006/04/09/Arghh/"/>
		<rdf:li rdf:resource="http://blog.webnaute.net/2006/03/16/Miam/"/>
		<rdf:li rdf:resource="http://blog.webnaute.net/2006/03/13/Point_de_rupture/"/>
		<rdf:li rdf:resource="http://blog.webnaute.net/2006/03/11/Migration_vers_nouveau_serveur/"/>
	</rdf:Seq>
	</items>
</channel>

<item rdf:about="http://blog.webnaute.net/2007/04/07/Apt-proxy_limitation_acc%C3%A8s/">
	<title>Apt-Proxy et limitation d’accès</title>
	<link xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" xlink:href="http://blog.webnaute.net/2007/04/07/Apt-proxy_limitation_acc%C3%A8s/" xlink:title="Apt-Proxy et limitation d’accès">http://blog.webnaute.net/2007/04/07/Apt-proxy_limitation_acc%C3%A8s/</link>
	<description>Je m’occupe d’une dizaine de serveurs, tous sur debian etch. J’ai décidé d’installer apt-proxy sur l’un d’eux pour rendre plus rapide les mises à jours (les serveurs sont dans la même baie). Ne serait-ce que par principe, ça m’évite également de surcharger inutilement les serveurs debian. J’ai souhaité limiter l’accès au serveur proxy aux serveurs concernés, tous possédant une IP dans un sous-réseau logique. Je me suis donc tourné vers…</description>
	<content:encoded><![CDATA[<p>Je m’occupe d’une dizaine de serveurs, tous sur debian etch. J’ai décidé d’installer apt-proxy sur l’un d’eux pour rendre plus rapide les mises à jours (les serveurs sont dans la même baie). Ne serait-ce que par principe, ça m’évite également de surcharger inutilement les serveurs debian.</p>

<p>J’ai souhaité limiter l’accès au serveur proxy aux serveurs concernés, tous possédant une IP dans un sous-réseau logique. Je me suis donc tourné vers Netfilter. J’ai créé deux scripts, <em>if-pre-up.sh</em> et <em>if-post-down.sh</em>, que j’ai placés dans <samp>/etc/apt-proxy/</samp>.
Voilà d’abord le script <em>if-pre-up.sh</em>&#160;:</p>

<pre><code>#!/bin/sh -e
# Written by bobe

if [ ! "$IFACE" = "eth0" ]; then
        exit 0
fi

iptables -N aptProxy
iptables -A INPUT -i eth0 -p tcp --dport 9999 -j aptProxy
iptables -A aptProxy -s xxx.xxx.xxx.xxx/28 -j ACCEPT
iptables -A aptProxy -j DROP
exit 0</code></pre>

<p>Et le script <em>if-post-down.sh</em>&#160;:</p>

<pre><code>#!/bin/sh -e
# Written by bobe

if [ ! "$IFACE" = "eth0" ]; then
        exit 0
fi

iptables -D INPUT -i eth0 -p tcp --dport 9999 -j aptProxy
iptables -F aptProxy
iptables -X aptProxy
exit 0</code></pre>

<p>Il suffit ensuite de donner les droits d’exécution et de créer les liens nécessaires dans <samp>/etc/network/</samp>&#160;:</p>

<pre><samp># chmod a+x if-pre-up.sh if-post-down.sh
# ln -s /etc/apt-proxy/if-pre-up.sh /etc/network/if-pre-up.d/apt-proxy
# ln -s /etc/apt-proxy/if-post-down.sh /etc/network/if-post-down.d/apt-proxy</samp></pre>

<p>Ce billet est aussi l’occasion de ranimer un peu ce blog mourant.
Je vais essayer de m’en occuper plus souvent désormais ;-)</p>]]></content:encoded>
	<dc:date>2007-04-07T19:43:22+02:00</dc:date>
	<dc:subject>Bric à brac</dc:subject>
	<dc:language>fr</dc:language>
	<dc:rights>Licence Attribution-NonCommercial 2.5 de Creative Commons</dc:rights>
	<cc:license rdf:resource="http://creativecommons.org/licenses/by-nc/2.5/"/>
</item>

<item rdf:about="http://blog.webnaute.net/2006/08/29/Ibiza/">
	<title>Ibiza</title>
	<link xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" xlink:href="http://blog.webnaute.net/2006/08/29/Ibiza/" xlink:title="Ibiza">http://blog.webnaute.net/2006/08/29/Ibiza/</link>
	<description>J’ai passé les six derniers jours en Espagne. Au menu, descente en voiture (à partir de Cognac) jusqu’au sud de Valence puis prise du ferry pour Ibiza et retour à Valence dans la nuit de dimanche à lundi. Enfin, retour en voiture lundi dans la journée. Au total, pas loin de 3000 bornes sur les six jours… Crevant (et encore, je ne conduis pas). On s’est pris tuile sur tuile, un truc de dingue. Je ferai un compte-rendu plus détaillé ces…</description>
	<content:encoded><![CDATA[<p>J’ai passé les six derniers jours en Espagne. Au menu, descente en voiture (à partir de Cognac) jusqu’au sud de Valence puis prise du ferry pour Ibiza et retour à Valence dans la nuit de dimanche à lundi. Enfin, retour en voiture lundi dans la journée. Au total, pas loin de 3000 bornes sur les six jours… Crevant (et encore, je ne conduis pas).</p>

<p>On s’est pris tuile sur tuile, un truc de dingue. Je ferai un compte-rendu plus détaillé ces prochains jours (et quelques photos).</p>]]></content:encoded>
	<dc:date>2006-08-29T23:23:01+02:00</dc:date>
	<dc:subject>Bric à brac</dc:subject>
	<dc:language>fr</dc:language>
	<dc:rights>Licence Attribution-NonCommercial 2.5 de Creative Commons</dc:rights>
	<cc:license rdf:resource="http://creativecommons.org/licenses/by-nc/2.5/"/>
</item>

<item rdf:about="http://blog.webnaute.net/2006/08/13/Wamailer_et_OpenPGP/">
	<title>Wamailer et OpenPGP</title>
	<link xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" xlink:href="http://blog.webnaute.net/2006/08/13/Wamailer_et_OpenPGP/" xlink:title="Wamailer et OpenPGP">http://blog.webnaute.net/2006/08/13/Wamailer_et_OpenPGP/</link>
	<description>J’ai terminé cette nuit l’implémentation d’OpenPGP/MIME dans Wamailer. L’extension gnupg de PHP étant considérée comme expérimentale, les opérations de signature et de chiffrement sont faites en exécutant des commandes systèmes à destination du programme GnuPG. Je ne sais ce qu’il en est du support d’OpenPGP/MIME dans la plupart des clients mail, mais je suppose qu’il doit être largement supporté, vu la relative facilité avec laquelle j’ai…</description>
	<content:encoded><![CDATA[<p>J’ai terminé cette nuit l’implémentation d’OpenPGP/MIME dans Wamailer.
L’<a href="http://fr.php.net/manual/fr/ref.gnupg.php" hreflang="fr">extension gnupg</a> de 
<abbr title="PHP: Hypertext Preprocessor" lang="en">PHP</abbr> étant considérée 
comme expérimentale, les opérations de signature et de chiffrement sont faites en exécutant des commandes 
systèmes à destination du programme GnuPG.</p>

<p>Je ne sais ce qu’il en est du support d’OpenPGP/MIME dans la plupart des clients mail, mais je suppose qu’il doit 
être largement supporté, vu la relative facilité avec laquelle j’ai appréhendé le principe des clés et implémenté 
OpenPGP/MIME dans Wamailer.</p>

<p>J’ai aussi mis à jour la page de garde du wiki et ajouté la page <a href="http://dev.webnaute.net/wamailer/trac/wiki/OpenPgp">OpenPgp</a> 
pour fournir des explications et exemples.</p>

<ul>
    <li><a href="http://dev.webnaute.net/wamailer/trac/">Zone de développement de Wamailer</a></li>
    <li><a href="http://www.gnupg.org/" hreflang="en">Site officiel de GnuPG</a></li>
    <li><a href="http://www.faqs.org/rfcs/rfc3156" hreflang="en">La RFC 3156 sur le format OpenPGP/MIME de sécurisation des emails</a></li>
</ul>]]></content:encoded>
	<dc:date>2006-08-13T17:07:28+02:00</dc:date>
	<dc:subject>Conception web</dc:subject>
	<dc:language>fr</dc:language>
	<dc:rights>Licence Attribution-NonCommercial 2.5 de Creative Commons</dc:rights>
	<cc:license rdf:resource="http://creativecommons.org/licenses/by-nc/2.5/"/>
</item>

<item rdf:about="http://blog.webnaute.net/2006/07/27/Mise_%C3%A0_jour_de_XHTML2/">
	<title>Mise à jour de XHTML2</title>
	<link xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" xlink:href="http://blog.webnaute.net/2006/07/27/Mise_%C3%A0_jour_de_XHTML2/" xlink:title="Mise à jour de XHTML2">http://blog.webnaute.net/2006/07/27/Mise_%C3%A0_jour_de_XHTML2/</link>
	<description>Le W3C a publié hier une mise à jour de XHTML 2.0. Je mets à jour ce billet dès que j’aurai trouvé une liste des changements. Au temps pour moi, le lien vers le fichier diff était sur la page que j’ai liée. *XHTML 2.0&#160;: Working Draft du 26 juillet 2006 *Changements avec la version précédente</description>
	<content:encoded><![CDATA[<p>Le <abbr title="Word Wide Web Consortium" lang="en">W3C</abbr> a publié hier une mise à jour de <a href="http://www.w3.org/TR/xhtml2/">XHTML 2.0</a>. Je mets à jour ce billet dès que j’aurai trouvé une liste des changements.</p>

<ins datetime="2006-08-05T20:06:16+02:00" title="Ajouté le samedi 5 août 2006 à 20h06"><p>Au temps pour moi, le lien vers le fichier diff était sur la page que j’ai liée.</p></ins>

<ul>
    <li><a href="http://www.w3.org/TR/2006/WD-xhtml2-20060726/">XHTML 2.0&#160;: <span lang="en">Working Draft</span> du 26 juillet 2006</a></li>
    <li><a href="http://www.w3.org/TR/2006/WD-xhtml2-20060726/xhtml2-diff.html">Changements avec la version précédente</a></li>
</ul>]]></content:encoded>
	<dc:date>2006-07-27T15:04:18+02:00</dc:date>
	<dc:subject>Conception web</dc:subject>
	<dc:language>fr</dc:language>
	<dc:rights>Licence Attribution-NonCommercial 2.5 de Creative Commons</dc:rights>
	<cc:license rdf:resource="http://creativecommons.org/licenses/by-nc/2.5/"/>
</item>

<item rdf:about="http://blog.webnaute.net/2006/07/03/Signets_et_mots-cl%C3%A9s/">
	<title>Signets et mots-clés</title>
	<link xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" xlink:href="http://blog.webnaute.net/2006/07/03/Signets_et_mots-cl%C3%A9s/" xlink:title="Signets et mots-clés">http://blog.webnaute.net/2006/07/03/Signets_et_mots-cl%C3%A9s/</link>
	<description>Une fonctionnalité non mise en avant dans Firefox est la possibilité de définir des mots clés qui vont permettre d’appeller une URL en fonction d’un paramètre. Par exemple, ouvrez le gestionnaire de signets (Organize Bookmarks… quoi…) et créez un nouveau signet avec dans le champ location https://bugzilla.mozilla.org/show_bug.cgi?id=%s et dans le champ keyword mozbug. Et voilà&#8201;! Il vous suffit de taper mozbug 15000 dans la barre…</description>
	<content:encoded><![CDATA[<p>Une fonctionnalité non mise en avant dans Firefox est la possibilité de définir des mots clés qui vont permettre
d’appeller une <abbr title="Uniform Resource Locator" lang="en">URL</abbr> en fonction d’un paramètre.</p>

<p>Par exemple, ouvrez le gestionnaire de signets (<q lang="en">Organize Bookmarks…</q> quoi…)
et créez un nouveau signet avec dans le champ <q lang="en">location</q>
<kbd>https://bugzilla.mozilla.org/show_bug.cgi?id=%s</kbd> et dans le champ  <q lang="en">keyword</q> <kbd>mozbug</kbd>.</p>

<p>Et voilà&#8201;! Il vous suffit de taper <kbd>mozbug 15000</kbd> dans la barre d’adresse pour accéder
au bug n°15000 de Mozilla :¬)</p>

<p>Perso, je n’ai que trois signets de ce genre actuellement&#160;:</p>

<table border="1" cellspacing="2" cellpadding="1" summary="Liste de mes signets à mot-clé">
	<thead>
		<tr>
			<th>Mot-clé</th>
			<th><abbr>URL</abbr></th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td>mozbug</td>
			<td>https://bugzilla.mozilla.org/show_bug.cgi?id=%s</td>
		</tr>
		<tr>
			<td>rfc</td>
			<td>http://www.faqs.org/rfcs/rfc%s.html</td>
		</tr>
		<tr>
			<td>php</td>
			<td>http://fr.php.net/%s</td>
		</tr>
	</tbody>
</table>

<p><em>Geek d’un jour, geek toujours</em> :D</p>

<p><abbr title="Post Scriptum" lang="la">P.S</abbr>&#160;: Je me demande s’il est possible de combiner plusieurs paramètres avec un mot-clé&#8201;? J’en demande peut-être beaucoup là…</p>]]></content:encoded>
	<dc:date>2006-07-03T03:11:42+02:00</dc:date>
	<dc:subject>Navigateurs web</dc:subject>
	<dc:language>fr</dc:language>
	<dc:rights>Licence Attribution-NonCommercial 2.5 de Creative Commons</dc:rights>
	<cc:license rdf:resource="http://creativecommons.org/licenses/by-nc/2.5/"/>
</item>

<item rdf:about="http://blog.webnaute.net/2006/05/23/SQL_et_structure_arborescente/">
	<title>SQL et structure arborescente</title>
	<link xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" xlink:href="http://blog.webnaute.net/2006/05/23/SQL_et_structure_arborescente/" xlink:title="SQL et structure arborescente">http://blog.webnaute.net/2006/05/23/SQL_et_structure_arborescente/</link>
	<description>Dans le cadre d’un projet que je développe en ce moment, j’ai besoin de stocker un arbre dans une base de données, c’est à dire un groupe d’éléments reliés par une relation de type parent-enfant. Plusieurs solutions existent&#160;: Les listes adjacentes C’est la méthode la plus naturelle et celle à laquelle j’ai d’abord penser. Le principe est tout simplement d’associer à chaque nœud l’identifiant du nœud parent. On peut ensuite extraire nos…</description>
	<content:encoded><![CDATA[<p>Dans le cadre d’un projet que je développe en ce moment, j’ai besoin de stocker un arbre dans une base de 
données, c’est à dire un groupe d’éléments reliés par une relation de type parent-enfant. Plusieurs solutions existent&#160;:</p>

<h3>Les listes adjacentes</h3>

<p>C’est la méthode la plus naturelle et celle à laquelle j’ai d’abord penser.
Le principe est tout simplement d’associer à chaque nœud l’identifiant du nœud parent. 
On peut ensuite extraire nos données de différentes façons avec des auto-jointures
(voir le lien vers mysql en fin de billet).</p>

<p>Le problème est que cela n’est pas applicable si la profondeur de l’arbre n’est pas fixée. Il faut alors en passer
par une routine récursive (en PHP dans mon cas) pour construire l’arbre et travailler dessus.
C’est bourrin, c’est coûteux…</p>

<h3>Les ensembles imbriquées ou <q>représentation intervallaire</q></h3>

<p>Moins facile à appréhender, cette technique offre en revanche une bien plus grande facilité pour lire tout ou
partie de l’arbre. La plupart des opérations de lecture ne nécessitent qu’une requête
<abbr title="Structured Query Language" lang="en">SQL</abbr>&#8201;!</p>

<p>Le principe est d’assigner à chaque élément deux bornes, les descendants de cet élément étant englobés dans
l’interval créé par ces deux bornes. Je me permets de copier ici la représentation visuelle en tranche donnée dans l’article de  SQLpro, ça permet de tout de suite se faire une bonne idée du mécanisme&#160;:</p>

<img src="http://blog.webnaute.net/2006/05/23/SQL_et_structure_arborescente/Images/Tree.gif" alt="Représentation sous forme de tranches englobantes du mécanisme des ensembles imbriqués"/>

<p>Je ne m’attarde pas sur les requêtes <abbr>SQL</abbr> à utiliser pour consulter un tel arbre, consultez
l’excellent article <a href="http://sql.developpez.com/arborescence/" hreflang="fr"><q>Gestion d'arbres par
représentation intervallaire</q></a> pour en savoir plus.</p>

<p>Ici, donc, pas besoin de récursivité, la lecture est simple et claire. Mais les choses se gâtent dès qu’on souhaite
effectuer des changements sur notre arbre. Souhaite t-on ajouter un élément dans notre arbre&#8201;?
Paf, trois requêtes&#8201;! Une pour décaler les bornes droite, une autre pour décaler les bornes gauches, et enfin, la requête pour insérer le nouvel élément. Et si plusieurs modifications peuvent potentiellement survenir quasiment
au même moment, ne pas utiliser les transactions, et donc, dans le cas de MySQL, les tables innoDB, serait plutôt hasardeux.</p>

<h3>Autres idées</h3>

<p>Comme autre technique, il y en a une qui consiste à stocker carrément le chemin canonisé d’un élément à la racine.
Pas super élégant et viable seulement pour des petits arbrisseaux ;¬)</p>

<p>J’ai vaguement pensé à stocker la structure de l’arbre sous forme <abbr title="eXtensible Markup Language" lang="en">XML</abbr>, elle-même stockée dans la base de données, mais là comme ça, sans
creuser l’idée, je me dis que les performances ne seront pas vraiment au rendez-vous.
Qu’en penses-tu toi, visiteur perdu sur mon journal&#8201;? Et si tu as d’autres idées pour gérer un arbre,
n’hésite pas ;¬)</p>

<ul>
    <li><a href="http://dev.mysql.com/tech-resources/articles/hierarchical-data.html" hreflang="en" lang="en">
    Managing Hierarchical Data in MySQL</a></li>
    <li><a href="http://sql.developpez.com/arborescence/" hreflang="fr">Une référence&#160;: Gestion d’arbres par représentation intervallaire</a></li>
    <li><a href="http://www.dbazine.com/oracle/or-articles/tropashko4" hreflang="en" lang="en">Trees in SQL: Nested Sets and Materialized Path</a></li>
    <li><a href="http://pear.php.net/package/DB_NestedSet" hreflang="en"><abbr title="PHP Extension and Application Repository" lang="en">PEAR</abbr>&#160;: Paquet DB_NestedSet</a></li>
    <li><a href="http://www.evolt.org/article/Four_ways_to_work_with_hierarchical_data/17/4047/index.html" hreflang="en" lang="en">Four ways to work with hierarchical data</a></li>
</ul>]]></content:encoded>
	<dc:date>2006-05-23T18:22:34+02:00</dc:date>
	<dc:subject>Conception web</dc:subject>
	<dc:language>fr</dc:language>
	<dc:rights>Licence Attribution-NonCommercial 2.5 de Creative Commons</dc:rights>
	<cc:license rdf:resource="http://creativecommons.org/licenses/by-nc/2.5/"/>
</item>

<item rdf:about="http://blog.webnaute.net/2006/05/19/Kiff_la_force/">
	<title>Kiff la force</title>
	<link xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" xlink:href="http://blog.webnaute.net/2006/05/19/Kiff_la_force/" xlink:title="Kiff la force">http://blog.webnaute.net/2006/05/19/Kiff_la_force/</link>
	<description></description>
	<content:encoded><![CDATA[<img src="http://blog.webnaute.net/2006/05/19/Kiff_la_force/Images/kiff_la_force.jpg" alt="Kiff la force"/>]]></content:encoded>
	<dc:date>2006-05-19T19:05:36+02:00</dc:date>
	<dc:subject>Bric à brac</dc:subject>
	<dc:language>fr</dc:language>
	<dc:rights>Licence Attribution-NonCommercial 2.5 de Creative Commons</dc:rights>
	<cc:license rdf:resource="http://creativecommons.org/licenses/by-nc/2.5/"/>
</item>

<item rdf:about="http://blog.webnaute.net/2006/05/17/Un_cookie_pas_si_r%C3%A9calcitrant/">
	<title>Un cookie pas si récalcitrant</title>
	<link xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" xlink:href="http://blog.webnaute.net/2006/05/17/Un_cookie_pas_si_r%C3%A9calcitrant/" xlink:title="Un cookie pas si récalcitrant">http://blog.webnaute.net/2006/05/17/Un_cookie_pas_si_r%C3%A9calcitrant/</link>
	<description>Errata concernant mon précédent billet sur le sujet. D’abord, en envoyant un cookie avec pour domaine de validité .example.com, celui-ci sera viable également sur example.com. L’extension View Cookies de Firefox m’a induit en erreur. Il semble que seuls les cookies dont le domaine de validité matche exactement le domaine courant soient affichés par cette extension, les cookies avec un domaine de validité de type .example.com valides sur…</description>
	<content:encoded><![CDATA[<p>Errata concernant mon <a href="http://blog.webnaute.net/2006/05/02/Cookie_r%C3%A9calcitrant/">précédent
billet sur le sujet</a>.</p>

<p>D’abord, en envoyant un cookie avec pour domaine de validité <samp>.example.com</samp>, celui-ci sera
viable également sur <samp>example.com</samp>. L’extension <q lang="en">View Cookies</q>
de Firefox m’a induit en erreur.</p>

<p>Il semble que seuls les cookies dont le domaine de validité matche exactement le
domaine courant soient affichés par cette extension, les cookies avec un domaine de validité de type 
<samp>.example.com</samp> valides sur plusieurs sous-domaines ne sont pas du tout affichés.
Un coup d’œil à liveHttpHeaders ou avec <code>print_r($_COOKIE);</code> montre qu’ils sont bien actifs.</p>

<p>Ensuite, concernant le nombre minimum de caractères point dans le domaine de validité, celui-ci doit contenir
au moins un point "embarqué" (x.y est bon, .y ou x. ne l’est pas) et la partie précédent le domaine de validité du cookie
dans le nom d’hôte courant ne doit pas contenir de point. Example&#160;: le cookie avec le domaine de validité
<samp>.foo.com</samp> sera valide sur <samp>foo.com</samp> et n’importe quel sous-domaine
<samp>*.foo.com</samp> où * est une chaîne ne contenant pas de caractère point. Donc le cookie n’est pas
valable sur <samp>*.bar.foo.com</samp>.</p>

<p>Au vu de ces règles (extraites de la RFC 2965), je ne vois plus ce qui empêche en principe d’émettre un cookie
avec un domaine de validité tel que <samp>.co.uk</samp> et qui serait valable par exemple sur
<samp>blah.co.uk</samp>. Ce billet est donc sujet à une mise à jour ultérieure, quand j’aurais éclairci ce point :¬)</p>

<ul>
   <li><a href="http://www.faqs.org/rfcs/rfc2965" hreflang="en">RFC 2965 - <abbr>HTTP</abbr> State Management Mechanism</a></li>
</ul>]]></content:encoded>
	<dc:date>2006-05-17T22:52:13+02:00</dc:date>
	<dc:subject>Conception web, Navigateurs web</dc:subject>
	<dc:language>fr</dc:language>
	<dc:rights>Licence Attribution-NonCommercial 2.5 de Creative Commons</dc:rights>
	<cc:license rdf:resource="http://creativecommons.org/licenses/by-nc/2.5/"/>
</item>

<item rdf:about="http://blog.webnaute.net/2006/05/16/Liens_en_vrac/">
	<title>Liens en vrac</title>
	<link xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" xlink:href="http://blog.webnaute.net/2006/05/16/Liens_en_vrac/" xlink:title="Liens en vrac">http://blog.webnaute.net/2006/05/16/Liens_en_vrac/</link>
	<description>Quelques liens rapides&#160;: PHP en mode interactif Connaissais pas… Ça a l’air interessant Installation de SubVersion, Trac et BuildBot Un article sur la façon d’installer et configurer ce trio de logiciel. Je ne connaissais pas la possibilité de SubVersion d’exécuter divers scripts avant ou après un commit Installation et configuration de SubVersion Encore un article sur l’installation et la configuration de SubVersion (sur une debian) que…</description>
	<content:encoded><![CDATA[<p>Quelques liens rapides&#160;:</p>

<dl>
    <dt><a href="http://blog.thinkphp.de/archives/44-More-PHP-power-on-the-command-line.html" hreflang="en"><abbr title="PHP: Hypertext Preprocessor" lang="en">PHP</abbr> en mode interactif</a></dt>
    <dd>Connaissais pas… Ça a l’air interessant</dd>

    <dt><a href="http://olivier.ramonat.free.fr/svn_trac_buildbot/svn_trac_buildbot_fr.html" hreflang="fr">Installation de SubVersion, Trac et BuildBot</a></dt>
    <dd>Un article sur la façon d’installer et configurer ce trio de logiciel. Je ne connaissais pas la possibilité de SubVersion d’exécuter divers scripts avant ou après un commit</dd>

    <dt><a href="http://jay.bertrand.free.fr/blog/index.php?/archives/27-Installer-Subversion-sous-Debian.html" hreflang="fr">Installation et configuration de SubVersion</a></dt>
    <dd>Encore un article sur l’installation et la configuration de SubVersion (sur une debian) que j’avais en réserve depuis quelques temps</dd>
</dl>]]></content:encoded>
	<dc:date>2006-05-16T00:29:14+02:00</dc:date>
	<dc:subject>Bric à brac</dc:subject>
	<dc:language>fr</dc:language>
	<dc:rights>Licence Attribution-NonCommercial 2.5 de Creative Commons</dc:rights>
	<cc:license rdf:resource="http://creativecommons.org/licenses/by-nc/2.5/"/>
</item>

<item rdf:about="http://blog.webnaute.net/2006/05/02/Cookie_r%C3%A9calcitrant/">
	<title>Un cookie récalcitrant</title>
	<link xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" xlink:href="http://blog.webnaute.net/2006/05/02/Cookie_r%C3%A9calcitrant/" xlink:title="Un cookie récalcitrant">http://blog.webnaute.net/2006/05/02/Cookie_r%C3%A9calcitrant/</link>
	<description>Je viens de passer une demi-heure sur un problème à la con. La réponse servira peut-être à d’autres personnes&#160;: L’attribut domain d’un cookie ne peut cibler qu’un sous-domaine (le nom complet doit comporter au moins deux points, par exemple www.example.com). Pour que le cookie soit actif sur tous les sous-domaines, n’indiquez pas de sous-domaine (mais laissez le point en tête)&#160;: .example.com Problème&#160;: example.com ne fait pas…</description>
	<content:encoded><![CDATA[<p>Je viens de passer une demi-heure sur un problème à la con. La réponse servira peut-être à d’autres personnes&#160;:</p>

<p>L’attribut <code>domain</code> d’un cookie ne peut cibler qu’un sous-domaine (le nom complet doit
comporter au moins deux points, par exemple <samp>www.example.com</samp>). Pour que le cookie soit
actif sur tous les sous-domaines, n’indiquez pas de sous-domaine (mais laissez le point en tête)&#160;: 
<samp>.example.com</samp><br/>
Problème&#160;: <samp>example.com</samp> ne fait pas partie des heureux élus.</p>

<p>Compte tenu de l’obligation d’indiquer un nom de domaine comportant au moins deux points, toute
tentative d’envoyer un cookie sur la racine d’un domaine (<samp>example.com</samp>) en précisant
le domaine dans la fonction <code>setcookie()</code> sera vouée à l’échec. La seule solution est de
ne pas préciser le domaine de validité du cookie (= cookie valable uniquement sur <samp>example.com</samp> dans notre cas).</p>

<p>D’après la spécification, cette limitation est là pour éviter des émissions de cookie dans des domaines
de validité tels que <samp>.com</samp> ou encore <samp>.co.uk</samp>.<br/>
je lis d’ailleurs à l’instant que le nombre de caractères points minimum est porté à trois si l’extension du domaine
n’est pas dans la liste des extensions "spéciales"&#160;: "COM", "EDU", "NET", "ORG", "GOV", "MIL", et "INT".</p>

<ul>
   <li><a href="http://wp.netscape.com/newsref/std/cookie_spec.html" hreflang="en">Persistent client state <abbr title="Hyper Text Transfer Protocol" lang="en">HTTP</abbr> cookies</a></li>
   <li><a href="http://www.faqs.org/rfcs/rfc2965" hreflang="en">RFC 2965 - <abbr>HTTP</abbr> State Management Mechanism</a></li>
</ul>]]></content:encoded>
	<dc:date>2006-05-02T19:39:15+02:00</dc:date>
	<dc:subject>Conception web, Navigateurs web</dc:subject>
	<dc:language>fr</dc:language>
	<dc:rights>Licence Attribution-NonCommercial 2.5 de Creative Commons</dc:rights>
	<cc:license rdf:resource="http://creativecommons.org/licenses/by-nc/2.5/"/>
</item>

<item rdf:about="http://blog.webnaute.net/2006/04/10/WD_window_object/">
	<title>WD&#160;: Window object</title>
	<link xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" xlink:href="http://blog.webnaute.net/2006/04/10/WD_window_object/" xlink:title="WD&#160;: Window object">http://blog.webnaute.net/2006/04/10/WD_window_object/</link>
	<description>Le W3C avait publié il y a quelques jours un premier brouillon sur l’objet XMLHttpRequest, c’est maintenant le tour de l’objet Window. Affaire à suivre…</description>
	<content:encoded><![CDATA[<p>Le <abbr title="World Wide Web Consortium" lang="en">W3C</abbr> avait publié il y a
quelques jours un premier <a href="http://www.w3.org/TR/2006/WD-XMLHttpRequest-20060405/" hreflang="en">brouillon sur l’objet <code>XMLHttpRequest</code></a>, c’est maintenant le tour de 
l’<a href="http://www.w3.org/TR/2006/WD-Window-20060407/" hreflang="en">objet <code>Window</code></a>.
Affaire à suivre…</p>]]></content:encoded>
	<dc:date>2006-04-10T20:47:26+02:00</dc:date>
	<dc:subject>Conception web</dc:subject>
	<dc:language>fr</dc:language>
	<dc:rights>Licence Attribution-NonCommercial 2.5 de Creative Commons</dc:rights>
	<cc:license rdf:resource="http://creativecommons.org/licenses/by-nc/2.5/"/>
</item>

<item rdf:about="http://blog.webnaute.net/2006/04/09/Arghh/">
	<title>Arghh</title>
	<link xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" xlink:href="http://blog.webnaute.net/2006/04/09/Arghh/" xlink:title="Arghh">http://blog.webnaute.net/2006/04/09/Arghh/</link>
	<description>Tomber nez à nez avec ça au moment d’aller se coucher, ça a de quoi vous rendre insomniaque, je vous le garantis. Plus d’infos sur cette vision d’horreur.</description>
	<content:encoded><![CDATA[<img src="http://blog.webnaute.net/2006/04/09/Arghh/Images/scutigere.jpg" alt="Beurk"/>

<p>Tomber nez à nez avec ça au moment d’aller se coucher, ça a de quoi vous rendre insomniaque, je vous le garantis.
<a href="http://arthropa.free.fr/site/gabase.php?page=lisacc&amp;prov=framed&amp;lisact=affich&amp;fiche=scutigeracoleoptrata" 
hreflang="fr">Plus d’infos</a> sur cette vision d’horreur.</p>]]></content:encoded>
	<dc:date>2006-04-09T08:16:45+02:00</dc:date>
	<dc:subject>Bric à brac</dc:subject>
	<dc:language>fr</dc:language>
	<dc:rights>Licence Attribution-NonCommercial 2.5 de Creative Commons</dc:rights>
	<cc:license rdf:resource="http://creativecommons.org/licenses/by-nc/2.5/"/>
</item>

<item rdf:about="http://blog.webnaute.net/2006/03/16/Miam/">
	<title>Miam</title>
	<link xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" xlink:href="http://blog.webnaute.net/2006/03/16/Miam/" xlink:title="Miam">http://blog.webnaute.net/2006/03/16/Miam/</link>
	<description>:¬)</description>
	<content:encoded><![CDATA[<p><a href="http://emmanuel.clement.free.fr/blog/index.php?2006/03/08/151-telechargement-musical-ceci-n-est-pas-une-baguette">
<img src="http://blog.webnaute.net/2006/03/16/Miam/Images/baguette" alt="Miam, la baguette"/></a> :¬)</p>]]></content:encoded>
	<dc:date>2006-03-16T14:30:41+01:00</dc:date>
	<dc:subject>Bric à brac</dc:subject>
	<dc:language>fr</dc:language>
	<dc:rights>Licence Attribution-NonCommercial 2.5 de Creative Commons</dc:rights>
	<cc:license rdf:resource="http://creativecommons.org/licenses/by-nc/2.5/"/>
</item>

<item rdf:about="http://blog.webnaute.net/2006/03/13/Point_de_rupture/">
	<title>Point de rupture</title>
	<link xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" xlink:href="http://blog.webnaute.net/2006/03/13/Point_de_rupture/" xlink:title="Point de rupture">http://blog.webnaute.net/2006/03/13/Point_de_rupture/</link>
	<description>Je vous faisais part au tout début du mois de février d’un article écrit par Krassimir Petrov et analysant la décision de l’Iran d’ouvrir une bourse du pétrole en euros en mars 2006 et son impact sur le monde. Cette bourse va ouvrir ses portes lundi prochain (20 mars 2006; cette date aura probablement autant d’importance pour les générations futures que le 29 octobre 1929). Je viens de tomber sur une analyse du think-tanks Europe 2020 à…</description>
	<content:encoded><![CDATA[<p>Je vous faisais part au tout début du mois de février d’un article écrit par Krassimir Petrov et analysant la décision de l’Iran d’ouvrir une bourse du pétrole en euros en mars 2006 et son impact sur le monde. Cette bourse va ouvrir ses portes lundi prochain (<strong>20 mars 2006</strong>; cette date aura probablement autant d’importance pour les générations futures que le 29 octobre 1929).</p>

<p>Je viens de tomber sur une <a href="http://www.europe2020.org/fr/section_global/150206.htm" hreflang="fr">analyse du think-tanks <q>Europe 2020</q></a> 
à propos de la crise mondiale majeure qui se profile à l’horizon. Cet article est à lire absolument&#8201;! Je vous préviens cependant, vous en ressortirez probablement avec un filet de sueur froide entre les omoplates…</p>]]></content:encoded>
	<dc:date>2006-03-13T18:59:06+01:00</dc:date>
	<dc:subject>Bric à brac</dc:subject>
	<dc:language>fr</dc:language>
	<dc:rights>Licence Attribution-NonCommercial 2.5 de Creative Commons</dc:rights>
	<cc:license rdf:resource="http://creativecommons.org/licenses/by-nc/2.5/"/>
</item>

<item rdf:about="http://blog.webnaute.net/2006/03/11/Migration_vers_nouveau_serveur/">
	<title>Migration vers un nouveau serveur</title>
	<link xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" xlink:href="http://blog.webnaute.net/2006/03/11/Migration_vers_nouveau_serveur/" xlink:title="Migration vers un nouveau serveur">http://blog.webnaute.net/2006/03/11/Migration_vers_nouveau_serveur/</link>
	<description>Et voilà. Migration achevée en un temps record. Ne reste plus qu’à attendre que les DNS finissent de se propager joyeusement. Au menu&#160;: *Enfin MySQL 4.1&#8201;! Enfin, mes données sont stockées dans des tables proprement déclarées comme contenant de l’utf-8, et je peux profiter de toutes les autres nouveautés qu’apporte cette version par rapport à la 4.0. *Adieu l’antique Webalizer, bonjour Awstats. *L’avantage quand on est sur un…</description>
	<content:encoded><![CDATA[<p>Et voilà. Migration achevée en un temps record. Ne reste plus qu’à attendre que les <abbr title="Domain Name Server"
xml:lang="en" lang="en">DNS</abbr> finissent de se propager joyeusement. Au menu&#160;: </p>

<ul>
    <li>Enfin MySQL 4.1&#8201;! Enfin, mes données sont stockées dans des tables proprement déclarées comme contenant de l’utf-8, et je peux profiter de toutes les autres nouveautés qu’apporte cette version par rapport à la 4.0.</li>
    <li>Adieu l’antique Webalizer, bonjour Awstats.</li>
    <li>L’avantage quand on est sur un serveur privé, c’est qu’on peut installer à peu près ce qu’on veut (les limitations
    ne se trouvant qu’entre la chaise et le clavier). Je me suis donc installé les magnifiques outils que sont
    <a href="http://fr.wikipedia.org/wiki/Subversion_%28logiciel%29" hreflang="fr">Subversion</a> et 
    <a href="http://www.edgewall.com/trac/" hreflang="en">Trac</a> pour rendre public le développement de
    <a href="http://phpcodeur.net/wascripts/wamailer/" hreflang="fr">Wamailer</a> 3.0. C’est
    <a href="http://dev.webnaute.net/wamailer/trac/">par ici</a> que ça se passe.</li>
    <li>PHP 5.1.2 à la place de PHP 5.0.5. C’est toujours ça de pris, surtout au vu des nouveautés apportées par la branche 5.1.x</li>
    <li>Apache 2.x à la place d’Apache 1.3.x. C’est toujours ça de pris également. La version 2 est de toute évidence plus puissante, plus rapide, toussa.</li>
</ul>]]></content:encoded>
	<dc:date>2006-03-11T06:32:06+01:00</dc:date>
	<dc:subject>Webnaute</dc:subject>
	<dc:language>fr</dc:language>
	<dc:rights>Licence Attribution-NonCommercial 2.5 de Creative Commons</dc:rights>
	<cc:license rdf:resource="http://creativecommons.org/licenses/by-nc/2.5/"/>
</item>

<cc:License rdf:about="http://creativecommons.org/licenses/by-nc/2.5/">
	<cc:permits rdf:resource="http://web.resource.org/cc/Reproduction"/>
	<cc:permits rdf:resource="http://web.resource.org/cc/Distribution"/>
	<cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/>
	<cc:requires rdf:resource="http://web.resource.org/cc/Notice"/>
	<cc:requires rdf:resource="http://web.resource.org/cc/Attribution"/>
</cc:License>

</rdf:RDF>