<?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/"
	xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Jérémy Lecour &#187; PLUG</title>
	<atom:link href="http://jeremy.wordpress.com/category/informatique/plug/feed/" rel="self" type="application/rss+xml" />
	<link>http://jeremy.wordpress.com</link>
	<description>Concepteur et développeur d'applications web</description>
	<lastBuildDate>Sat, 04 Jul 2009 22:47:46 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>fr</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<image>
		<url>http://www.gravatar.com/blavatar/ad97d4717fc4440de4c1e629116be113?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Jérémy Lecour &#187; PLUG</title>
		<link>http://jeremy.wordpress.com</link>
	</image>
			<item>
		<title>Soirée PLUG le 5 juin &#8216;09</title>
		<link>http://jeremy.wordpress.com/2009/05/24/soiree-plug-le-5-juin-09/</link>
		<comments>http://jeremy.wordpress.com/2009/05/24/soiree-plug-le-5-juin-09/#comments</comments>
		<pubDate>Sun, 24 May 2009 10:48:17 +0000</pubDate>
		<dc:creator>Jérémy Lecour</dc:creator>
				<category><![CDATA[Informatique]]></category>
		<category><![CDATA[PLUG]]></category>
		<category><![CDATA[laboate]]></category>

		<guid isPermaLink="false">http://jeremy.wordpress.com/?p=114</guid>
		<description><![CDATA[Comme tous les mois depuis bien longtemps, le PLUG organise sa soirée mensuelle.
Ouverte à tous les fans de technologie, informatique, logiciels libres, … c&#8217;est la bonne occasion pour discuter de ses passions, rencontrer du monde, discuter de sujets connus ou pas et dans un endroit particulièrement sympa et confortable (La Bo[a]te).
Au programme de juin :

quelques [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jeremy.wordpress.com&blog=430&post=114&subd=jeremy&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Comme tous les mois depuis bien longtemps, le PLUG organise sa soirée mensuelle.</p>
<p>Ouverte à tous les fans de technologie, informatique, logiciels libres, … c&#8217;est la bonne occasion pour discuter de ses passions, rencontrer du monde, discuter de sujets connus ou pas et dans un endroit particulièrement sympa et confortable (<a href="http://laboate.com/">La Bo[a]te</a>).</p>
<p>Au programme de juin :</p>
<ul>
<li>quelques sujets courts et libres inspirés de l&#8217;actualité et/ou de découvertes (l&#8217;improvisation est encouragée)</li>
<li>introduction pour la série sur le &#8220;Contrôle de version&#8221; ; c&#8217;est quoi ? pour quoi faire ? …</li>
</ul>
<p>Et comme à chaque fois :</p>
<ul>
<li>convivialité</li>
<li>apéro, pizza, …</li>
<li>rencontres, découvertes, …</li>
</ul>
<p>Tous les détails sont dispo sur le site du PLUG : <a href="http://plugfr.org/spip/article.php3?id_article=154">http://plugfr.org/</a></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jeremy.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jeremy.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jeremy.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jeremy.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jeremy.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jeremy.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jeremy.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jeremy.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jeremy.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jeremy.wordpress.com/114/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jeremy.wordpress.com&blog=430&post=114&subd=jeremy&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://jeremy.wordpress.com/2009/05/24/soiree-plug-le-5-juin-09/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7d1caf9df777b3b2cf474ff743494335?s=96&#38;d=&#38;r=PG" medium="image">
			<media:title type="html">jeremy</media:title>
		</media:content>
	</item>
		<item>
		<title>Migration vers Passenger</title>
		<link>http://jeremy.wordpress.com/2009/01/28/migration-vers-passenger/</link>
		<comments>http://jeremy.wordpress.com/2009/01/28/migration-vers-passenger/#comments</comments>
		<pubDate>Wed, 28 Jan 2009 20:53:37 +0000</pubDate>
		<dc:creator>Jérémy Lecour</dc:creator>
				<category><![CDATA[Informatique]]></category>
		<category><![CDATA[PLUG]]></category>
		<category><![CDATA[neomarco]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[mongrel]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[passenger]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://jeremy.wordpress.com/?p=94</guid>
		<description><![CDATA[Je viens de terminer et (assez longuement) raconter la migration que j&#8217;ai effectuée au boulot.
J&#8217;ai transformé le fonctionnement de plusieurs sites web à base de Nginx/Mongrel/Rails et Nginx/PHP-FCGI en Apache/Passenger et Apache/mod_php.
Tout est là :
- préambule
- Ruby Entreprise Edition
- VirtualHosts
- épilogue
Je me suis régalé à faire ça tranquillement, mais avec tout de même une bonne [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jeremy.wordpress.com&blog=430&post=94&subd=jeremy&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Je viens de terminer et (assez longuement) raconter la migration que j&#8217;ai effectuée au boulot.</p>
<p>J&#8217;ai transformé le fonctionnement de plusieurs sites web à base de Nginx/Mongrel/Rails et Nginx/PHP-FCGI en Apache/Passenger et Apache/mod_php.</p>
<p>Tout est là :<br />
- <a href="http://insiders.neomarco.com/2009/01/25/migration-vers-passenger/">préambule</a><br />
- <a href="http://insiders.neomarco.com/2009/01/25/migration-vers-passenger-ruby-entreprise-edition/">Ruby Entreprise Edition</a><br />
- <a href="http://insiders.neomarco.com/2009/01/25/migration-vers-passenger-virtualhosts/">VirtualHosts</a><br />
- <a href="http://insiders.neomarco.com/2009/01/28/migration-vers-passenger-epilogue/">épilogue</a></p>
<p>Je me suis régalé à faire ça tranquillement, mais avec tout de même une bonne pression, car c&#8217;est sur un serveur de prod et c&#8217;était une première dans le genre pour moi.</p>
 Tagged: apache, debian, mongrel, nginx, passenger, php <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jeremy.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jeremy.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jeremy.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jeremy.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jeremy.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jeremy.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jeremy.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jeremy.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jeremy.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jeremy.wordpress.com/94/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jeremy.wordpress.com&blog=430&post=94&subd=jeremy&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://jeremy.wordpress.com/2009/01/28/migration-vers-passenger/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7d1caf9df777b3b2cf474ff743494335?s=96&#38;d=&#38;r=PG" medium="image">
			<media:title type="html">jeremy</media:title>
		</media:content>
	</item>
		<item>
		<title>Réunion du PLUG le 6 février</title>
		<link>http://jeremy.wordpress.com/2009/01/21/reunion-du-plug-le-6-fevrier/</link>
		<comments>http://jeremy.wordpress.com/2009/01/21/reunion-du-plug-le-6-fevrier/#comments</comments>
		<pubDate>Wed, 21 Jan 2009 17:37:26 +0000</pubDate>
		<dc:creator>Jérémy Lecour</dc:creator>
				<category><![CDATA[PLUG]]></category>
		<category><![CDATA[laboate]]></category>

		<guid isPermaLink="false">http://jeremy.wordpress.com/?p=91</guid>
		<description><![CDATA[Un petit post rapide pour signaler que le PLUG, tel un vieux garçon, tient à ses habitudes.
La prochaine réunion aura lieu à La Boate le 6 frévrier 2009 à partir de 19h.
Tous les détails sur le site du PLUG.
       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jeremy.wordpress.com&blog=430&post=91&subd=jeremy&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Un petit post rapide pour signaler que le PLUG, tel un vieux garçon, tient à ses habitudes.</p>
<p>La prochaine réunion aura lieu à <a href="http://laboate.com/">La Boate</a> le 6 frévrier 2009 à partir de 19h.</p>
<p>Tous les détails sur <a href="http://plugfr.org/spip/article.php3?id_article=149">le site du PLUG</a>.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jeremy.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jeremy.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jeremy.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jeremy.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jeremy.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jeremy.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jeremy.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jeremy.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jeremy.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jeremy.wordpress.com/91/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jeremy.wordpress.com&blog=430&post=91&subd=jeremy&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://jeremy.wordpress.com/2009/01/21/reunion-du-plug-le-6-fevrier/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7d1caf9df777b3b2cf474ff743494335?s=96&#38;d=&#38;r=PG" medium="image">
			<media:title type="html">jeremy</media:title>
		</media:content>
	</item>
		<item>
		<title>Soirée PLUG : Les services web et leur infrastructure d&#8217;hébergement</title>
		<link>http://jeremy.wordpress.com/2008/10/23/soiree-plug-les-services-web-et-leur-infrastructure-dhebergement/</link>
		<comments>http://jeremy.wordpress.com/2008/10/23/soiree-plug-les-services-web-et-leur-infrastructure-dhebergement/#comments</comments>
		<pubDate>Thu, 23 Oct 2008 19:16:48 +0000</pubDate>
		<dc:creator>Jérémy Lecour</dc:creator>
				<category><![CDATA[Informatique]]></category>
		<category><![CDATA[PLUG]]></category>
		<category><![CDATA[Personnel]]></category>
		<category><![CDATA[laboate]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[webservices]]></category>

		<guid isPermaLink="false">http://jeremy.wordpress.com/?p=80</guid>
		<description><![CDATA[J&#8217;annonce rarement les réunions du PLUG, ce qui est une honte vu mon role dans cette association, mais cette fois, ça vaut encore plus le coup que d&#8217;habitude.
Nous organisons une soirée spéciale sur le thème : les services web et leur infrastructure d&#8217;hébergement.
Le domaine est très vaste et relativement peu documenté vu la vitesse à [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jeremy.wordpress.com&blog=430&post=80&subd=jeremy&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>J&#8217;annonce rarement les réunions du PLUG, ce qui est une honte vu mon role dans cette association, mais cette fois, ça vaut encore plus le coup que d&#8217;habitude.</p>
<p>Nous organisons une <strong>soirée spéciale</strong> sur le thème : l<strong>es services web et leur infrastructure d&#8217;hébergement.</strong></p>
<p>Le domaine est très vaste et relativement peu documenté vu la vitesse à laquelle les choses évoluent. L&#8217;idée est de réunir des gens qui souhaitent faire part de leur expérience et écouter celle des autres pour enrichir leur connaissance du sujet.</p>
<p>La soirée aura lieu en 2 temps, les vendredi 7 novembre et 5 décembre, à <a href="http://laboate.com/">La Bo[a]te</a> à Marseille.</p>
<p>Pour plus d&#8217;info, référez vous au <a href="http://plugfr.org/">site du PLUG</a> et l<a href="http://plugfr.org/spip/article.php3?id_article=145">a page dédiée à l&#8217;annonce de cette soirée</a>.</p>
<p>N&#8217;hésitez pas à m&#8217;écrire directement ou par les commentaire à ce post pour donner des idées, poser des questions sur la soirée, …</p>
 Tagged: PLUG, web, webservices <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jeremy.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jeremy.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jeremy.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jeremy.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jeremy.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jeremy.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jeremy.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jeremy.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jeremy.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jeremy.wordpress.com/80/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jeremy.wordpress.com&blog=430&post=80&subd=jeremy&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://jeremy.wordpress.com/2008/10/23/soiree-plug-les-services-web-et-leur-infrastructure-dhebergement/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7d1caf9df777b3b2cf474ff743494335?s=96&#38;d=&#38;r=PG" medium="image">
			<media:title type="html">jeremy</media:title>
		</media:content>
	</item>
		<item>
		<title>Montage NFS qui décroche sur Mac OS X</title>
		<link>http://jeremy.wordpress.com/2008/08/26/montage-nfs-qui-decroche-sur-mac-os-x/</link>
		<comments>http://jeremy.wordpress.com/2008/08/26/montage-nfs-qui-decroche-sur-mac-os-x/#comments</comments>
		<pubDate>Tue, 26 Aug 2008 10:31:51 +0000</pubDate>
		<dc:creator>Jérémy Lecour</dc:creator>
				<category><![CDATA[Informatique]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[PLUG]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[firewall]]></category>
		<category><![CDATA[macosx]]></category>
		<category><![CDATA[nfs]]></category>
		<category><![CDATA[textmate]]></category>

		<guid isPermaLink="false">http://jeremy.wordpress.com/?p=49</guid>
		<description><![CDATA[Je viens de m&#8217;artracher les cheveux pendant 2 bonnes heures pour un problème tout con, qui vient de moi en plus, mais comme le ridicule ne tue pas, j&#8217;en fais profiter.
Je travaille sur un Mac OS X (10.5.4) avec TextMate et j&#8217;ai un point de montage NFS provenant d&#8217;un serveur sous Debian Etch.
Ce matin, alors [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jeremy.wordpress.com&blog=430&post=49&subd=jeremy&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Je viens de m&#8217;artracher les cheveux pendant 2 bonnes heures pour un problème tout con, qui vient de moi en plus, mais comme le ridicule ne tue pas, j&#8217;en fais profiter.</p>
<p>Je travaille sur un Mac OS X (10.5.4) avec TextMate et j&#8217;ai un point de montage NFS provenant d&#8217;un serveur sous Debian Etch.</p>
<p>Ce matin, alors que je testais un plugin pour TextMate qui l&#8217;empêche de faire la mise à jour (très lente car sur le réseau) des metadonnées de chaque fichier de mon projet, la sauvegarde du moindre fichier met plusieurs dizaines de secondes et le montage NFS fini par disparaître, puis réapparaître.</p>
<p>J&#8217;ai commencé par désinstaller ce plugin, l&#8217;incriminant immédiatement de toutes les fautes du monde. J&#8217;ai rebooté mon serveur ET mon client mais rien n&#8217;y faisais</p>
<p>L&#8217;exploration des logs me dit que <strong>lockd</strong> ne réponds pas.</p>
<p>J&#8217;ai fini par comprendre incidemment que c&#8217;est l&#8217;activation de mon firewall local (hier soir alors que j&#8217;étais fatigué) qui empêchait le dialogue de se faire correctement. Evidemment après l&#8217;avoir désactivé, plus de soucis.</p>
<p>Il me reste encore à trouver comment régler manuellement mon firewall pour autoriser le dialogue au niveau de NFS, mais ça sera pour plus tard.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/jeremy.wordpress.com/49/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/jeremy.wordpress.com/49/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jeremy.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jeremy.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jeremy.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jeremy.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jeremy.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jeremy.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jeremy.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jeremy.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jeremy.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jeremy.wordpress.com/49/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jeremy.wordpress.com&blog=430&post=49&subd=jeremy&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://jeremy.wordpress.com/2008/08/26/montage-nfs-qui-decroche-sur-mac-os-x/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7d1caf9df777b3b2cf474ff743494335?s=96&#38;d=&#38;r=PG" medium="image">
			<media:title type="html">jeremy</media:title>
		</media:content>
	</item>
		<item>
		<title>Réunion du PLUG le 4 juillet</title>
		<link>http://jeremy.wordpress.com/2008/06/13/reunion-du-plug-le-4-juillet/</link>
		<comments>http://jeremy.wordpress.com/2008/06/13/reunion-du-plug-le-4-juillet/#comments</comments>
		<pubDate>Fri, 13 Jun 2008 14:42:31 +0000</pubDate>
		<dc:creator>Jérémy Lecour</dc:creator>
				<category><![CDATA[Informatique]]></category>
		<category><![CDATA[PLUG]]></category>
		<category><![CDATA[laboate]]></category>

		<guid isPermaLink="false">http://jeremy.wordpress.com/?p=39</guid>
		<description><![CDATA[Contre toute attente, le PLUG tient sa réunion mensuelle le 4 juillet à partir de 19h à La Bo[a]te.
Vous êtes tous invités.
       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jeremy.wordpress.com&blog=430&post=39&subd=jeremy&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Contre toute attente, le <a href="http://plugfr.org/spip/article.php3?id_article=140">PLUG</a> tient sa réunion mensuelle le 4 juillet à partir de 19h à <a href="http://laboate.com/">La Bo[a]te</a>.</p>
<p>Vous êtes tous invités.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/jeremy.wordpress.com/39/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/jeremy.wordpress.com/39/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jeremy.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jeremy.wordpress.com/39/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jeremy.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jeremy.wordpress.com/39/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jeremy.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jeremy.wordpress.com/39/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jeremy.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jeremy.wordpress.com/39/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jeremy.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jeremy.wordpress.com/39/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jeremy.wordpress.com&blog=430&post=39&subd=jeremy&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://jeremy.wordpress.com/2008/06/13/reunion-du-plug-le-4-juillet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7d1caf9df777b3b2cf474ff743494335?s=96&#38;d=&#38;r=PG" medium="image">
			<media:title type="html">jeremy</media:title>
		</media:content>
	</item>
		<item>
		<title>Astuce pour &#8220;ssh-copy-id&#8221; sur un port ssh différent</title>
		<link>http://jeremy.wordpress.com/2008/05/29/ssh-copy-id-port-different/</link>
		<comments>http://jeremy.wordpress.com/2008/05/29/ssh-copy-id-port-different/#comments</comments>
		<pubDate>Thu, 29 May 2008 06:32:15 +0000</pubDate>
		<dc:creator>Jérémy Lecour</dc:creator>
				<category><![CDATA[Informatique]]></category>
		<category><![CDATA[PLUG]]></category>
		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://jeremy.wordpress.com/?p=38</guid>
		<description><![CDATA[Bon, a priori vous connaissez la commande &#8220;ssh-copy-id&#8221; pour copier sa clé publique sur un serveur distant afin de s&#8217;identifier par clé et plus par mot de passe.
Le principe est d&#8217;avoir une paire de clés privée/publique, le plus souvent dans &#8220;~/.ssh/id_rsa(.pub)&#8221; et de la copier à l&#8217;intérieur du fichier &#8220;~/.ssh/authorized_keys&#8221; sur la machine distante.
$ ssh-copy-id [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jeremy.wordpress.com&blog=430&post=38&subd=jeremy&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Bon, a priori vous connaissez la commande &#8220;ssh-copy-id&#8221; pour copier sa clé publique sur un serveur distant afin de s&#8217;identifier par clé et plus par mot de passe.</p>
<p>Le principe est d&#8217;avoir une paire de clés privée/publique, le plus souvent dans &#8220;~/.ssh/id_rsa(.pub)&#8221; et de la copier à l&#8217;intérieur du fichier &#8220;~/.ssh/authorized_keys&#8221; sur la machine distante.</p>
<p>$ ssh-copy-id -i ~/.ssh/id_rsa.pub user@host</p>
<p>Mais si la machine distante n&#8217;accepte pas les connexions sur le port 22 ou bien qu&#8217;il y a une redirection de ports sur le routeur, il faut lui indiquer ce port, par exemple :</p>
<p>$ ssh-copy-id -i ~/.ssh/id_rsa.pub -p 2222 user@host</p>
<p>Mais ça ne marche pas car ssh-copy-id ne comprend que 2 paramètres et si on met &#8220;-p 2222&#8243; en second, ça n&#8217;est pas un motif de type &#8220;[user@]host&#8221;, et si on le met après, en troisième, il est ignoré.</p>
<p>Et bien il suffit d&#8217;entourer les infos de connexion ssh par des guillemets pour qu&#8217;ils soient vus comme un seul paramètre :</p>
<p>$ ssh-copy-id -i ~/.ssh/id_rsa.pub &#8220;-p 2222 user@host&#8221;</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/jeremy.wordpress.com/38/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/jeremy.wordpress.com/38/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jeremy.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jeremy.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jeremy.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jeremy.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jeremy.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jeremy.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jeremy.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jeremy.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jeremy.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jeremy.wordpress.com/38/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jeremy.wordpress.com&blog=430&post=38&subd=jeremy&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://jeremy.wordpress.com/2008/05/29/ssh-copy-id-port-different/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7d1caf9df777b3b2cf474ff743494335?s=96&#38;d=&#38;r=PG" medium="image">
			<media:title type="html">jeremy</media:title>
		</media:content>
	</item>
		<item>
		<title>Réunion du PLUG le 6 juin</title>
		<link>http://jeremy.wordpress.com/2008/05/19/reunion-du-plug-le-6-juin/</link>
		<comments>http://jeremy.wordpress.com/2008/05/19/reunion-du-plug-le-6-juin/#comments</comments>
		<pubDate>Mon, 19 May 2008 07:28:15 +0000</pubDate>
		<dc:creator>Jérémy Lecour</dc:creator>
				<category><![CDATA[Informatique]]></category>
		<category><![CDATA[PLUG]]></category>
		<category><![CDATA[laboate]]></category>

		<guid isPermaLink="false">http://jeremy.wordpress.com/?p=37</guid>
		<description><![CDATA[J&#8217;oublie souvent de l&#8217;annoncer ici,mais comme chaque premier vendredi du mois, le PLUG oganise une réunion à La Bo[a]te.
Cette fois ci c&#8217;est le 6 juin, à partir de 19h.
Tous les détails sont sur le site du PLUG.
       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jeremy.wordpress.com&blog=430&post=37&subd=jeremy&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>J&#8217;oublie souvent de l&#8217;annoncer ici,mais comme chaque premier vendredi du mois, le PLUG oganise une réunion à La Bo[a]te.</p>
<p>Cette fois ci c&#8217;est le 6 juin, à partir de 19h.</p>
<p>Tous les détails sont sur <a href="http://plugfr.org/spip/article.php3?id_article=138">le site du PLUG</a>.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/jeremy.wordpress.com/37/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/jeremy.wordpress.com/37/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jeremy.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jeremy.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jeremy.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jeremy.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jeremy.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jeremy.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jeremy.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jeremy.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jeremy.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jeremy.wordpress.com/37/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jeremy.wordpress.com&blog=430&post=37&subd=jeremy&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://jeremy.wordpress.com/2008/05/19/reunion-du-plug-le-6-juin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7d1caf9df777b3b2cf474ff743494335?s=96&#38;d=&#38;r=PG" medium="image">
			<media:title type="html">jeremy</media:title>
		</media:content>
	</item>
		<item>
		<title>Procédure de sauvegarde/copie et restauration d&#8217;une application TYPO3</title>
		<link>http://jeremy.wordpress.com/2008/05/05/backup-restore-typo3/</link>
		<comments>http://jeremy.wordpress.com/2008/05/05/backup-restore-typo3/#comments</comments>
		<pubDate>Mon, 05 May 2008 11:20:32 +0000</pubDate>
		<dc:creator>Jérémy Lecour</dc:creator>
				<category><![CDATA[Informatique]]></category>
		<category><![CDATA[PLUG]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[restore]]></category>
		<category><![CDATA[typo3]]></category>

		<guid isPermaLink="false">http://jeremy.wordpress.com/?p=36</guid>
		<description><![CDATA[Description d’une situation type, avec 2 serveurs identiques, 1 pour le site en production (prod-server)  et 1 pour le site en développement/tests (dev-server). Chaque serveur prend en charge les fichiers et les bases de données (Apache/PHP + MySQL).
L’utilisateur système utilisé est user.
Les fichiers du site sont dans /var/www/dev-site sur le serveur de dev-server et [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jeremy.wordpress.com&blog=430&post=36&subd=jeremy&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Description d’une situation type, avec 2 serveurs identiques, 1 pour le site en production (<strong>prod-server</strong>)  et 1 pour le site en développement/tests (<strong>dev-server</strong>). Chaque serveur prend en charge les fichiers et les bases de données (Apache/PHP + MySQL).</p>
<p>L’utilisateur système utilisé est <strong>user</strong>.</p>
<p>Les fichiers du site sont dans <strong>/var/www/dev-site</strong> sur le serveur de dev-server et dans <strong>/var/www/prod-site</strong> sur prod-server</p>
<p>En situation mono-serveur, le principe est strictement identique sauf que les copies de fichiers se font par <strong>cp</strong> (attention aux optionsde préservation des permissions) au lieu de <strong>scp</strong> et les chemins d’accès ne comprennent plus la partie de connextion ssh au serveur distant.</p>
<p>Les bases de données s’appellent <strong>typo3_dev</strong> et <strong>typo3_prod</strong> et sont accessibles par l’utilisateur mysql <strong>typo3</strong>, avec le mot de passe <strong>typo3</strong>.<br />
Il est important que cet utilisateur ait le droit <strong>FILE</strong> dans les privilèges de MySQL pour pouvoir faire des imports/exports de/vers des fichiers.</p>
<h2>Sauvegarde ponctuelle</h2>
<h3>La base de données</h3>
<pre name="code" class="css">
prod-server: mkdir -p /var/backup/typo3/DUMPDIR/typo3_prod
prod-server: cd /var/backup/typo3/DUMPDIR
prod-server: chmod a+w /var/backup/typo3/DUMPDIR/typo3_prod
prod-server: mysqldump -u typo3 -ptypo3 -Q --tab=typo3_prod typo3_prod
prod-server: tar -czf typo3_prod.tgz typo3_prod
</pre>
<p>A ce stade, la base <strong>typo3_prod</strong> est totalement sauvegardée, dans une archive compressée /var/backup/typo3/DUMPDIR/typo3_prod.tgz.<br />
Cette archive contient autant de fichiers que de tables dans la base. Un fichier <strong>ma_table.sql</strong> contient la structure de la table et un fichier <strong>ma_table.txt</strong> contient les données de la table. Cette séparation permet de recréer la structure sans les données et/ou d’injécter les donénes sans toucher à la structure.</p>
<p> </p>
<p>Il est conseillé de nommer les archives avec la date du jour, par exemple <strong>typo3_prod-20080501.tgz</strong>, cela permet de conserver plusieurs versions de sauvegardes et de savoir à quelle date exactement elles ont été faites, indépendamment de la date de création du fichier.</p>
<h3>Les fichiers du site et ceux de <span class="caps">TYPO3</span></h3>
<pre name="code" class="css">
prod-server: cd /var/www/
prod-server: tar -xzf /var/backup/typo3/prod-site.tgz prod-site
</pre>
<p>Les fichiers du site sont alors sauvegardés et compressés sur la partition de sauvegarde.</p>
<p> </p>
<p>Si les fichiers du cœur de <span class="caps">TYPO3</span> n’ont pas été changés, il suffit de copier l’archive officielle de <span class="caps">TYPO3</span>, qui reste normalement à côté de sa version décompressée. Par exemple :</p>
<pre name="code" class="css">
prod-server: cp typo3_src.4.1.1.tar.gz /var/backup/typo3/typo3_src.4.1.1.tar.gz
</pre>
<p>Sinon, on recrée l’archive contenant nos fichiers sources et on la copie</p>
<pre name="code" class="css">
prod-server: tar -xzf /var/backup/typo3/typo3_src.4.1.1.mod.tar.gz typo3_src
</pre>
<h2>Sauvegarde régulière</h2>
<p>la procédure est identique, mais on peut l’automatiser dans un script shell, déclenché régulièrement par un tâche <span class="caps">CRON</span>.</p>
<h2>Restauration d’une sauvegarde</h2>
<p>Si les données sauvegardées sont stockées sur un autre serveur que celui sur lequel elles doivent être restaurées, il faut d’abord les rapatrier. Imaginons qu’elles soient sur le <strong>dev-server</strong> et qu’elles doivent être mises sur <strong>prod-server</strong>.</p>
<pre name="code" class="css">
prod-server: mkdir -p /var/backup/typo3/DUMPDIR
</pre>
<p> </p>
<pre name="code" class="css">
dev-server: cd /var/backup/typo3/
dev-server: scp ./DUMPDIR/typo3_prod.tgz user@prod-server:/var/backup/typo3/DUMPDIR/typo3_prod.tgz
dev-server: scp ./typo3_prod.tgz user@prod-server:/var/backup/typo3/typo3_prod.tgz
dev-server: scp ./typo3_src.4.1.1.mod.tar.gz user@prod-server:/var/backup/typo3/typo3_src.4.1.1.mod.tar.gz
</pre>
<h3>La base de données</h3>
<p><span style="font-weight:normal;">On restaure la structure de la base. Ici les tables existantes dans la sauvegardes seront détruites avant d’être recrées</span></p>
<pre name="code" class="css">
prod-server: cat /var/backup/typo3/DUMPDIR/*.sql | mysql -u typo3 -ptypo3 typo3_prod
</pre>
<p>Puis on restaure les données dans la base. <strong>Attention au chemin d’accès qui, <em>ici</em>, doit être absolu</strong>.</p>
<pre name="code" class="css">
prod-server: mysqlimport -u typo3 -ptypo3 typo3_prod /var/backup/typo3/DUMPDIR/*.txt
</pre>
<p>Les données sont injectées table après table dans la base de données, avec un arrêt en cas d’erreur sur une table.<br />
La progression est indiquées, avec le nombre de lignes traitées, ainsi que le nombre d’avertissements et d’erreurs.</p>
<p> </p>
<p>Lorsqu’on n’a pas procédé à la ré-initiamisation des tables, il est possible de fournir des options à <strong>mysqlimport</strong>, telles que :</p>
<ul>
<li>-r (ou—replace) permet de remplacer les lignes qui comportent la même clé (et donc ne provoque pas d’erreur et d’arrêt de l’import). C’est à utiliser lorsqu’on veut mettre à jour la table en conservant ce qui n’existe pas dans l’import.</li>
<li>-d (ou—delete) permet de vider la table avant la lecture du fichier d’import. C’est à utiliser lorsqu’on veut totalement remplacer le contenu des tables.</li>
</ul>
<h3>Le cœur de <span class="caps">TYPO3</span></h3>
<p>La restauration du cœur de <span class="caps">TYPO3</span> n’est nécessaire que si les fichiers sources ont été corrompus.</p>
<pre name="code" class="css">
cd /var/www/
mv typo3_src typo3_src_trashed
tar -xzf /var/backup/typo3/typo3_src.4.1.1.mod.tar.gz
</pre>
<p>Si tout est OK, on peut supprimer typo3_src_trashed</p>
<pre name="code" class="css">
rm -rf typo3_src_trashed
</pre>
<h3>Restauration des fichiers du site</h3>
<p>Le principe est identique, sauf qu’il risque d’être beaucoup plus long selon le nombre de fichiers stockés dans le site.</p>
<pre name="code" class="css">
cd /var/www/
mv prod-site prod-site_trashed
tar -xzf /var/backup/typo3/prod-site.tgz
</pre>
<p>Si tout est OK, on peut supprimer prod-site_trashed</p>
<pre name="code" class="css">
rm -rf prod-site_trashed
</pre>
<h2>Mise en production d’un site préparé en développement</h2>
<h3>Compression et transfert</h3>
<p>Il faut commencer par exécuter toutes les étapes de la sauvegarde ponctuelle.<br />
Cette fois, la sauvegarde de la base se fait dans le répertoire du site ce qui nous permet de tout compresser et transférer de dev-server à prod-server en une seule fois</p>
<pre name="code" class="css">
dev-server: mkdir -p /var/www/typo3_dev/DUMPDIR/typo3_dev
dev-server: cd /var/www/typo3_dev/DUMPDIR
dev-server: chmod a+w /var/www/typo3_dev/DUMPDIR/typo3_dev
dev-server: mysqldump -u typo3 -ptypo3 -Q --tab=typo3_dev typo3_dev
dev-server: cd /var/www/
dev-server: tar -czf typo3_dev.tgz typo3_dev
dev-server: scp typo3_dev.tgz user@prod-server:/var/www/
</pre>
<h3>Restauration</h3>
<pre name="code" class="css">
prod-server: cd /var/www/
prod-server: tar -xzf typo3_dev.tgz
prod-server: cd typo3_dev
</pre>
<p>Avant toute chose, il faut faire pointer cette copie vers la base de données de prod.<br />
Cette config se situe dans <strong>typo3_dev/typo3conf/localconf.php</strong>.<br />
La variable à vérifier est : <strong>$typo_db</strong><br />
On peut aussi vérifier les autres variables d’accès à la base : $typo_db_host, $typo_db_password et $typo_db_username</p>
<p> </p>
<p>Il faut restaurer la base de données :</p>
<pre name="code" class="css">
prod-server: chmod a+r ./DUMPDIR/*
prod-server: cat ./DUMPDIR/*.sql | mysql -u typo3 -ptypo3 typo3_prod
prod-server: mysqlimport -u typo3 -ptypo3 typo3_prod /var/www/typo3_dev/DUMPDIR/*.txt
</pre>
<p>Si les sources de <span class="caps">TYPO3</span> ont été modifiées, il faut aussi les transférer :</p>
<pre name="code" class="css">
dev-server: cd /var/www/
dev-server: tar -xzf typo3_src.4.1.1.mod.tgz typo3_src
dev-server: scp typo3_src.4.1.1.mod.tgz user@prod-server:/var/www/
</pre>
<p> </p>
<pre name="code" class="css">
prod-server: cd /var/www/
prod-server: tar -xzf typo3_src.4.1.1.mod.tgz
</pre>
<p>Dans tous les cas, il faut vérifier si le lien symbolique qui est dans typo3_dev pointe bien vers le dossier du cœur de <span class="caps">TYPO3</span></p>
<p> </p>
<p>Ensuite on renomme :</p>
<pre name="code" class="css">
prod-server: mv typo3_prod typo3_prod_old
prod-server: mv typo3_dev typo3_prod
</pre>
<p>On vérifie en ligne si le changement est bien fait.<br />
Si tout est OK, on supprime l’ancien dossier.</p>
<pre name="code" class="css">
prod-server: rm -rf typo3_prod_old
</pre>
<h3>Ajustements dans <span class="caps">TYPO3</span></h3>
<p>Dans l’interface d’admin de <span class="caps">TYPO3</span>, il y a quelques points à vérifier et adapter le cas échéant.</p>
<ul>
<li>vider tous les caches (2 liens en bas de la colonne de gauche)</li>
<li>vérifier les paramètres <strong>baseURL</strong> des configs <span class="caps">TYPO</span>Script de chaque site</li>
<li>vérifier les <strong>domaines</strong> de réponse si on a plusieurs sites (enregistrements de type “domaine” sur la première page de chaque site)</li>
<li>dans le cas de la recherche indexée des pages, vérifier les paramètres <strong>baseURL</strong> dans la “configuration TS de la page” (sur la première page de chaque site)</li>
</ul>
<blockquote><p><strong>Mise à jour du 6 mai :</strong></p>
<p>Avant de faire un mysqldump, il faut vérifier si le dossier cible est accessible en écriture à l&#8217;utilisateur système &#8220;mysql&#8221; ainsi que l&#8217;utilisateur courant. Pour faciliter celà, j&#8217;ai ajouté l&#8217;écriture à tout le monde. Après tout, ça n&#8217;est qu&#8217;un répertoire de dump, très éphémère.</p></blockquote>
<blockquote><p><strong>Mise à jour du 8 mai :</strong></p>
<p>Il n&#8217;est pas nécessaire de donner les droits en lecture sur les dumps à tout le monde. Par contre il est impératif d&#8217;avoir le droit FILE dans les privilèges MySQL, aussi bien pour la phase d&#8217;export (mysqldump) que pour la phase d&#8217;import (mysqlimport).</p></blockquote>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/jeremy.wordpress.com/36/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/jeremy.wordpress.com/36/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jeremy.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jeremy.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jeremy.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jeremy.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jeremy.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jeremy.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jeremy.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jeremy.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jeremy.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jeremy.wordpress.com/36/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jeremy.wordpress.com&blog=430&post=36&subd=jeremy&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://jeremy.wordpress.com/2008/05/05/backup-restore-typo3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7d1caf9df777b3b2cf474ff743494335?s=96&#38;d=&#38;r=PG" medium="image">
			<media:title type="html">jeremy</media:title>
		</media:content>
	</item>
		<item>
		<title>Gérer les dossiers de stockages de données</title>
		<link>http://jeremy.wordpress.com/2008/04/29/gerer-les-dossiers-de-stockages-de-donnees/</link>
		<comments>http://jeremy.wordpress.com/2008/04/29/gerer-les-dossiers-de-stockages-de-donnees/#comments</comments>
		<pubDate>Mon, 28 Apr 2008 22:06:56 +0000</pubDate>
		<dc:creator>Jérémy Lecour</dc:creator>
				<category><![CDATA[Informatique]]></category>
		<category><![CDATA[PLUG]]></category>
		<category><![CDATA[attachement_fu]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://jeremy.wordpress.com/?p=35</guid>
		<description><![CDATA[Voici une petite note à mon attention, directement inspirée de l&#8217;article de Jamis Buck et du code source de attachement_fu (un superbe plugin Rails pour l&#8217;upload de fichiers joints).
Dans une application qui stocke des fichiers uploadés par les utilisateurs, je souhaite que les fichiers soient organisés proprement et que chaque compte ait son propre dossier de [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jeremy.wordpress.com&blog=430&post=35&subd=jeremy&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Voici une petite note à mon attention, directement inspirée de <a href="http://www.37signals.com/svn/archives2/id_partitioning.php">l&#8217;article de Jamis Buck</a> et du code source de <a href="http://svn.techno-weenie.net/projects/plugins/attachment_fu/">attachement_fu</a> (un superbe plugin Rails pour l&#8217;upload de fichiers joints).</p>
<p>Dans une application qui stocke des fichiers uploadés par les utilisateurs, je souhaite que les fichiers soient organisés proprement et que chaque compte ait son propre dossier de premier niveau au lieu de tout mélanger + ou &#8211; en vrac.</p>
<p>Le principe de attachement_fu est celui-ci, avec par exemple un fichier ayant l&#8217;ID 12345 dans la base de données : </p>
<blockquote><p>/0001/2345/mon_fichier.jpg</p></blockquote>
<p><em>NB : tout est relatif à &#8220;RAILS_ROOT/public/fichiers_joints&#8221;</em></p>
<p>Comme chaque fichier est lié à un enregistrement dans la base de données, il n&#8217;y a pas de risque d&#8217;écrasement, mais si je dois sortir rapidement tous les fichiers d&#8217;un compte par FTP, je suis très embêté.</p>
<p>J&#8217;aimerai faire ceci :</p>
<blockquote><p>/compte_482/0001/2345/mon_fichier.jpg</p></blockquote>
<p>Mais comme les fichiers sont eux-mêmes classés par &#8220;groupe&#8221; au sein d&#8217;un compte et que le nombre de fichiers ne devrait pas excéder quelques petits milliers par groupe (le plus souvent quelques centaines), je peux simplifier</p>
<blockquote><p>/compte_482/groupe_047/12345/mon_fichier.jpg</p></blockquote>
<p>La limite est donc à ~100 000 fichiers par groupe, ~1 000 groupes par compte et ~1 000 comptes.<br />
Si ma petite appli atteint 5% de ces volumes je serais déjà assez riche.</p>
<p>Et puis après tout, si se limiter à 100 000 fichiers par groupe est trop réducteur, reprenons le découpage en sous-dossiers selon l&#8217;ID sur x chiffres.<br />
Et si le nombre de groupes par client ou le nombre de client devait exploser, on y ferait de même.</p>
<p>Bon, passons au choses sérieuses ; coder la méthode qui va surclasser celle de <strong>attachement_fu</strong> (exemple avec des découpes à 6 chiffres).</p>
<pre name="code" class="ruby">

# La méthode doit renvoyer un tableau où chaque élément
# est un segment du path à utiliser, à partir du dossier
# principal de stockage &quot;RAILS_ROOT/public/fichiers_joints/&quot;.
# &quot;attachment_path_id&quot; est une méthode interne du plugin
def partitioned_path(*args)
  a = []
  a &lt;&lt; (&quot;%06d&quot; % @client_id).scan(/.../)
  a &lt;&lt; (&quot;%06d&quot; % @group_id).scan(/.../)
  a &lt;&lt; (&quot;%06d&quot; % attachment_path_id).scan(/.../)
  a &lt;&lt;  args
end
</pre>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/jeremy.wordpress.com/35/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/jeremy.wordpress.com/35/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jeremy.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jeremy.wordpress.com/35/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jeremy.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jeremy.wordpress.com/35/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jeremy.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jeremy.wordpress.com/35/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jeremy.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jeremy.wordpress.com/35/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jeremy.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jeremy.wordpress.com/35/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jeremy.wordpress.com&blog=430&post=35&subd=jeremy&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://jeremy.wordpress.com/2008/04/29/gerer-les-dossiers-de-stockages-de-donnees/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7d1caf9df777b3b2cf474ff743494335?s=96&#38;d=&#38;r=PG" medium="image">
			<media:title type="html">jeremy</media:title>
		</media:content>
	</item>
	</channel>
</rss>