<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Sylvain Deloux</title>
	
	<link>http://www.sylvaindeloux.com</link>
	<description>web architect</description>
	<lastBuildDate>Mon, 30 Jan 2012 15:04:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/sylvaindeloux" /><feedburner:info uri="sylvaindeloux" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Un peu de doc sur Symfony2</title>
		<link>http://feedproxy.google.com/~r/sylvaindeloux/~3/w0xx0HgQaYg/un-peu-de-doc-sur-symfony2</link>
		<comments>http://www.sylvaindeloux.com/geek/un-peu-de-doc-sur-symfony2#comments</comments>
		<pubDate>Fri, 05 Aug 2011 08:04:27 +0000</pubDate>
		<dc:creator>Sylvain</dc:creator>
				<category><![CDATA[Geek]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Symfony2]]></category>

		<guid isPermaLink="false">http://www.sylvaindeloux.com/?p=1037</guid>
		<description><![CDATA[Symfony2 en pièces détachées View more presentations from Hugo Hamon. Symfony2: 30 astuces et bonnes pratiques View more presentations from Noel Guilbert.]]></description>
			<content:encoded><![CDATA[<h3><a title="Symfony2 en pièces détachées" href="http://www.slideshare.net/hhamon/symfony2-en-pices-dtaches" target="_blank">Symfony2 en pièces détachées</a></h3>
<p><iframe src="http://www.slideshare.net/slideshow/embed_code/7153587" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" width="425" height="355"></iframe><br />
View more presentations from <a href="http://www.slideshare.net/hhamon" target="_blank">Hugo Hamon</a>.</p>
<h3><a title="Symfony2: 30 astuces et bonnes pratiques" href="http://www.slideshare.net/noelguilbert/symfony2-30-astuces-et-bonnes-pratiques" target="_blank">Symfony2: 30 astuces et bonnes pratiques</a></h3>
<p><iframe src="http://www.slideshare.net/slideshow/embed_code/7165763" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" width="425" height="355"></iframe><br />
View more presentations from <a href="http://www.slideshare.net/noelguilbert" target="_blank">Noel Guilbert</a>.</p>
<img src="http://feeds.feedburner.com/~r/sylvaindeloux/~4/w0xx0HgQaYg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.sylvaindeloux.com/geek/un-peu-de-doc-sur-symfony2/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.sylvaindeloux.com/geek/un-peu-de-doc-sur-symfony2</feedburner:origLink></item>
		<item>
		<title>Les bundles en Symfony2</title>
		<link>http://feedproxy.google.com/~r/sylvaindeloux/~3/xoMGwk9XiW4/les-bundles-en-symfony2</link>
		<comments>http://www.sylvaindeloux.com/geek/les-bundles-en-symfony2#comments</comments>
		<pubDate>Thu, 04 Aug 2011 13:50:36 +0000</pubDate>
		<dc:creator>Sylvain</dc:creator>
				<category><![CDATA[Geek]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Symfony2]]></category>

		<guid isPermaLink="false">http://www.sylvaindeloux.com/?p=1017</guid>
		<description><![CDATA[Qu&#8217;est-ce qu&#8217;un bundle ? Ce n&#8217;est pas un plugin, ni un module, ni une application, mais alors, qu&#8217;est-ce que c&#8217;est ? Je terminerai ce paragraphe quand j&#8217;aurai trouvé&#8230; Création d&#8217;un bundle Le bundle se place dans le dossier /src, il faut créer un dossier reprenant le nom de la société (ou du client) et y [...]]]></description>
			<content:encoded><![CDATA[<h3>Qu&#8217;est-ce qu&#8217;un bundle ?</h3>
<p>Ce n&#8217;est pas un plugin, ni un module, ni une application, mais alors, qu&#8217;est-ce que c&#8217;est ? <em>Je terminerai ce paragraphe quand j&#8217;aurai trouvé&#8230;</em></p>
<h3>Création d&#8217;un bundle</h3>
<p>Le bundle se place dans le dossier <code>/src</code>, il faut créer un dossier reprenant le nom de la société (ou du client) et y insérer le dossier du bundle. Par exemple, si je crée le bundle <q>Test</q> pour un client <q>Sylvain</q>, il s&#8217;appellera <code>SylvainTestBundle</code> et sera placé dans le répertoire <code>/src/Sylvain/TestBundle</code>.</p>
<p>Il faut un fichier principal pour définir la classe <code>TestBundle</code> dans <code>/src/Sylvain/TestBundle/SylvainTestBundle.php</code> :</p>
<pre>&lt;?php

namespace Sylvain\TestBundle;

use Symfony\Component\HttpKernel\Bundle\Bundle;

class SylvainTestBundle extends Bundle
{
}</pre>
<p>Ensuite, on crée un controller <code>HelloController</code> dans <code>/src/Sylvain/TestBundle/Controller/HelloController.php</code> :</p>
<pre>&lt;?php

namespace Sylvain\TestBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;

class HelloController extends Controller
{
    public function indexAction()
    {
        return new Response('Hi!');
    }
}</pre>
<p>Avec le fichier pour le routing, situé dans <code>/src/Sylvain/TestBundle/Resources/config/routing.yml</code> :</p>
<pre>index:
    pattern:    /
    defaults: { _controller: SylvainTestBundle:Hello:index }</pre>
<h3>Activation d&#8217;un bundle</h3>
<p>Maintenant, il faut dire à Symfony d&#8217;utiliser ce bundle, donc on édite le fichier <code>/app/AppKernel.php</code> et on ajoute une instance du bundle dans le tableau $bundles (méthode <code>registerBundles()</code>) :</p>
<pre>&lt;?php

use Symfony\Component\HttpKernel\Kernel;
use Symfony\Component\Config\Loader\LoaderInterface;

class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = array(
            /* ... */
            new Sylvain\TestBundle\SylvainTestBundle(),
        );

        /* ... */
    }
}</pre>
<p>Ne pas oublier d&#8217;inclure le routing du bundle dans le routing global du projet, dans le fichier <code>/app/config/routing.yml</code> :</p>
<pre>SylvainTestBundle:
    resource: "@SylvainTestBundle/Resources/config/routing.yml"</pre>
<p>Attention, dans cet exemple, je n&#8217;ai pas crée de route particulière, il faut donc désactiver la route <code>_welcome</code> (activée en environnement de développement, dans le fichier <code>/app/config/routing_dev.yml</code>).</p>
<img src="http://feeds.feedburner.com/~r/sylvaindeloux/~4/xoMGwk9XiW4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.sylvaindeloux.com/geek/les-bundles-en-symfony2/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://www.sylvaindeloux.com/geek/les-bundles-en-symfony2</feedburner:origLink></item>
		<item>
		<title>Création d’un projet Symfony2</title>
		<link>http://feedproxy.google.com/~r/sylvaindeloux/~3/O5FJ_0AVX1o/creation-projet-symfony2</link>
		<comments>http://www.sylvaindeloux.com/geek/creation-projet-symfony2#comments</comments>
		<pubDate>Thu, 04 Aug 2011 09:21:20 +0000</pubDate>
		<dc:creator>Sylvain</dc:creator>
				<category><![CDATA[Geek]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Symfony2]]></category>

		<guid isPermaLink="false">http://www.sylvaindeloux.com/?p=1013</guid>
		<description><![CDATA[Je découvre petit à petit Symfony2, donc j&#8217;en profite pour noter quelque part mes différentes découvertes. Installation simple Il faut télécharger l&#8217;édition standard de Symfony2 à l&#8217;adresse suivante : http://symfony.com/download. Comme c&#8217;est une première découverte du framework, je ne vais pas aborder le versionning pour l&#8217;instant. L&#8217;archive contient un dossier Symfony, il faut extraire le contenu [...]]]></description>
			<content:encoded><![CDATA[<p>Je découvre petit à petit <a href="http://www.symfony.com/">Symfony2</a>, donc j&#8217;en profite pour noter quelque part mes différentes découvertes.</p>
<h3>Installation simple</h3>
<p>Il faut télécharger l&#8217;édition standard de Symfony2 à l&#8217;adresse suivante : <a href="http://www.symfony.com/download">http://symfony.com/download</a>. Comme c&#8217;est une première découverte du framework, je ne vais pas aborder le versionning pour l&#8217;instant.</p>
<p>L&#8217;archive contient un dossier <code>Symfony</code>, il faut extraire le contenu de ce dossier à la racine du serveur Web (ou utiliser un virtualhost en le faisant pointer sur <code>/web</code>, comme en symfony 1).</p>
<p>On se retrouve donc dans un dossier de travail contenant ceci :</p>
<pre>/app
/bin
/src
/vendor
/web
deps
deps.lock
LICENSE
README.md</pre>
<p>Il suffit d&#8217;aller sur <code>http://xxxx/config.php</code> pour avoir un rapide test de la compatibilité du système pour exécuter Symfony2.</p>
<p>Ne pas oublier de donner les droits d&#8217;écriture à l&#8217;utilisateur Apache aux dossiers <code>/app/cache</code> et <code>/app/logs</code></p>
<h3>Configuration</h3>
<p>Il y a un assistant qui facilite la création du fichier <code>app/config/parameters.ini</code>, il faut se rendre à l&#8217;adresse <code>http://xxxx/app_dev.php/_configurator/step/0</code></p>
<p>Ce fichier contient, entre autres, la config BDD et SMTP :</p>
<pre>; These parameters can be imported into other config files
; by enclosing the key with % (like %database_user%)
; Comments start with ';', as in php.ini
[parameters]
    database_driver   = pdo_mysql
    database_host     =
    database_name     =
    database_user     =
    database_password =

    mailer_transport  = smtp
    mailer_host       = localhost
    mailer_user       =
    mailer_password   =

    locale            = en

    secret            = ThisTokenIsNotSoSecretChangeIt</pre>
<h3>Ayé!</h3>
<p>Symfony2 est fonctionnel! Et une jolie page d&#8217;accueil permet de jouer avec la barre de débug (profiler) et même de découvrir une mini démo de ses fonctionnalités (hello world, sécurité utilisateur) : http://xxxx/app_dev.php</p>
<p>Pour en savoir un peu plus au sujet de la mise en place du versionning d&#8217;un projet Symfony2 avec git : <a href="http://symfony.com/doc/current/cookbook/workflow/new_project_git.html">How to Create and store a Symfony2 Project in git</a>.</p>
<p>Prochaine étape, <a title="Les bundles en Symfony2" href="http://www.sylvaindeloux.com/geek/les-bundles-en-symfony2">découverte des bundles</a>&#8230;</p>
<img src="http://feeds.feedburner.com/~r/sylvaindeloux/~4/O5FJ_0AVX1o" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.sylvaindeloux.com/geek/creation-projet-symfony2/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.sylvaindeloux.com/geek/creation-projet-symfony2</feedburner:origLink></item>
		<item>
		<title>Sélection de liens HTML, CSS &amp; jQuery</title>
		<link>http://feedproxy.google.com/~r/sylvaindeloux/~3/syttCzdUed8/selection-de-liens-html-css-javascript-jquery</link>
		<comments>http://www.sylvaindeloux.com/geek/selection-de-liens-html-css-javascript-jquery#comments</comments>
		<pubDate>Tue, 10 May 2011 12:01:07 +0000</pubDate>
		<dc:creator>Sylvain</dc:creator>
				<category><![CDATA[Geek]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.sylvaindeloux.com/?p=995</guid>
		<description><![CDATA[jQuery jStat : a Javascript statistical library jFormer : form framework to quickly generate beautiful, standards compliant forms CamanJS : pure Javascript canvas manipulation jQuery Fundamentals Top 13 Javascript mistakes 15 Powerful jQuery Tips and Tricks for Developers CSS Top 10 CSS 3 forms tutorials 10 techniques avancées et secrets de CSS2 20 useful collections [...]]]></description>
			<content:encoded><![CDATA[<h3>jQuery</h3>
<ul>
<li><a href="http://www.jstat.org/">jStat : a Javascript statistical library</a></li>
<li><a href="http://www.jformer.com/">jFormer : form framework to quickly generate beautiful, standards compliant forms</a></li>
<li><a href="http://camanjs.com/">CamanJS : pure Javascript canvas manipulation</a></li>
<li><a href="http://jqfundamentals.com/book/index.html">jQuery Fundamentals</a></li>
<li><a href="http://blog.tuenti.com/dev/top-13-javascript-mistakes/">Top 13 Javascript mistakes</a></li>
<li><a href="http://tutorialzine.com/2011/06/15-powerful-jquery-tips-and-tricks-for-developers/">15 Powerful jQuery Tips and Tricks for Developers</a></li>
</ul>
<h3>CSS</h3>
<ul>
<li><a href="http://www.catswhocode.com/blog/top-10-css-3-forms-tutorials">Top 10 CSS 3 forms tutorials</a></li>
<li><a href="http://www.alsacreations.com/article/lire/1200-10-techniques-avancees-et-secrets-de-css2.html">10 techniques avancées et secrets de CSS2</a></li>
<li><a href="http://www.honeytechblog.com/20-css3-cheat-sheet-tips/">20 useful collections of CSS3 cheat sheet, tips and resources</a></li>
<li><a href="http://net.tutsplus.com/tutorials/html-css-techniques/the-30-css-selectors-you-must-memorize/">The 30 CSS Selectors you Must Memorize</a></li>
<li><a href="http://www.catswhocode.com/blog/10-useful-tools-to-simplify-css3-development">10+ useful tools to simplify CSS3 development</a></li>
<li><a href="http://coding.smashingmagazine.com/2009/07/13/css-3-cheat-sheet-pdf/">CSS 3 Cheat Sheet (PDF)</a></li>
<li><a href="http://www.ie7nomore.com/fun/vignetting/">Vignetting effect with CSS3 radial gradient</a></li>
</ul>
<h3>HTML 5</h3>
<ul>
<li><a href="http://www.marcofolio.net/webdesign/html5_microdata_what_is_it_and_why_should_you_care_.html">HTML5 Microdata: What is it, and why should you care?</a></li>
<li><a href="http://developers.whatwg.org/">HTML5 : A technical specification for Web developers</a></li>
<li><a href="http://designmodo.com/50-useful-html5-tutorials-techniques-and-examples-for-web-developers/">50 useful HTML5 tutorials, techniques and examples for Web developers</a></li>
<li><a href="http://www.impressivewebs.com/html5-section/">When to use the HTML5 “section” element?</a></li>
<li><a href="http://wufoo.com/html5/">The current state of HTML5 forms</a></li>
</ul>
<p>Et un petit dernier pour la route : <a href="http://www.storiesinflight.com/html5/">HTML5/CSS3 cheatsheet</a>.</p>
<img src="http://feeds.feedburner.com/~r/sylvaindeloux/~4/syttCzdUed8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.sylvaindeloux.com/geek/selection-de-liens-html-css-javascript-jquery/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.sylvaindeloux.com/geek/selection-de-liens-html-css-javascript-jquery</feedburner:origLink></item>
		<item>
		<title>Créer un serveur SFTP sans accès shell</title>
		<link>http://feedproxy.google.com/~r/sylvaindeloux/~3/KjKFuuK4RsA/creer-un-serveur-sftp-sans-acces-shell</link>
		<comments>http://www.sylvaindeloux.com/geek/creer-un-serveur-sftp-sans-acces-shell#comments</comments>
		<pubDate>Fri, 15 Apr 2011 09:06:14 +0000</pubDate>
		<dc:creator>Sylvain</dc:creator>
				<category><![CDATA[Geek]]></category>
		<category><![CDATA[FTP]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[SFTP]]></category>
		<category><![CDATA[SSH]]></category>

		<guid isPermaLink="false">http://www.sylvaindeloux.com/?p=989</guid>
		<description><![CDATA[Un serveur FTP, c&#8217;est bien, mais un serveur SFTP c&#8217;est bien mieux car tout passe par une liaison SSH, donc cryptée. L&#8217;inconvénient, c&#8217;est que le serveur openssh-server utilise les comptes utilisateurs Unix, donc les utilisateurs peuvent avoir accès à l&#8217;ensemble du disque dur (suivant leurs droits), et même se connecter à un shell. Installation de MySecureShell [...]]]></description>
			<content:encoded><![CDATA[<p>Un serveur FTP, c&#8217;est bien, mais un serveur SFTP c&#8217;est bien mieux car tout passe par une liaison SSH, donc cryptée. L&#8217;inconvénient, c&#8217;est que le serveur <code>openssh-server</code> utilise les comptes utilisateurs Unix, donc les utilisateurs peuvent avoir accès à l&#8217;ensemble du disque dur (suivant leurs droits), et même se connecter à un shell.</p>
<h3>Installation de MySecureShell</h3>
<p>Il faut ajouter une source APT au fichier <code>/etc/apt/sources.list</code> :</p>
<pre>deb http://mysecureshell.free.fr/repository/index.php/debian testing main</pre>
<p>Et ajouter la clé du dépot :</p>
<pre>gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys E328F22B; gpg --export E328F22B | sudo apt-key add -
sudo apt-get update
sudo apt-get install mysecureshell</pre>
<h3>Ajout d&#8217;un utilisateur</h3>
<pre>sudo adduser --home /home/toto --shell /bin/MySecureShell toto</pre>
<h3>Impossible de transférer des fichiers, erreur exitcode 10</h3>
<p>En cas de message d&#8217;erreur <code>exitcode 10</code> lors de la copie de fichiers, il faut augmenter le nombre de connexions autorisées en éditant le fichier <code>/etc/ssh/sftp_config</code> :</p>
<pre>LimitConnectionByUser 3
</pre>
<h4>Sources</h4>
<ul>
<li>﻿<a href="http://forum.ubuntu-fr.org/viewtopic.php?id=441546">http://forum.ubuntu-fr.org/viewtopic.php?id=441546</a></li>
<li>﻿﻿<a href="http://doc.ubuntu-fr.org/mysecureshell_sftp-server">http://doc.ubuntu-fr.org/mysecureshell_sftp-server</a></li>
</ul>
<img src="http://feeds.feedburner.com/~r/sylvaindeloux/~4/KjKFuuK4RsA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.sylvaindeloux.com/geek/creer-un-serveur-sftp-sans-acces-shell/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.sylvaindeloux.com/geek/creer-un-serveur-sftp-sans-acces-shell</feedburner:origLink></item>
		<item>
		<title>Qu’est-ce que la CFP ?</title>
		<link>http://feedproxy.google.com/~r/sylvaindeloux/~3/J1Io-_AWNn0/la-cfp-contribution-formation-professionnelle</link>
		<comments>http://www.sylvaindeloux.com/auto-entrepreneur/la-cfp-contribution-formation-professionnelle#comments</comments>
		<pubDate>Thu, 14 Apr 2011 06:44:43 +0000</pubDate>
		<dc:creator>Sylvain</dc:creator>
				<category><![CDATA[Auto-entrepreneur]]></category>

		<guid isPermaLink="false">http://www.sylvaindeloux.com/?p=985</guid>
		<description><![CDATA[Depuis le 1er janvier 2011 (art. 137 de la loi de finances pour 2011), les auto-entrepreneurs sont redevables de la Contribution à la Formation Professionnelle (CFP) dont le taux est variable suivant la catégorie professionnelle : 0,10% pour les commerçants ; 0,30% pour les artisans (hors Alsace) ; 0,17% pour les artisans (en Alsace) ; [...]]]></description>
			<content:encoded><![CDATA[<p>Depuis le 1er janvier 2011 (<a href="http://www.legifrance.gouv.fr/affichTexte.do?cidTexte=JORFTEXT000023314376&amp;dateTexte=&amp;categorieLien=id">art. 137 de la loi de finances pour 2011</a>), les auto-entrepreneurs sont redevables de la <strong>Contribution à la Formation Professionnelle</strong> (CFP) dont le taux est variable suivant la catégorie professionnelle :</p>
<ul>
<li>0,10% pour les <strong>commerçants</strong> ;</li>
<li>0,30% pour les <strong>artisans</strong> (hors Alsace) ;</li>
<li>0,17% pour les <strong>artisans</strong> (en Alsace) ;</li>
<li>0,20% pour les <strong>profession libérales</strong>.</li>
</ul>
<p>Ce taux s&#8217;applique au CA. La contribution est due quel que soit le montant de chiffre d’affaires déclaré. Le paiement de cette contribution est effectué suivant la  périodicité, selon les règles et sous les garanties et sanctions  applicables au recouvrement des cotisations et contributions de Sécurité  sociale du régime micro social simplifié. Cette contribution s’ajoute  aux cotisations et contributions acquittées au titre de ce régime. (source : <a href="http://www.urssaf.fr/general/actualites/actualites_generales/contribution_a_la_formation_professionnelle_01.html">URSSAF</a>).</p>
<img src="http://feeds.feedburner.com/~r/sylvaindeloux/~4/J1Io-_AWNn0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.sylvaindeloux.com/auto-entrepreneur/la-cfp-contribution-formation-professionnelle/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.sylvaindeloux.com/auto-entrepreneur/la-cfp-contribution-formation-professionnelle</feedburner:origLink></item>
		<item>
		<title>Les étapes de la post-production</title>
		<link>http://feedproxy.google.com/~r/sylvaindeloux/~3/cQdAb5TkL9I/les-etapes-de-la-post-production</link>
		<comments>http://www.sylvaindeloux.com/photographie/les-etapes-de-la-post-production#comments</comments>
		<pubDate>Mon, 28 Mar 2011 20:26:28 +0000</pubDate>
		<dc:creator>Sylvain</dc:creator>
				<category><![CDATA[Photographie]]></category>
		<category><![CDATA[lightroom]]></category>
		<category><![CDATA[photo]]></category>
		<category><![CDATA[post-production]]></category>

		<guid isPermaLink="false">http://www.sylvaindeloux.com/?p=920</guid>
		<description><![CDATA[Je viens de rentrer d&#8217;une séance photo avec une modèle et j&#8217;ai pris environ 150 photos. L&#8217;étape suivante est le tri et le traitement des photos. J&#8217;en profite pour rédiger cet article afin de lister les différentes étapes à ne pas oublier lors de la post-production, qui est souvent appelée &#171;&#160;dérawtisage&#160;&#187; (de photos au format [...]]]></description>
			<content:encoded><![CDATA[<p>Je viens de rentrer d&#8217;une <a title="Diana" href="http://www.sylvaindeloux.com/photo/diana">séance photo avec une modèle</a> et j&#8217;ai pris environ 150 photos. L&#8217;étape suivante est le tri et le traitement des photos. J&#8217;en profite pour rédiger cet article afin de lister les différentes étapes à ne pas oublier lors de la post-production, qui est souvent appelée &laquo;&nbsp;dérawtisage&nbsp;&raquo; (de photos au format RAW, ou .nef dans mon cas).</p>
<p>J&#8217;utilise pour cela le logiciel Adobe Lightroom 3 qui gère assez bien les fichiers RAW de différents constructeurs. Un point qui me manque pour les fichiers .nef de Nikon, c&#8217;est que Lightroom n&#8217;arrive pas à indiquer la zone de mise au point, mais ce n&#8217;est pas très bloquant.</p>
<p>Tout d&#8217;abord, je m&#8217;occupe de l&#8217;<strong>importation des fichiers</strong> car sans cette étape, on ne pourra pas aller bien loin. Lightroom gère la connexion USB de mon Nikon D3000 et l&#8217;affiche dans la liste des sources de données (alors que mon appareil n&#8217;est pas reconnu en tant que mass-storage par le finder). Je stocke ensuite toutes les photos de la journée dans un dossier précis (dans ce cas : date + nom du modèle). Sur l&#8217;impression d&#8217;écran ci-dessous, les vignettes sont en noir et blanc, cela est du au fait que mon appareil photo était paramétré pour appliquer un filtre monochrome sur les photos (mais comme c&#8217;est du RAW, les informations de couleurs sont quand même enregistrées).</p>
<p><a href="http://www.sylvaindeloux.com/wp-content/uploads/2011/03/Capture-d’écran-2011-03-27-à-20.19.02.png"><img class="aligncenter size-large wp-image-927" title="Import de photos dans Lightroom" src="http://www.sylvaindeloux.com/wp-content/uploads/2011/03/Capture-d’écran-2011-03-27-à-20.19.02-1024x587.png" alt="" width="750" height="429" /></a></p>
<p>Ensuite, je m&#8217;occupe des <strong>mots-clés</strong> que j&#8217;associe aux différentes photos, sans aucun filtre, car j&#8217;ai pour habitude de ne rien supprimer, donc il faut que toutes les photos soient tagguées afin de facilement les repérer à l&#8217;avenir (dans ce cas, j&#8217;utilise les mots-clés suivants : paris, bastille, modèle, nom du modèle).</p>
<p><img class="aligncenter size-full wp-image-930" title="Ajout d'un mot clé dans Lightroom" src="http://www.sylvaindeloux.com/wp-content/uploads/2011/03/Capture-d’écran-2011-03-27-à-20.57.13.png" alt="" width="586" height="453" /></p>
<p>Si vous voulez intégrer ces mots-clés aux fichiers RAW (pour les utiliser avec un autre programme par exemple), clic-droit sur les photos concernées, puis &laquo;&nbsp;Métadonnées&nbsp;&raquo; et ensuite &laquo;&nbsp;Enregistrer les métadonnées dans les fichiers&nbsp;&raquo;.</p>
<p>Je sélectionne mes photos par source de lumière et j&#8217;applique un paramètre de <strong>balance des blancs</strong> prédéfini (auto, lumière naturelle, temps nuageux, etc&#8230;). En général, cela est suffisant, mais dans certains cas, il faut ouvrir la photo et le faire manuellement (sur la page de développement, appuyez sur la touche W et cliquez sur une zone blanche de la photo).</p>
<p><img class="aligncenter size-full wp-image-929" title="Réglage rapide de la balance des blancs sous Lightroom" src="http://www.sylvaindeloux.com/wp-content/uploads/2011/03/Capture-d’écran-2011-03-27-à-20.50.39.png" alt="" width="359" height="227" /></p>
<p>Maintenant, je peux <strong>parcourir les photos et leur assigner un libellé</strong> (rouge pour celles qui ne m&#8217;intéressent pas, vert pour celles qui m&#8217;intéressent) et éventuellement supprimer celles qui sont vraiment ratées ou hors-sujet.</p>
<p><img class="aligncenter size-full wp-image-924" title="Définition d'un libellé dans Lightroom" src="http://www.sylvaindeloux.com/wp-content/uploads/2011/03/Capture-d’écran-2011-03-27-à-20.07.23.png" alt="" width="180" height="49" /></p>
<p>Cette étape peut prendre du temps, et il faut parfois prendre du recul pour éviter d&#8217;exclure de bonnes images. Quand je suis en mode &laquo;&nbsp;grille&nbsp;&raquo;, j&#8217;utilise un filtre d&#8217;attribut pour n&#8217;afficher que les photos &laquo;&nbsp;sans libellé&nbsp;&raquo; et voir la liste diminuer au fur-et-à-mesure de mes sélections :</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-923" title="Filtre par libellé dans Lightroom" src="http://www.sylvaindeloux.com/wp-content/uploads/2011/03/Capture-d’écran-2011-03-27-à-20.02.52.png" alt="" width="723" height="82" /></p>
<p>Pour être sûr, il est préférable de faire plusieurs passes, même sur les photos libellées &laquo;&nbsp;rouge&nbsp;&raquo;.</p>
<p>Ensuite, je ne m&#8217;occupe que des photos libellées &laquo;&nbsp;vertes&nbsp;&raquo; et je commence le <strong>recadrage des photos qui en ont besoin</strong> (touche R). Sur l&#8217;exemple ci-dessous, j&#8217;en ai profité pour redresser légèrement la photo et placer correctement le sujet en respectant la <a href="http://fr.wikipedia.org/wiki/Composition_photographique#R.C3.A8gle_des_tiers">règle des tiers</a>.</p>
<p><a href="http://www.sylvaindeloux.com/wp-content/uploads/2011/03/Capture-d’écran-2011-03-27-à-21.55.28.png"><img class="aligncenter size-large wp-image-936" title="Redimensionnement d'image sous Lightroom" src="http://www.sylvaindeloux.com/wp-content/uploads/2011/03/Capture-d’écran-2011-03-27-à-21.55.28-750x613.png" alt="" width="750" height="613" /></a>Après, je peux passer à la <strong>phase de développement</strong> (touche D). Cette phase n&#8217;est pas toujours nécessaire et peut prendre beaucoup de temps si on commence à jouer avec la multitude d&#8217;outils proposées par Lightroom (ce qui peut devenir dangereux, il ne faut pas en abuser).</p>
<p>Sur cette image, j&#8217;ai augmenté la vibrance (+50) pour la rendre très colorée, et j&#8217;ai saturé le rouge (+50) pour faire ressortir le sac à main (seul élément rouge de l&#8217;image). Je rajoute également un <a href="http://fr.wikipedia.org/wiki/Vignettage">vignettage</a>, ce qui attire encore plus le regard sur le sujet de l&#8217;image. Une fois que la photo est à votre goût, appuyez sur la touche P pour la marquer comme retenue (drapeau blanc en bas de la fenêtre de développement et de la grille).</p>
<p><a href="http://www.sylvaindeloux.com/wp-content/uploads/2011/03/developpement-image-lightroom.png"><img class="aligncenter size-large wp-image-947" title="Mode développement d'une image sous Lightroom" src="http://www.sylvaindeloux.com/wp-content/uploads/2011/03/developpement-image-lightroom-750x575.png" alt="" width="750" height="575" /></a>Si les paramètres affectés à une image vous conviennent et que vous ne voulez pas perdre de temps à les réappliquer sur chaque différente image de la série (même lieu, même lumière&#8230;), vous pouvez les synchroniser. Il suffit pour cela, de cliquer l&#8217;image servant de référence, puis, en maintenant la touche ⌘ enfoncée, sélectionner les images qui recevront les paramètres. Sur cet exemple, on reconnait l&#8217;image de référence (l&#8217;image n°1) car elle apparaît avec un fond gris plus clair.</p>
<p><a href="http://www.sylvaindeloux.com/wp-content/uploads/2011/03/selection-images-lightroom.png"><img class="aligncenter size-large wp-image-952" title="Sélection d'images dans Lightroom" src="http://www.sylvaindeloux.com/wp-content/uploads/2011/03/selection-images-lightroom-750x575.png" alt="" width="750" height="575" /></a>Ensuite, cliquez sur le bouton &laquo;&nbsp;Synch. param.&nbsp;&raquo; situé en bas à droite de l&#8217;écran et sélectionnez les paramètres. Ils seront copiés de la première image sélectionnée vers les autres images faisant partie de la sélection.</p>
<p><a href="http://www.sylvaindeloux.com/wp-content/uploads/2011/03/synchronisation-parametres-lightroom.png"><img class="aligncenter size-large wp-image-948" title="Synchronisation des paramètres de développement sous Lightroom" src="http://www.sylvaindeloux.com/wp-content/uploads/2011/03/synchronisation-parametres-lightroom-750x310.png" alt="" width="750" height="310" /></a>Cependant, dans certains cas, il peut ne pas être conseillé de synchroniser tous les paramètres aveuglément, car l&#8217;exposition peut varier d&#8217;une image à l&#8217;autre et donner un résultat différent.</p>
<p>Au fur et à mesure de mes différents essais, je continue à <strong>filtrer les photos</strong> en les acceptant (touche P) ou en les rejetant (touche X). Ce qui est intéressant, quand on travaille avec un logiciel comme Lightroom (ainsi que des fichiers aux format RAW), c&#8217;est que rien n&#8217;est supprimé (les photos rejetées, les paramètres de base, les métadonnées, etc&#8230;), donc il est toujours possible de revenir en arrière.</p>
<p>Et voilà, au bout d&#8217;un moment, je me retrouve avec une vingtaine de photos, alors qu&#8217;à l&#8217;origine, j&#8217;en avais 150, et ce sont celles que j&#8217;ai estimées les plus réussies. Je peux maintenant les exporter, les utiliser, etc&#8230;</p>
<img src="http://feeds.feedburner.com/~r/sylvaindeloux/~4/cQdAb5TkL9I" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.sylvaindeloux.com/photographie/les-etapes-de-la-post-production/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.sylvaindeloux.com/photographie/les-etapes-de-la-post-production</feedburner:origLink></item>
		<item>
		<title>Utiliser Pure-FTP avec MySQL</title>
		<link>http://feedproxy.google.com/~r/sylvaindeloux/~3/QSbuNALsBy8/utiliser-pure-ftp-avec-mysql</link>
		<comments>http://www.sylvaindeloux.com/geek/utiliser-pure-ftp-avec-mysql#comments</comments>
		<pubDate>Sun, 27 Feb 2011 10:30:01 +0000</pubDate>
		<dc:creator>Sylvain</dc:creator>
				<category><![CDATA[Geek]]></category>
		<category><![CDATA[FTP]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://www.sylvaindeloux.com/?p=887</guid>
		<description><![CDATA[Installez pure-ftp : sudo apt-get install pure-ftpd-mysql Connectez-vous au serveur MySQL : mysql -u root -p Créez l&#8217;utilisateur MySQL ftp (en changeant le mot de passe) : CREATE USER 'ftp'@'localhost' IDENTIFIED BY 'mot_de_passe'; GRANT USAGE ON *.* TO 'ftp'@'localhost' IDENTIFIED BY 'mot_de_passe'; CREATE DATABASE IF NOT EXISTS `ftp` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; GRANT [...]]]></description>
			<content:encoded><![CDATA[<p>Installez pure-ftp :</p>
<pre>sudo apt-get install pure-ftpd-mysql</pre>
<p>Connectez-vous au serveur MySQL :</p>
<pre>mysql -u root -p</pre>
<p>Créez l&#8217;utilisateur MySQL <code>ftp</code> (en changeant le mot de passe) :</p>
<pre>CREATE USER 'ftp'@'localhost' IDENTIFIED BY 'mot_de_passe';
GRANT USAGE ON *.* TO 'ftp'@'localhost' IDENTIFIED BY 'mot_de_passe';
CREATE DATABASE IF NOT EXISTS `ftp` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
GRANT ALL PRIVILEGES ON `ftp`.* TO 'ftp'@'localhost';</pre>
<p>Ensuite, créez la table qui contiendra les utilisateurs :</p>
<pre>USE `ftp`;
CREATE TABLE `users` (
`login` varchar(16) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
`is_active` enum('0','1') COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
`password` varchar(64) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
`uid` varchar(11) COLLATE utf8_unicode_ci NOT NULL DEFAULT '-1',
`gid` varchar(11) COLLATE utf8_unicode_ci NOT NULL DEFAULT '-1',
`home` varchar(128) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
`up_bandwidth_kbps` smallint(5) NOT NULL DEFAULT '0',
`down_bandwidth_kbps` smallint(5) NOT NULL DEFAULT '0',
`comment` tinytext COLLATE utf8_unicode_ci NOT NULL,
`quota_megabytes` smallint(5) NOT NULL DEFAULT '0',
PRIMARY KEY (`login`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
exit;</pre>
<p>Pour créer un utilisateur FTP, il faut exécuter la requête suivante :</p>
<pre>INSERT INTO `users` (`login`, `is_active`, `password`, `uid`, `gid`, `home`, `up_bandwidth_kbps`, `down_bandwidth_kbps`, `comment`, `quota_megabytes`) VALUES('login', '1', md5('password'), '1000', '1000', '/home/login', 0, 0, '', 0);</pre>
<p>Maintenant que MySQL est prêt, il faut configurer pure-ftp en éditant le fichier /etc/pure-ftpd/db/mysql.conf avec les paramètres MySQL crées précédement :</p>
<pre># Optional : MySQL server name or IP. Don't define this for unix sockets.
# MYSQLServer     127.0.0.1

# Optional : MySQL port. Don't define this if a local unix socket is used.
# MYSQLPort       3306

# Optional : define the location of mysql.sock if the server runs on this host.
MYSQLSocket      /var/run/mysqld/mysqld.sock

# Mandatory : user to bind the server as.
MYSQLUser       ftp

# Mandatory : user password. You must have a password.
MYSQLPassword   mot_de_passe

# Mandatory : database to open.
MYSQLDatabase   ftp

# Mandatory : how passwords are stored
# Valid values are : "cleartext", "crypt", "md5" and "password"
# ("password" = MySQL password() function)
# You can also use "any" to try "crypt", "md5" *and* "password"
MYSQLCrypt      md5

# In the following directives, parts of the strings are replaced at
# run-time before performing queries :
#
# \L is replaced by the login of the user trying to authenticate.
# \I is replaced by the IP address the user connected to.
# \P is replaced by the port number the user connected to.
# \R is replaced by the IP address the user connected from.
# \D is replaced by the remote IP address, as a long decimal number.
#
# Very complex queries can be performed using these substitution strings,
# especially for virtual hosting.

# Query to execute in order to fetch the password
MYSQLGetPW      SELECT password FROM users WHERE login="\L" AND is_active="1"

# Query to execute in order to fetch the system user name or uid
MYSQLGetUID     SELECT uid FROM users WHERE login="\L" AND is_active="1"

# Optional : default UID - if set this overrides MYSQLGetUID
#MYSQLDefaultUID 1000

# Query to execute in order to fetch the system user group or gid
MYSQLGetGID     SELECT gid FROM users WHERE login="\L" AND is_active="1"

# Optional : default GID - if set this overrides MYSQLGetGID
#MYSQLDefaultGID 1000

# Query to execute in order to fetch the home directory
MYSQLGetDir     SELECT home FROM users WHERE login="\L" AND is_active="1"

# Optional : query to get the maximal number of files
# Pure-FTPd must have been compiled with virtual quotas support.
# MySQLGetQTAFS  SELECT QuotaFiles FROM users WHERE login="\L" AND is_active="1"

# Optional : query to get the maximal disk usage (virtual quotas)
# The number should be in Megabytes.
# Pure-FTPd must have been compiled with virtual quotas support.
MySQLGetQTASZ  SELECT quota_megabytes FROM users WHERE login="\L" AND is_active="1"

# Optional : ratios. The server has to be compiled with ratio support.
# MySQLGetRatioUL SELECT ULRatio FROM users WHERE login="\L" AND is_active="1"
# MySQLGetRatioDL SELECT DLRatio FROM users WHERE login="\L" AND is_active="1"

# Optional : bandwidth throttling.
# The server has to be compiled with throttling support.
# Values are in KB/s .
MySQLGetBandwidthUL SELECT up_bandwidth_kbps FROM users WHERE login="\L" AND is_active="1"
MySQLGetBandwidthDL SELECT down_bandwidth_kbps FROM users WHERE login="\L" AND is_active="1"

# Enable ~ expansion. NEVER ENABLE THIS BLINDLY UNLESS :
# 1) You know what you are doing.
# 2) Real and virtual users match.
# MySQLForceTildeExpansion 1

# If you upgraded your tables to transactionnal tables (Gemini,
# BerkeleyDB, Innobase...), you can enable SQL transactions to
# avoid races. Leave this commented if you are using the
# traditionnal MyIsam databases or old (&lt; 3.23.x) MySQL versions.
# MySQLTransactions On</pre>
<p>Il reste à configurer certaines options de pure-ftp en créant un fichier par paramètre avec sa valeur. Les noms sont assez explicites :</p>
<pre>cd /etc/pure-ftpd-conf
sudo echo ,21 &gt; Bind
sudo echo 4500 4600 &gt; PassivePortRange
sudo echo yes &gt; ChrootEveryone
sudo echo yes &gt; ProhibitDotFilesRead
sudo echo yes &gt; ProhibitDotFilesWrite
sudo echo yes &gt; NoChmod
sudo echo yes &gt; BrokenClientsCompatibility
sudo echo 4 &gt; MaxClientsPerIP
sudo echo 20 &gt; MaxClientsNumber
sudo echo no &gt; PAMAuthentication
sudo echo no &gt; UnixAuthentication
sudo /etc/init.d/pure-ftpd restart</pre>
<p>Et c&#8217;est tout. Source : <a href="http://www.ubuntu-howto.info/howto/how-to-install-and-configure-pure-ftpd">How to install and configure pure-ftpd</a></p>
<img src="http://feeds.feedburner.com/~r/sylvaindeloux/~4/QSbuNALsBy8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.sylvaindeloux.com/geek/utiliser-pure-ftp-avec-mysql/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.sylvaindeloux.com/geek/utiliser-pure-ftp-avec-mysql</feedburner:origLink></item>
		<item>
		<title>Installer un tunnel SSH</title>
		<link>http://feedproxy.google.com/~r/sylvaindeloux/~3/lX1Jjf4XZKw/installer-un-tunnel-ssh</link>
		<comments>http://www.sylvaindeloux.com/geek/installer-un-tunnel-ssh#comments</comments>
		<pubDate>Thu, 10 Feb 2011 13:20:51 +0000</pubDate>
		<dc:creator>Sylvain</dc:creator>
				<category><![CDATA[Geek]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[SSH]]></category>

		<guid isPermaLink="false">http://www.sylvaindeloux.com/?p=853</guid>
		<description><![CDATA[Si vous êtes sur un réseau qui est surveillé ou limité, il peut être utile d&#8217;avoir accès à un serveur situé &#171;&#160;à l&#8217;extérieur&#160;&#187; et de créer un tunnel SSH afin de s&#8217;en servir comme d&#8217;un serveur proxy. L&#8217;avantage est que tout le trafic réseau est crypté jusqu&#8217;au serveur proxy et que personne ne peut voir, [...]]]></description>
			<content:encoded><![CDATA[<p>Si vous êtes sur un réseau qui est surveillé ou limité, il peut être utile d&#8217;avoir accès à un serveur situé &laquo;&nbsp;à l&#8217;extérieur&nbsp;&raquo; et de créer un <strong>tunnel SSH</strong> afin de s&#8217;en servir comme d&#8217;un <strong>serveur proxy</strong>. L&#8217;avantage est que tout <strong>le trafic réseau est crypté</strong> jusqu&#8217;au serveur proxy et que personne ne peut voir, ni filtrer ce qui y passe. Ceci va être très utile en France car, grâce à la loi LOPPSI, <a href="http://www.laquadrature.net/fr/loppsi-adoptee-internet-sous-controle">l&#8217;Internet Français va prochainement ressembler à celui de la Chine</a>.</p>
<h3>Côté serveur</h3>
<p>Il faut tout simplement installer OpenSSH (qui a de fortes chances d&#8217;être déjà installé) :</p>
<pre>sudo apt-get install ssh</pre>
<p>Si le réseau de votre boulot bloque le port SSH (ce qui est fort possible), il faudra changer le port utilisé par le serveur en éditant le fichier <code>/etc/ssh/sshd_config</code> (en utilisant le port 443 par exemple, ou tout autre port non utilisé) :</p>
<pre># What ports, IPs and protocols we listen for
Port 443</pre>
<p>Et c&#8217;est tout, le serveur est maintenant prêt à faire suivre les requêtes TCP d&#8217;un client SSH.</p>
<h3>Côté client</h3>
<h4>Client MacOS</h4>
<p>Le petit utilitaire <a href="http://code.google.com/p/cocoa-sshtunnel/">SSHTunnel</a> est parfait pour cela et assez simple à configurer.</p>
<h4>Client Linux</h4>
<p>Il existe un outil Gnome pour configurer graphiquement les tunnels SSH sur une machine Linux : <a href="apt://gstm">gstm</a> (SSH Tunnel Manager), qui se contente de lancer la commande suivante :</p>
<pre>ssh -N -f user@serveur -p 443 -D9999</pre>
<p>Toutes les requêtes envoyées vers <code>localhost:9999</code> seront maintenant encapsulées dans des paquets SSH et redirigées via <code>serveur:443</code>. Les options <code>-N -f</code> servent à éviter d&#8217;ouvrir la console SSH distante.</p>
<h4>Client Windows</h4>
<p>Sous Windows, il y a le célèbre <a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html">PuTTY</a>, et un tutorial assez simple pour le <a href="http://www.kookyoo.net/blog/farwarx/tunnel-ssh-firefox-tutoriel-tuto-socks-internet-crypter-secure-configure-9999-windows-linux-putty-port-localhost-00000982">configurer pour une utilisation avec un tunnel</a>.</p>
<h3>Pour plus d&#8217;informations</h3>
<p>Vous pouvez trouver plus d&#8217;informations sur ces différents liens :</p>
<ul>
<li><a href="http://www.revsys.com/writings/quicktips/ssh-tunnel.html">Quick-Tip: SSH Tunneling Made Easy</a></li>
<li><a href="http://www.institut.math.jussieu.fr/informatique/tunnel/tunnel_ssh.html">Comment constituer des tunnels ssh, pour utiliser POP, IMAP, SMTP, FTP, et plus encore depuis l&#8217;extérieur ?</a></li>
<li><a href="http://www.think-underground.com/post/2007/02/24/398-tunnel-ssh-ssh-l-local-et-ssh-r-remote-en-bref">Tunnel ssh : ssh -L (local) et ssh -R (remote) en bref</a></li>
<li><a href="http://www.kookyoo.net/blog/farwarx/tunnel-ssh-firefox-tutoriel-tuto-socks-internet-crypter-secure-configure-9999-windows-linux-putty-port-localhost-00000982">[Tuto] Tunnel SSH et Firefox &amp; Co</a></li>
</ul>
<img src="http://feeds.feedburner.com/~r/sylvaindeloux/~4/lX1Jjf4XZKw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.sylvaindeloux.com/geek/installer-un-tunnel-ssh/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.sylvaindeloux.com/geek/installer-un-tunnel-ssh</feedburner:origLink></item>
		<item>
		<title>Sauvegarder des bases MySQL avec SVN</title>
		<link>http://feedproxy.google.com/~r/sylvaindeloux/~3/uOkuMrybfv0/sauvegarder-des-bases-mysql-avec-svn</link>
		<comments>http://www.sylvaindeloux.com/geek/sauvegarder-des-bases-mysql-avec-svn#comments</comments>
		<pubDate>Sat, 05 Feb 2011 10:09:58 +0000</pubDate>
		<dc:creator>Sylvain</dc:creator>
				<category><![CDATA[Geek]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[SVN]]></category>

		<guid isPermaLink="false">http://www.sylvaindeloux.com/?p=838</guid>
		<description><![CDATA[Voici un petit script bash qui permet de versionner sur un dépôt SVN des dumps de bases de données MySQL. Il crée un dump au format SQL par base. L&#8217;option --skip-extended-insert permet d&#8217;avoir un enregistrement par ligne, ce qui sera très pratique pour les diff SVN et l&#8217;option --skip-dump-date retire le timestamp à la fin [...]]]></description>
			<content:encoded><![CDATA[<p>Voici un petit script bash qui permet de versionner sur un dépôt SVN des dumps de bases de données MySQL. Il crée un dump au format SQL par base.</p>
<p>L&#8217;option <code>--skip-extended-insert</code> permet d&#8217;avoir un enregistrement par ligne, ce qui sera très pratique pour les diff SVN et l&#8217;option <code>--skip-dump-date</code> retire le timestamp à la fin du fichier, et évite ainsi de créer une nouvelle version du fichier si il n&#8217;y a eu aucune modification sur la base.</p>
<p>J&#8217;ai fait ce script vite fait hier soir, et il fonctionne bien pour moi, je pense pouvoir l&#8217;améliorer à l&#8217;avenir et suis ouvert à toute proposition ;) Il suffit juste de configurer les 6 variables au début du fichier et de le mettre dans une crontab, et le tour est joué!</p>
<pre>#!/bin/bash

export SVN_USERNAME='svn_user'
export SVN_PASSWORD='svn_pwd'
export SVN_REPOSITORY='http://my_svn_repository.com/'
export MYSQL_USERNAME='mysql_user'
export MYSQL_PASSWORD='mysql_pwd'
export TMP_DIRECTORY='/tmp/mysqlsvn_backup_tmp'

if [ -d $TMP_DIRECTORY ]; then
        echo "Cleaning tmp directory"
        rm -Rf $TMP_DIRECTORY
fi;

echo "Initializing tmp directory"
mkdir $TMP_DIRECTORY
cd $TMP_DIRECTORY

echo "Checking out repository"
svn co $SVN_REPOSITORY . --username=$SVN_USERNAME --password=$SVN_PASSWORD

for DB_NAME in `echo 'SHOW DATABASES;' | mysql -u$MYSQL_USERNAME -p$MYSQL_PASSWORD --batch -N`; do
        export filename=$DB_NAME.sql

        echo "Dumping '$DB_NAME' database"
        mysqldump -u$MYSQL_USERNAME -p$MYSQL_PASSWORD --skip-extended-insert --skip-dump-date $DB_NAME &gt; $filename

        svn add $filename
done

echo "Sending files to repository"
svn ci -m "Automatic backup $(date +%Y)-$(date +%m)-$(date +%d) $(date +%H):$(date +%M)" 

echo "Removing tmp directory"
rm -Rf $TMP_DIRECTORY</pre>
<img src="http://feeds.feedburner.com/~r/sylvaindeloux/~4/uOkuMrybfv0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.sylvaindeloux.com/geek/sauvegarder-des-bases-mysql-avec-svn/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://www.sylvaindeloux.com/geek/sauvegarder-des-bases-mysql-avec-svn</feedburner:origLink></item>
	</channel>
</rss><!-- This Quick Cache file was built for (  www.sylvaindeloux.com/feed ) in 0.76362 seconds, on Jan 30th, 2012 at 3:18 pm UTC. --><!-- This Quick Cache file will automatically expire ( and be re-built automatically ) on Jan 31st, 2012 at 3:18 pm UTC --><!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --><!-- Quick Cache Is Fully Functional :-) ... A Quick Cache file was just served for (  www.sylvaindeloux.com/feed ) in 0.00068 seconds, on Jan 30th, 2012 at 5:03 pm UTC. -->

