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

<channel>
	<title>diadzine.org</title>
	<atom:link href="http://www.diadzine.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.diadzine.org</link>
	<description></description>
	<lastBuildDate>Thu, 03 May 2012 15:46:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>PostgreSQL: dupliquer une base de données</title>
		<link>http://www.diadzine.org/2012/05/03/postgresql-dupliquer-une-base-de-donnees/</link>
		<comments>http://www.diadzine.org/2012/05/03/postgresql-dupliquer-une-base-de-donnees/#comments</comments>
		<pubDate>Thu, 03 May 2012 15:46:59 +0000</pubDate>
		<dc:creator>diadzine</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[dev]]></category>
		<category><![CDATA[postgreSQL]]></category>
		<category><![CDATA[prog]]></category>

		<guid isPermaLink="false">http://www.diadzine.org/?p=325</guid>
		<description><![CDATA[Les raisons peuvent être multiples pour vouloir dupliquer une base de données PostgreSQL, le résultat est le même: obtenir une copie de la base et de ses données sans endommager l&#8217;originale. CREATE DATABASE ma_base_de_test WITH TEMPLATE ma_base OWNER user; Si des utilisateurs utilisent cette même base, vous risquez d&#8217;obtenir l&#8217;erreur suivante: ERROR:  source database "ma_base" [...]]]></description>
			<content:encoded><![CDATA[<p>Les raisons peuvent être multiples pour vouloir dupliquer une base de données PostgreSQL, le résultat est le même: obtenir une copie de la base et de ses données sans endommager l&#8217;originale.</p>
<pre>CREATE DATABASE ma_base_de_test WITH TEMPLATE ma_base OWNER user;</pre>
<p>Si des utilisateurs utilisent cette même base, vous risquez d&#8217;obtenir l&#8217;erreur suivante:</p>
<pre><code>ERROR:  source database "ma_base" is being accessed by other users</code></pre>
<p>Mettez la base en lecture seule ou insistez simplement.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.diadzine.org/2012/05/03/postgresql-dupliquer-une-base-de-donnees/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Weekend project #1: Cat Hammock</title>
		<link>http://www.diadzine.org/2012/01/29/weekend-project-1-cat-hammock/</link>
		<comments>http://www.diadzine.org/2012/01/29/weekend-project-1-cat-hammock/#comments</comments>
		<pubDate>Sun, 29 Jan 2012 22:33:50 +0000</pubDate>
		<dc:creator>diadzine</dc:creator>
				<category><![CDATA[DIY]]></category>
		<category><![CDATA[cat]]></category>
		<category><![CDATA[wood]]></category>

		<guid isPermaLink="false">http://www.diadzine.org/?p=318</guid>
		<description><![CDATA[From time to time, I have decided to do some small projects during only one weekend. Here is my first weekend project, and also my first post in english. For this first project, I choose to make an hammock because I wanted for a while. But due to &#171;&#160;weight&#160;&#187; constraint :/, I couldn&#8217;t make it [...]]]></description>
			<content:encoded><![CDATA[<p>From time to time, I have decided to do some small projects during only one weekend. Here is my first weekend project, and also my first post in english.</p>
<p>For this first project, I choose to make an hammock because I wanted for a while. But due to &laquo;&nbsp;weight&nbsp;&raquo; constraint :/, I couldn&#8217;t make it for me. That&#8217;s why I decided to be sweet with my little kitty to get lots of prrrr in return. :)</p>
<p>More details: <a title="Diadzine Wiki: Cat Hammock" href="http://www.diadzine.org/wiki/projects/cathammock" target="_blank">Diadzine Wiki: Cat Hammock</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.diadzine.org/2012/01/29/weekend-project-1-cat-hammock/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Houston! Mon pavé numérique ne répond plus!</title>
		<link>http://www.diadzine.org/2012/01/03/houston-mon-pave-numerique-ne-repond-plus/</link>
		<comments>http://www.diadzine.org/2012/01/03/houston-mon-pave-numerique-ne-repond-plus/#comments</comments>
		<pubDate>Tue, 03 Jan 2012 08:15:45 +0000</pubDate>
		<dc:creator>diadzine</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.diadzine.org/?p=307</guid>
		<description><![CDATA[Il y a quelques temps mon pavé numérique ne répondait plus sous Ubuntu 11.04. Quel dommage d&#8217;avoir un bon gros clavier avec un pavé numérique si on ne peut pas s&#8217;en servir&#8230; Après quelques recherches sur notre ami, voici une petite manip&#8217; bien gentille qui m&#8217;a rendu mon pavé numérique: CTRL-SHIFT-NUMLOCK Cette combinaison permet d&#8217;activer/désactiver [...]]]></description>
			<content:encoded><![CDATA[<p>Il y a quelques temps mon pavé numérique ne répondait plus sous Ubuntu 11.04. Quel dommage d&#8217;avoir un bon gros clavier avec un pavé numérique si on ne peut pas s&#8217;en servir&#8230;</p>
<p>Après quelques recherches sur notre ami, voici une petite manip&#8217; bien gentille qui m&#8217;a rendu mon pavé numérique:</p>
<pre>CTRL-SHIFT-NUMLOCK</pre>
<p>Cette combinaison permet d&#8217;activer/désactiver le contrôle de la souris à l&#8217;aide du pavé numérique.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.diadzine.org/2012/01/03/houston-mon-pave-numerique-ne-repond-plus/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Utilisation des CDN et solution de repli</title>
		<link>http://www.diadzine.org/2011/10/20/utilisation-des-cdn-et-solution-de-repli/</link>
		<comments>http://www.diadzine.org/2011/10/20/utilisation-des-cdn-et-solution-de-repli/#comments</comments>
		<pubDate>Thu, 20 Oct 2011 12:50:56 +0000</pubDate>
		<dc:creator>diadzine</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[CDN]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[prog]]></category>

		<guid isPermaLink="false">http://www.diadzine.org/?p=298</guid>
		<description><![CDATA[Pour le développement d&#8217;application web ou de sites internet, l&#8217;utilisation des CDN (http://fr.wikipedia.org/wiki/Content_Delivery_Network) est avantageuse pour notamment limiter le volume de données transférées depuis votre serveur web et de proposer une source géographiquement plus proche du visiteur pour accélérer le chargement de vos pages. Dans le cas où le chargement depuis un CDN pourrait échouer, [...]]]></description>
			<content:encoded><![CDATA[<p>Pour le développement d&#8217;application web ou de sites internet, l&#8217;utilisation des CDN (<a href="http://fr.wikipedia.org/wiki/Content_Delivery_Network">http://fr.wikipedia.org/wiki/Content_Delivery_Network</a>) est avantageuse pour notamment limiter le volume de données transférées depuis votre serveur web et de proposer une source géographiquement plus proche du visiteur pour accélérer le chargement de vos pages.</p>
<p>Dans le cas où le chargement depuis un CDN pourrait échouer, il est intéressant de mettre en place une solution de secours qui consiste à fournir une copie du fichier directement depuis votre serveur web.</p>
<p>Dans cet exemple, la librairies jQuery est appelée depuis un CDN (ici,<em> ajax.googleapis.com</em>). En cas de problème (et uniquement), le même fichier sera appelé depuis un autre serveur (ici, <em>code.jquery.com</em>). Et on peut continuer ainsi sur le même principe.</p>
<pre>&lt;script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"&gt; &lt;/script&gt;
&lt;script&gt;!window.jQuery &amp;&amp; document.write('&lt;script src="http://code.jquery.com/jquery-1.4.2.min.js"&gt;&lt;/script&gt;');&lt;/script&gt;</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.diadzine.org/2011/10/20/utilisation-des-cdn-et-solution-de-repli/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PostgreSQL: créer un utilisateur et une base de données</title>
		<link>http://www.diadzine.org/2011/08/03/postgresql-creer-un-utilisateur-et-une-base-de-donnees/</link>
		<comments>http://www.diadzine.org/2011/08/03/postgresql-creer-un-utilisateur-et-une-base-de-donnees/#comments</comments>
		<pubDate>Wed, 03 Aug 2011 13:19:50 +0000</pubDate>
		<dc:creator>diadzine</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[dev]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[postgreSQL]]></category>

		<guid isPermaLink="false">http://www.diadzine.org/?p=271</guid>
		<description><![CDATA[Un petit pense-bête pour créer une nouvelle base de données et un utilisateur avec PostgreSQL. Création utilisateur On créé l&#8217;utilisateur en lui donnant le droit de se connecter au serveur de bases de données et en définissant son mot de passe. Dans le prompt du système: $ createuser -P -e username ou dans le prompt [...]]]></description>
			<content:encoded><![CDATA[<p>Un petit pense-bête pour créer une nouvelle base de données et un utilisateur avec PostgreSQL.</p>
<p><span id="more-271"></span></p>
<h2>Création utilisateur</h2>
<p>On créé l&#8217;utilisateur en lui donnant le droit de se connecter au serveur de bases de données et en définissant son mot de passe.</p>
<p>Dans le prompt du système:</p>
<pre><samp>$ </samp><kbd>createuser -P -e <em>username</em></kbd></pre>
<p>ou dans le prompt SQL:</p>
<pre>CREATE ROLE <em>username </em>WITH LOGIN PASSWORD '<em>passWORD123*!</em>';</pre>
<p>&nbsp;</p>
<h2>Création base de données</h2>
<p>On créé une base de données.</p>
<p>Dans le prompt du système:</p>
<pre><span style="font-family: Consolas, Monaco, 'Courier New', Courier, monospace; font-size: 12px; line-height: 18px; white-space: pre;">$ createdb <tt><em>dbname</em></tt></span></pre>
<p>ou dans le prompt SQL:</p>
<pre>CREATE DATABASE <tt><em>dbname</em></tt>;</pre>
<p>&nbsp;</p>
<h2>Droits propriétaires</h2>
<p>On donne les droits propriétaires à un utilisateur sur une base de données.</p>
<p>Dans le prompt SQL:</p>
<pre>ALTER DATABASE db<tt><em>name</em></tt> OWNER TO <tt><em>username</em></tt></pre>
<p>&nbsp;</p>
<h2>Création base de données et droits propriétaires</h2>
<p>On créé une base de données en donnant les droits propriétaires à l&#8217;utilisateur.</p>
<p>Dans le prompt du système:</p>
<pre>$ createdb -O user<tt><em>name</em></tt> <tt><em>dbname</em></tt></pre>
<p>ou dans le prompt SQL:</p>
<pre>CREATE DATABASE <tt><em>dbname</em></tt> OWNER user<tt><em>name</em></tt>;</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.diadzine.org/2011/08/03/postgresql-creer-un-utilisateur-et-une-base-de-donnees/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Django: installer PIL dans un environnement virtuel</title>
		<link>http://www.diadzine.org/2011/07/05/django-installer-pil-dans-un-environnement-virtuel/</link>
		<comments>http://www.diadzine.org/2011/07/05/django-installer-pil-dans-un-environnement-virtuel/#comments</comments>
		<pubDate>Tue, 05 Jul 2011 10:24:53 +0000</pubDate>
		<dc:creator>diadzine</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.diadzine.org/?p=258</guid>
		<description><![CDATA[Pour pouvoir uploader des fichiers images ou pour manipuler des images dans une application Django, il est nécessaire d&#8217;installer le package PIL (pour Python Imaging Library). L&#8217;installer c&#8217;est bien, mais permettre de manipuler les images de types JPEG, GIF ou PNG c&#8217;est mieux. Je me suis heurter plusieurs fois à des problèmes de type d&#8217;image non [...]]]></description>
			<content:encoded><![CDATA[<p>Pour pouvoir uploader des fichiers images ou pour manipuler des images dans une application Django, il est nécessaire d&#8217;installer le package PIL (pour Python Imaging Library). L&#8217;installer c&#8217;est bien, mais permettre de manipuler les images de types JPEG, GIF ou PNG c&#8217;est mieux.<span id="more-258"></span></p>
<p>Je me suis heurter plusieurs fois à des problèmes de type d&#8217;image non supportés par la version de PIL que je venais fraichement d&#8217;install avec pip. Pour contourner le problème, je suis passé par une installation plus &laquo;&nbsp;manuelle&nbsp;&raquo;.</p>
<p>Pour commencer, il faut installer les librairies de développement pour avoir le support JPEG, GIF ou PNG:</p>
<pre>sudo apt-get install libjpeg8 libjpeg8-dev
sudo apt-get install zlib1g-dev
sudo apt-get install libfreetype6 libfreetype6-dev</pre>
<p>NB: <em>Il semble possible d&#8217;utiliser soit libjpeg8 soit libjpeg62. libjpeg8 est recommandé ça et là pour Debian/Ubuntu au lieu de libjpeg62.</em></p>
<p>Il faut ensuite activer son environnement virtuel:</p>
<pre>cd myEnv/
source bin/activate</pre>
<p>On télécharge ensuite les sources du package Imaging, on extrait les sources et on:</p>
<pre>wget http://effbot.org/downloads/Imaging-1.1.7.tar.gz
tar xzf Imaging-1.1.7.tar.gz
cd Imaging-1.1.7.tar.gz
python setup.py build_ext -i
python selftest.py
python setup.py install</pre>
<p>Et le tour est joué</p>
<p><strong>EDIT:</strong> J&#8217;ai finalement trouvé une solution pour régler le souci et pouvoir installer PIL à l&#8217;aide de pip.</p>
<p>Il semblerait que Ubuntu oublie de créer les liens symboliques à l&#8217;installation des paquets libjpeg*, zlib1g* et libfreetype6*.</p>
<pre dir="ltr">sudo ln -s /usr/lib/x86_64-linux-gnu/libfreetype.so /usr/lib/
sudo ln -s /usr/lib/x86_64-linux-gnu/libz.so /usr/lib/
sudo ln -s /usr/lib/x86_64-linux-gnu/libjpeg.so /usr/lib/</pre>
<p>Il ne reste plus qu&#8217;à installer PIL comme ceci:</p>
<pre>pip install PIL</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.diadzine.org/2011/07/05/django-installer-pil-dans-un-environnement-virtuel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Django: installer libxml2 dans un environnement virtuel</title>
		<link>http://www.diadzine.org/2011/07/04/django-installer-libxml2-dans-un-environnement-virtuel/</link>
		<comments>http://www.diadzine.org/2011/07/04/django-installer-libxml2-dans-un-environnement-virtuel/#comments</comments>
		<pubDate>Mon, 04 Jul 2011 22:15:14 +0000</pubDate>
		<dc:creator>diadzine</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[dev]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[prog]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://www.diadzine.org/?p=252</guid>
		<description><![CDATA[L&#8217;erreur suivante survient lorsque le package libxml2 pour Python n&#8217;est pas installé: ImportError: No module named libxml2 Le reflex à la vue de cette erreur est bien évidemment de faire appel à la commande suivante pour satisfaire la dépendance: pip install libxml2-python Hélas, le package libxml2 ne fait pas parti des dépôts. Il faut donc [...]]]></description>
			<content:encoded><![CDATA[<p>L&#8217;erreur suivante survient lorsque le package libxml2 pour Python n&#8217;est pas installé:</p>
<pre>ImportError: No module named libxml2</pre>
<p>Le reflex à la vue de cette erreur est bien évidemment de faire appel à la commande suivante pour satisfaire la dépendance:</p>
<pre>pip install libxml2-python</pre>
<p>Hélas, le package libxml2 ne fait pas parti des dépôts. Il faut donc faire appel directement à l&#8217;url des sources sur le FTP de Xmlsoft.org:</p>
<pre>pip install <a rel="nofollow" href="ftp://xmlsoft.org/libxml2/python/libxml2-python-2.6.9.tar.gz">ftp://xmlsoft.org/libxml2/python/libxml2-python-2.6.9.tar.gz</a></pre>
<p>Et voilà, un poids de moins! :]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.diadzine.org/2011/07/04/django-installer-libxml2-dans-un-environnement-virtuel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PulseAudio Equalizer sur Ubuntu 11.04</title>
		<link>http://www.diadzine.org/2011/05/15/pulseaudio-equalizer-sur-ubuntu-11-04/</link>
		<comments>http://www.diadzine.org/2011/05/15/pulseaudio-equalizer-sur-ubuntu-11-04/#comments</comments>
		<pubDate>Sun, 15 May 2011 15:22:51 +0000</pubDate>
		<dc:creator>diadzine</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[son]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.diadzine.org/?p=236</guid>
		<description><![CDATA[Avoir un bon kit son 5.1 et pouvoir régler le finement la tonalité c&#8217;est ce que je cherchais à faire dernièrement. Je cherchais ca depuis un moment déjà, et j&#8217;ai trouvé PulseAudio Equalizer, alors j&#8217;en profite pour vous faire partager cette astuce. PulseAudio Equalizer est fait pour ceux, comme moi, qui veulent régler le son de leur système. Le site [...]]]></description>
			<content:encoded><![CDATA[<p>Avoir un bon kit son 5.1 et pouvoir régler le finement la tonalité c&#8217;est ce que je cherchais à faire dernièrement. Je cherchais ca depuis un moment déjà, et j&#8217;ai trouvé PulseAudio Equalizer, alors j&#8217;en profite pour vous faire partager cette astuce.</p>
<p><span id="more-236"></span></p>
<p>PulseAudio Equalizer est fait pour ceux, comme moi, qui veulent régler le son de leur système. Le site <a href="http://www.webupd8.org/" target="_blank">Web Upd8</a> propose donc un billet sur son blog pour installer PulseAudio Equalizer sous Ubuntu 10.10 ou 11.04 depuis leurs dépôts. <a href="http://www.webupd8.org/2011/04/system-wide-pulseaudio-equalizer.html" target="_blank">Voir le post original (en anglais)</a>.</p>
<p>En résumé:<code><br />
sudo add-apt-repository ppa:nilarimogard/webupd8<br />
sudo apt-get update<br />
sudo apt-get install pulseaudio-equalizer<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.diadzine.org/2011/05/15/pulseaudio-equalizer-sur-ubuntu-11-04/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PostgreSQL: migrer une base de données d&#8217;un serveur à l&#8217;autre</title>
		<link>http://www.diadzine.org/2011/03/25/postgresql-migrer-une-base-de-donnees-dun-serveur-a-lautre/</link>
		<comments>http://www.diadzine.org/2011/03/25/postgresql-migrer-une-base-de-donnees-dun-serveur-a-lautre/#comments</comments>
		<pubDate>Fri, 25 Mar 2011 08:44:40 +0000</pubDate>
		<dc:creator>diadzine</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[migration]]></category>
		<category><![CDATA[postgreSQL]]></category>

		<guid isPermaLink="false">http://www.diadzine.org/?p=237</guid>
		<description><![CDATA[Tous développements (ou presque) passent un jour en production. Si le déploiement des sources est relativement trivial, il peut être un peu plus ardu de migrer une base de données d&#8217;un serveur de développement à un serveur de production (dans certains cas). Pour migrer une base de données d&#8217;un serveur PostgreSQL, il y&#8217;a 2 méthodes [...]]]></description>
			<content:encoded><![CDATA[<p>Tous développements (ou presque) passent un jour en production. Si le déploiement des sources est relativement trivial, il peut être un peu plus ardu de migrer une base de données d&#8217;un serveur de développement à un serveur de production (dans certains cas).</p>
<p>Pour migrer une base de données d&#8217;un serveur PostgreSQL, il y&#8217;a 2 méthodes (mais j&#8217;en présenterai 3 \o/):</p>
<ul>
<li>le passage par un fichier temporaire d&#8217;exportation,</li>
<li>l&#8217;export-import directement d&#8217;un serveur à l&#8217;autre,</li>
<li>l&#8217;export d&#8217;un serveur et l&#8217;import sur l&#8217;autre serveur en utilisant 2 sessions SSH.</li>
</ul>
<p><span id="more-237"></span></p>
<h2>Utilisation d&#8217;un fichier temporaire d&#8217;exportation</h2>
<p>Sur le serveur source, on fait un dump de la base de données:</p>
<pre>pg_dump -C dbname -f db.dump</pre>
<p>Il suffit de transférer le fichier du serveur source vers le serveur de destination par le moyen préféré.</p>
<p>Sur le serveur destination, on insère notre fichier d&#8217;exportation:</p>
<pre>pg_restore -C -d dbname db.dump</pre>
<p>&nbsp;</p>
<h2>Export-import directement d&#8217;un serveur à l&#8217;autre</h2>
<p>Depuis le serveur source, on fait un dump pour l&#8217;insérer dans le serveur de destination:</p>
<pre>pg_dump -C -h localhost -U localuser dbname | psql -h remotehost -U remoteuser dbname</pre>
<p>ou bien dans l&#8217;autre sens, depuis le serveur de destination, on fait un dump du serveur source pour l&#8217;insérer localement:</p>
<pre>pg_dump -C -h remotehost -U remoteuser dbname | psql -h localhost -U localuser dbname</pre>
<p>&nbsp;</p>
<h2>Export d&#8217;un serveur et l&#8217;import sur l&#8217;autre serveur en utilisant 2 sessions SSH</h2>
<p>Depuis le serveur source:</p>
<pre>pg_dump -C dbname | bzip2 | ssh remoteuser@remotehost "bunzip2 | psql dbname"</pre>
<p>Note: cette solution implique d&#8217;avoir un accès SSH sur les 2 serveurs.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.diadzine.org/2011/03/25/postgresql-migrer-une-base-de-donnees-dun-serveur-a-lautre/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Django: mettre en place son environnement de développement</title>
		<link>http://www.diadzine.org/2011/03/24/django-mettre-en-place-son-environnement-de-developpement/</link>
		<comments>http://www.diadzine.org/2011/03/24/django-mettre-en-place-son-environnement-de-developpement/#comments</comments>
		<pubDate>Thu, 24 Mar 2011 08:36:59 +0000</pubDate>
		<dc:creator>diadzine</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[dev]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[prog]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://www.diadzine.org/?p=219</guid>
		<description><![CDATA[Faire un projet Django c&#8217;est bien. Ne pas avoir à se prendre la tête pour installer tout un tas de dépendances ou pour déployer un projet Django, c&#8217;est quand même mieux. Installation de easy_install $ sudo apt-get install python-setuptools python-dev build-essential Installation de pip $ sudo easy_install pip Installation de virtualenv $ sudo pip install [...]]]></description>
			<content:encoded><![CDATA[<p>Faire un projet Django c&#8217;est bien.</p>
<p>Ne pas avoir à se prendre la tête pour installer tout un tas de dépendances ou pour déployer un projet Django, c&#8217;est quand même mieux.</p>
<p><span id="more-219"></span></p>
<h2>Installation de easy_install</h2>
<pre>$ sudo apt-get install python-setuptools python-dev build-essential</pre>
<h2>Installation de pip</h2>
<pre>$ sudo easy_install pip</pre>
<h2>Installation de virtualenv</h2>
<pre>$ sudo pip install virtualenv</pre>
<h2>Création d&#8217;un environnement virtuel</h2>
<p>Si ce n&#8217;est pas déjà fait, on va créer notre répertoire qui va accueillir tous nos environnements virtuels (ici, /srv/python-envs):</p>
<pre>$ mkdir -p /srv/python-envs
$ cd /srv/python-envs</pre>
<p>On peut ensuite créer notre nouvel environnement virtuel:</p>
<pre>$ virtualenv --no-site-packages --distribute my_env</pre>
<h2>Installation d&#8217;un package dans l&#8217;environnement virtuel</h2>
<p>On se place dans le répertoire des environnements virtuels (ici, /srv/python-envs).</p>
<p>Pour l&#8217;exemple, on choisi d&#8217;installer le package Yolk. Yolk est un outil pour lister les packages Python installés.</p>
<pre>$ pip install -E my_env yolk</pre>
<h2>Activation et utilisation d&#8217;un environnement virtuel</h2>
<p>On se place dans le répertoire des environnements virtuels (ici, /srv/python-envs).</p>
<p>On active l&#8217;environnement my_env:</p>
<pre>$ source my_env/bin/activate</pre>
<p>Pour test, on fait appel à Yolk pour lister les packages installés dans notre environnement virtuel:</p>
<pre>$ yolk -l
Django          - 1.2.5        - active
Python          - 2.6.6        - active development (/usr/lib/python2.6/lib-dynload)
distribute         - 0.6.10       - active
pip             - 0.8.1        - active
wsgiref         - 0.1.2        - active development (/usr/lib/python2.6)
yolk            - 0.4.1        - active</pre>
<p>On désactive l&#8217;environnement:</p>
<pre>$ deactivate</pre>
<p>On essaie Yolk à nouveau:</p>
<pre>$ yolk -l
yolk: command not found</pre>
<p>La commande est alors inconnue. Bien sur, elle est inconnue uniquement dans le cas où Yolk n&#8217;est pas installé sur votre système.</p>
<h2>Installation de Django dans l&#8217;environnement virtuel</h2>
<p>On se place dans le répertoire des environnements virtuels (ici, /srv/python-envs).</p>
<pre>$ pip install -E my_env Django</pre>
<h2>Création d&#8217;un instantané de l&#8217;état des librairies installées</h2>
<p>On se place dans le répertoire des environnements virtuels (ici, /srv/python-envs).</p>
<pre>$ pip freeze -E my_env &gt; pip-requirements.txt</pre>
<p><strong>/srv/python-envs/pip-requirements.txt:</strong></p>
<pre>Django==1.2.5
distribute==0.6.10
wsgiref==0.1.2
yolk==0.4.1</pre>
<h2>Installation de packages à partir d&#8217;un instantané</h2>
<p>On se place dans le répertoire des environnements virtuels (ici, /srv/python-envs).</p>
<p>On reprend notre instantané créé précédemment pour faire une nouvelle installation, par exemple, dans un nouvel environnement vierge (ici, second_env):</p>
<pre>$ pip install -E second_env -r /srv/python-envs/pip-requirements.txt</pre>
<p>Note: On a bien sur la possibilité d&#8217;ajouter manuellement des packages à installer dans cet instantané (cf. <a title="pip requirements files" href="http://www.pip-installer.org/en/latest/#requirements-files" target="_blank">pip requirements files</a>)</p>
<h2>Utilisation d&#8217;un environnement virtuel avec Django et le module Apache mod_wsgi</h2>
<p><strong>/srv/python-envs/my_env/django.wsgi:</strong></p>
<pre>import os
import sys
import site

site.addsitedir('/srv/python-envs/my_env/lib/python2.6/site-packages')

sys.path.append('/srv/python-envs/my_env')
sys.path.append('/srv/python-envs/my_env/my_project')

os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()</pre>
<p><strong>/etc/apache2/sites-available/django-my_env-my_project:</strong></p>
<pre>&lt;VirtualHost *:80&gt;
    ServerAdmin admin@example.com
    ServerName www.example.com

    WSGIDaemonProcess www.example.com processes=2 threads=15 display-name=%{GROUP}
    WSGIProcessGroup www.example.com
    WSGIScriptAlias    /     /srv/python-devs/my_env/django.wsgi

    &lt;Directory /srv/python-devs/my_env&gt;
        Order allow,deny
        allow from all
    &lt;/Directory&gt;

    ErrorLog /var/log/apache2/django-my_env-my_project-error.log
    LogLevel warn
    CustomLog /var/log/apache2/django-my_env-my_project-access.log combined
&lt;/VirtualHost&gt;</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.diadzine.org/2011/03/24/django-mettre-en-place-son-environnement-de-developpement/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

