<?xml 
version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="https://falconnet.eu/spip.php?page=backend.xslt" ?>
<rss version="2.0" 
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:atom="http://www.w3.org/2005/Atom"
>

<channel xml:lang="fr">
	<title>Julien FALCONNET, Informaticien Ind&#233;pendant</title>
	<link>https://falconnet.fr/</link>
	<description>Julien FALCONNET est informaticien freelance sp&#233;cialiste des questions Internet. Conseil en strat&#233;gie Internet, r&#233;alisation de sites web et r&#233;f&#233;rencement sont ses principales prestations.
Vous trouverez aussi ici un certain nombre d'astuces et d'aides sur diff&#233;rents probl&#232;mes li&#233;s &#224; Internet.</description>
	<language>fr</language>
	<generator>SPIP - www.spip.net</generator>
	<atom:link href="https://falconnet.eu/spip.php?id_auteur=1&amp;page=backend" rel="self" type="application/rss+xml" />




<item xml:lang="fr">
		<title>SPIP : Migrer une alteration de la dist vers Spip3</title>
		<link>https://falconnet.eu/SPIP-Migrer-une-alteration-de-la.html</link>
		<guid isPermaLink="true">https://falconnet.eu/SPIP-Migrer-une-alteration-de-la.html</guid>
		<dc:date>2014-10-12T12:43:11Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Julien Falconnet</dc:creator>



		<description>
&lt;p&gt;La &#034;dist&#034; est l'ensemble de squelettes qui va avec SPIP. C'est un travail exceptionnel dont on doit l'essentiel &#224; Romy. Ce canevas pr&#233;sente beaucoup d'avantages : il est disponible tout de suite, il est tr&#232;s bien r&#233;f&#233;renc&#233;s par les moteurs de recherche, il est standard, couvre tous les aspects de SPIP, certains plugins se basent sur des choix qui y sont propos&#233;s, etc... &lt;br class='autobr' /&gt;
Et en cherchant un peu, il est facile de l'alt&#233;rer au niveau CSS pour avoir rapidement un site personnalis&#233;. Par contre, (&#8230;)&lt;/p&gt;


-
&lt;a href="https://falconnet.eu/-Outils-PHP-clefs-en-main-.html" rel="directory"&gt;SPIP&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;La &#034;dist&#034; est l'ensemble de squelettes qui va avec SPIP. C'est un travail exceptionnel dont on doit l'essentiel &#224; Romy. Ce canevas pr&#233;sente beaucoup d'avantages : il est disponible tout de suite, il est tr&#232;s bien r&#233;f&#233;renc&#233;s par les moteurs de recherche, il est standard, couvre tous les aspects de SPIP, certains plugins se basent sur des choix qui y sont propos&#233;s, etc...&lt;/p&gt;
&lt;p&gt;Et en cherchant un peu, il est facile de l'alt&#233;rer au niveau CSS pour avoir rapidement un site personnalis&#233;. Par contre, la structure de la DIST a beaucoup chang&#233; en passant de SPIP2 &#224; SPiP3.&lt;/p&gt;
&lt;p&gt;Voici donc pour ceux qui &#233;taient habitu&#233;s &#224; travailler sur la DIST quelques remarques !&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;h2 class=&#034;spip&#034;&gt;CSS&lt;/h2&gt;
&lt;p&gt;Tout d'abord les css ont &#233;volu&#233;es, elles ont une structure compl&#232;tement diff&#233;rentes. Exit habillage.css et ses copines. Pour plus de d&#233;tails : &lt;a href=&#034;http://romy.tetue.net/la-methode-daisy-appliquee-a-spip&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;http://romy.tetue.net/la-methode-daisy-appliquee-a-spip&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Pour aller vite, disons que les modifications que l'on &#233;tait habitu&#233;es &#224; mettre dans une copie d'habillage (squelettes/habillage.css) vont maintenant dans perso.css (squelettes/css/perso.css)&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; #page devient .page&lt;/li&gt;&lt;li&gt; #entete devient .header&lt;/li&gt;&lt;li&gt; #pied devient .footer&lt;/li&gt;&lt;/ul&gt;&lt;h2 class=&#034;spip&#034;&gt;Squelettes&lt;/h2&gt;&lt;h2 class=&#034;spip&#034;&gt;Plugins et traceurs&lt;/h2&gt;
&lt;p&gt;Si vous aviez l'habitude d'ins&#233;rer vos traceurs dans inc-pied.html, il faudra les mettre d&#233;sormais dans inclure/footer.html&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Bonnes pratiques SVN</title>
		<link>https://falconnet.eu/Bonnes-pratiques-SVN.html</link>
		<guid isPermaLink="true">https://falconnet.eu/Bonnes-pratiques-SVN.html</guid>
		<dc:date>2014-09-01T12:41:00Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Julien Falconnet</dc:creator>



		<description>
