<?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>noirbizarre.info</title>
	<atom:link href="http://noirbizarre.info/feed/" rel="self" type="application/rss+xml" />
	<link>http://noirbizarre.info</link>
	<description>Encore un blog de GeeK</description>
	<lastBuildDate>Tue, 01 May 2012 13:16:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Developpement web local avec virtualbox</title>
		<link>http://noirbizarre.info/2012/05/01/developpement-web-local-avec-virtualbox/</link>
		<comments>http://noirbizarre.info/2012/05/01/developpement-web-local-avec-virtualbox/#comments</comments>
		<pubDate>Tue, 01 May 2012 13:16:48 +0000</pubDate>
		<dc:creator>noirbizarre</dc:creator>
				<category><![CDATA[Admin]]></category>
		<category><![CDATA[Développement]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[NAT]]></category>
		<category><![CDATA[private network]]></category>
		<category><![CDATA[vhost]]></category>
		<category><![CDATA[virtualbox]]></category>
		<category><![CDATA[virtualhost]]></category>

		<guid isPermaLink="false">http://noirbizarre.info/?p=402</guid>
		<description><![CDATA[Le développement web sur son poste local avec une configuration de test est classique. Seulement, il est nécessaire de pouvoir tester sa configuration en déploiement réel sur un serveur. Pour cela, j&#8217;utilise Virtualbox pour créer des serveurs virtuels (Debian en général) avec les contraintes suivantes: le serveur doit pouvoir accéder à internet simplement le serveur&#8230;]]></description>
			<content:encoded><![CDATA[<p>Le développement web sur son poste local avec une configuration de test est classique. Seulement, il est nécessaire de pouvoir tester sa configuration en déploiement réel sur un serveur.<br />
Pour cela, j&#8217;utilise Virtualbox pour créer des serveurs virtuels (Debian en général) avec les contraintes suivantes:</p>
<ul>
<li>le serveur doit pouvoir accéder à internet simplement</li>
<li>le serveur doit être accessible depuis mon poste de travail (ssh, http, &#8230;)</li>
<li>la configuration de virtualhosts doit être simple</li>
<li>aucune connection à internet ne doit être nécessaire pour accéder au serveur depuis son IP public</li>
</ul>
<p>Pour répondre à ces contraintes, je crée des machine virtuelles avec 2 interfaces:</p>
<ul>
<li>eth0 sur le NAT virtualbox</li>
<li>eth1 sur le réseau privé virtuel</li>
</ul>
<p>Il faut donc activer le réseau privé virtuel sous VirtualBox en cliquant sur &laquo;&nbsp;+&nbsp;&raquo; dans Fichiers &gt; Paramètres&#8230; &gt; Réseau:</p>
<p><a href="http://noirbizarre.info/wp-content/uploads/2012/05/vbox-network-parameters.jpeg"><img class="aligncenter size-full wp-image-410" title="Paramètres réseau VirtualBox" src="http://noirbizarre.info/wp-content/uploads/2012/05/vbox-network-parameters.jpeg" alt="Paramètres réseau VirtualBox" width="493" height="439" /></a></p>
<p>Une fois l&#8217;interface crée, il faut la configurer. Dans notre cas, le réseau est 192.168.77.0 et le serveur DHCP est désacttivé:</p>
<p><a href="http://noirbizarre.info/wp-content/uploads/2012/05/vbox-private-network-paramater.jpeg"><img class="aligncenter size-full wp-image-411" title="Paramètres du réseau privé virtuel" src="http://noirbizarre.info/wp-content/uploads/2012/05/vbox-private-network-paramater.jpeg" alt="Paramètres du réseau privé virtuel" width="467" height="257" /></a></p>
<p><a href="http://noirbizarre.info/wp-content/uploads/2012/05/vbox-private-network-paramater-dhcp.jpeg"><img class="aligncenter size-full wp-image-412" title="Paramètres DHCP du réseau privé virtuel" src="http://noirbizarre.info/wp-content/uploads/2012/05/vbox-private-network-paramater-dhcp.jpeg" alt="Paramètres DHCP du réseau privé virtuel" width="467" height="257" /></a></p>
<p>Maintenant que ce réseau existe, il fautconfigurer notre VM pour qu&#8217;elle utilise à la fois le NAT pour l&#8217;accès internet et le réseau privé virtuel pour l&#8217;IP public locale:</p>
<p style="text-align: center;"><a href="http://noirbizarre.info/wp-content/uploads/2012/05/vbox-vm-eth0.jpeg"><img class="aligncenter  wp-image-414" title="Paramètres de l'interface eth0" src="http://noirbizarre.info/wp-content/uploads/2012/05/vbox-vm-eth0.jpeg" alt="Paramètres de l'interface eth0" width="586" height="443" /></a></p>
<p style="text-align: center;"><a href="http://noirbizarre.info/wp-content/uploads/2012/05/vbox-vm-eth1.jpeg"><img class="aligncenter  wp-image-413" title="Paramètres de l'interface eth1" src="http://noirbizarre.info/wp-content/uploads/2012/05/vbox-vm-eth1.jpeg" alt="Paramètres de l'interface eth1" width="586" height="443" /></a></p>
<p>Voici le fichier <tt>/etc/network/interfaces</tt> coorespondant sur la VM:</p>
<pre class="brush: bash; light: true; title: ; notranslate">

# The loopback network interface
auto lo
iface lo inet loopback

# The NATed network interface
auto eth0
allow-hotplug eth0
iface eth0 inet dhcp

# The public network interface
auto eth1
allow-hotplug eth1
iface eth1 inet static
	address 192.168.77.2
	netmask 255.255.255.0
	network 192.168.77.0
	broadcast 192.168.77.255
</pre>
<p>Le point à noter: il ne faut pas déclarer de gateway pour l&#8217;interface eth1. Tout le traffic sortant (accès à internet ou au réseau local) se fait par l&#8217;interface eth0 configurée en DHCP sur le NAT Virtualbox.</p>
<p>Pour gérer mes virtualhosts, la configuration se fait à 2 niveaux:</p>
<ul>
<li>dans le fichier /etc/hosts de ma machine hôte:
<pre class="brush: bash; light: true; title: ; notranslate">192.168.77.2    vhost.dev</pre>
</li>
<li>dans le fichier /etc/hosts de ma machine virtuelle:
<pre class="brush: bash; light: true; title: ; notranslate">127.0.1.1    vhost.dev</pre>
</li>
</ul>
<p>Maintenant, cette machine virtuelle est accessible par vhost.dev, que ce soit par SSH ou HTTP, et ce avec ou sans connection internet disponible.</p>
<p>Pour faciliter, le démarrage et l&#8217;arrêt de la VM, je rajoute 2 alias dans mon fichier <tt>~/.bash_aliases</tt>:</p>
<pre class="brush: bash; light: true; title: ; notranslate">
alias start-vm='VBoxHeadless --startvm &quot;my-vm&quot;&amp;'
alias stop-vm='VBoxManage controlvm &quot;my-vm&quot; poweroff'
</pre>
]]></content:encoded>
			<wfw:commentRss>http://noirbizarre.info/2012/05/01/developpement-web-local-avec-virtualbox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Crypter ses mots de passe Maven</title>
		<link>http://noirbizarre.info/2012/02/18/crypter-ses-mots-de-passe-maven/</link>
		<comments>http://noirbizarre.info/2012/02/18/crypter-ses-mots-de-passe-maven/#comments</comments>
		<pubDate>Sat, 18 Feb 2012 16:54:33 +0000</pubDate>
		<dc:creator>noirbizarre</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[maven]]></category>

		<guid isPermaLink="false">http://noirbizarre.info/?p=374</guid>
		<description><![CDATA[Lorsque l&#8217;on veut publier sur un dépôt maven, il faut fournir un identifiant et mot de passe que l&#8217;on peut stocker et crypter dans sont fichier ~/.m2/settings.xml tel qu&#8217;indiqué dans la documentation officielle. Malheureusement les commandes mvn --encrypt-master-password et mvn --encrypt-password demande d&#8217;inquer le mot de passe sur la ligne de commande ce qui est&#8230;]]></description>
			<content:encoded><![CDATA[<p>Lorsque l&#8217;on veut publier sur un dépôt maven, il faut fournir un identifiant et mot de passe que l&#8217;on peut stocker et crypter dans sont fichier <code>~/.m2/settings.xml</code> tel qu&#8217;indiqué dans la <a href="http://maven.apache.org/guides/mini/guide-encryption.html">documentation officielle</a>.</p>
<p>Malheureusement les commandes <code>mvn --encrypt-master-password</code> et <code>mvn --encrypt-password</code> demande d&#8217;inquer le mot de passe sur la ligne de commande ce qui est peu secure puisqu&#8217;il apparaitra dans l&#8217;historique du shell.</p>
<p>Pour contourner ce problème, il est possible de demander au shell de demander le mot de passe pour ne pas laisser de trace dans l&#8217;historique:</p>
<pre class="brush: bash; light: true; title: ; notranslate">
read -p &quot;Password? &quot; pass; mvn --encrypt-master-password $pass
read -p &quot;Password? &quot; pass; mvn --encrypt-password $pass
</pre>
]]></content:encoded>
			<wfw:commentRss>http://noirbizarre.info/2012/02/18/crypter-ses-mots-de-passe-maven/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Définir l’exécution par défaut d&#8217;un plugin maven</title>
		<link>http://noirbizarre.info/2011/10/03/definir-l%e2%80%99execution-par-defaut-dun-plugin-maven/</link>
		<comments>http://noirbizarre.info/2011/10/03/definir-l%e2%80%99execution-par-defaut-dun-plugin-maven/#comments</comments>
		<pubDate>Mon, 03 Oct 2011 14:41:45 +0000</pubDate>
		<dc:creator>noirbizarre</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[maven]]></category>

		<guid isPermaLink="false">http://noirbizarre.info/?p=355</guid>
		<description><![CDATA[Avec Maven, il arrive souvent d&#8217;avoir à définir plusieurs exécutions d&#8217;un plugin pour différentes phases mais de vouloir en garder une par défaut (celle utilisée en ligne de commande). Depuis la version 2.2 de maven, le ticket MNG-3401 le permet en donnant l&#8217;identifiant d’exécution default-cli:]]></description>
			<content:encoded><![CDATA[<p>Avec Maven, il arrive souvent d&#8217;avoir à définir plusieurs exécutions d&#8217;un plugin pour différentes phases mais de vouloir en garder une par défaut (celle utilisée en ligne de commande).</p>
<p>Depuis la version 2.2 de maven, le ticket <a title="JIRA MNG-3401" href="http://jira.codehaus.org/browse/MNG-3401">MNG-3401</a> le permet en donnant l&#8217;identifiant d’exécution <code>default-cli</code>:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;plugin&gt;
  &lt;artifactId&gt;maven-assembly-plugin&lt;/artifactId&gt;
  &lt;executions&gt;
    &lt;execution&gt;
      &lt;id&gt;default-cli&lt;/id&gt;
      &lt;configuration&gt;
        &lt;descriptorRefs&gt;
          &lt;descriptorRef&gt;jar-with-dependencies&lt;/descriptorRef&gt;
          &lt;descriptorRef&gt;project&lt;/descriptorRef&gt;
        &lt;/descriptorRefs&gt;
      &lt;/configuration&gt;
    &lt;/execution&gt;
  &lt;/executions&gt;
&lt;/plugin&gt;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://noirbizarre.info/2011/10/03/definir-l%e2%80%99execution-par-defaut-dun-plugin-maven/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eviter d&#8217;utiliser stage.addEventListener()</title>
		<link>http://noirbizarre.info/2011/08/03/eviter-dutiliser-stage-addeventlistener/</link>
		<comments>http://noirbizarre.info/2011/08/03/eviter-dutiliser-stage-addeventlistener/#comments</comments>
		<pubDate>Wed, 03 Aug 2011 11:54:58 +0000</pubDate>
		<dc:creator>noirbizarre</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[eventlistener]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[stage]]></category>
		<category><![CDATA[systemmanager]]></category>

		<guid isPermaLink="false">http://noirbizarre.info/?p=314</guid>
		<description><![CDATA[En Flex/ActionScript, il n&#8217;est pas rare de vouloir écouter un évènement au niveau le plus haut et de voir du code tel que: En effet, lors de l&#8217;inialisation des composants Flex, l&#8217;attribut stage n&#8217;est pas encore disponible. Pourtant, il est plus simple et plus propre d&#8217;utiliser SystemManager: Ce morceau de code ne plantera pas car&#8230;]]></description>
			<content:encoded><![CDATA[<p>En Flex/ActionScript, il n&#8217;est pas rare de vouloir écouter un évènement au niveau le plus haut et de voir du code tel que:</p>
<pre class="brush: as3; title: ; notranslate">
if (stage) {
	stage.addEventListener(MonEvent.MON_TYPE, _monHandler);
} else {
	this.addEventListener(Event.ADDED_TO_STAGE, function(e:Event):void{
		stage.addEventListener(MonEvent.MON_TYPE, _monHandler);
	});
}
</pre>
<p>En effet, lors de l&#8217;inialisation des composants Flex, l&#8217;attribut <code>stage</code> n&#8217;est pas encore disponible.</p>
<p>Pourtant, il est plus simple et plus propre d&#8217;utiliser <code><a href="http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/managers/SystemManager.html" title="SystemManager" target="_blank">SystemManager</a></code>:</p>
<pre class="brush: as3; title: ; notranslate">
systemManager.addEventListener(MonEvent.MON_TYPE, _monHandler);
</pre>
<p>Ce morceau de code ne plantera pas car <code>systemManager</code> est initilisé dès le lancement de l&#8217;application et est toujours présent dans les composants, contrairement à <code>stage</code>.</p>
]]></content:encoded>
			<wfw:commentRss>http://noirbizarre.info/2011/08/03/eviter-dutiliser-stage-addeventlistener/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java et proxy HTTP</title>
		<link>http://noirbizarre.info/2011/04/06/java-et-proxy-http/</link>
		<comments>http://noirbizarre.info/2011/04/06/java-et-proxy-http/#comments</comments>
		<pubDate>Wed, 06 Apr 2011 07:22:59 +0000</pubDate>
		<dc:creator>noirbizarre</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Mémentos]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[proxy]]></category>

		<guid isPermaLink="false">http://noirbizarre.info/?p=297</guid>
		<description><![CDATA[Comment faire en sorte qu&#8217;une application Java passe par un proxy HTTP (comme c&#8217;est souvent le cas en entreprise) ? Il faut le spécifier dans les options de la JVM à l&#8217;execution! On me pose souvent la question et même si je connais la réponse, je doit toujours la rechercher pour être sur de la&#8230;]]></description>
			<content:encoded><![CDATA[<p>Comment faire en sorte qu&#8217;une application Java passe par un proxy HTTP (comme c&#8217;est souvent le cas en entreprise) ?<br />
Il faut le spécifier dans les options de la JVM à l&#8217;execution!<br />
On me pose souvent la question et même si je connais la réponse, je doit toujours la rechercher pour être sur de la syntaxe.<br />
Les options à passer sont:</p>
<ul>
<li><code>http.proxyHost</code> pour spécifier l&#8217;hôte</li>
<li><code>http.proxyPort</code> pour spécifier le port</li>
<li><code>http.proxyUser</code> pour spécifier le nom d&#8217;utilisateur (optionnel)</li>
<li><code>http.proxyPassword</code> pour spécifier le mot de passe (optionnel)</li>
</ul>
<p>Ce qui donnerai en ligne de commande pour un proxy dont l&#8217;url est http://user:password@proxy.maboite.com:8080</p>
<pre class="brush: plain; light: true; title: ; notranslate">
~$ java -Dhttp.proxyHost=proxy.maboite.com -Dhttp.proxyPort=8080 -Dhttp.proxyUser=user -Dhttp.proxyPassword=password maClasse
</pre>
]]></content:encoded>
			<wfw:commentRss>http://noirbizarre.info/2011/04/06/java-et-proxy-http/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jetty 7 et Hudson sous Debian Lenny</title>
		<link>http://noirbizarre.info/2011/01/07/jetty-7-et-hudson-sous-debian-lenny/</link>
		<comments>http://noirbizarre.info/2011/01/07/jetty-7-et-hudson-sous-debian-lenny/#comments</comments>
		<pubDate>Fri, 07 Jan 2011 02:35:01 +0000</pubDate>
		<dc:creator>noirbizarre</dc:creator>
				<category><![CDATA[Admin]]></category>
		<category><![CDATA[cherokee]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[hudson]]></category>
		<category><![CDATA[jetty]]></category>
		<category><![CDATA[openjdk]]></category>

		<guid isPermaLink="false">http://noirbizarre.info/?p=246</guid>
		<description><![CDATA[Dans cet article décrit l&#8217;installation en tant que service de Jetty 7 sur Debian Lenny ainsi que le déploiement de Hudson. Installation d&#8217;OpenJDK 6 Headless Avant toute chose, il faut une installation de JRE fonctionnelle, dans mon cas OpenJDK 6 Headless. Installation de jetty Nous allons créer un utilisateur jetty et le groupe associé et&#8230;]]></description>
			<content:encoded><![CDATA[<p>Dans cet article décrit l&#8217;installation en tant que service de Jetty 7 sur Debian Lenny ainsi que le déploiement de Hudson.</p>
<h3>Installation d&#8217;OpenJDK 6 Headless</h3>
<p>Avant toute chose, il faut une installation de JRE fonctionnelle, dans mon cas OpenJDK 6 Headless.</p>
<pre class="brush: plain; light: true; title: ; notranslate">
noirbizarre:~$ sudo aptitude install openjdk-6-jre-headless
</pre>
<h3>Installation de jetty</h3>
<p>Nous allons créer un utilisateur jetty et le groupe associé et les utiliser pour installer et exécuter jetty.</p>
<pre class="brush: plain; light: true; title: ; notranslate">
noirbizarre:~$ sudo groupadd jetty
noirbizarre:~$ sudo useradd -s /bin/bash -d /home/jetty -m -g jetty jetty
noirbizarre:~$ sudo passwd jetty
</pre>
<p>Après voir récupéré la dernière version stable de Jetty 7 disponible <a href="http://download.eclipse.org/jetty/stable-7/dist/">ici</a>, dans mon cas la version  <i>7.2.2.v20101205.</i>, et on l&#8217;installe dans le $HOME de notre utilisateur.</p>
<pre class="brush: plain; light: true; title: ; notranslate">
noirbizarre:~$ sudo -i -u jetty
jetty:~$ JETTY_VERSION=7.2.2.v20101205
jetty:~$ wget http://download.eclipse.org/jetty/$JETTY_VERSION/dist/jetty-distribution-$JETTY_VERSION.tar.gz
jetty:~$ tar -xvzf jetty-distribution-$JETTY_VERSION.tar.gz
jetty:~$ ln -s jetty-distribution-$JETTY_VERSION jetty7
</pre>
<p>Nous allons lancer jetty une première fois pour vérifier que tout s&#8217;execute bien:</p>
<pre class="brush: plain; light: true; title: ; notranslate">
jetty:~$ cd jetty7
jetty:~/jetty7$ java -jar start.jar
2011-01-07 00:58:19.337:INFO::jetty-7.2.2.v20101205
2011-01-07 00:58:19.410:INFO::Deployment monitor /home/jetty/jetty-distribution-7.2.2.v20101205/webapps at interval 1
2011-01-07 00:58:19.426:INFO::Deployment monitor /home/jetty/jetty-distribution-7.2.2.v20101205/contexts at interval 1
2011-01-07 00:58:19.432:INFO::Deployable added: /home/jetty/jetty-distribution-7.2.2.v20101205/contexts/test.xml
2011-01-07 00:58:19.568:INFO::Extract jar:file:/home/jetty/jetty-distribution-7.2.2.v20101205/webapps/test.war!/ to /tmp/jetty-0.0.0.0-8080-test.war-_-any-/webapp
2011-01-07 00:58:21.438:INFO:org.eclipse.jetty.servlets.TransparentProxy:TransparentProxy @ /javadoc to http://download.eclipse.org/jetty/stable-7/apidocs
2011-01-07 00:58:21.441:INFO::Deployable added: /home/jetty/jetty-distribution-7.2.2.v20101205/contexts/javadoc.xml
2011-01-07 00:58:21.523:INFO::Started SelectChannelConnector@0.0.0.0:8080
</pre>
<p>Une fois l&#8217;initialisation terminée, on peut se connecter sur <a href="http://localhost:8080">http://localhost:8080</a> pour afficher la page d&#8217;accueil de Jetty ainsi que quelques exemples.</p>
<p>On peut maintenant couper le serveur et quitter la session de l&#8217;utilisateur jetty.</p>
<h3>Déploiement de jetty en tant que service</h3>
<p>Pour démarrer Jetty en tant que service on utilise le script fourni dans le repertoire <code>bin</code>.</p>
<pre class="brush: plain; light: true; title: ; notranslate">
noirbizarre:~$ sudo cp /home/jetty/jetty7/bin/jetty.sh /etc/init.d/jetty
noirbizarre:~$ sudo chmod u+x /etc/init.d/jetty
</pre>
<p>Toutes les variables d&#8217;environnement sont à déclarer dans <code>/etc/default/jetty</code>.</p>
<pre class="brush: bash; title: /etc/default/jetty; notranslate">
JETTY_USER=jetty
JETTY_HOME=/home/$JETTY_USER/jetty7
</pre>
<pre class="brush: plain; light: true; title: ; notranslate">
noirbizarre:~$ sudo /etc/init.d/jetty check
Checking arguments to Jetty:
JETTY_HOME     =  /home/jetty/jetty7
JETTY_CONF     =  /home/jetty/jetty7/etc/jetty.conf
JETTY_RUN      =  /var/run
JETTY_PID      =  /var/run/jetty.pid
JETTY_PORT     =
JETTY_LOGS     =
START_INI      =  /home/jetty/jetty7/start.ini
CONFIGS        =  --pre=etc/jetty-logging.xml
JAVA_OPTIONS   =  -Djetty.home=/home/jetty/jetty7 -Djava.io.tmpdir=/tmp
JAVA           =  /usr/bin/java
CLASSPATH      =
RUN_CMD        =  /usr/bin/java -Djetty.home=/home/jetty/jetty7 -Djava.io.tmpdir=/tmp -jar /home/jetty/jetty7/start.jar --pre=etc/jetty-logging.xml
noirbizarre:~$ sudo /etc/init.d/jetty
Usage: jetty [-d] {start|stop|run|restart|check|supervise} [ CONFIGS ... ]
noirbizarre:~$ sudo /etc/init.d/jetty start
Starting Jetty: OK
noirbizarre:~$ sudo /etc/init.d/jetty stop
Stopping Jetty: OK
</pre>
<p>Une fois toutes les vérifications effectuées, pour lancer Jetty au démarrage du serveur:</p>
<pre class="brush: plain; light: true; title: ; notranslate">
noirbizarre:~$ sudo update-rc.d jetty defaults
</pre>
<h3>Installation de Hudson</h3>
<p>On installe Hudson avec l&#8217;utilisateur jetty en lui specifiant de travailler dans le répertoire <code>/home/jetty/hudson</code>:</p>
<pre class="brush: plain; gutter: false; title: ; notranslate">
noirbizarre:~$ echo 'export HUDSON_HOME=/home/$JETTY_USER/hudson' | sudo tee -a /etc/default/jetty
noirbizarre:~$ sudo -i -u jetty
jetty:~$ cd jetty7/webapps
jetty:~/jetty7/webapps$ wget http://mirrors.hudson-labs.org/war/latest/hudson.war
</pre>
<p>Il n&#8217;y a plus qu&#8217;a démarrer jetty et vérifier que <a href="http://localhost:8080/hudson">http://localhost:8080/hudson</a> affiche bien l&#8217;accueil de Hudson.</p>
]]></content:encoded>
			<wfw:commentRss>http://noirbizarre.info/2011/01/07/jetty-7-et-hudson-sous-debian-lenny/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>pip, virtualenv et virtualwrapper dans Cygwin</title>
		<link>http://noirbizarre.info/2010/12/10/pip-virtualenv-et-virtualwrapper-dans-cygwin/</link>
		<comments>http://noirbizarre.info/2010/12/10/pip-virtualenv-et-virtualwrapper-dans-cygwin/#comments</comments>
		<pubDate>Fri, 10 Dec 2010 17:24:20 +0000</pubDate>
		<dc:creator>noirbizarre</dc:creator>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[Mémentos]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[cygwin]]></category>
		<category><![CDATA[pip]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[virtualenv]]></category>

		<guid isPermaLink="false">http://noirbizarre.info/?p=186</guid>
		<description><![CDATA[Voici la marche à suivre pour installer Python, pip, virtualenv et virtualenvwrapper dans Cygwin (version 1.7.7-1 à ce jour). Python doit être installé via l&#8217;installeur de Cygwin. Pour installer pip, nous allons utiliser easy_install qui est fourni par setuptools (version 0.6c11 au moment où j&#8217;écris ces lignes). Pour trouver la dernière version en date correspondant à notre&#8230;]]></description>
			<content:encoded><![CDATA[<p>Voici la marche à suivre pour installer Python, pip, virtualenv et virtualenvwrapper dans Cygwin (version 1.7.7-1 à ce jour).</p>
<p>Python doit être installé via l&#8217;installeur de Cygwin.</p>
<p>Pour installer pip, nous allons utiliser easy_install qui est fourni par setuptools (version 0.6c11 au moment où j&#8217;écris ces lignes). Pour trouver la dernière version en date correspondant à notre version de Python (version 2.6.5 fournie par Cygwin), il faut se rendre sur <a href="http://pypi.python.org/pypi/setuptools#files">la page officielle</a>.</p>
<pre class="brush: plain; light: true; title: ; notranslate">
~$ wget http://pypi.python.org/packages/2.6/s/setuptools/setuptools-0.6c11-py2.6.egg
~$ sh setuptools-0.6c11-py2.6.egg
~$ easy_install pip
</pre>
<p>Une fois pip installé, il suffit de l&#8217;utiliser pour installer virtualenv et virtualenvwrapper</p>
<pre class="brush: plain; light: true; title: ; notranslate">~$ pip install virtualenv virtualenvwrapper</pre>
<p>On configure notre environnement dans .bashrc:</p>
<pre class="brush: bash; title: ~/.bashrc: declaration de l&#039;environnement; notranslate">
# Python pip / virtualenv / virtualenvwrapper
export WORKON_HOME=$HOME/.virtualenvs
export PIP_VIRTUALENV_BASE=$WORKON_HOME
export PIP_RESPECT_VIRTUALENV=true
source /usr/bin/virtualenvwrapper.sh
</pre>
<p>Ensuite, tout fonctionne comme dans <a href="http://noirbizarre.info/2010/07/10/pip-virtualenv-et-pydev/">cet article</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://noirbizarre.info/2010/12/10/pip-virtualenv-et-virtualwrapper-dans-cygwin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Git: l&#8217;essentiel</title>
		<link>http://noirbizarre.info/2010/12/06/git-lessentiel/</link>
		<comments>http://noirbizarre.info/2010/12/06/git-lessentiel/#comments</comments>
		<pubDate>Mon, 06 Dec 2010 16:23:53 +0000</pubDate>
		<dc:creator>noirbizarre</dc:creator>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[Mémentos]]></category>
		<category><![CDATA[git]]></category>

		<guid isPermaLink="false">http://www.noirbizarre.info/?p=10</guid>
		<description><![CDATA[Git est un scm qu&#8217;on ne présente plus. Bien que très pratique il peut se révéler très compliqué à utiliser. Les commandes de base Voici les commandes que j&#8217;utilise le plus: git commit : publie localement les changements. git checkout myBranch : change la branche courante pour myBranch. git checkout -b myNewBranch : crée la branche myNewBranch&#8230;]]></description>
			<content:encoded><![CDATA[<p>Git est un scm qu&#8217;on ne présente plus. Bien que très pratique il peut se révéler très compliqué à utiliser.</p>
<h3>Les commandes de base</h3>
<p>Voici les commandes que j&#8217;utilise le plus:</p>
<ul>
<li><strong>git commit</strong> : publie localement les changements.</li>
<li><strong>git checkout myBranch</strong> : change la branche courante pour myBranch.</li>
<li><strong>git checkout -b myNewBranch</strong> : crée la branche myNewBranch et la définie comme branche active.</li>
<li><strong>git branch</strong> : liste les branches locales.</li>
<li><strong>git branch -a</strong> : liste toutes les branches.</li>
<li><strong>git status</strong> : liste tous les changements non publiés.</li>
<li><strong>git stash</strong> :  met de côté tous les changements effectués depuis le dernier commit.</li>
<li><strong>git stash apply</strong> : restaure les changement mis de côté avec git stash.</li>
<li><strong>git log -n</strong> : liste les n derniers commits.</li>
</ul>
<h3>Le fichier ~/.gitconfig</h3>
<p>git gère 3 niveaux de configuration:</p>
<ol>
<li>Le niveau système dans <code>/etc/gitconfig</code> qui s&#8217;applique à tous les utilisateurs</li>
<li>Le niveau global dans <code>~/.gitconfig</code> qui s&#8217;applique à l&#8217;utilisateur courant</li>
<li>Le niveau dépôt dans <code>$GIT_REPO/.git/config</code> qui s&#8217;applique uniquement au repository courant</li>
</ol>
<p>Celui qui nous intéresse en l’occurrence est le niveau global.</p>
<p>Pour commencer, il va contenir la section user permettant de nous identifier:</p>
<pre class="brush: plain; title: ~/.gitconfig; notranslate">
[user]
name = Axel H.
email = noirbizarre@gmail.com
</pre>
<p>Pour certains projet, il pourra être intéressant de modifier ces informations d&#8217;identification.</p>
<p>Ces informations pourront être spécifiées directement depuis le shell:</p>
<pre class="brush: plain; light: true; title: ; notranslate">
~$ git config --global user.name &quot;Axel H.&quot;
~$ git config --global user.email noirbizarre@gmail.com
</pre>
<p>D&#8217;autres options pourront être ajoutées, telle que la coloration:</p>
<pre class="brush: plain; title: ~/.gitconfig; notranslate">
[color]
diff = auto
status = auto
branch = auto
interactive = auto
ui = true
pager = true
</pre>
<p>ou encore des alias:</p>
<pre class="brush: plain; title: ~/.gitconfig; notranslate">
[alias]
co = checkout
ci = commit
st = status
br = branch
</pre>
<p>Avec ces alias on pourra tapper:</p>
<pre class="brush: plain; light: true; title: ; notranslate">
~$ git co mabranch
~$ git ci -m &quot;Mon commentaire&quot;
~$ git st
</pre>
<p>Il est possible de trouver énormément d&#8217;options à rajouter dans <code>~/.gitconfig</code> sur la web, notemment sur <a href="http://stackoverflow.com/">StackOverflow</a>, et particulièrement <a href="http://stackoverflow.com/questions/267761/what-does-your-gitconfig-contain">ce thread</a>.</p>
<p>Comme d&#8217;habitude, pas de secrets, tout est dans le <a href="http://www.kernel.org/pub/software/scm/git/docs/git-config.html">man</a>.</p>
<h3>Le fichier .gitignore</h3>
<p>Le fichier .gitignore permet de spécifier une liste de fichiers qui ne seront jamais pris en compte par git.</p>
<p>Je ne referais pas la documentation officielle, mais ce qu&#8217;il faut retenir c&#8217;est:</p>
<ul>
<li>Les lignes commençant par # sont des commentaires</li>
<li>le ! permet de prendre la négation d&#8217;un pattern</li>
<li>le / en début de pattern spécifie la racine par rapport au fichier .gitignore</li>
<li>le / en fin de pattern spécifie un répertoire et tous ses sous répertoires</li>
<li>tous les <a href="http://en.wikipedia.org/wiki/Glob_(programming)">shell glob patterns</a> sont pris en charge</li>
</ul>
<p>Pour une documentation complète sur gitignore, la <a href="http://www.kernel.org/pub/software/scm/git/docs/gitignore.html">page man</a> reste la référence.</p>
<p>Il est possible de spécifier un .gitignore global, par exemple:</p>
<pre class="brush: plain; light: true; title: ; notranslate">
~$ echo &quot;*~&quot; &gt;&gt; ~/.gitignore
~$ echo &quot;*.swp&quot; &gt;&gt; ~/.gitignore
~$ echo &quot;*.pyc&quot; &gt;&gt; ~/.gitignore
~$ git config --global core.excludesfile ~/.gitignore
</pre>
<p>Cela permet d&#8217;éviter de ressaisir les fichiers qui sont toujours à exclure de git (fichiers temporaires, produits de compilation, &#8230;.).</p>
]]></content:encoded>
			<wfw:commentRss>http://noirbizarre.info/2010/12/06/git-lessentiel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dokuwiki et Cherokee</title>
		<link>http://noirbizarre.info/2010/12/04/dokuwiki-et-cherokee/</link>
		<comments>http://noirbizarre.info/2010/12/04/dokuwiki-et-cherokee/#comments</comments>
		<pubDate>Sat, 04 Dec 2010 15:09:03 +0000</pubDate>
		<dc:creator>noirbizarre</dc:creator>
				<category><![CDATA[Admin]]></category>
		<category><![CDATA[cherokee]]></category>
		<category><![CDATA[dokuwiki]]></category>
		<category><![CDATA[url rewrite]]></category>

		<guid isPermaLink="false">http://noirbizarre.info/?p=131</guid>
		<description><![CDATA[Pour faire tourner une installation secure de dokuwiki dans Cherokee avec les spécifications suivantes: Accessible depuis https://wiki.noirbizarre.info/ uniquement https à la racine du domaine certificat autosigné Récriture des URLs propres DocumentRoot situé dans /var/www/noirbizarre.info/wiki Logs situés dans /var/logs/cherokee/noirbizarre.info (wiki.access et wiki.errors) Ce tutoriel a été rédigé pour une version 1.0.8 de Cherokee tournant sous Debian&#8230;]]></description>
			<content:encoded><![CDATA[<p>Pour faire tourner une installation secure de dokuwiki dans Cherokee avec les spécifications suivantes:</p>
<ul>
<li>Accessible depuis https://wiki.noirbizarre.info/
<ul>
<li>uniquement https</li>
<li>à la racine du domaine</li>
<li>certificat autosigné</li>
</ul>
</li>
<li>Récriture des URLs propres</li>
<li>DocumentRoot situé dans /var/www/noirbizarre.info/wiki</li>
<li>Logs situés dans /var/logs/cherokee/noirbizarre.info (wiki.access et wiki.errors)</li>
</ul>
<p>Ce tutoriel a été rédigé pour une version 1.0.8 de Cherokee tournant sous Debian Lenny. Les libellés et les screenshots peuvent varier d&#8217;une version à l&#8217;autre.</p>
<h2>Installation du wiki</h2>
<p>Pour commencer on récupère la dernière version de dokuwiki <a title="DokuWiki" href="http://www.splitbrain.org/projects/dokuwiki">ici</a> et on crée l&#8217;arborescence nécéssaire.</p>
<pre class="brush: plain; light: true; title: ; notranslate">
~$ wget http://www.splitbrain.org/_media/projects/dokuwiki/dokuwiki-2010-11-07.tgz
~$ sudo mkdir -p /var/www/noirbizarre.info
~$ tar xvzf ﻿dokuwiki-2010-11-07.tgz
~$ sudo mv dokuwiki-2010-11-07 /var/www/noirbizarre.info/wiki
~$ sudo chown -R www-data:www-data /var/www/noirbizarre.info/wiki
~$ sudo mkdir -p /var/log/cherokee/noirbizarre.info
~$ sudo chown -R www-data:www-data /var/log/cherokee/noirbizarre.info
</pre>
<h3>Génération du certificat</h3>
<p>Pour cet exemple, nous allons utilisé un certificat autosigné. Il permet de crypter la communication mais le fait qu&#8217;il soit auto signé ne permet d&#8217;authentifier l&#8217;hôte distant. OpenSSL doit être installé pour cette étape. En répondant aux questions, on s&#8217;assurera que Common Name est bien rempli avec le nom de domaine (Cherokee s&#8217;en sert pour le routage).</p>
<pre class="brush: plain; light: true; title: ; notranslate">
~$ openssl req -new -x509 -nodes -out wiki.crt -keyout wiki.key -days 3650
Generating a 1024 bit RSA private key
...............................................++++++
.++++++
writing new private key to 'wiki.key'
-----
You are about to be asked to enter information that will be incorporated into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:FR
State or Province Name (full name) [Some-State]:France
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:noirbizarre.info
Organizational Unit Name (eg, section) []:WiKi
Common Name (eg, YOUR name) []:wiki.noirbizarre.info
Email Address []:
~$ mv wiki.crt wiki.key /var/www/noirbizarre.info
</pre>
<h3>Création du vServer</h3>
<p>Pour cette étape, nous considérons que Cherokee est installé, fonctionnel, configuré pour géré le SSL sur le port 443 et tourne avec les droits de www-data:www-data.</p>
<p>On se connecte sur l&#8217;interface d&#8217;administration via localhost:9090.</p>
<p>On crée un nouveau vServer nommé <em>wiki.noirbizarre.info</em> et ayant pour DocumentRoot <em>/var/www/noirbizarre.info/wiki</em>.</p>
<div id="attachment_143" class="wp-caption aligncenter" style="width: 525px"><a href="http://noirbizarre.info/wp-content/uploads/2010/12/wiki_new_vserver.png"><img class="size-full wp-image-143 " title="wiki_new_vserver" src="http://noirbizarre.info/wp-content/uploads/2010/12/wiki_new_vserver.png" alt="Ajout d'un vServer" width="515" height="322" /></a><p class="wp-caption-text">Ajout d&#39;un vServer pour le wiki</p></div>
<p>Le nom du vServer est important, il permet à Cherokee de router les requetes vers le bon vServer.</p>
<h4>Gestion des logs</h4>
<p>Dans l&#8217;onglet journalisation du vServer créé, spécifier:</p>
<ul>
<li>Dans <strong>Error Logging</strong>:
<ul>
<li><strong>Write errors to</strong>: <em>fichier</em></li>
<li><strong>Nom de fichier</strong>: <em>/var/log/cherokee/noirbizarre.info/wiki.errors</em></li>
</ul>
</li>
<li>Dans <strong>Access Logging</strong>:
<ul>
<li><strong>Nom de fichier</strong>: <em>/var/log/cherokee/noirbizarre.info/wiki.access</em></li>
</ul>
</li>
</ul>
<div id="attachment_148" class="wp-caption aligncenter" style="width: 472px"><a href="http://noirbizarre.info/wp-content/uploads/2010/12/wiki_journalisation.png"><img class="size-full wp-image-148 " title="wiki_journalisation" src="http://noirbizarre.info/wp-content/uploads/2010/12/wiki_journalisation.png" alt="Journalisation" width="462" height="491" /></a><p class="wp-caption-text">Gestion des logs</p></div>
<h4>Gestion du SSL</h4>
<p>Sur l&#8217;onglet sécurité on spécifie les chemins des fichiers .crt et .key générés.</p>
<div id="attachment_152" class="wp-caption aligncenter" style="width: 471px"><a href="http://noirbizarre.info/wp-content/uploads/2010/12/wiki_certificats.png"><img class="size-full wp-image-152 " title="wiki_certificats" src="http://noirbizarre.info/wp-content/uploads/2010/12/wiki_certificats.png" alt="Sécurité" width="461" height="315" /></a><p class="wp-caption-text">Gestion des certificats</p></div>
<h4>Règles de gestion</h4>
<p>Sur l&#8217;onglet <em><strong>Behavior</strong></em>, on clique sur <strong><em>Rule Management</em></strong> pour ouvrir le gestionnaire de règle et on supprimer les 2 règles <strong><em>Contenu statique</em></strong> créées par défaut de façon à ne garder que la règle <strong><em>Par défaut</em></strong>.</p>
<p>Nous allons maintenant modifier la règle <strong><em>Par défaut</em></strong> pour lui faire prendre en charge les redirections et ajouter 3 règles supplémentaires:</p>
<ul>
<li>Gestion du contenu statique</li>
<li>Gestion du php</li>
<li>Redirection vers https</li>
</ul>
<h5>Règle Par défaut</h5>
<p>Sur l&#8217;onglet <strong><em>Gestionnaire</em></strong>, on choisit <strong><em>Redirection</em></strong> dans la liste déroulante et on rentre les règles internes suivantes:</p>
<ul>
<li>^/_media/([^/]+)\?(.+)$ → /lib/exe/fetch.php?media=$1&amp;$2</li>
<li>^/_media/([^/]+)$ → /lib/exe/fetch.php?media=$1</li>
<li>^/_detail/([^/]+)\?(.+)$ → /lib/exe/detail.php?media=$1&amp;$2</li>
<li>^/_detail/([^/]+)$ → /lib/exe/detail.php?media=$1</li>
<li>^/_export/([^/]+)/(.*)$ → /doku.php?do=export_$1&amp;id=$2</li>
<li>^/$ → /doku.php</li>
<li>^/\?([^/]+)$ → /doku.php?$1</li>
<li>^/([^/]+)\?(.*)$ → /doku.php?id=$1&amp;$2</li>
<li>^/([^/]+)$ → /doku.php?id=$1</li>
</ul>
<div id="attachment_158" class="wp-caption aligncenter" style="width: 473px"><a href="http://noirbizarre.info/wp-content/uploads/2010/12/wiki_regex.png"><img class="size-full wp-image-158 " title="wiki_regex" src="http://noirbizarre.info/wp-content/uploads/2010/12/wiki_regex.png" alt="Règles de redirection" width="463" height="396" /></a><p class="wp-caption-text">Règles de redirection</p></div>
<p>L&#8217;ordre est important puisque Cherokee s’arrêtera à la première règle qui match.</p>
<p>On pourra aussi autoriser la compression <strong><em>gzip</em></strong> et <strong><em>deflate</em></strong> depuis l&#8217;onglet <strong>Encodage</strong> pour optimiser les transferts, et ce pour chaque règle que l&#8217;on rajoute.</p>
<div id="attachment_157" class="wp-caption aligncenter" style="width: 473px"><a href="http://noirbizarre.info/wp-content/uploads/2010/12/wiki_compression.png"><img class="size-full wp-image-157 " title="wiki_compression" src="http://noirbizarre.info/wp-content/uploads/2010/12/wiki_compression.png" alt="Encodage" width="463" height="168" /></a><p class="wp-caption-text">Encodage</p></div>
<h5>Contenu statique</h5>
<p>On va spécifier à Cherokee  que le fichier favicon.ico et le repertoire /lib sont du contenu statique et qu&#8217;il doit le traiter comme tel.</p>
<p>On rajoute alors la règle et le handler correspondant.</p>
<div id="attachment_159" class="wp-caption aligncenter" style="width: 489px"><a href="http://noirbizarre.info/wp-content/uploads/2010/12/wiki_static_rule.png"><img class="size-full wp-image-159 " title="wiki_static_rule" src="http://noirbizarre.info/wp-content/uploads/2010/12/wiki_static_rule.png" alt="Règle de contenu statique" width="479" height="519" /></a><p class="wp-caption-text">Règle de contenu statique</p></div>
<div id="attachment_160" class="wp-caption aligncenter" style="width: 472px"><a href="http://noirbizarre.info/wp-content/uploads/2010/12/wiki_static_handler.png"><img class="size-full wp-image-160 " title="wiki_static_handler" src="http://noirbizarre.info/wp-content/uploads/2010/12/wiki_static_handler.png" alt="Gestionnaire de contenu statique" width="462" height="273" /></a><p class="wp-caption-text">Gestionnaire de contenu statique</p></div>
<p>Il n&#8217;est pas nécéssaire de respécifier le DocumentRoot puisque celui du vServer est repris par défaut.</p>
<h5>Prise en charge du php</h5>
<p>Pour cette étape, on considère que php5 et php5-cgi sont installés.</p>
<p>On rajoute maintenant une règle extension pour capter tous les appels de fichiers php.</p>
<p>Pour cela, Cherokee fourni un assitant qui créée automatiquement la règle. On pourra personnaliser les valeurs, comme par exemple l&#8217;encodage, ou encore la prise en charge de fcgi.</p>
<div id="attachment_162" class="wp-caption aligncenter" style="width: 526px"><a href="http://noirbizarre.info/wp-content/uploads/2010/12/wiki_php_support.png"><img class="size-full wp-image-162 " title="wiki_php_support" src="http://noirbizarre.info/wp-content/uploads/2010/12/wiki_php_support.png" alt="Assistant php" width="516" height="323" /></a><p class="wp-caption-text">Assistant php</p></div>
<p>Il faut ensuite passer la règle en status <strong><em>FINAL</em></strong> en cliquant sur <strong><em>NON FINAL</em></strong> dans la liste des règles à gauche.</p>
<div id="attachment_163" class="wp-caption aligncenter" style="width: 249px"><a href="http://noirbizarre.info/wp-content/uploads/2010/12/wiki_rules_list.png"><img class="size-full wp-image-163" title="wiki_rules_list" src="http://noirbizarre.info/wp-content/uploads/2010/12/wiki_rules_list.png" alt="Liste des règles" width="239" height="173" /></a><p class="wp-caption-text">Liste des règles et leur statut</p></div>
<h5>Redirection vers HTTPS</h5>
<p>Cette dernière règle va automatiquement rediriger l&#8217;utilisateur sur la version sécurisée du site.</p>
<p>Pour cela on rajoute une règle <strong><em>SSL/TLS</em></strong> dont on va prendre la négation et on y affecte un handler de <strong>redirection externe </strong>(visible par l&#8217;utilisateur).</p>
<div id="attachment_165" class="wp-caption aligncenter" style="width: 502px"><a href="http://noirbizarre.info/wp-content/uploads/2010/12/wiki_not_ssl.png"><img class="size-full wp-image-165 " title="wiki_not_ssl" src="http://noirbizarre.info/wp-content/uploads/2010/12/wiki_not_ssl.png" alt="Règle &quot;n'est pas SSL&quot;" width="492" height="237" /></a><p class="wp-caption-text">Règle &quot;n&#39;est pas SSL&quot;</p></div>
<div id="attachment_166" class="wp-caption aligncenter" style="width: 476px"><a href="http://noirbizarre.info/wp-content/uploads/2010/12/wiki_not_ssl_redirect.png"><img class="size-full wp-image-166 " title="wiki_not_ssl_redirect" src="http://noirbizarre.info/wp-content/uploads/2010/12/wiki_not_ssl_redirect.png" alt="Redirection vers la version sécurisée" width="466" height="238" /></a><p class="wp-caption-text">Redirection vers la version sécurisée</p></div>
<h3>Premier accès</h3>
<p>Nous pouvons maintenant enregistrer nos changements et rédémarrer Cherokee.</p>
<div id="attachment_167" class="wp-caption aligncenter" style="width: 373px"><a href="http://noirbizarre.info/wp-content/uploads/2010/12/cherokee_restart.png"><img class="size-full wp-image-167 " title="cherokee_restart" src="http://noirbizarre.info/wp-content/uploads/2010/12/cherokee_restart.png" alt="Redémarrage de Cherokee" width="363" height="120" /></a><p class="wp-caption-text">Redémarrage de Cherokee</p></div>
<p>Nous pouvons maintenant accéder à https://wiki.noirbizarre.info/install.php et suivre la procédure d&#8217;installation. Il faut pour cela que votre serveur DNS redirige bien wiki.noirbizarre.info vers votre serveur.</p>
<p>Un message d&#8217;avertissement nous signalera que notre certificat n&#8217;est pas sur puisqu&#8217;il est autosigné.</p>
<div id="attachment_170" class="wp-caption aligncenter" style="width: 504px"><a href="http://noirbizarre.info/wp-content/uploads/2010/12/dokuwiki_installer.png"><img class="size-full wp-image-170" title="dokuwiki_installer" src="http://noirbizarre.info/wp-content/uploads/2010/12/dokuwiki_installer.png" alt="Installation de dokuwiki" width="494" height="247" /></a><p class="wp-caption-text">Installation de dokuwiki</p></div>
<p>Une fois l&#8217;installation effectuée, authentifiez vous et dans les paramètres de configurations spécifier les <strong><em>URLs esthétiques</em></strong> sur <strong><em>.htaccess</em></strong>.</p>
<div id="attachment_171" class="wp-caption aligncenter" style="width: 473px"><a href="http://noirbizarre.info/wp-content/uploads/2010/12/wiki_urlparam.png"><img class="size-full wp-image-171 " title="wiki_urlparam" src="http://noirbizarre.info/wp-content/uploads/2010/12/wiki_urlparam.png" alt="URLs esthétiques" width="463" height="86" /></a><p class="wp-caption-text">URLs esthétiques</p></div>
<p>Et voilà, vous pouvez maintenant tester la redirection HTTPS et les URLs esthétiques. Tout fonctionne correctement.</p>
]]></content:encoded>
			<wfw:commentRss>http://noirbizarre.info/2010/12/04/dokuwiki-et-cherokee/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>pip, virtualenv, virtualenvwrapper et pydev</title>
		<link>http://noirbizarre.info/2010/07/10/pip-virtualenv-et-pydev/</link>
		<comments>http://noirbizarre.info/2010/07/10/pip-virtualenv-et-pydev/#comments</comments>
		<pubDate>Sat, 10 Jul 2010 18:51:44 +0000</pubDate>
		<dc:creator>noirbizarre</dc:creator>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[pip]]></category>
		<category><![CDATA[pydev]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[virtualenv]]></category>

		<guid isPermaLink="false">http://www.noirbizarre.info/?p=35</guid>
		<description><![CDATA[L&#8217;une des difficultés majeures du développement aujourd&#8217;hui est la gestion des dépendances et en particulier pour Python l&#8217;isolement de l&#8217;environnement de développement. Pour résoudre ce problème, nous allons utiliser : pip: un remplaçant d&#8217;easy_install bien plus complet. virtualenv: permet d&#8217;instancier des environnements python isolés. virtualenvwrapper: facilite l&#8217;utilisation de virtualenv ﻿Installation des outils de développement Si ce n&#8217;est déjà fait,&#8230;]]></description>
			<content:encoded><![CDATA[<p>L&#8217;une des difficultés majeures du développement aujourd&#8217;hui est la gestion des dépendances et en particulier pour Python l&#8217;isolement de l&#8217;environnement de développement.</p>
<p>Pour résoudre ce problème, nous allons utiliser :</p>
<ul>
<li><a title="pip" href="http://pip.openplans.org/">pip</a>: un remplaçant d&#8217;easy_install bien plus complet.</li>
<li><a title="virtualenv" href="http://virtualenv.openplans.org/">virtualenv</a>: permet d&#8217;instancier des environnements python isolés.</li>
<li><a href="http://www.doughellmann.com/projects/virtualenvwrapper/">virtualenvwrapper</a>: facilite l&#8217;utilisation de virtualenv</li>
</ul>
<h3>﻿Installation des outils de développement</h3>
<p>Si ce n&#8217;est déjà fait, il faut installer un environnement de développement python classique:</p>
<pre class="brush: plain; light: true; title: ; notranslate">~$ sudo aptitude install python-setuptools python-dev build-essential</pre>
<p>Nous installons la dernière version de pip:</p>
<pre class="brush: plain; light: true; title: ; notranslate">~$ sudo easy_install pip</pre>
<p>Puis nous installons virtualenv et virtualenvwrapper</p>
<pre class="brush: plain; light: true; title: ; notranslate">~$ sudo pip install virtualenv virtualenvwrapper</pre>
<p>Il faut maintenant configurer notre environnement en ajoutant au fichier ~/.bahrc</p>
<pre class="brush: bash; title: ~/.bashrc: déclaration de l&#039;environnement; notranslate">
# Python pip / virtualenv / virtualenvwrapper
export WORKON_HOME=$HOME/.virtualenvs
export PIP_VIRTUALENV_BASE=$WORKON_HOME
export PIP_RESPECT_VIRTUALENV=true
source /usr/local/bin/virtualenvwrapper.sh
</pre>
<p>Puis nous initialisons l&#8217;environnement:</p>
<pre class="brush: plain; light: true; title: ; notranslate">
~$ mkdir ~/.virtualenvs
~$ source ~/.bashrc
virtualenvwrapper.user_scripts Creating /home/noirbizarre/.virtualenvs/initialize
virtualenvwrapper.user_scripts Creating /home/noirbizarre/.virtualenvs/premkvirtualenv
virtualenvwrapper.user_scripts Creating /home/noirbizarre/.virtualenvs/postmkvirtualenv
virtualenvwrapper.user_scripts Creating /home/noirbizarre/.virtualenvs/prermvirtualenv
virtualenvwrapper.user_scripts Creating /home/noirbizarre/.virtualenvs/postrmvirtualenv
virtualenvwrapper.user_scripts Creating /home/noirbizarre/.virtualenvs/predeactivate
virtualenvwrapper.user_scripts Creating /home/noirbizarre/.virtualenvs/postdeactivate
virtualenvwrapper.user_scripts Creating /home/noirbizarre/.virtualenvs/preactivate
virtualenvwrapper.user_scripts Creating /home/noirbizarre/.virtualenvs/postactivate
virtualenvwrapper.user_scripts Creating /home/noirbizarre/.virtualenvs/get_env_details
</pre>
<p>Nous sommes maintenant prêts à instancier notre premier environnement.</p>
<h3>Création d&#8217;un environnement isolé</h3>
<p>Il suffit maintenant d&#8217;utiliser la commande <strong>mkvirtualenv</strong>.</p>
<pre class="brush: plain; light: true; title: ; notranslate">
~$ mkvirtualenv --no-site-packages myenv
New python executable in myenv/bin/python
Installing setuptools............done.
virtualenvwrapper.user_scripts Creating /home/noirbizarre/.virtualenvs/myenv/bin/predeactivate
virtualenvwrapper.user_scripts Creating /home/noirbizarre/.virtualenvs/myenv/bin/postdeactivate
virtualenvwrapper.user_scripts Creating /home/noirbizarre/.virtualenvs/myenv/bin/preactivate
virtualenvwrapper.user_scripts Creating /home/noirbizarre/.virtualenvs/myenv/bin/postactivate
virtualenvwrapper.user_scripts Creating /home/noirbizarre/.virtualenvs/myenv/bin/get_env_details
(myenv)~$
</pre>
<p>L&#8217;option <strong>&#8211;no-site-packages</strong> permet d&#8217;avoir une installation de python nue, c&#8217;est à dire sans aucune des dépendances python ajoutées dans l&#8217;installation courante.</p>
<h3>Utilisation en ligne de commande</h3>
<p>Une fois l&#8217;environnement actif, le prompt du shell est préfixé par &laquo;&nbsp;(nom de l&#8217;environnement)&nbsp;&raquo;.</p>
<p>Pour désactiver l&#8217;environnement, il suffit d&#8217;executer:</p>
<pre class="brush: plain; light: true; title: ; notranslate">
(myenv)~$ deactivate
~$
</pre>
<p>Pour réactiver l&#8217;environnement il suffit d&#8217;executer</p>
<pre class="brush: plain; light: true; title: ; notranslate">
~$ workon myenv
(myenv)~$
</pre>
<p>La liste complète des commandes de virtualenvwrapper est disponible <a href="http://www.doughellmann.com/docs/virtualenvwrapper/command_ref.html">ici</a>.</p>
<h3>Utilisation dans Eclipse/Pydev</h3>
<p>Pour utiliser cet environnement dans eclipse avec Pydev il suffit d&#8217;aller dans <strong>Preferences &gt; Pydev &gt; Interpreter Python </strong>et d&#8217;ajouter l&#8217;executable python qui correspond, dans notre cas ﻿﻿﻿<strong>~/.virtualenvs/myenv/bin/python</strong>.</p>
<p><a href="http://www.noirbizarre.info/wp-content/uploads/2010/07/virtualenv_pydev_eclipse.png"><img class="alignnone size-medium wp-image-52" title="virtualenv_pydev_eclipse" src="http://www.noirbizarre.info/wp-content/uploads/2010/07/virtualenv_pydev_eclipse-300x241.png" alt="Configuration de l'executable python" width="300" height="241" /></a></p>
<p>Sur l&#8217;écran qui apparait ensuite, il ne faut selectionner que les chemin qui correspondent à notre environnement (ceux commençant par ﻿~<strong>/.virtualenvs/myenv/</strong><strong>).</strong></p>
<p><a href="http://www.noirbizarre.info/wp-content/uploads/2010/07/Selection-Needed.png"><img class="alignnone size-medium wp-image-53" title="Selection Needed" src="http://www.noirbizarre.info/wp-content/uploads/2010/07/Selection-Needed-300x268.png" alt="Sélection des chemins" width="300" height="268" /></a></p>
<p>L&#8217;environnement apparait ensuite dans la liste des environnement disponibles.</p>
<p><a href="http://www.noirbizarre.info/wp-content/uploads/2010/07/Preferences_env_pydev.png"><img class="alignnone size-medium wp-image-54" title="Preferences_env_pydev" src="http://www.noirbizarre.info/wp-content/uploads/2010/07/Preferences_env_pydev-300x242.png" alt="Préférences Pydev de l'interpreteur python" width="300" height="242" /></a></p>
<p>Il suffit ensuite de le sélectionner dans les préférences des projets concernés.</p>
<p><a href="http://www.noirbizarre.info/wp-content/uploads/2010/07/myproject_pydev_interpreter.png"><img class="alignnone size-medium wp-image-55" title="myproject_pydev_interpreter" src="http://www.noirbizarre.info/wp-content/uploads/2010/07/myproject_pydev_interpreter-300x221.png" alt="Sélection de l'interpréteur python d'un projet" width="300" height="221" /></a></p>
<h3>Utilisation de pip</h3>
<p>Lorsque l&#8217;environnement est actif, pip s&#8217;utilise comme apt/aptitude.</p>
<pre class="brush: plain; light: true; title: ; notranslate">
# Recherche de paquets
(myenv)~$ pip search mypackage

# Installation d'un paquet
(myenv)~$ pip install mypackage
</pre>
<p>Lorsque l&#8217;environnement est inactif, il est possible de specifier à pip un environnement pour l&#8217;installation avec l&#8217;option -E:</p>
<pre class="brush: plain; light: true; title: ; notranslate">~$ pip install -E myenv mypackage</pre>
<p>Il est possible de dumper tous les modules installé dans un fichier:</p>
<pre class="brush: plain; light: true; title: ; notranslate">~$ pip freeze &gt; requirements</pre>
<p>Puis de les recharger d&#8217;un coup dans un autre environnement:</p>
<pre class="brush: plain; light: true; title: ; notranslate">~$ pip install -r requirements</pre>
<p>Pour plus de détails sur l&#8217;utilisation de pip, la <a href="http://pip.openplans.org/">page officielle</a> fait office de documentation.</p>
]]></content:encoded>
			<wfw:commentRss>http://noirbizarre.info/2010/07/10/pip-virtualenv-et-pydev/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