&lt;p&gt;Apr&#232;s quelques mois d'utilisation de SVN sur divers projets, dans diff&#233;rentes situations : seul, &#224; plusieurs, en pilotage, etc. j'ai fini par me faire une liste de petites recettes pour que cela marche mieux. &lt;br class='autobr' /&gt; Quand utiliser SVN ? au del&#224; d'un jour de travail pr&#233;vu. D&#232;s qu'on atteint trois jours de d&#233;passement &lt;br class='autobr' /&gt;
Quand utiliser Track/Redmine au del&#224; d'une semaine de travail d&#232;s qu'on est deux &#224; travailler dessus et qu'une analyse est n&#233;cessaire d&#232;s qu'une recette est pr&#233;vue. &lt;br class='autobr' /&gt;
Comment (&#8230;)&lt;/p&gt;


-
&lt;a href="https://falconnet.eu/-Developpement-.html" rel="directory"&gt;Subversion&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;Apr&#232;s quelques mois d'utilisation de SVN sur divers projets, dans diff&#233;rentes situations : seul, &#224; plusieurs, en pilotage, etc. j'ai fini par me faire une liste de petites recettes pour que cela marche mieux.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;h2 class=&#034;spip&#034;&gt;Quand utiliser SVN ?&lt;/h2&gt;
&lt;p&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; au del&#224; d'un jour de travail pr&#233;vu.
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; D&#232;s qu'on atteint trois jours de d&#233;passement&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Quand utiliser Track/Redmine&lt;/h2&gt;
&lt;p&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; au del&#224; d'une semaine de travail
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; d&#232;s qu'on est deux &#224; travailler dessus et qu'une analyse est n&#233;cessaire
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; d&#232;s qu'une recette est pr&#233;vue.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Comment soumettre (ou 'commiter' en bon franglais)&lt;/h2&gt;
&lt;p&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; d&#232;s que le code est stable.
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; d&#232;s que l'on peut dire &#034;J'ai fait &#231;a !&#034;&lt;/p&gt;
&lt;p&gt;Plus pr&#233;cis&#233;ment, dans la plupart des cas, pour une &lt;strong&gt;nouvelle fonctionnalit&#233;&lt;/strong&gt;, il faudra soumettre :
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; Quand on a cr&#233;&#233; la(les) fonction(s) vide(s) (de pr&#233;f&#233;rence comment&#233;e). En effet en cr&#233;ant les fonctions vides d'abord, on limite les risques que les modifications touchent celles des autres, et donc qu'il y aie conflit.
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; D&#232;s qu'on a finit une fonction. En commen&#231;ant par les fonctions de biblioth&#232;que. En effet les fonctions de biblioth&#232;ques doivent &#234;tre d&#233;velopp&#233;es avant d'&#234;tre int&#233;gr&#233;es, de sorte &#224; ce que l'int&#233;gration ne provoque pas d'erreur en attendant d'&#234;tre d&#233;velopp&#233;es.
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; Quand l'int&#233;gration sera finie. Il est important de soumettre l'int&#233;gration en toute ind&#233;pendance pour permettre d'annuler cette int&#233;gration en une seule annulation de commit. Si on m&#233;lange int&#233;gration et d&#233;bogage on risque de perdre le d&#233;bogage en annulant l'int&#233;gration.&lt;/p&gt;
&lt;p&gt;Pour un &lt;strong&gt;d&#233;bogage&lt;/strong&gt;
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; une soumission par bug, sauf si le bug est complexe, c'est &#224; dire compos&#233; de plusieurs bugs, alors on fera une soumission par sous-bug.&lt;/p&gt;
&lt;p&gt;Pour une &lt;strong&gt;am&#233;lioration&lt;/strong&gt;
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; soumettre &#224; chaque fois que l'am&#233;lioration est stable.&lt;/p&gt;
&lt;p&gt;...&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Migrer un serveur de production</title>
		<link>https://falconnet.eu/Migrer-un-serveur-de-production.html</link>
		<guid isPermaLink="true">https://falconnet.eu/Migrer-un-serveur-de-production.html</guid>
		<dc:date>2013-10-31T11:48:02Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Julien Falconnet</dc:creator>



		<description>
&lt;p&gt;Ca y est ! L'heure fatidique est arriv&#233;e, votre serveur web de production doit migrer vers un nouveau serveur. Quelques nuits blanches en perspective et une bonne dose d'adr&#233;naline dans le sang vous d&#233;cidez enfin de prendre le taureau par les cornes. &lt;br class='autobr' /&gt;
Voici quelques &#233;tapes que j'ai du mettre en place. &lt;br class='autobr' /&gt; Cadre La migration s'effectue entre deux serveurs chez online.net. L'ancien (que l'on appellera Aragorn) part &#224; la d&#233;charge, ils m'en ont gracieusement propos&#233; un nouveau (que l'on (&#8230;)&lt;/p&gt;


-
&lt;a href="https://falconnet.eu/-Administration-.html" rel="directory"&gt;Linux&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;Ca y est ! L'heure fatidique est arriv&#233;e, votre serveur web de production doit migrer vers un nouveau serveur. Quelques nuits blanches en perspective et une bonne dose d'adr&#233;naline dans le sang vous d&#233;cidez enfin de prendre le taureau par les cornes.&lt;/p&gt;
&lt;p&gt;Voici quelques &#233;tapes que j'ai du mettre en place.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;h2 class=&#034;spip&#034;&gt;Cadre&lt;/h2&gt;
&lt;p&gt;La migration s'effectue entre deux serveurs chez online.net. L'ancien (que l'on appellera Aragorn) part &#224; la d&#233;charge, ils m'en ont gracieusement propos&#233; un nouveau (que l'on appellera Elessar) plus puissant sensiblement au m&#234;me prix. Par contre, c'est un serveur d&#233;di&#233; donc &#224; moi le cambouis de la migration.&lt;/p&gt;
&lt;p&gt;Au niveau syst&#232;me d'exploitation, on en profite pour passer de Debian 6.0.7 &#224; Debian 7.2&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Aragorn : GNU/Linux 2.6.32-5-amd64&lt;/li&gt;&lt;li&gt; Elessar : GNU/Linux 3.2.0-4-amd64&lt;/li&gt;&lt;/ul&gt;&lt;h2 class=&#034;spip&#034;&gt;Etape 1 : installer le nouveau serveur&lt;/h2&gt;
&lt;p&gt;installer le nouveau serveur(Elessar) ici un Debian 7.2&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Pour online, l'installation se fait par l'interface l'h&#233;bergeur.&lt;/li&gt;&lt;li&gt; Ensuite premi&#232;re connexion en ssh root&lt;/li&gt;&lt;li&gt; Mise &#224; jour des paquets
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;apt-get update
apt-get upgrade&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Prendre quelques informations sur la machine (et bien les garder quelque part)
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;uname -a
more /etc/debian_version cat /proc/cpuinfo free
free -h
more /etc/debian_version
/sbin/ifconfig df df -h
netstat -ltp&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt; S&#233;curiser ssh
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Installer un acc&#232;s par clef sur un des utilisateur (Attention ne pas sauter cette &#233;tape sinon vous n'aurez plus acc&#232;s &#224; votre machine)
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;ssh-copy-id utilisateur@000.000.000.000&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt; Modifier l'acc&#232;s ssh pour : changer le port par d&#233;faut, emp&#234;cher le login root et emp&#234;cher le login par mdp.
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;vi /etc/ssh/sshd_config &gt;&gt;Port {XXXX} (ou XXX est un port non standart)
...
&gt;&gt;PermitRootLogin {{no}} ...
&gt;&gt;PasswordAuthentication {{no}}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt; Relancer le serveur ssh pour que les modifications soient prisent en compte
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;/etc/init.d/ssh restart&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt; modifier en local dans .ssh/config le num&#233;ro du port&lt;/li&gt;&lt;li&gt; Tester une connexion par clef.&lt;br class='autobr' /&gt;
&lt;i&gt;PS : pourquoi s&#233;curiser tout de suite ? Parce que si vous vous trompez vous &#234;tes bon pour recommencer l'installation.&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; V&#233;rifier le bon fonctionnement d'exim
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Reconfigurer pour permettre &#224; vos site d'envoyer des mails
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt; dpkg-reconfigure exim4-config&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt; Pour tester :
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;echo &#034;Un message de test&#034; | mail -s &#034;sujet de test&#034; vous@mail.tld&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Installer les paquets n&#233;cessaires :
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; LAMP : jouer sur les d&#233;pendances pour installer le n&#233;cessaire
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;apt-get install mysql-server phpmyadmin&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt; &lt;/li&gt;&lt;li&gt; NodeJS :
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;apt-get install mongodb build-essential git
wget http://nodejs.org/dist/v0.10.18/node-v0.10.18.tar.gz
tar xvf node-v0.10.18.tar.gz pushd node-v0.10.18/
make
make install&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt; &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; S&#233;curiser les applications serveurs
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; PhpMyadmin : changer au moins la ligne d'alias
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;vi /etc/apache2/conf.d/phpmyadmin.conf &gt;&gt; Alias /unnomquinarienavoiravecphpmysql /usr/share/phpmyadmin&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt; Apache : modifier les lignes
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;vi /etc/apache2/conf.d/security
...
&gt;&gt; ServerSignature Off
...
&gt;&gt; ServerTokens Prod vi /etc/php5/apache2/php.ini ...
&gt;&gt; expose_php = Off&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;i&gt;ps : attention il existe des guides bien plus s&#233;rieux de s&#233;curisation d'un serveur, je n'indique ici que ce dont j'ai eu besoin.&lt;/i&gt;&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;&#201;tape 2 : en faire le plus possible sans toucher &#224; rien d'important&lt;/h2&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; faire un maximum de sauvegardes de l'ancien (Aragorn), un Debian 6.0.7.
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;tar -cvzf backup_etc.tar.gz /etc/ &lt;/code&gt;&lt;/li&gt;&lt;li&gt; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;tar -cvzf backup_var.tar.gz /var/ &lt;/code&gt; (on peut faire mieux)&lt;/li&gt;&lt;li&gt; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;tar -cvzf backup_web.tar.gz /sites/ &lt;/code&gt; (pour moi le r&#233;pertoire o&#249; sont stock&#233;s mes sites)&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; Pr&#233;parer les noms de domaine
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Modifier la zone pour que ww.ndd.tld (avec 2w) redirigent sur le nouveau serveur (Elessar). Faire cela pour tous les sites qui tournent normalement sous www. Si vous avez d'autres sous domaines trouvez une variantes proche (avec un 2 &#224; la fin par exemple).&lt;/li&gt;&lt;li&gt; Pour chaque registrar impliqu&#233; (gandi, phpnet,etc)&lt;/li&gt;&lt;li&gt; Si possible, pr&#233;parez vos nouveaux &#034;fichiers de zone DNS&#034; pour ne plus avoir qu'&#224; les activer. (ou les www dirigent sur le nouveau serveur, Elessar )&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Ramener la configuration des sites
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &#233;tablir un lien ssh entre les deux.&lt;/li&gt;&lt;li&gt; les vhosts r&#233;cup&#233;rer &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;scp -r aragorn.dom.tld:/etc/apache2/sites-available/ /etc/apache2/sites-available/&lt;/code&gt;&lt;/li&gt;&lt;li&gt; les fichiers des sites &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;scp -r aragorn.dom.tld:/sites/* /sites/&lt;/code&gt;&lt;/li&gt;&lt;li&gt; corriger les vhost htaccess pour qu'ils supportent les ww.&lt;/li&gt;&lt;li&gt; comparer les &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;/etc/apache2/mods-enabled/&lt;/code&gt; pour r&#233;activer tous les modules n&#233;cessaires (rewrite, proxy, etc)&lt;/li&gt;&lt;li&gt; Remettre en place un syst&#232;me de sauvegarde !!!&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Faire une premi&#232;re importation temporaire des bases de donn&#233;es pour pouvoir tester que les sites fonctionnent
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;ssh aragorn.dom.tld 'mysqldump -q --skip_trigger -u root -p --database db1 --database db2 --database etc | mysql -u root -p&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Si vous avez import&#233; la base mysql (important pour les user et leur droits sur les bases), les passwords risquent de ne plus fonctionner si comme moi vous passez d'une version 5.1 &#224; une version 5.5. Vous pouvez utiliser la commande &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;mysql_upgrade -u root -p&lt;/code&gt; pour r&#233;soudre ce probl&#232;me.&lt;/li&gt;&lt;li&gt; Recopier les crontab de tous les utilisateurs&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; Tester TOUS les sites sur ww. (ou les sous domaines modifi&#233;s).&lt;/li&gt;&lt;/ul&gt;&lt;h2 class=&#034;spip&#034;&gt;&#201;tape 3 : bascule &lt;/h2&gt;
&lt;p&gt;Il va falloir ramener les informations les plus fra&#238;ches du serveur de production vers le nouveau. Id&#233;alement, couper l'ancien et tout rediriger sur le nouveau, pour limiter le temps ou une partie des gens seront sur l'ancien.&lt;/p&gt;
&lt;p&gt;Donc il faut faire dans un temps le plus court possible (si ce temps es trop important, il faut mettre les sites en travaux) ;&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; RE migrer les bases de donn&#233;es&lt;/li&gt;&lt;li&gt; RE migrer les fichiers qui bougent (attention aux droits)&lt;/li&gt;&lt;li&gt; sur l'ancien serveur utiliser les htaccess pour rediriger tout le trafic du www vers le ww.&lt;/li&gt;&lt;li&gt; Changer les dns pour y faire dispara&#238;tre l'ancien serveur.&lt;/li&gt;&lt;li&gt; tester, tester, tester et encore tester&lt;/li&gt;&lt;/ul&gt;&lt;h2 class=&#034;spip&#034;&gt;&#201;tape 4 : finaliser&lt;/h2&gt;
&lt;p&gt;La question du temps de propagation des DNS, c'est &#224; dire le temps que les noms de domaines redirigent sur les bons serveurs est toujours une question &#233;pineuse. Il vaut mieux laisser quelques heures, id&#233;alement 24h. Puis :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &#201;teindre l'ancien serveur pour v&#233;rifier si tout continue d'&#234;tre ok.&lt;/li&gt;&lt;li&gt; remplacer le ww par www dans les htaccess locaux&lt;/li&gt;&lt;li&gt; Rallumer l'ancien serveur et effacer toutes les donn&#233;es possibles.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>SPIP + OVH = ecrire cass&#233;</title>
		<link>https://falconnet.eu/SPIP-OVH-ecrire-casse.html</link>
		<guid isPermaLink="true">https://falconnet.eu/SPIP-OVH-ecrire-casse.html</guid>
		<dc:date>2012-03-11T20:25:00Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Julien Falconnet</dc:creator>



		<description>
&lt;p&gt;Symptomes &lt;br class='autobr' /&gt;
L'administration est toute cass&#233;e, avec le menu en liste &#224; puce. &lt;br class='autobr' /&gt;
Quand on &#233;tudie le code on s'apper&#231;oit qu'il n'arrive pas &#224; charger une feuille de style calcul&#233;e. En d'autres termes impossible d'afficher &lt;br class='autobr' /&gt;
http://.../spip.php?page=style_prive &lt;br class='autobr' /&gt;
On a un beau &lt;br class='autobr' /&gt;
500 Internal Server Error Solution &lt;br class='autobr' /&gt;
Apr&#232;s beaucoup de recherches j'ai fini par trouver qu'il suffisait d'ajouter &lt;br class='autobr' /&gt;
SetEnv PHP_VER 5 &lt;br class='autobr' /&gt;
dans le .htaccess &lt;br class='autobr' /&gt;
Et hop, R&#233;solu&lt;/p&gt;


-
&lt;a href="https://falconnet.eu/-Divers,15-.html" rel="directory"&gt;Divers&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;h2 class=&#034;spip&#034;&gt;Symptomes&lt;/h2&gt;
&lt;p&gt;L'administration est toute cass&#233;e, avec le menu en liste &#224; puce.&lt;/p&gt;
&lt;p&gt;Quand on &#233;tudie le code on s'apper&#231;oit qu'il n'arrive pas &#224; charger une feuille de style calcul&#233;e. En d'autres termes impossible d'afficher&lt;/p&gt;
&lt;blockquote class=&#034;spip&#034;&gt;
&lt;p&gt;http://.../spip.php?page=style_prive&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;On a un beau&lt;/p&gt;
&lt;blockquote class=&#034;spip&#034;&gt;
&lt;p&gt;500 Internal Server Error&lt;/p&gt;
&lt;/blockquote&gt;&lt;h2 class=&#034;spip&#034;&gt;Solution&lt;/h2&gt;
&lt;p&gt;Apr&#232;s beaucoup de recherches j'ai fini par trouver qu'il suffisait d'ajouter&lt;/p&gt;
&lt;blockquote class=&#034;spip&#034;&gt;
&lt;p&gt;SetEnv PHP_VER 5&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;dans le .htaccess&lt;/p&gt;
&lt;p&gt;Et hop, &lt;strong&gt;R&#233;solu&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Ajouter une langue &#224; SPIP</title>
		<link>https://falconnet.eu/Ajouter-une-langue-a-SPIP.html</link>
		<guid isPermaLink="true">https://falconnet.eu/Ajouter-une-langue-a-SPIP.html</guid>
		<dc:date>2010-10-15T11:47:56Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Julien Falconnet</dc:creator>


		<dc:subject>SPIP</dc:subject>

		<description>
&lt;p&gt;Pour un site SPIP, nous voulions pouvoir avoir des traductions m&#234;me rares en de nombreuses langues, dont : h&#233;breux hindi swahili &lt;br class='autobr' /&gt;
Or ces trois derni&#232;res langues ne sont pas int&#233;gr&#233;es, faute de traduction compl&#232;te, dans SPIP. Mais des embryons existent qui seront bien suffisants pour nos besoin. Mais comment les ajouter &#224; spip ? &lt;br class='autobr' /&gt; Pr&#233;ambule On consid&#232;re que l'on a d&#233;j&#224; des articles en plusieurs langues et que le multilinguisme est install&#233;, mais que pour certains articles on ne trouve pas (&#8230;)&lt;/p&gt;


-
&lt;a href="https://falconnet.eu/-Outils-PHP-clefs-en-main-.html" rel="directory"&gt;SPIP&lt;/a&gt;

/ 
&lt;a href="https://falconnet.eu/+-SPIP-+.html" rel="tag"&gt;SPIP&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;Pour un site SPIP, nous voulions pouvoir avoir des traductions m&#234;me rares en de nombreuses langues, dont :
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; h&#233;breux
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; hindi
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; swahili&lt;/p&gt;
&lt;p&gt;Or ces trois derni&#232;res langues ne sont pas int&#233;gr&#233;es, faute de traduction compl&#232;te, dans SPIP. Mais des embryons existent qui seront bien suffisants pour nos besoin. Mais comment les ajouter &#224; spip ?&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;h2 class=&#034;spip&#034;&gt;Pr&#233;ambule&lt;/h2&gt;
&lt;p&gt;On consid&#232;re que l'on a d&#233;j&#224; des articles en plusieurs langues et que le multilinguisme est install&#233;, mais que pour certains articles on ne trouve pas les langues appropri&#233;es dans SPIP. On cherche donc &#224; ajouter une nouvelle langue.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Justification&lt;/h2&gt;
&lt;p&gt;Apr&#232;s quelques recherche, il s'av&#232;re difficile de trouver une aide concr&#232;te pour un site SPIP en version 2.1. Il y a des questions similaires pour d'anciennes versions, il y des question et des r&#233;ponses sur le multilinguisme et sur le fait d'aider &#224; la traduction de SPIP. Mais je n'ai rien trouv&#233; de synth&#233;tique sur l'ajout en tant que tel d'une nouvelle langue en SPIP 2.1. Et surtout google ne nous sort rien de pertinent sur la requ&#234;te &#034;ajouter une langue &#224; spip&#034;.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Le p&#233;riple&lt;/h2&gt;
&lt;p&gt;En cherchant on voit que l'on a besoin de 3 fichiers pour chaque langue :
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; ecrire_lang.php
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; public_lang.php
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; spip_lang.php&lt;/p&gt;
&lt;p&gt;o&#249; lang est le code langue. Par exemple, pour le fran&#231;ais c'est 'fr' (ecrire_fr.php, public_fr.php, spip_fr.php), pour l'anglais c'est 'en', pour l'italien c'est 'it', etc. Il existe plusieurs standards pour d&#233;finir une langue, celui utilis&#233; ici semble &#234;tre le ISO 639-1 (voir &lt;a href=&#034;http://www.loc.gov/standards/iso639-2/php/code_list.php&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;liste exhaustive&lt;/a&gt;) avec, parfois, une variante pays (pt_br).&lt;/p&gt;
&lt;p&gt;Je trouvais un tableau tr&#232;s prometteur avec la liste des traductions en cours : &lt;a href=&#034;http://www.spip.net/rubrique4.html&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;http://www.spip.net/rubrique4.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Mais encore fallait il pouvoir r&#233;cup&#233;rer les fichiers correspondant.&lt;/p&gt;
&lt;p&gt;Dans cette qu&#234;te de fichiers, un certain nombre de liens semblent bris&#233;s, notamment dans spip-contrib (la gestion des langues semble avoir &#233;t&#233; g&#233;r&#233;e dans spip-contrib). D'autre sur spip.net semblent au contraire amener sur une mailing liste ou l'interface priv&#233;e (inaccessibles sans inscription).&lt;/p&gt;
&lt;p&gt;Finalement la meilleure piste semble le suivi de d&#233;veloppement en cours :
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; &lt;a href=&#034;http://core.spip.org/trac/spip/browser/ecrire/lang&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;http://core.spip.org/trac/spip/browser/ecrire/lang&lt;/a&gt;&lt;br class='autobr' /&gt;
Apr&#232;s tout on sait bien qu'on va chercher quelque chose qui n'est pas finit mais qui est d&#233;j&#224; bien mieux que rien.&lt;/p&gt;
&lt;p&gt;On y trouve en particulier he (h&#233;breux), mais aucun des autres qui m'int&#233;ressent.&lt;/p&gt;
&lt;p&gt;Apr&#232;s beaucoup de recherches et un peu de chance je trouve une adresse magique : &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;http://www.spip.net/fichier_langue.php&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Cette petite adresse permet de r&#233;cup&#233;rer n'importe quel fichier de langue pour peu qu'il existe et qu'on soit capable de deviner son nom.&lt;/p&gt;
&lt;p&gt;Dans mon cas, je cherchais : &lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; spip_sw.php, ecrire_sw.php, public_sw.php &lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; spip_hi.php, ecrire_hi.php, public_hi.php
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; spip_he.php, ecrire_he.php, public_he.php&lt;/p&gt;
&lt;p&gt;Et par exemple pour r&#233;cup&#233;rer le premier, j'ai pu utiliser l'adresse :&lt;/p&gt;
&lt;p&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;http://www.spip.net/fichier_langue.php?f=spip_sw&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Une fois cela n'a pas r&#233;solu tous mes probl&#232;mes puisque je n'ai pu r&#233;cup&#233;rer qu'une partie des fichiers dont j'avais besoin :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; spip_sw.php&lt;/li&gt;&lt;li&gt; spip_hi.php&lt;/li&gt;&lt;li&gt; spip_he.php&lt;/li&gt;&lt;li&gt; public_he.php&lt;/li&gt;&lt;li&gt; ecrire_hi.php&lt;/li&gt;&lt;li&gt; ecrire_he.php&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;De plus en les parcourant, on remarque que :
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; pour l'h&#233;breu &#231;a semble ok m&#234;me si dans &#233;crire, il reste des traductions &#224; faire.
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; pour l'hindi, rien ne semble fait ou presque. (outre qu'il manque un fichier)
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; pour le swahili, c'est en fait une base en anglais. (outre qu'il manque deux fichiers)&lt;/p&gt;
&lt;p&gt;Il aurait fallu que je puisse traduire les fichiers manquants ou incorrects. Mais n'ayant ni les comp&#233;tence, ni le temps, je d&#233;cidais plut&#244;t de mettre en place des artifices approximatifs qui permettrait quand m&#234;me de profiter de l'extraordinaire moteur multilingue de SPIP. Donc, j'utilisais les fichiers les plus adapt&#233;s (l'anglais) pour remplacer les fichiers manquants ou erron&#233;s.&lt;/p&gt;
&lt;p&gt;Je r&#233;cup&#233;rai donc spip_en.php, ecrire_en.php et public_en.php et les copiais/renommais pour obtenir&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; spip_hi.php&lt;/li&gt;&lt;li&gt; ecrire_hi.php&lt;/li&gt;&lt;li&gt; public_hi.php&lt;/li&gt;&lt;li&gt; ecrire_sw.php&lt;/li&gt;&lt;li&gt; public_sw.php&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Ensuite restait &#224; mettre tout &#231;a en place dans /ecrire/lang .&lt;/p&gt;
&lt;p&gt;Mais, grande d&#233;ception, les nouvelles langues n'apparaissent pas dans la liste des langues disponibles. On v&#233;rifie rapidement ecrire/inc/lang_liste.php pour voir que, pourtant, elles ont &#233;t&#233; pr&#233;vues.&lt;/p&gt;
&lt;p&gt;En cherchant dans l'interface d'administration, on trouve dans Configuration&gt;Gestion des langues&gt;Multilinguisme la liste des langues &#224; activer.&lt;br class='autobr' /&gt;
Au passage on note que les langues soulign&#233;es sont celles qui ont des fichiers sp&#233;cifiques (pour les autres, on utilisera la langue par d&#233;faut)&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Proc&#233;dure Synth&#233;tique&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;1. Trouver le code langue de la langue recherch&#233;e&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Soit dans spip dans le fichier ecrire/inc/lang_liste.php&lt;br class='autobr' /&gt;
Soit sur le site : &lt;a href=&#034;http://www.loc.gov/standards/iso639-2/php/code_list.php&#034; class=&#034;spip_url spip_out&#034; rel=&#034;external&#034;&gt;http://www.loc.gov/standards/iso639...&lt;/a&gt; colonne ISO 639-1 mais attention certains ajustements sont fait par spip.&lt;br class='autobr' /&gt;
A partir de l&#224;, on sait que l'on aura besoin de :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; spip_&lt;_code&gt;.php&lt;/li&gt;&lt;li&gt; ecrire_&lt;_code&gt;.php&lt;/li&gt;&lt;li&gt; public_&lt;_code&gt;.php&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;i&gt;Par exemple pour l'allemand, ce serait spip_de.php, ecrire_de.php, public_de.php &lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. R&#233;cup&#233;rer les fichiers des langues qui nous int&#233;ressent&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;On utilise l'adresse &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;http://www.spip.net/fichier_langue.php?f=&lt;monfichier&gt;&lt;/code&gt; pour r&#233;cup&#233;rer les fichiers de langue (en remplacant &lt;monfichier&gt; par le nom du fichier recherch&#233; sans le &#034;.php&#034;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Par exemple pour l'allemand ce serait :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;a href=&#034;http://www.spip.net/fichier_langue.php?f=spip_de&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;http://www.spip.net/fichier_langue.php?f=spip_de&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a href=&#034;http://www.spip.net/fichier_langue.php?f=ecrire_de&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;http://www.spip.net/fichier_langue.php?f=ecrire_de&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a href=&#034;http://www.spip.net/fichier_langue.php?f=public_de&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;http://www.spip.net/fichier_langue.php?f=public_de&lt;/a&gt;&lt;br class='autobr' /&gt;
&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;2bis. Inventer ceux qui nous manquent&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Si par hasard, les fichiers ne sont pas disponibles ou sont erron&#233;s, il faut :
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; soit les traduire (et je vous y invite fortement si vous avez les comp&#233;tences et &#224; participer &#224; &lt;a href=&#034;http://www.spip.net/fr_article1.html&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;l'effort de traduction de SPIP&lt;/a&gt;)
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; soit choisir une langue disponible la plus proche ou la plus appropri&#233;e (souvent l'anglais). Une fois la langue choisit on trouve les trois fichiers dans /ecrire/lang et on les copie en les renommant pour qu'il semblent repr&#233;senter la langue voulue.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Par exemple, si on ne trouve pas l'hindi et qu'on d&#233;cide de le remplacer par l'anglais, on copie /ecrire/lang/spip_en.php en /ecrire/lang/spip_hi.php, /ecrire/lang/public_en.php en /ecrire/lang/public_hi.php et /ecrire/lang/ecrire_en.php en /ecrire/lang/ecrire_hi.php&lt;br class='autobr' /&gt;
&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. Mettre en place leur utilisation&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Une fois les fichiers en place il reste &#224; les activer dans l'administration de spip : Configuration&gt;Gestion des langues&gt;Multilinguisme . Cette page propose, en dessous des options de configuration linguistiques g&#233;n&#233;rales, la liste des langues disponibles et activables. Il ne reste plus qu'&#224; cliquer votre nouvelle langue pour l'activer et qu'elle soit disponible dans l'interface.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3bis. Mettre en place leur utilisation, langue rare&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Si d'aventure, la langue n'apparaissait pas dans la liste de la page Configuration&gt;Gestion des langues&gt;Multilinguisme, il faudrait la rajouter &#224; la main dans le fichier : ecrire/inc/lang_liste.php&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Ressources&lt;/h2&gt;
&lt;p&gt;Voici les ressources qui m'ont bien aid&#233; :
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; &lt;a href=&#034;http://forum.spip.org/fr_208428.html&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;http://forum.spip.org/fr_208428.html&lt;/a&gt; (ajout du chinois non-simplifi&#233; en 2008)
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; &lt;a href=&#034;http://www.eklesia.net/spip.php?article75&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;http://www.eklesia.net/spip.php?article75&lt;/a&gt;
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; &lt;a href=&#034;http://www.spip.net/rubrique4.html&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;http://www.spip.net/rubrique4.html&lt;/a&gt; (ou l'on trouve l'&#233;tat d'avancement des traductions.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Notes &lt;/h2&gt;
&lt;p&gt;On s'occupe bien ici de rajouter une nouvelle langue &#224; SPIP. La gestion d'un site multilingue (avoir des articles/ rubriques/pages etc.) est un sujet extr&#234;mement bien document&#233;. Par exemple :
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; &lt;a href=&#034;http://www.spip.net/fr_article1972.html&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;http://www.spip.net/fr_article1972.html&lt;/a&gt;
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; &lt;a href=&#034;http://www.spip.net/fr_article2128.html&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;http://www.spip.net/fr_article2128.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;La version que j'utilise de spip propose 40 langues dans l'interface priv&#233;e. Pourtant &#233;trangement il y a 45 fichiers de langues dans /ecrire/lang. Et on trouve 189 code langues dans ecrire/inc/lang_liste.php. &lt;br class='autobr' /&gt;
Cela tient au fait que 189 langues ont &#233;t&#233; pr&#233;vues. 45 sont livr&#233;es par d&#233;faut mais 5 ne sont pas activ&#233;es par d&#233;faut :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; asturianu [ast]&lt;/li&gt;&lt;li&gt; Indonesia [id]&lt;/li&gt;&lt;li&gt; Cambodian [km]&lt;/li&gt;&lt;li&gt; Burmese [my]&lt;/li&gt;&lt;li&gt; svenska [sv]&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Installation Trac sur h&#233;bergement d&#233;di&#233;</title>
		<link>https://falconnet.eu/Installation-Trac-sur-hebergement.html</link>
		<guid isPermaLink="true">https://falconnet.eu/Installation-Trac-sur-hebergement.html</guid>
		<dc:date>2009-11-24T13:17:33Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Julien Falconnet</dc:creator>



		<description>
&lt;p&gt;&#199;a faisait des ann&#233;es que je tournais autour. On m'en avais parl&#233;, j'en avais vu quelques uns... Mais TRAC &#233;tait toujours rest&#233; la &#034;bonne id&#233;e qu'on adopterai d&#232;s qu'on aurait le temps&#034;. D'un autre c&#244;t&#233;, l'essentiel de mes projet n'impliquaient que moi, donc je m'en sortais tr&#232;s bien avec mon cahier. A deux, &#231;a passait encore. Mais &#224; quatre, j'ai am&#232;rement regrett&#233; de n'avoir pas un suivi de projet connect&#233; &#224; subversion. Je me suis finalement ressaisit et voici le r&#233;sultat de mes recherches. (&#8230;)&lt;/p&gt;


-
&lt;a href="https://falconnet.eu/-Administration-.html" rel="directory"&gt;Linux&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;&#199;a faisait des ann&#233;es que je tournais autour. On m'en avais parl&#233;, j'en avais vu quelques uns... Mais &lt;a href=&#034;http://trac.edgewall.org/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;TRAC&lt;/a&gt; &#233;tait toujours rest&#233; la &#034;bonne id&#233;e qu'on adopterai d&#232;s qu'on aurait le temps&#034;. D'un autre c&#244;t&#233;, l'essentiel de mes projet n'impliquaient que moi, donc je m'en sortais tr&#232;s bien avec mon cahier. A deux, &#231;a passait encore. Mais &#224; quatre, j'ai am&#232;rement regrett&#233; de n'avoir pas un suivi de projet connect&#233; &#224; subversion. Je me suis finalement ressaisit et voici le r&#233;sultat de mes recherches.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;h2 class=&#034;spip&#034;&gt;Choix&lt;/h2&gt;
&lt;p&gt;A titre de pr&#233;ambule, voici les choix que j'ai fait : &lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; version : tracd 0.11.1
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; Subversion (&lt;strong&gt;SVN&lt;/strong&gt;) comme gestionnaire de version
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; trac est utilis&#233; en serveur '&lt;a href=&#034;http://trac.edgewall.org/wiki/TracStandalone&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;standalone&lt;/a&gt;' (ind&#233;pendant d'un serveur apache)
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; plusieurs projets sont g&#233;r&#233;s simultan&#233;ment
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; acc&#232;s priv&#233;
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; gestion des temps de d&#233;veloppement (estimation et d&#233;compte)
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; th&#232;me personnalis&#233; &lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; le serveur sera lanc&#233; par un utilisateur particulier&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Initialisation&lt;/h2&gt;
&lt;p&gt;Sur ma d&#233;dibox avec une installation Debian. Voici le protocole que j'ai suivi.&lt;/p&gt;
&lt;p&gt;En tant qu'administrateur :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre spip_cadre_block' dir='ltr'&gt;apt-get install trac apt-get install trac-spamfilter&lt;/textarea&gt;
&lt;p&gt;Puis en tant qu'utilisateur normal (j'en cr&#233;&#233; un sp&#233;cialement pour trac)&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='23' class='spip_cadre spip_cadre_block' dir='ltr'&gt;# cr&#233;ation des environnement qui serviront &#224; trac pour g&#233;rer chaque projet trac-admin repertoire_projet1 initenv trac-admin repertoire_projet2 initenv # g&#233;n&#233;ration des mots de passe et des utilisateurs htpasswd -c .htpasswd_projet1 user1 htpasswd .htpasswd_projet1 user2 ... htpasswd -c .htpasswd_projet2 user1 htpasswd .htpasswd_projet2 user3 ... # Ajout des droit admin &#224; au moins un utilisateur trac-admin repertoire_projet1/ permission add user1 TRAC_ADMIN trac-admin repertoire_projet2/ permission add user1 TRAC_ADMIN # pour v&#233;rifier que l'identification (et l'acc&#232;s admin) fonctionne tracd -p 8000 --basic-auth=repertoire_projet1,/home /TRAC/.htpasswd_projet1,TRAC_PROJ1 --basic-auth=repertoire_projet2,/home/TRAC/.htpasswd_projet2,TRAC_PROJ2 /home/TRAC/repertoire_projet1/ /home/TRAC/repertoire_projet2/ #ctl-c pour sortir&lt;/textarea&gt;
&lt;p&gt;Dans un navigateur, on peut ensuite tester avec http://adressDuServeur:8000&lt;/p&gt;
&lt;p&gt;Une fois que tout semble op&#233;rationnel on peut passer aux plugins&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Plugins&lt;/h2&gt;
&lt;p&gt;J'avais besoin de trois fonctionnalit&#233;s qui demandaient des plugins suppl&#233;mentaire :
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; La gestion des temps de d&#233;veloppement.
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; Un acc&#232;s priv&#233; par d&#233;faut.
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; Une interface un peu plus sympathique&lt;/p&gt;
&lt;p&gt;J'ai donc r&#233;cup&#233;r&#233; les plugins suivants :
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; &lt;a href=&#034;http://trac-hacks.org/wiki/TimingAndEstimationPlugin&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;TimingAndEstimation&lt;/a&gt;, qui permet d'estimer et de d&#233;compter le temps ticket part ticket.
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; &lt;a href=&#034;http://trac-hacks.org/wiki/NoAnonymousPlugin&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;NoAnonymous&lt;/a&gt;, qui permet d'interdire l'acc&#232;s si on est pas identifi&#233;
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; &lt;a href=&#034;http://trac-hacks.org/wiki/GnomeBrTheme&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;GnomeBR&lt;/a&gt; un th&#232;me plus (trop ?) color&#233;.
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; &lt;a href=&#034;http://trac-hacks.org/wiki/ThemeEnginePlugin&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;ThemeEngine&lt;/a&gt;, n&#233;cessaire pour pouvoir installer des th&#232;mes (et n&#233;cessaire pour le pr&#233;c&#233;dent).&lt;/p&gt;
&lt;p&gt;Apr&#232;s la proc&#233;dure est assez p&#233;nible, il va falloir r&#233;g&#233;n&#233;rer les plugins avec la version de python du serveur. Ce que j'ai trouv&#233; de plus simple c'est de mettre tous les plugins r&#233;cup&#233;r&#233; dans un r&#233;pertoire sp&#233;cialement cr&#233;&#233; pour &#231;a sur le serveur et d'ex&#233;cuter dans ce r&#233;pertoire (ATTENTION !!! pas ailleurs) le script suivant&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='17' class='spip_cadre spip_cadre_block' dir='ltr'&gt;find . -iname '*.zip' -exec unzip {} \; for setup in &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;find . -iname 'setup.py'&lt;/code&gt; do start=&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;pwd&lt;/code&gt; chmod -R 777 &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;dirname $setup&lt;/code&gt; cd &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;dirname $setup&lt;/code&gt; python setup.py bdist_egg cd $start echo &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;dirname $setup&lt;/code&gt; done find . -iname '*.egg' -exec cp {} . \;&lt;/textarea&gt;
&lt;p&gt;Ensuite il ne reste plus qu'&#224; d&#233;placer, les .egg (attention de bien choisir ceux li&#233;s &#224; la version de trac (pour moi 0.11) dans le r&#233;pertoire plugins de mes environnement (repertoire_projet1 et repertoire_projet2)&lt;/p&gt;
&lt;p&gt;Ensuite on peut tester chaque projet s&#233;par&#233;ment et on devra sans doute mettre &#224; jour la base de donn&#233;e :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre spip_cadre_block' dir='ltr'&gt;trac-admin /home/TRAC/repertoire_projet1 upgrade trac-admin /home/TRAC/repertoire_projet2 upgrade&lt;/textarea&gt;&lt;h2 class=&#034;spip&#034;&gt;Petits r&#233;glages compl&#233;mentaire&lt;/h2&gt;
&lt;p&gt;Dans trac.ini&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;les logs&lt;/strong&gt;&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre spip_cadre_block' dir='ltr'&gt;log_level = DEBUG log_type = file&lt;/textarea&gt;
&lt;p&gt;&lt;strong&gt;les mails&lt;/strong&gt;&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='5' class='spip_cadre spip_cadre_block' dir='ltr'&gt;always_notify_owner = true always_notify_reporter = true mime_encoding = quoted-printable smtp_enabled = true base_url = http://mon.site.com:port/projet/&lt;/textarea&gt;&lt;h2 class=&#034;spip&#034;&gt;Mise en route&lt;/h2&gt;
&lt;p&gt;Il reste en suite &#224; lancer pour de vrai l'application (notament pour qu'elle continue de fonctionner quand on se d&#233;loguera du ssh).&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='5' class='spip_cadre spip_cadre_block' dir='ltr'&gt;# le -d pour lancer le programme comme un daemon tracd -d -p 8520 --basic-auth=lunastars_v2,/home/TRAC/.htpasswd_luna,TRAC_LUNA --basic-auth=enov_bix,/home/TRAC/.htpasswd_enov,TRAC_ENOV /home/TRAC/lunastars_v2/ /home/TRAC/enov_bix/ &amp;&lt;/textarea&gt;
&lt;p&gt;puis quand on voudra l'arr&#233;ter : &lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; ps aux |grep tracd
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; kill &lt;i&gt;le pid trouv&#233;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;Voil&#224;, maintenant il ne reste plus qu'&#224; explorer les fonctionnalit&#233;s extraordinaire de cette application.&lt;/p&gt;
&lt;p&gt;En esp&#233;rant que cela aidera d'autres &#224; gagner un peu de temps.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_ps'&gt;&lt;p&gt;[edit : 2/12/2009] Pour pouvoir clore et ajouter du temps sur les tickets directement par les messages des commits SVN, il faut appliquer la proc&#233;dure indiqu&#233;e ici : &lt;a href=&#034;http://trac-hacks.org/wiki/TimingAndEstimationSVNPostCommitHook&#034; class=&#034;spip_url spip_out&#034; rel=&#034;external&#034;&gt;http://trac-hacks.org/wiki/TimingAn...&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Subversion : export des fichiers depuis une r&#233;vision en bash</title>
		<link>https://falconnet.eu/Subversion-export-des-fichiers.html</link>
		<guid isPermaLink="true">https://falconnet.eu/Subversion-export-des-fichiers.html</guid>
		<dc:date>2009-11-11T17:59:11Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Julien Falconnet</dc:creator>



		<description>&lt;p&gt;Exporter l'ensemble des fichiers modifi&#233;s depuis une r&#233;vision donn&#233;e avec subversion (SVN). Un script bash reposant sur svn export et svn diff : &lt;strong&gt;svnxport.sh&lt;/strong&gt;&lt;/p&gt;

-
&lt;a href="https://falconnet.eu/-Divers,15-.html" rel="directory"&gt;Divers&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;Lorsqu'on travaille avec Subversion (SVN) la mise en production demande de passer par la commande svn export. Mais qu'en est il des mises &#224; jour ? La proc&#233;dure recommand&#233;e est de passer par diff et patch. Mais que faire lorsqu'il est impossible de passer par patch parce que l'on est limit&#233; &#224; l'utilisation d'un FTP, par exemple ?&lt;/p&gt;
&lt;p&gt;Et bien, on est bien emb&#234;t&#233;. En tout cas, c'&#233;tait mon cas. Apr&#232;s quelques recherches sur Internet, difficile de trouver une solution satisfaisante. Aucun utilitaire ne semblant faire r&#233;f&#233;rence, et les scripts maison ne correspondant pas &#224; mes besoin, j'ai d&#233;cid&#233; de mettre au point un petit utilitaire bash que je vous livre ici en &lt;a href=&#034;http://fr.wikipedia.org/wiki/Licence_publique_g%C3%A9n%C3%A9rale_GNU&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;GPL&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;Comment exporter tous les fichiers qui ont chang&#233; depuis ma derni&#232;re livraison ? Voici une question qui a du tarauder un certain nombre de d&#233;veloppeur au moins une fois. C'est vrai, apr&#232;s tout, on investit du temps sur l'utilisation d'un syst&#232;me de suivi de version (ici &lt;strong&gt;svn&lt;/strong&gt;), si c'est pour en perdre encore lorsqu'il faut livrer, o&#249; est l'int&#233;r&#234;t ? Pourquoi livrer la biblioth&#232;que monstrueuse qu'on a du ajouter en r&#233;vision 132 alors qu'on est r&#233;vision 683 et qu'on fait une livraison en r650. Et je passe sur la question du client qui se demande pourquoi on lui renvoie une archive de 60 Mo alors qu'il n'a demand&#233; que quelques corrections d'orthographe et de typographie ( si ! si ! &#231;a p&#232;se super lourd une virgule !).&lt;/p&gt;
&lt;p&gt;En effet, &lt;i&gt;svn export&lt;/i&gt; exporte toute le projet &#224; une r&#233;vision donn&#233;e. Et &lt;i&gt;svn diff&lt;/i&gt; qui affiche bien les diff&#233;rences entre deux r&#233;visions ne produit que des sorties au format patch (il n'indique que les lignes qui ont &#233;t&#233; modifi&#233;es).&lt;/p&gt;
&lt;p&gt;Apr&#232;s un certain nombre de recherches, j'ai &#233;t&#233; bien d&#233;sesp&#233;r&#233; de voir que non seulement je n'&#233;tais pas le seul &#224; buter sur ce probl&#232;me, mais qu'en plus aucune solution ne semblait faire consensus. J'ai trouv&#233; quelques solutions maisons et m&#234;me des scripts entiers, mais aucuns ne correspondait &#224; ce que je voulais faire, c'est-&#224;-dire un simple export diff&#233;rentiel qui ressemblerait &#224; un svn export (donc en &lt;strong&gt;bash&lt;/strong&gt;).&lt;/p&gt;
&lt;p&gt;J'ai donc d&#233;cid&#233; de me lancer et de cr&#233;er cette perle rare. Comme j'en &#233;tais content et que je me suis dit que &#231;a pourrait resservir, je vous la sert donc ci-dessous (en &lt;a href=&#034;http://www.gnu.org/licenses/gpl.html&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;gpl&lt;/a&gt;). Vous noterez que je suis tellement persuad&#233; de la dimension universelle de ce probl&#232;me que j'ai d&#233;cid&#233; de le coder (et de le commenter en anglais).&lt;/p&gt;
&lt;p&gt;Voici le code bash de&lt;strong&gt;svnxport.sh&lt;/strong&gt;.&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='72' class='spip_cadre spip_cadre_block' dir='ltr'&gt;#!/bin/sh # svnxport.sh #Export only modified files in SVN # # Copyright (C) 2009 by Julien Falconnet # http://www.falconnet.fr # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # any later version. # # #BEWARE : This script does not operate correctly with files whose filename contains spaces # tests for parameters if [ ! $1 ];then echo &#034;svnxport : No source specified. Needs : source revision target_directory&#034;;exit;fi if [ ! $2 ];then echo &#034;svnxport : No revision specified. Needs : source revision target_directory&#034;;exit;fi if [ ! $3 ];then echo &#034;svnxport : No target_directory specified. Needs : source revision target_directory&#034;;exit;fi # check if the target_directory allready exists if [ -d $3 ];then echo &#034;svnxport : target_directory '$3' allready exists. Remove it or change target_directory parameter.&#034;;exit;fi echo &#034;Processing : source($1), revision($2), target_directory($3)&#034; # we use svn diff to select changed files and only keep those updated or added. # Then the 'for' separate status from filename (here is the problem with file with blanks) for myfile in &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;svn diff -r $2:HEAD --summarize $1 | grep -e '^M ' -e '^A '&lt;/code&gt; do if [ &#034;$myfile&#034; = &#034;M&#034; -o &#034;$myfile&#034; = &#034;AM&#034; -o &#034;$myfile&#034; = &#034;A&#034; -o &#034;$myfile&#034; = &#034;.&#034; -o -d $myfile ] then # we ignore the status, and the directory to update continue else #we focus on true changed files #first we create needed directories for the current file #note that we use a relative directory system outfile=&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;echo $myfile |sed &#034;s|$1||g&#034;&lt;/code&gt; dir=&#034;$3/$outfile&#034; mkdir -p $(dirname $dir) #then we export the file svn export $myfile $3/$outfile &gt;&gt; /dev/null echo &#034;export $3/$outfile &#034; fi done # List other files. Changed but not exported. Mainly the deleted ones. # Usefull to know which files should be removed and follow weird comportment echo &#034;Watch for : &#034; svn diff -r $2:HEAD --summarize $1 | grep -v -e 'M ' -e 'A ' |sed &#034;s|$1||g&#034;&lt;/textarea&gt;
&lt;p&gt;Pour ceux que &#231;a int&#233;ressent, deux points ont &#233;t&#233; compliqu&#233;s. D'abord, le fait qu'en &lt;strong&gt;bash&lt;/strong&gt; le for d&#233;coupe sur les espaces (et non pas sur les retours &#224; la ligne) : Un coup sur deux j'avais le statut, ce qui &#233;tait p&#233;nible puisque je ne voulais traiter que les A et les M et pas les D. J'ai faillit pass&#233; par un marqueur et finalement j'ai trouv&#233; plus &#233;l&#233;gant de passer par un grep (qui s'intercale avant le d&#233;coupage du for).&lt;/p&gt;
&lt;p&gt;L'autre soucis a &#233;t&#233; la cr&#233;ation de l'arborescence. En effet j'ai &#233;t&#233; d&#233;&#231;u de voir que ni touch, ni mkdir, ni svn export n'&#233;taient capables de cr&#233;er des sous r&#233;pertoires en m&#234;me temps que le r&#233;pertoire p&#232;re. Du coup j'ai &#233;t&#233; oblig&#233; de rajouter cette boucle toute laide de mkdir. [edit ; gr&#226;ce au post de Rodney Amato j'ai put trouver le param&#232;tre -p de mkdir qui remplace avantageusement la boucle en question]&lt;/p&gt;
&lt;p&gt;Par contre, du coup, les espaces dans les noms de fichiers sont d&#233;coup&#233;s par le for et les fichiers correspondants ne sont pas export&#233;s par le script. Il faudrait remplacer les espaces dans les fichier &#224; la vol&#233;e avant le for et les re-remplacer apr&#232;s mais c'&#233;tait tellement in&#233;l&#233;gant que je m'y suis refus&#233;. D'autant que cela ne me sert pas puisque je ne mets jamais d'espace dans mes noms de fichiers (c'est trop laid). Par contre si quelqu'un &#224; une solution &#233;l&#233;gante pour contourner ce probl&#232;me je suis preneur.&lt;/p&gt;
&lt;p&gt;A bient&#244;t...&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_ps'&gt;&lt;p&gt;Parmi les scripts int&#233;ressant que j'ai trouv&#233;, celui ci est celui qui m'a le plus inspir&#233;. H&#233;las il &#233;tait en php et faisait plus que ce que je voulais. Mais pour ceux qui cherchent une solution en php plut&#244;t qu'en bash, je pense qu'elle est valide :&lt;a href=&#034;http://forum.phpfrance.com/vos-contributions/export-fichier-depuis-subversion-pour-mise-production-backup-inclus-t241495.html&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;http://forum.phpfrance.com/vos-contributions/export-fichier-depuis-subversion-pour-mise-production-backup-inclus-t241495.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Les &lt;a href=&#034;http://svnbook.red-bean.com/nightly/en/svn.reposadmin.create.html#svn.reposadmin.create.hooks&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;hooks SVN&lt;/a&gt; auraient pu &#234;tre une autre piste int&#233;ressante mais demandent de modifier le d&#233;pot, donc des droits &#233;tendus. (une &lt;a href=&#034;http://www.clever-age.com/veille/blog/utilisation-des-hooks-avec-subversion.html&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;pr&#233;sentation rapide en fran&#231;ais&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Merci aussi &#224; ce &lt;a href=&#034;http://idn.interspire.com/blogs/6/Exporting-only-the-files-changed-between-2-revisions-in-Subversion.html&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;post de Rodney Amato&lt;/a&gt; qui m'a apport&#233; la r&#233;v&#233;lation du mkdir -p.&lt;/p&gt;&lt;/div&gt;
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Pr&#233;fixer les tables spip avec le spip_loader</title>
		<link>https://falconnet.eu/Prefixer-les-tables-spip-avec-le.html</link>
		<guid isPermaLink="true">https://falconnet.eu/Prefixer-les-tables-spip-avec-le.html</guid>
		<dc:date>2008-04-16T17:57:16Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Julien Falconnet</dc:creator>



		<description>
&lt;p&gt;L'installation de plusieurs spip dans la m&#234;me base est parfois n&#233;cessaire ou pratique. Malheureusement l'installation ne propose pas de modifier le pr&#233;fixe par d&#233;faut de spip qui est &#034;spip&#034;. Si on essaie d'installer deux SPIP dans la m&#234;me base, le second &#233;crase le premier. &lt;br class='autobr' /&gt; J'ai trouv&#233; quelques contributions pour pr&#233;fixer les tables dans une base, en particulier : mais elles reposent sur une installation par d&#233;compression et transfert de l'arborescence, hors j'ai un amour particulier pour (&#8230;)&lt;/p&gt;


-
&lt;a href="https://falconnet.eu/-Outils-PHP-clefs-en-main-.html" rel="directory"&gt;SPIP&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;L'installation de plusieurs spip dans la m&#234;me base est parfois n&#233;cessaire ou pratique. Malheureusement l'installation ne propose pas de modifier le pr&#233;fixe par d&#233;faut de spip qui est &#034;spip&#034;. Si on essaie d'installer deux SPIP dans la m&#234;me base, le second &#233;crase le premier.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;J'ai trouv&#233; quelques contributions pour pr&#233;fixer les tables dans une base, en particulier :&lt;a href=&#034;http://www.spip-contrib.net/Comment-avoir-plusieurs-SPIP-sur&#034; class=&#034;spip_url spip_out&#034; rel=&#034;external&#034;&gt;http://www.spip-contrib.net/Comment...&lt;/a&gt; mais elles reposent sur une installation par d&#233;compression et transfert de l'arborescence, hors j'ai un amour particulier pour le tr&#232;s efficace spip_loader.php.&lt;/p&gt;
&lt;p&gt;Aussi, en m'inspirant des m&#233;thodes ci-dessus, j'ai trouv&#233; une astuce pour installer un spip avec le spip_loader tout en pr&#233;fixant les tables comme je voulais. Je vous le livre ci-dessous :&lt;/p&gt;
&lt;p&gt;Lors de l'installation par spip_loader, on commence par l'installer dans le r&#233;pertoire du ftp o&#249; l'on souhaite installer le site. Ensuite, on y acc&#232;de par une interface web o&#249; l'on peut renseigner au fur et &#224; mesure les diff&#233;rentes informations dont il a besoin.&lt;/p&gt;
&lt;p&gt;L'astuce consiste &#224; surveiller l'&#233;tape qui affiche le texte suivant :&lt;/p&gt;
&lt;blockquote class=&#034;spip&#034;&gt;
&lt;p&gt;
Installation du syst&#232;me de publication...&lt;/p&gt;
&lt;p&gt;Troisi&#232;me &#233;tape : Choix de votre base AIDE&lt;/p&gt;
&lt;p&gt;Choisissez votre base : Le serveur MySQL contient plusieurs bases de donn&#233;es.&lt;/p&gt;
&lt;p&gt;S&#233;lectionnez ci-apr&#232;s celle qui vous a &#233;t&#233; attribu&#233;e par votre h&#233;bergeur : ...&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;C'est-&#224;-dire juste avant qu'il ne cr&#233;e les tables pour de bon.&lt;/p&gt;
&lt;p&gt;A ce moment l&#224;, on cr&#233;e un fichier mes_options.php, qui contient les lignes suivantes :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;&lt;?php $table_prefix = &#034;monprefixe&#034;; ?&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;o&#249; monprefixe est le pr&#233;fixe que vous voulez utiliser &#224; la place de &#034;spip&#034; (attention le pr&#233;fixe ne doit pas commencer par spip)&lt;/p&gt;
&lt;p&gt;Et, par ftp, vous d&#233;posez ce fichier dans le r&#233;pertoire /ecrire/ de spip.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_ps'&gt;&lt;p&gt;Je vous livre cette astuce, &#034;telle quelle&#034;, elle a fonctionn&#233; pour moi, mais elle peut peut &#234;tre poser des probl&#232;mes, notamment si les pr&#233;fixes sont bizarrement constitu&#233;s. A utiliser &#224; vos risques et p&#233;rils donc.&lt;/p&gt;&lt;/div&gt;
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Conseil en strat&#233;gie Internet</title>
		<link>https://falconnet.eu/Conseil-en-strategie-Internet.html</link>
		<guid isPermaLink="true">https://falconnet.eu/Conseil-en-strategie-Internet.html</guid>
		<dc:date>2008-02-20T18:23:53Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Julien Falconnet</dc:creator>



		<description>&lt;p&gt;Vous vous posez des questions sur l'utilisation d'Internet dans le cadre de votre activit&#233; ? &#201;tudions-les ensemble !&lt;/p&gt;

-
&lt;a href="https://falconnet.eu/-Prestations-.html" rel="directory"&gt;Prestations&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;Quels objectifs ? Quels moyens ? Internet est devenu un univers riche et complexe, o&#249; il est parfois difficile de distinguer les modes des tendances profondes. En fonction de votre situation et de votre projet, il est parfois n&#233;cessaire de prendre du recul et de faire le point pour d&#233;finir ou pr&#233;ciser votre strat&#233;gie Internet.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;Il y a dix ans, avoir un site sur l'Internet &#233;tait un avantage, on d&#233;montrait ainsi qu'on &#233;tait &#224; la pointe de la technologie. Aujourd'hui, avoir un site web est commun au point que ne pas en avoir est un handicap. Entre les deux, il reste le site approximatif qui peut &#234;tre catastrophique.&lt;/p&gt;
&lt;p&gt;Julien FALCONNET vous proposer d'auditer votre site, d'&#233;tudier avec vous votre projet, de vous aider &#224; pr&#233;ciser vos objectifs et de chercher les meilleurs moyens de les atteindre.&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>R&#233;alisation de sites Web</title>
		<link>https://falconnet.eu/Realisation-de-sites-Web.html</link>
		<guid isPermaLink="true">https://falconnet.eu/Realisation-de-sites-Web.html</guid>
		<dc:date>2008-02-20T11:00:00Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Julien Falconnet</dc:creator>



		<description>&lt;p&gt;R&#233;aliser pour vous un site efficace, moderne et facile &#224; mettre &#224; jour pour vous donner la pleine ma&#238;trise de votre communication web.&lt;/p&gt;

-
&lt;a href="https://falconnet.eu/-Prestations-.html" rel="directory"&gt;Prestations&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;La communication sur le web repose presque toujours sur un site Web. Avec la d&#233;mocratisation d'Internet, les visiteurs sont de plus en plus exigeants, les technologies &#233;voluent de plus en plus vite et les sites se doivent d'&#234;tre toujours plus r&#233;actifs.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;Julien FALCONNET vous accompagne pour r&#233;aliser le site qui vous correspond. A partir des objectifs que vous vous fixez, les meilleures solutions sont &#233;tudi&#233;es. Une expertise des tendances &#224; long terme du Web assure que les situations finalement retenues soient p&#233;rennes.&lt;/p&gt;
&lt;p&gt;La prestation de r&#233;alisation est faite avec un suivi r&#233;gulier pour que le projet reste coh&#233;rent avec l'id&#233;e que vous vous en faite, jusqu'au bout.&lt;/p&gt;
&lt;p&gt;Julien FALCONNET a propose aussi une expertise sur &lt;a href=&#034;http://www.spip.net&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;SPIP&lt;/a&gt;. Cet outil de gestion de contenu permet de faire face &#224; la plupart des besoins classiques d'un site. Fruit de plusieurs ann&#233;es d'exp&#233;rience, c'est aujourd'hui un produit efficace soutenu par une communaut&#233; active.&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>



</channel>

</rss>
