<?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>Thibaut LE LEVIER</title>
	<atom:link href="http://blog.lelevier.fr/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.lelevier.fr</link>
	<description></description>
	<lastBuildDate>Fri, 27 Aug 2010 00:31:58 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>L&#8217;astuce du jour: install des packets avec Gem sans documentation</title>
		<link>http://blog.lelevier.fr/lastuce-du-jour-install-des-packets-avec-gem-sans-documentation/</link>
		<comments>http://blog.lelevier.fr/lastuce-du-jour-install-des-packets-avec-gem-sans-documentation/#comments</comments>
		<pubDate>Fri, 27 Aug 2010 00:31:58 +0000</pubDate>
		<dc:creator>Thibaut</dc:creator>
				<category><![CDATA[Redmine]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[gem]]></category>
		<category><![CDATA[redmine]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[ruby on rails]]></category>

		<guid isPermaLink="false">http://blog.lelevier.fr/?p=330</guid>
		<description><![CDATA[Pour gagner du temps, de la place, du débit&#8230; et tout ce que vous voulez, il n&#8217;est pas souvent utile d&#8217;installer la documentation ri (documentation en ligne de commande) et/ou rdoc (documentation aux &#171;&#160;normes&#160;&#187; ruby) qui accompagne les packets gems déployé sur un serveur de prod. On va donc pouvoir installer notre packet de la [...]]]></description>
			<content:encoded><![CDATA[<p>Pour gagner du temps, de la place, du débit&#8230; et tout ce que vous voulez, il n&#8217;est pas souvent utile d&#8217;installer la documentation ri (documentation en ligne de commande) et/ou rdoc (documentation aux &laquo;&nbsp;normes&nbsp;&raquo; ruby) qui accompagne les packets gems déployé sur un serveur de prod.</p>
<p>On va donc pouvoir installer notre packet de la manier suivante (ici rails en exemple):</p>
<p>$ gem install rails &#8211;no-rdoc &#8211;no-ri</p>
<p>my 2 cents&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lelevier.fr/lastuce-du-jour-install-des-packets-avec-gem-sans-documentation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SVN: Gestion des dépendances externes</title>
		<link>http://blog.lelevier.fr/svn-externals/</link>
		<comments>http://blog.lelevier.fr/svn-externals/#comments</comments>
		<pubDate>Thu, 05 Aug 2010 16:13:15 +0000</pubDate>
		<dc:creator>Thibaut</dc:creator>
				<category><![CDATA[Gestion de Projets]]></category>
		<category><![CDATA[Svn]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[gestion de projet]]></category>
		<category><![CDATA[ligne de commande]]></category>
		<category><![CDATA[management]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[zend framework]]></category>

		<guid isPermaLink="false">http://blog.lelevier.fr/?p=267</guid>
		<description><![CDATA[Le versionning de vos projets de développement est une chose essentielle pour garantir la sécurité et la tenu à jour de vos sources entre développeurs. Si l&#8217;intégralité des sources de votre projet peut être place sur un seul et unique dépôt, il arrive souvent que votre application soit dépendante d&#8217;un framework ou de quelques librairies [...]]]></description>
			<content:encoded><![CDATA[<p>Le versionning de vos projets de développement est une chose essentielle pour garantir la sécurité et la tenu à jour de vos sources entre développeurs.</p>
<p>Si l&#8217;intégralité des sources de votre projet peut être place sur un seul et unique dépôt, il arrive souvent que votre application soit dépendante d&#8217;un framework ou de quelques librairies importé d&#8217;un autre projet et souvent d&#8217;un autre dépôt SVN.</p>
<p>Il est donc relativement lourd est contraignant de devoir stocker et versionner les fichiers de ces sources externes qui ne seront de toute façon pas à jour par rapport au dépôt sur lequel vous l&#8217;aurez récupéré.<br />
Prenons l&#8217;exemple d&#8217;un projet PHP utilisant Zend Framework.<br />
Nous avons déjà mis en place la structure MVC du projet et nous l&#8217;avons importé vers notre dépôt SVN.</p>
<p style="text-align: center;"><img class="size-medium wp-image-269 aligncenter" title="Screen shot 2010-08-05 at 17.56.08" src="http://blog.lelevier.fr/wp-content/uploads/2010/08/Screen-shot-2010-08-05-at-17.56.08-300x188.png" alt="" width="300" height="188" /></p>
<p>Nous souhaitons ajouter le Framework à jour dans le dossier /library à partir du dépôt officiel: http://framework.zend.com/svn/framework/standard/branches/release-1.9/library/</p>
<p>Commencez donc par vous placer dans le dossier /library en ligne de commande.</p>
<p>Pour déclarer notre dépôt externe nous allons utiliser la propriété &laquo;&nbsp;externals&nbsp;&raquo;  à l&#8217;aide de la fonction &laquo;&nbsp;propset&nbsp;&raquo; de SVN.</p>
<blockquote><p>svn propset svn:externals &laquo;&nbsp;http://framework.zend.com/svn/framework/standard/branches/release-1.9/library/Zend Zend&nbsp;&raquo; .</p></blockquote>
<p>Le point passé en dernier argument précise que nous déclarons cette propriété dans le dossier courant, ne l&#8217;oubliez surtout pas!</p>
<p>SVN nous répond alors: property &#8216;svn:externals&#8217; set on &#8216;.&#8217;<br />
Il ne nous reste plus qu&#8217;a faire un &laquo;&nbsp;svn up&nbsp;&raquo; pour mettre à jour la copie locale et récupérer ainsi une copie à jour du Framework sans que celui si soit stocké sur votre dépôt.</p>
<p style="text-align: center;"><img class="size-medium wp-image-270 aligncenter" title="Screen shot 2010-08-05 at 18.09.42" src="http://blog.lelevier.fr/wp-content/uploads/2010/08/Screen-shot-2010-08-05-at-18.09.42-300x228.png" alt="" width="300" height="228" /></p>
<p>Votre projet sera maintenant à jour à chaque mise à jour et vous voilà affranchis de toute maintenance sur vos sources externes.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lelevier.fr/svn-externals/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mettre à jour son instance Redmine</title>
		<link>http://blog.lelevier.fr/mettre-a-jour-redmine/</link>
		<comments>http://blog.lelevier.fr/mettre-a-jour-redmine/#comments</comments>
		<pubDate>Mon, 19 Jul 2010 01:11:46 +0000</pubDate>
		<dc:creator>Thibaut</dc:creator>
				<category><![CDATA[Gestion de Projets]]></category>
		<category><![CDATA[Redmine]]></category>
		<category><![CDATA[gestion de projet]]></category>
		<category><![CDATA[hebergement]]></category>
		<category><![CDATA[management]]></category>
		<category><![CDATA[mise à jour]]></category>
		<category><![CDATA[redmine]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[ruby on rails]]></category>
		<category><![CDATA[update]]></category>

		<guid isPermaLink="false">http://blog.lelevier.fr/?p=250</guid>
		<description><![CDATA[Aujourd&#8217;hui est un grand jour pour le projet Redmine, la sortie de la première release candidate: Redmine version 1.0 Depuis 6 semaines la priorité est aux corrections de bugs et les évolutions sont mises de coté. Voici donc l&#8217;occasion de parler mise à jour! Partons donc du principe que nous avons une instance de Redmine [...]]]></description>
			<content:encoded><![CDATA[<p>Aujourd&#8217;hui est un grand jour pour le projet Redmine, la sortie de la première release candidate: Redmine version 1.0</p>
<p>Depuis 6 semaines la priorité est aux corrections de bugs et les évolutions sont mises de coté.</p>
<p>Voici donc l&#8217;occasion de parler mise à jour!</p>
<p>Partons donc du principe que nous avons une instance de Redmine fonctionnelle.</p>
<p>La manière dont celle si a été installé importe peu puisque nous allons ici repartir sur une version propre fraichement récupérée sur le SVN officiel.</p>
<p>Commencez donc par vous placer dans le dossier où vous souhaitez faire votre installation et faite un checkout sur le dépôt officiel: http://redmine.rubyforge.org/svn/branches/1.0-stable/</p>
<p>Placez vous ensuite dans le dossier contenant votre nouvelle instance de redmine . Copiez les fichiers de configuration depuis votre ancienne instance (database.yml pour la configuration des bases de données, et email.yml pour les mails sortants) dans le dossier config/. Copiez également le dossier /files de votre instance d&#8217;origine afin de conserver les fichiers joints à vos projets. Copiez vos plugins dans le dossier vendor/plugins/. Et enfin copiez votre thème dans le dossier public/themes/.</p>
<p>Passons maintenance à l&#8217;execution des script rake qui vont nous permettre de mettre à jour la base de données et la configuration de Redmine.</p>
<p>Placez vous à nouveau à la racine de votre instance et commencez par recréer l&#8217;espace de session:</p>
<blockquote><p>rake generate_session_store</p></blockquote>
<p>Effectuez ensuite la configuration des plugins que vous avez copié tout à l&#8217;heure (note: production est le nom de notre instance de production):</p>
<blockquote><p>rake db:migrate:upgrade_plugin_migrations RAILS_ENV=production</p></blockquote>
<p>Et enfin, migrez la base de données vers cette nouvelle version de Redmine (encore une fois production est le nom de notre instance):</p>
<blockquote><p>rake db:migrate_plugins RAILS_ENV=production</p></blockquote>
<p>Voici donc votre instance à jour et, si vous avez suivi cet article à la lettre, en version stable.</p>
<p>Quelques petites choses à vérifiez tout de même:</p>
<ul>
<li>Si vous ressentez des lenteurs à l&#8217;exécution ou que vous remarquez des problèmes d&#8217;affichage de l&#8217;interface: nettoyez le cache<br />
<blockquote><p>rake tmp:cache:clear</p></blockquote>
</li>
<li>Si vos utilisateurs ne peuvent plus se logguer, ou accéder à certaines parties de Redmine: forcez la suppression des sessions en cours<br />
<blockquote><p>rake tmp:sessions:clear</p></blockquote>
</li>
<li>Pensez également à faire un tour dans la partie &laquo;&nbsp;rôles et permissions&nbsp;&raquo; de Redmine pour vérifier les autorisations sur de nouvelles fonctionnalités qui pourraient ne pas être prise en compte dans les rôles que vous aviez créé</li>
<li>Et enfin, chose importante, pensez à vérifier les droit posix sur les fichiers de votre instance, sans quoi vous ne pourrez utiliser certaines fonctionnalités (l&#8217;upload de fichier par exemple)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.lelevier.fr/mettre-a-jour-redmine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Concours Smartphone SNCF</title>
		<link>http://blog.lelevier.fr/concours-smartphone-sncf/</link>
		<comments>http://blog.lelevier.fr/concours-smartphone-sncf/#comments</comments>
		<pubDate>Thu, 01 Jul 2010 17:56:35 +0000</pubDate>
		<dc:creator>Thibaut</dc:creator>
				<category><![CDATA[Divers]]></category>
		<category><![CDATA[cocoa]]></category>
		<category><![CDATA[concours]]></category>
		<category><![CDATA[ingesup]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[smartphone]]></category>
		<category><![CDATA[sncf]]></category>

		<guid isPermaLink="false">http://blog.lelevier.fr/?p=246</guid>
		<description><![CDATA[Nous venons d’être sélectionnés pour le concours Smartphone SNCF sur la plateforme iPhone. Nous participons à ce projet dans le but de créer une application mobile axée sur l’ergonomie et la simplicité d’utilisation afin de faciliter la communication entre le contrôleur et les usagers tout en faisant face à des contraintes techniques liées aux conditions [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.lelevier.fr/wp-content/uploads/2010/07/DSC_0222.jpg"><img class="aligncenter size-medium wp-image-253" title="Concours SNCF" src="http://blog.lelevier.fr/wp-content/uploads/2010/07/DSC_0222-300x199.jpg" alt="Concours SNCF" width="300" height="199" /></a></p>
<p>Nous venons d’être sélectionnés pour le concours Smartphone SNCF sur la plateforme iPhone.</p>
<p>Nous participons à ce projet dans le but de créer une application mobile axée sur l’ergonomie et la simplicité d’utilisation afin de faciliter la communication entre le contrôleur et les usagers tout en faisant face à des contraintes techniques liées aux conditions d’utilisations et de connectivités.</p>
<p>Nous participons à ce projet avec le support et sous le nom de notre école, <a href="http://www.ingesup.com" target="_blank">Ingésup</a>.</p>
<p>Plus d’informations:<br />
-<a href="http://www.01net.com/statiquesv6/sncf/pres.html" target="_blank">Les détails du concours</a><br />
-<a href="http://pro.01net.com/editorial/519496/concours-smartphone-sncf-voici-les-candidats/" target="_blank">Les différentes équipes</a><br />
-<a href="http://www.bcharp.fr" target="_blank">Le blog de Boris</a><br />
-<a href="http://blog.ingesup.com" target="_blank">Le blog d&#8217;Ingésup</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lelevier.fr/concours-smartphone-sncf/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Administrer Apple Remote Desktop en ligne de commande</title>
		<link>http://blog.lelevier.fr/ard-commandes/</link>
		<comments>http://blog.lelevier.fr/ard-commandes/#comments</comments>
		<pubDate>Sat, 12 Jun 2010 01:33:27 +0000</pubDate>
		<dc:creator>Thibaut</dc:creator>
				<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[administration]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[apple remote desktop]]></category>
		<category><![CDATA[ard]]></category>
		<category><![CDATA[reseau]]></category>
		<category><![CDATA[restart ard]]></category>
		<category><![CDATA[vnc]]></category>

		<guid isPermaLink="false">http://blog.lelevier.fr/?p=239</guid>
		<description><![CDATA[Apple Remote Desktop (ou encore ARD) et l&#8217;outil de prédilection d&#8217;un administrateur Mac. Cet outil permet non seulement d&#8217;observer et de prendre la main aussi bien sur des postes clients que sur les xserve de l&#8217;entreprise (même durant l&#8217;installation), mais aussi de déployer de manière centralisée des packets, des scripts, de lancer des commandes à [...]]]></description>
			<content:encoded><![CDATA[<p>Apple Remote Desktop (ou encore ARD) et l&#8217;outil de prédilection d&#8217;un administrateur Mac.</p>
<p style="text-align: center;"><a href="http://blog.lelevier.fr/wp-content/uploads/2010/06/Screen-shot-2010-06-12-at-03.03.14.png"><img class="size-medium wp-image-241    aligncenter" title="Screen shot 2010-06-12 at 03.03.14" src="http://blog.lelevier.fr/wp-content/uploads/2010/06/Screen-shot-2010-06-12-at-03.03.14-300x244.png" alt="" width="300" height="244" /></a></p>
<p>Cet outil permet non seulement d&#8217;observer et de prendre la main aussi bien sur des postes clients que sur les xserve de l&#8217;entreprise (même durant l&#8217;installation), mais aussi de déployer de manière centralisée des packets, des scripts, de lancer des commandes à distance, ou encore de générer des rapports sur l&#8217;état des machines.<br />
Sur un Mac OS X Server, l&#8217;installateur vous propose lui même d&#8217;activer ARD à la fin de l&#8217;installation.</p>
<p>Sur un poste client, ARD se basant sur le partage decran, celui ci n&#8217;est pas forcement actif lorsque l&#8217;on peut en avoir besoin&#8230; Voici donc quelques commandes qui vont nous permettre de l&#8217;activer grâce à un accès SSH:</p>
<blockquote><p>$ sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -activate -configure -access -on -restart -agent -privs -all</p></blockquote>
<p>Cette ligne activera donc l&#8217;accès ARD pour n&#8217;importe quel compte autorisé à se loguer sur cette machine (les utilisateurs locaux et réseau).</p>
<p>Vous pouvez également restreindre cette accès afin de n&#8217;autoriser que les utilisateurs possédant des droits d&#8217;administration sur la machine en question en lançant plutôt cette commande:</p>
<blockquote><p>$ sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -activate -configure -access -on -users admin -privs -all -restart -agent -menu</p></blockquote>
<p>Toujours via le terminal, vous pouvez également désactiver ARD et son démarrage automatique:</p>
<blockquote><p>$ sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -deactivate -stop</p></blockquote>
<p>Les utilisateurs déjà habitués à ARD auront certainement déjà remarqué qu&#8217;il arrive que le service se retrouve indisponible selon la version d&#8217;ARD et de Mac OS, vous pouvez très facilement redémarrer ARD, toujours en ligne de commande:</p>
<blockquote><p>$ sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -restart -agent</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blog.lelevier.fr/ard-commandes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Coloration syntaxique dans Redmine</title>
		<link>http://blog.lelevier.fr/coloration-syntaxique-redmine/</link>
		<comments>http://blog.lelevier.fr/coloration-syntaxique-redmine/#comments</comments>
		<pubDate>Sun, 14 Mar 2010 00:35:46 +0000</pubDate>
		<dc:creator>Thibaut</dc:creator>
				<category><![CDATA[Gestion de Projets]]></category>
		<category><![CDATA[Redmine]]></category>
		<category><![CDATA[objective-c]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[redmine]]></category>

		<guid isPermaLink="false">http://blog.lelevier.fr/?p=225</guid>
		<description><![CDATA[De base, Redmine propose déjà une coloration syntaxique pour la navigation dans les sources du dépôt via un quelconque SCM. Malheureusement cette coloration se limite à quelques langages les plus connus, PHP ou C par exemple sont déjà pris en charge. Viennent ensuite les langages moins courants comme Objective-C qui, avec lequel le moteur de [...]]]></description>
			<content:encoded><![CDATA[<p>De base, Redmine propose déjà une coloration syntaxique pour la navigation dans les sources du dépôt via un quelconque SCM.</p>
<p>Malheureusement cette coloration se limite à quelques langages les plus connus, PHP ou C par exemple sont déjà pris en charge.</p>
<p>Viennent ensuite les langages moins courants comme Objective-C qui, avec lequel le moteur de coloration d&#8217;origine va rester noir sur blanc.</p>
<p><a href="http://blog.lelevier.fr/wp-content/uploads/2010/03/Capture-d’écran-2010-03-14-à-00.07.00.png"><img class="aligncenter size-medium wp-image-226" title="Capture d’écran 2010-03-14 à 00.07.00" src="http://blog.lelevier.fr/wp-content/uploads/2010/03/Capture-d’écran-2010-03-14-à-00.07.00-300x228.png" alt="" width="300" height="228" /></a><br />
Il existe donc un plugin qui va nous permettre de résoudre ce problème en intégrant un moteur de coloration syntaxique nommé Ultraviolet déjà utilisé dans de nombreux projets dont l&#8217;IDE TextMate.</p>
<p>Pour l&#8217;installer rien de plus simple. Commencez par installer libonig-dev (pour la reconnaissance d&#8217;expressions régulières) avec aptitude et utilisez Gem pour installer le moteur de coloration syntaxique:</p>
<blockquote><p># aptitude install libonig-dev</p>
<p># gem install ultraviolet</p></blockquote>
<p>Rendez-vous ensuite sur <a href="http://github.com/epitron/redmine_ultraviolet" target="_blank">Github</a> pour récupérer la dernière version et placer le plugin dans le dossier vendor/plugins de votre Redmine.</p>
<p>Placez vous ensuite dans le dossier contenant votre installation de Redmine et lancez un petit coup de rake sur vos plugins:</p>
<p># rake db:migrate_plugins RAILS_ENV=production</p>
<p>et enfin relancer votre instance de Redmine ou directement votre serveur Rails (Mongrel, ou Apache si vous utilisez passenger)</p>
<p>Voilà le résultat sur le même fichier:</p>
<p><a href="http://blog.lelevier.fr/wp-content/uploads/2010/03/Capture-d’écran-2010-03-14-à-00.08.49.png"><img class="aligncenter size-medium wp-image-228" title="Capture d’écran 2010-03-14 à 00.08.49" src="http://blog.lelevier.fr/wp-content/uploads/2010/03/Capture-d’écran-2010-03-14-à-00.08.49-300x228.png" alt="" width="300" height="228" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lelevier.fr/coloration-syntaxique-redmine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Redmine: Quelques plugins</title>
		<link>http://blog.lelevier.fr/redmine-plugins/</link>
		<comments>http://blog.lelevier.fr/redmine-plugins/#comments</comments>
		<pubDate>Mon, 08 Feb 2010 02:10:15 +0000</pubDate>
		<dc:creator>Thibaut</dc:creator>
				<category><![CDATA[Gestion de Projets]]></category>
		<category><![CDATA[Redmine]]></category>
		<category><![CDATA[budget]]></category>
		<category><![CDATA[gestion de projet]]></category>
		<category><![CDATA[management]]></category>
		<category><![CDATA[redmine]]></category>
		<category><![CDATA[scrum]]></category>

		<guid isPermaLink="false">http://blog.lelevier.fr/?p=206</guid>
		<description><![CDATA[Comme dit lors de l&#8217;un de mes derniers articles, Redmine est un outil de gestion de projet puissant, libre et de par son écriture en Ruby, massivement extensible par divers plugins! Voici donc ici les quelques plugins que j&#8217;ai pu repérer et tester, liste biensur non exhaustive! Tout d&#8217;abord commençons par fédérer un peu la [...]]]></description>
			<content:encoded><![CDATA[<p>Comme dit lors de l&#8217;un de mes derniers articles, Redmine est un outil de gestion de projet puissant, libre et de par son écriture en Ruby, massivement extensible par divers plugins!</p>
<p>Voici donc ici les quelques plugins que j&#8217;ai pu repérer et tester, liste biensur non exhaustive!</p>
<p>Tout d&#8217;abord commençons par fédérer un peu la communauté qui contribue à votre projet par des fonctions un peu plus sociales afin que ces derniers soient le plus au courant possible de l&#8217;état du projet.</p>
<p>Commençons donc par un petit plugin de blog qui permettra à vos utilisateurs de poster des annonces, des informations ou encore des réflexions de manière centrale et interne. Ce plugin reste cependant limité quand a une éventuelle utilisation pour une façade d&#8217;annonce  publique.</p>
<p style="text-align: center;"><a href="http://www.redmine.org/attachments/1980/redmine_blogs_main.png"><img class="aligncenter" title="Blog" src="http://www.redmine.org/attachments/1980/redmine_blogs_main.png" alt="Blog" width="436" height="264" /></a></p>
<p>(<a href="http://www.redmine.org/boards/3/topics/5782" target="_blank">http://www.redmine.org/boards/3/topics/5782</a>)</p>
<p>Viens ensuite une copie du réseau social le plus en vogue en ce moment, j&#8217;ai nommé Twitter! Grâce au plugin &laquo;&nbsp;status update&nbsp;&raquo; vous pourrez mettre en place un moyen rapide de communiquer entre vos collaborateurs afin qu&#8217;il puissent dire simplement ce qu&#8217;ils sont en train de faire. Ce plugin aurait cependant peut-être besoin d&#8217;une fonction de &laquo;&nbsp;reply&nbsp;&raquo; et/ou &laquo;&nbsp;repost&nbsp;&raquo; pour pouvoir réellement s&#8217;apparenter à Twitter.</p>
<p style="text-align: center;"><a href="http://www.redmine.org/attachments/698/Screenshot-eCookbook_-_Redmine_-_Mozilla_Firefox.png"><img class="aligncenter" title="Status update" src="http://www.redmine.org/attachments/698/Screenshot-eCookbook_-_Redmine_-_Mozilla_Firefox.png" alt="Status update" width="431" height="267" /></a></p>
<p>(<a href="http://www.redmine.org/boards/1/topics/1483" target="_blank">http://www.redmine.org/boards/1/topics/1483</a>)</p>
<p>Passons maintenant à un plugin plus élémentaire voir quasiment indispensable: la gestion des fameuses &laquo;&nbsp;todo list&nbsp;&raquo;. Grâce à ce plugin vous pourrez centraliser la gestion de ces dernières directement dans un nouvel onglet du projet et ainsi éviter à vos contributeurs de passer par un quelconque service web complémentaire ou encore par l&#8217;éternel post-it. Cette fois rien à redire, les idées sont centralisées sur notre plateforme interne ce qui est en plus un gage de sécurité!  (<a href="http://www.redmine.org/boards/3/topics/4070" target="_blank">http://www.redmine.org/boards/3/topics/4070</a>)</p>
<p>Et si beaucoup de personnes interviennent sur votre projet? Comment gérer les interrogations des nouveaux venu? Par défaut, beaucoup serait tenté de tout centraliser sur une doc disponible sur le wiki du projet. C&#8217;est une bonne pratique mais mal géré, cela peut vite tourner au bazar le plus complet. L&#8217;idée du plugin &laquo;&nbsp;question&nbsp;&raquo; est de pouvoir gérer vos demandes et votre support en interne (par exemple les demandes formulées par de nouveaux développeurs ou par un utilisateur final). De plus, ce plugin permet d&#8217;effectuer des recherches multi-critères sur les questions qui ont déjà été pausés, pourquoi pas réorienter la documentation en fonction des questions les plus récurantes?</p>
<p style="text-align: center;"><a href="http://www.redmine.org/attachments/1535/question_on_issue.png"><img class="aligncenter" title="Question " src="http://www.redmine.org/attachments/1535/question_on_issue.png" alt="Question" width="461" height="307" /></a></p>
<p>(<a href="http://www.redmine.org/wiki/redmine/PluginQuestion" target="_blank">http://www.redmine.org/wiki/redmine/PluginQuestion</a>)</p>
<p>Besoin de mieux évaluer les coûts de votre projet? Attention, le plugin &laquo;&nbsp;budget&nbsp;&raquo; dépend d&#8217;un projet bien rodé afin d&#8217;être réellement efficace. Vous pourrez ainsi prévoir le coût du projet en fonction du temps passé. Cela implique également l&#8217;utilisation de la &laquo;&nbsp;badgeuse&nbsp;&raquo; intégrée au Redmine par vos développeurs et autres contributeurs afin qu&#8217;il puisse faire état du temps passé sur les différentes taches du projet.</p>
<p style="text-align: center;"><a href="http://www.redmine.org/attachments/download/924/budget_plugin-budget_screen.png"><img class="aligncenter" title="Budget" src="http://www.redmine.org/attachments/download/924/budget_plugin-budget_screen.png" alt="Budget" width="461" height="443" /></a></p>
<p>(<a href="http://www.redmine.org/wiki/redmine/PluginBudget" target="_blank">http://www.redmine.org/wiki/redmine/PluginBudget</a>)</p>
<p>Enfin, je terminerai avec un plugin relativement évolué. Avis aux amateurs de gestions de projets Agile, ce plugin vous permettra d&#8217;intégrer les méthodes de gestion <a href="http://fr.wikipedia.org/wiki/Scrum" target="_blank">Scrum</a> à votre projet sous la forme d&#8217;un dashboard complet:</p>
<p style="text-align: center;"><a href="http://www.redmine.org/attachments/1986/scrumdashboard_1.png"><img class="aligncenter" title="Scrum Dashboard" src="http://www.redmine.org/attachments/1986/scrumdashboard_1.png" alt="Scrum Dashboard" width="461" height="278" /></a></p>
<p>(<a href="http://www.redmine.org/boards/3/topics/5808" target="_blank">http://www.redmine.org/boards/3/topics/5808</a>)</p>
<p>Je ne détaillerai pas ici l&#8217;installation de ces plugins et vous invite pour cela à vous rendre sur la page officiel du wiki de Redmine: <a href="http://www.redmine.org/wiki/redmine/Plugins" target="_blank">http://www.redmine.org/wiki/redmine/Plugins</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lelevier.fr/redmine-plugins/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Disque de sauvegarde en réseau et compatibilité Mac</title>
		<link>http://blog.lelevier.fr/disque-de-sauvegarde-en-reseau-et-compatibilite-mac/</link>
		<comments>http://blog.lelevier.fr/disque-de-sauvegarde-en-reseau-et-compatibilite-mac/#comments</comments>
		<pubDate>Mon, 01 Feb 2010 22:23:34 +0000</pubDate>
		<dc:creator>Thibaut</dc:creator>
				<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[AFP]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[Backup]]></category>
		<category><![CDATA[Nas]]></category>
		<category><![CDATA[Sauvegardes]]></category>
		<category><![CDATA[TimeMachine]]></category>

		<guid isPermaLink="false">http://blog.lelevier.fr/?p=204</guid>
		<description><![CDATA[Voilà quelques mois que je cherchais un petit nas réseau qui prendrai en charge l&#8217;AFP et me permettrai de faire mes sauvegardes via le réseau pour ne pas avoir à brancher de disque USB tous les 4 matins. J&#8217;avais bien un petit Linksys NSLU2 flashé sous Debian en rab mais cela m&#8217;obligeais à ajouter des [...]]]></description>
			<content:encoded><![CDATA[<p>Voilà quelques mois que je cherchais un petit nas réseau qui prendrai en charge l&#8217;AFP et me permettrai de faire mes sauvegardes via le réseau pour ne pas avoir à brancher de disque USB tous les 4 matins.</p>
<p>J&#8217;avais bien un petit <a href="http://www.linksysbycisco.com/EU/fr/products/NSLU2" target="_blank">Linksys NSLU2</a> flashé sous Debian en rab mais cela m&#8217;obligeais à ajouter des disques USB 2.0, donc double d&#8217;alimentation, place, qui plus ai la bête à tendance à siffler, et le tout avec des performances (la machine n&#8217;a qu&#8217;un ARM bridé à 133mhz avec 32mo de mémoire), j&#8217;ai vite laissé tombé l&#8217;idée.</p>
<p>En surveillant un peux les modèles disponibles je suis alors tombé sur le <a href="http://www.netgear.com/Products/Storage/Stora/MS2110.aspx" target="_blank">Netgear Stora MS2110</a>, petit frère du Readynas avec une orientation plus &laquo;&nbsp;grand public&nbsp;&raquo;, le tout pour moins de 200€ disque compris, accès en AFP, certifié TimeMachine, et finalement très décevant&#8230;</p>
<p>Malgré sa certification TimeMachine, le Netgear offre un utilisation &laquo;&nbsp;multiple&nbsp;&raquo; et permet de stocker de la musique, des photos, des vidéos, des documents&#8230; De ce fait l&#8217;espace de sauvegarde, non actif de base et accessible seulement en SMB, est bridé par un quota de 200go, et cette limite est sans appel&#8230; Impossible donc de l&#8217;utiliser pour sauvegarder toutes mes machines sur 200go! mon macbook à lui seul avec son disque de 250go dépassait déjà lors de la sauvegarde initiale&#8230;</p>
<p>Me voilà donc avec un disque à 200€ acheté pour un besoin auquel il ne répond pas&#8230; et heureusement, je l&#8217;avais prix chez <a href="http://materiel.net" target="_blank">materiel.net</a> qui encore une fois m&#8217;a prouvé son sérieux et sa qualité! Contact direct avec Netgear de leur part, réponse sous 48h, les techniciens de Netgear n&#8217;ont pour l&#8217;instant pas prévu la modification, et pour gagner du temps Materiel.net à choisit de me reprendre le produit en question afin de ne pas bloquer mon problème de sauvegarde. J&#8217;ai donc retourné le Netgear à son envoyeur qui m&#8217;a alors fait un avoir (pas fou!), frais de retour compris. Comme d&#8217;habitude, <a href="http://materiel.net" target="_blank">Materiel.net</a>, j&#8217;en suis content et je le recommande!</p>
<p>Bref revenons a nous moutons, après avoir hésité sur quelques modèles de chez Synology, je me suis dis que cela m&#8217;aurai fait une sauvegarde finalement assez éloignée de ma machine à sauvegarder: macbook -&gt; neufbox (54mbits) -&gt; switch (100mb) -&gt; nas (1gbits) et enfin les accès disques.</p>
<p>J&#8217;ai donc craquer et encore une fois j&#8217;ai acheté chez Apple. Une petite TimeCapsule viens de rejoindre mon réseau, remplaçant ainsi le switch gigabyte et le wifi fourni par la neufbox, je sais que mon espace de sauvegarde se trouve juste derrière la borne et que le produit est prévu pour, bref aucun problème tout fonctionne!</p>
<p>Note à mois même, ne plus essayer de bidouiller un système alternatif pour économiser 60€, ça marchera toujours moins bien&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lelevier.fr/disque-de-sauvegarde-en-reseau-et-compatibilite-mac/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Redmine sous Apache avec Passenger</title>
		<link>http://blog.lelevier.fr/redmine-sous-apache-avec-passenger/</link>
		<comments>http://blog.lelevier.fr/redmine-sous-apache-avec-passenger/#comments</comments>
		<pubDate>Sun, 24 Jan 2010 03:44:50 +0000</pubDate>
		<dc:creator>Thibaut</dc:creator>
				<category><![CDATA[Gestion de Projets]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Redmine]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[gestion de projet]]></category>
		<category><![CDATA[management]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[redmine]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[ruby on rails]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[Svn]]></category>
		<category><![CDATA[trac]]></category>
		<category><![CDATA[tracker]]></category>
		<category><![CDATA[versionning]]></category>

		<guid isPermaLink="false">http://blog.lelevier.fr/?p=191</guid>
		<description><![CDATA[Cet article est le premier d&#8217;une série d&#8217;article sur l&#8217;outil de gestion de projet Redmine. Ce puissant outil disponible sous la forme d&#8217;une interface web permet de gérer les projets de développements en intégrant des roadmap, la gestion des bugs, des demandes dévolutions, un tracker de versionning, un wiki, le tout avec une gestion des [...]]]></description>
			<content:encoded><![CDATA[<p><span style="color: #000000;">Cet article est le premier d&#8217;une série d&#8217;article sur l&#8217;outil de gestion de projet Redmine.</span></p>
<p><span style="color: #000000;">Ce puissant outil disponible sous la forme d&#8217;une interface web permet de gérer les projets de développements en intégrant des roadmap, la gestion des bugs, des demandes dévolutions, un tracker de versionning, un wiki, le tout avec une gestion des droits complète.</span></p>
<p><span style="color: #000000;">Dans cet article nous verrons comment installer Redmine sur un serveur Linux (Debian dans notre cas) en utilisant Apache comme serveur d&#8217;application grâce au module &laquo;&nbsp;Passenger&nbsp;&raquo; qui permet à Apache d&#8217;interpréter Ruby on Rails.</span></p>
<p><span style="color: #000000;">Comme d&#8217;habitude cet article décrit une suite de manipulations liée à des versions précises. A vous d&#8217;adapter vos numéro de versions en fonction des évolutions à venir.</span></p>
<p><span style="color: #000000;">Pour Commencer nous allons installer Apache 2 MySQL 5.0 et d&#8217;autres paquets qui nous seront nécessaires.</span></p>
<blockquote><p><span style="color: #000000;">#aptitude install apache2 mysql-server apache2-prefork-dev libaprutil1-dev libaprutil1-dev libmysqlclient15-dev gcc make subversion</span></p></blockquote>
<p><span style="color: #000000;">Pensez également à activer le mod_rewrite d&#8217;Apache dès maintenant</span></p>
<blockquote><p><span style="color: #000000;">#a2enmod rewrite</span></p></blockquote>
<p><span style="color: #000000;">Nous pouvons maintenant installé les près requis lié plus précisément à notre application à savoir Ruby, l&#8217;interpréteur, gems le gestionnaire de paquets et d&#8217;autres librairies nécessaire pour l&#8217;installation de Redmine. commençons donc par Ruby et les librairies disponibles par aptitude.</span></p>
<blockquote><p><span style="color: #000000;">#aptitude install ruby rdoc irb libyaml-ruby ruby1.8-dev libzlib-ruby ri libopenssl-ruby1.8</span></p></blockquote>
<p><span style="color: #000000;">Passons ensuite à l&#8217;installation de gems</span></p>
<blockquote><p><span style="color: #000000;">#wget </span><a href="http://rubyforge.org/frs/download.php/60718/rubygems-1.3.5.tgz"><span style="text-decoration: none;"><span style="color: #000000;">http://rubyforge.org/frs/download.php/60718/rubygems-1.3.5.tgz</span></span></a></p>
<p><span style="color: #000000;">#tar xvf rubygems-1.3.5.tgz</span></p>
<p><span style="color: #000000;">#cd rubygems-1.3.5</span></p>
<p><span style="color: #000000;">#ruby setup.rb</span></p>
<p><span style="color: #000000;">#ln -s /usr/bin/gem1.8 /usr/bin/gem</span></p></blockquote>
<div><span style="color: #000000;">Pensez également à mettre à jour les paquets et les dépots de Gems</span></div>
<div>
<p><span style="color: #000000;"> </span></p>
<blockquote><p><span style="color: #000000;">#gem update &amp;&amp; gem update &#8211;system</span></p></blockquote>
<p><span style="color: #000000;">Installons aussi le support de MySQL pour Ruby</span></p>
<blockquote><p><span style="color: #000000;">#gem install mysql</span></p></blockquote>
<p><span style="color: #000000;">Et nous pouvons maintenant passer aux choses sérieuses et installer Rails en version 2.3.5 comme le recommande Redmine.</span></p>
<blockquote><p><span style="color: #000000;">#gem install rails -v=2.3.5</span></p></blockquote>
<p><span style="color: #000000;">Nous aurons également besoin du support imagemagick pour la génération des diagrammes de Gantt:</span></p>
<blockquote><p><span style="color: #000000;">#aptitude install imagemagick libmagick9-dev librmagick-ruby1.8</span></p>
<p><span style="color: #000000;">#gem install rmagick</span></p></blockquote>
<p><span style="color: #000000;">Passons maintenant à l&#8217;installation de passenger et à la compilation du module passenger pour apache2</span></p>
<blockquote><p><span style="color: #000000;">#gem install passenger</span></p>
<p><span style="color: #000000;">#/usr/lib/ruby/gems/1.8/gems/passenger-2.2.9/bin/passenger-install-apache2-module</span></p></blockquote>
<p><span style="color: #000000;">Ajoutons le à la configuration d&#8217;Apache: Créez un fichier /etc/apache2/mods-available/passenger.load et insérez-y la ligne:</span></p>
<blockquote><p><span style="color: #000000;">LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.2.9/ext/apache2/mod_passenger.so</span></p></blockquote>
<p><span style="color: #000000;">Créez également un fichier /etc/apache2/mods-available/passenger.conf et placez-y les deux lignes suivantes:</span></p>
<blockquote><p><span style="color: #000000;">PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.2.9</span></p>
<p><span style="color: #000000;">PassengerRuby /usr/bin/ruby1.8</span></p></blockquote>
<p><span style="color: #000000;">Enfin Activez le module:</span></p>
<blockquote><p><span style="color: #000000;">#a2enmod passenger</span></p></blockquote>
<p><span style="color: #000000;">Maintenant que tous nos pré-requis sont en place, nous pouvons passez à Redmine</span></p>
<p><span style="color: #000000;">Commencez par créer un utilisateur et une base de donnée MySQL:</span></p>
<blockquote><p><span style="color: #000000;">#mysql -u root -p</span></p>
<p><span style="color: #000000;">mysql&gt; create database redmine character set utf8;</span></p>
<p><span style="color: #000000;">mysql&gt; create user &#8216;redmine&#8217;@'localhost&#8217; identified by &#8216;my_password&#8217;;</span></p>
<p><span style="color: #000000;">mysql&gt; grant all privileges on redmine.* to &#8216;redmine&#8217;@'localhost&#8217;;</span></p>
<p><span style="color: #000000;">mysql&gt; exit</span></p></blockquote>
<p><span style="color: #000000;">Plaçons nous ensuite dans le dossier où nous voulons installer Redmine (/var dans mon cas) et récupérons la dernière version de Redmine depuis le dépôt officiel:</span></p>
<blockquote><p><span style="color: #000000;">#cd /var</span></p>
<p><span style="color: #000000;">#svn co </span><a href="http://redmine.rubyforge.org/svn/branches/0.9-stable/"><span style="text-decoration: none;"><span style="color: #000000;">http://redmine.rubyforge.org/svn/branches/0.9-stable/</span></span></a><span style="color: #000000;"> redmine</span></p>
<p><span style="color: #000000;">#cd redmine</span></p></blockquote>
<p><span style="color: #000000;">Il est temps maintenant de mettre en place la configuration de la base de donnée créez un fichier config/database.yml et entrez-y la configuration comme ceci en adaptant à ce que vous avez entrez lors de la création de l&#8217;utilisateur et de la base dans mysql:</span></p>
<blockquote><p><span style="color: #000000;">production:</span></p>
<p><span style="color: #000000;">adapter: mysql</span></p>
<p><span style="color: #000000;">database: redmine</span></p>
<p><span style="color: #000000;">host: localhost</span></p>
<p><span style="color: #000000;">username: redmine</span></p>
<p><span style="color: #000000;">password: my_password</span></p>
<p><span style="color: #000000;">encoding: utf8</span></p></blockquote>
<div>
<p><span style="font-family: Courier, 'Times New Roman', 'Bitstream Charter', Times, serif; color: #484848; font-size: small;"><span style="color: #000000;"> </span></span></p>
</div>
<p><span style="color: #000000;">Profitons en également pour configurer le serveur d&#8217;envois de mails en créant le fichier config/email.yml (ici ma configuration tape directement en local par la commande  &laquo;&nbsp;sendmail&nbsp;&raquo; sans passer par un socket):</span></p>
<blockquote>
<div id="_mcePaste"><span style="color: #000000;">production:</span></div>
<div><span style="color: #000000;">delivery_method: :sendmail</span></div>
<div id="_mcePaste"><span style="color: #000000;">smtp_settings:</span></div>
<div id="_mcePaste"><span style="color: #000000;">address: localhost</span></div>
<div id="_mcePaste"><span style="color: #000000;">port: 25</span></div>
<div id="_mcePaste"><span style="color: #000000;">domain: lelevier.fr</span></div>
</blockquote>
<div><span style="color: #000000;">Nous pouvons enfin passer à l&#8217;installation de Redmine en générant l&#8217;espace de stockage des sessions, en créant la base de donnée, et enfin en installant la configuration par défaut (utilisateurs, rôles, trackers&#8230; recommandé par Redmine):</span></div>
</div>
<blockquote>
<div>
<p><span style="color: #000000;">#rake generate_session_store</span></p>
<p>#RAILS_ENV=production rake db:migrate</p>
<p>#RAILS_ENV=production rake redmine:load_default_data</p>
</div>
</blockquote>
<p>Il ne vous reste plus qu&#8217;a configurer votre VirtualHost Apache comme n&#8217;importe quel virtual host en faisant pointer votre DocumentRoot vers le dossier &laquo;&nbsp;public&nbsp;&raquo; de Redmine.</p>
<blockquote><p>&lt;VirtualHost *:80&gt;</p>
<p>ServerAdmin thibaut@my-test.com</p>
<p>ServerName dev.my-test.com</p>
<p>DocumentRoot /var/www/redmine/public/</p>
<p>&lt;/VirtualHost&gt;</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blog.lelevier.fr/redmine-sous-apache-avec-passenger/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Birdy Nam Nam, quelques vidéos sympa :)</title>
		<link>http://blog.lelevier.fr/birdy-nam-nam-quelques-videos-sympa/</link>
		<comments>http://blog.lelevier.fr/birdy-nam-nam-quelques-videos-sympa/#comments</comments>
		<pubDate>Sat, 07 Nov 2009 19:06:14 +0000</pubDate>
		<dc:creator>Thibaut</dc:creator>
				<category><![CDATA[Musique]]></category>
		<category><![CDATA[Birdy Nam Nam]]></category>
		<category><![CDATA[dj]]></category>
		<category><![CDATA[electro]]></category>
		<category><![CDATA[french touch]]></category>
		<category><![CDATA[musique]]></category>

		<guid isPermaLink="false">http://blog.lelevier.fr/?p=170</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<div style="text-align: center;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="385" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/dGi8nC_Aq0Y&amp;hl=fr&amp;fs=1&amp;rel=0" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="480" height="385" src="http://www.youtube.com/v/dGi8nC_Aq0Y&amp;hl=fr&amp;fs=1&amp;rel=0" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="385" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/RSkQikgtxEI&amp;hl=fr&amp;fs=1&amp;rel=0" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="480" height="385" src="http://www.youtube.com/v/RSkQikgtxEI&amp;hl=fr&amp;fs=1&amp;rel=0" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="385" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/LJIorXIjfq8&amp;hl=fr&amp;fs=1&amp;rel=0" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="480" height="385" src="http://www.youtube.com/v/LJIorXIjfq8&amp;hl=fr&amp;fs=1&amp;rel=0" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="385" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/B71DslhPAn4&amp;hl=fr&amp;fs=1&amp;rel=0" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="480" height="385" src="http://www.youtube.com/v/B71DslhPAn4&amp;hl=fr&amp;fs=1&amp;rel=0" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="385" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/sev0Z_W1I-I&amp;hl=fr&amp;fs=1&amp;rel=0" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="480" height="385" src="http://www.youtube.com/v/sev0Z_W1I-I&amp;hl=fr&amp;fs=1&amp;rel=0" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.lelevier.fr/birdy-nam-nam-quelques-videos-sympa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Loader PHP: chargez vos class automatiquement</title>
		<link>http://blog.lelevier.fr/loader-php-chargez-vos-class-automatiquement/</link>
		<comments>http://blog.lelevier.fr/loader-php-chargez-vos-class-automatiquement/#comments</comments>
		<pubDate>Sun, 18 Oct 2009 21:06:26 +0000</pubDate>
		<dc:creator>Thibaut</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[autoload]]></category>
		<category><![CDATA[class]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[loader]]></category>
		<category><![CDATA[méthode]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[poo]]></category>
		<category><![CDATA[projet]]></category>

		<guid isPermaLink="false">http://blog.lelevier.fr/?p=157</guid>
		<description><![CDATA[Si par erreur (ou justement pas) vous vous mettez un jour à coder proprement en PHP, vous vous rendrez vite compte qu&#8217;avoir ces petites classes toute faite pour interroger une base de donnée ou parcer un fichier XML peut s&#8217;avérer très pratique. Une fois ces classes écrites une bonne fois pour toute, avec la gestion [...]]]></description>
			<content:encoded><![CDATA[<p>Si par erreur (ou justement pas) vous vous mettez un jour à coder proprement en PHP, vous vous rendrez vite compte qu&#8217;avoir ces petites classes toute faite pour interroger une base de donnée ou parcer un fichier XML peut s&#8217;avérer très pratique. Une fois ces classes écrites une bonne fois pour toute, avec la gestion d&#8217;erreur qui va bien et tout et tout, il ne reste plus qu&#8217;a copier/coller celle dont on a besoin dans un dossier &laquo;&nbsp;Class&nbsp;&raquo; du projet en cours et on les appellera au besoin sur les pages concernées.</p>
<p>Mais voilà, trêve de plaisanteries, trois tonnes d&#8217;include en haut d&#8217;un fichier PHP ça va vite devenir très cochon et pas franchement lisible.</p>
<p>Nous allons voir ici comment utiliser la fonction __autoload() de PHP pour inclure automatiquement les fichiers contenant les classes que nous allons appeler.</p>
<p>Commençons par organiser un peux notre projet.</p>
<p>Créez un dossier à la racine du site qui va contenir toute les librairies de notre projet et créez dans celui ci un dossier &laquo;&nbsp;class&nbsp;&raquo; qui lui contiendra les classes de notre application.</p>
<div style="text-align: center;"><img class="aligncenter size-full wp-image-161" title="Capture d’écran 2009-10-18 à 14.38.55" src="http://blog.lelevier.fr/wp-content/uploads/2009/10/Capture-d’écran-2009-10-18-à-14.38.55.png" alt="Capture d’écran 2009-10-18 à 14.38.55" width="325" height="88" /></div>
<p>Créez maintenant un fichier nommé &laquo;&nbsp;Loader.php&nbsp;&raquo; à la racine du dossier &laquo;&nbsp;library&nbsp;&raquo; dans lequel nous allons placer le code suivant:</p>
<blockquote><p>&lt;?php</p>
<p>function __autoload($class_name) {</p>
<p><span style="white-space: pre;"> </span>require_once &#8216;library/class/&#8217; . $class_name . &#8216;.php&#8217;;</p>
<p>}</p>
<p>?&gt;</p></blockquote>
<p>On peut maintenant appeler ce fichier dans notre script d&#8217;origine, par exemple ici notre index.php</p>
<blockquote><p>&lt;?php</p>
<p>require_once(&#8216;library/Loader.php&#8217;);</p></blockquote>
<p>Ainsi une instanciassions de classe du type:</p>
<blockquote><p>$sql_access = new db_access();</p></blockquote>
<p>va automatiquement inclure le fichier &laquo;&nbsp;library/class/db_access.php&nbsp;&raquo; contenant la classe &laquo;&nbsp;db_access&nbsp;&raquo; et nous nous retrouvons directement avec une organisation du projet sous cette forme:</p>
<div style="text-align: center;"><img class="aligncenter size-full wp-image-166" title="Capture d’écran 2009-10-18 à 23.00.58" src="http://blog.lelevier.fr/wp-content/uploads/2009/10/Capture-d’écran-2009-10-18-à-23.00.58.png" alt="Capture d’écran 2009-10-18 à 23.00.58" width="369" height="169" /></div>
<p>Bienvenu dans le monde des projets bien organisés!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lelevier.fr/loader-php-chargez-vos-class-automatiquement/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>If there&#8217;s something strange in your neighborhood</title>
		<link>http://blog.lelevier.fr/if-theres-something-strange-in-your-neighborhood/</link>
		<comments>http://blog.lelevier.fr/if-theres-something-strange-in-your-neighborhood/#comments</comments>
		<pubDate>Thu, 15 Oct 2009 11:48:03 +0000</pubDate>
		<dc:creator>Thibaut</dc:creator>
				<category><![CDATA[Divers]]></category>

		<guid isPermaLink="false">http://blog.lelevier.fr/?p=149</guid>
		<description><![CDATA[Who you gonna call?]]></description>
			<content:encoded><![CDATA[<p>Who you gonna call?<br />
<img class="aligncenter size-full wp-image-152" title="Ghostbusters" src="http://blog.lelevier.fr/wp-content/uploads/2009/10/tumblr_krhmojOWk81qzfxk8o1_500.jpg" alt="Ghostbusters" width="500" height="690" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lelevier.fr/if-theres-something-strange-in-your-neighborhood/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress et PHP 5.3</title>
		<link>http://blog.lelevier.fr/wordpress-et-php-5-3/</link>
		<comments>http://blog.lelevier.fr/wordpress-et-php-5-3/#comments</comments>
		<pubDate>Sun, 04 Oct 2009 14:01:43 +0000</pubDate>
		<dc:creator>Thibaut</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[server web]]></category>
		<category><![CDATA[serveur web]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://blog.lelevier.fr/?p=135</guid>
		<description><![CDATA[Après plusieurs tentatives d&#8217;installation (ou de migration) de WordPress sous un serveur PHP 5.3, je viens enfin de trouver la solution à ce qui semble être une incompatibilité due à une configuration non explicite de php. L&#8217;erreur est simple, vous affichez votre site/blog sous wordpress et celui ci vous hurle dessus que les fonction strtotime() [...]]]></description>
			<content:encoded><![CDATA[<p>Après plusieurs tentatives d&#8217;installation (ou de migration) de WordPress sous un serveur PHP 5.3, je viens enfin de trouver la solution à ce qui semble être une incompatibilité due à une configuration non explicite de php.</p>
<p>L&#8217;erreur est simple, vous affichez votre site/blog sous wordpress et celui ci vous hurle dessus que les fonction strtotime() et date() ne peut répondre à au système car le timezone n&#8217;a pas été défini dans php.</p>
<p style="text-align: center;"><img class="size-full wp-image-136  aligncenter" title="Capture d’écran 2009-10-04 à 15.53.29" src="http://blog.lelevier.fr/wp-content/uploads/2009/10/Capture-d’écran-2009-10-04-à-15.53.29.png" alt="Capture d’écran 2009-10-04 à 15.53.29" width="470" height="477" /></p>
<p>Reste donc a aller faire un tour dans votre php.ini, a rechercher &laquo;&nbsp;date.timezone = &nbsp;&raquo; et à plus préciser &laquo;&nbsp;Europe/Paris&nbsp;&raquo; (oui ici on est en France monsieur!) en prenant soin de décommenter la ligne (retirez le &laquo;&nbsp;;&nbsp;&raquo;)</p>
<p>Bon maintenant que j&#8217;ai downgrader mes serveurs en 5.2.10 je vais pouvoir remonter sur une 5.3!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lelevier.fr/wordpress-et-php-5-3/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Uffie &#8211; Pop the Glock</title>
		<link>http://blog.lelevier.fr/uffie-pop-the-glock/</link>
		<comments>http://blog.lelevier.fr/uffie-pop-the-glock/#comments</comments>
		<pubDate>Wed, 16 Sep 2009 20:16:12 +0000</pubDate>
		<dc:creator>Thibaut</dc:creator>
				<category><![CDATA[Musique]]></category>

		<guid isPermaLink="false">http://blog.lelevier.fr/?p=132</guid>
		<description><![CDATA[EDIT Clip Officiel: Uffie Pop The Glock from Uffie on Vimeo. Autre version:]]></description>
			<content:encoded><![CDATA[<p><strong>EDIT</strong> Clip Officiel:</p>
<div style="text-align: center;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="600" height="338" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=6879950&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="600" height="338" src="http://vimeo.com/moogaloop.swf?clip_id=6879950&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><a href="http://vimeo.com/6879950">Uffie Pop The Glock</a> from <a href="http://vimeo.com/uffie">Uffie</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
</div>
<p>Autre version:</p>
<p style="text-align: center;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/1wKpoIaj030&amp;hl=fr&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/1wKpoIaj030&amp;hl=fr&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lelevier.fr/uffie-pop-the-glock/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Partager une librairie PHP entre plusieurs sites</title>
		<link>http://blog.lelevier.fr/partager-une-librairie-php-entre-plusieurs-sites/</link>
		<comments>http://blog.lelevier.fr/partager-une-librairie-php-entre-plusieurs-sites/#comments</comments>
		<pubDate>Mon, 07 Sep 2009 19:41:32 +0000</pubDate>
		<dc:creator>Thibaut</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[include_path]]></category>
		<category><![CDATA[library]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[server web]]></category>
		<category><![CDATA[serveur]]></category>
		<category><![CDATA[serveur web]]></category>
		<category><![CDATA[zend]]></category>
		<category><![CDATA[zend framework]]></category>

		<guid isPermaLink="false">http://blog.lelevier.fr/?p=120</guid>
		<description><![CDATA[Sur un serveur en production, il peut nous arriver d&#8217;avoir plusieurs sites qui utilisent le même framework, ou le même fichier de configuration. De la même manière, les framework, comme dans mon cas Zend Framework, évoluent très rapidement et il peux être utile de gérer plusieurs versions sur le même serveur. Dans tous les cas, [...]]]></description>
			<content:encoded><![CDATA[<p>Sur un serveur en production, il peut nous arriver d&#8217;avoir plusieurs sites qui utilisent le même framework, ou le même fichier de configuration. De la même manière, les framework, comme dans mon cas Zend Framework, évoluent très rapidement et il peux être utile de gérer plusieurs versions sur le même serveur. Dans tous les cas, cette manipulation vous fera économiser de la place et facilitera vos mises à jours.</p>
<p>Commençons alors par placer dans un répertoire le ou les framework ainsi que les versions qui nous intéressent et incluons ce répertoire dans la configuration de php (votre fichier php.ini).<br />
Recherchez la ligne contenant la directive &laquo;&nbsp;include_path&nbsp;&raquo;. Celle si est commentée par défaut à l&#8217;aide d&#8217;un point-virgule (;). Elle décrit les différents répertoires contenant des fichiers sur lesquels nous voulons faire des include().<br />
Décommentez alors la ligne en supprimant le point-virgule et adapter la description du chemin en fonction de l&#8217;endroit où vous avez placer vos librairies.<br />
Dans mon cas, cela donne:</p>
<blockquote><p>include_path = &laquo;&nbsp;.:/var/www/library&nbsp;&raquo;</p></blockquote>
<p>Pensez à conserver le &laquo;&nbsp;.&nbsp;&raquo; dans la liste des chemins à inclure afin de pouvoir inclure un fichier localement dans vos différentes applications php et redémarrez votre serveur http.</p>
<p>Dans le cas où nous avons plusieurs versions, il peut aussi être intéressant de simplifier le chemin d&#8217;accès à la dernière version stable.<br />
On peux alors utilise de manière toute simple utiliser les liens virtuels unix:</p>
<blockquote><p>$ ln -s Zend_1.9.2 Zend</p></blockquote>
<p>Pensez également à régler vos droits sur vos librairies:</p>
<blockquote><p># chown -R www-data:www-data /var/www/library</p></blockquote>
<p><img class="aligncenter size-full wp-image-126" title="Capture d’écran 2009-09-07 à 21.45.28" src="http://blog.lelevier.fr/wp-content/uploads/2009/09/Capture-d’écran-2009-09-07-à-21.45.28.png" alt="Capture d’écran 2009-09-07 à 21.45.28" width="585" height="446" /><br />
Enfin, voyons comment nous allons pouvoir utiliser cette librairie partagée coté applications. Je reprend alors mon exemple de Zend et le fichier bootstrap dans lequel nous avions l&#8217;habitude de re-écrire le path d&#8217;include de php (ici Zend se trouvais dans le ./library et ./application/models/ contient les modèles de notre application MVC):</p>
<blockquote><p>set_include_path(&#8216;.&#8217;<br />
. PATH_SEPARATOR . &#8216;./library&#8217;<br />
. PATH_SEPARATOR . &#8216;./application/models/&#8217;<br />
. PATH_SEPARATOR . get_include_path());</p></blockquote>
<p>Le path contenant le Zend Framework étant maintenant inclue par le &laquo;&nbsp;get_include_path()&nbsp;&raquo; nous pouvons supprimer le ./library des répertoires inclus.</p>
<p>Ensuite nous appelions notre framework avec la ligne:</p>
<blockquote><p>require_once &#8216;Zend/Loader/Autoloader.php&#8217;;</p></blockquote>
<p>Si vous avez suivit toutes les indications précédente et que vous laissez la ligne telle quelle, le site chargera ici la version courante de Zend Framework que j&#8217;ai décrit tout à l&#8217;heure par le lien logique unix. C&#8217;est ici que ça deviens intéressant et que nous pouvons préciser la version de Zend à utiliser.</p>
<p>Selon la manière donc vous avez nommé vos répertoires (dans mon cas Zend_x.y.z ou x.y.z correspond à la version du framework), vous pouvez alors appeler par exemple une version 1.6.2 de Zend dans une ancienne application.</p>
<blockquote><p>require_once &#8216;Zend_1.6.2/Loader/Autoloader.php&#8217;;</p></blockquote>
<p>Libre à vous d&#8217;adapter tout cela à vos propres conventions de nommage et de rangement.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lelevier.fr/partager-une-librairie-php-entre-plusieurs-sites/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Configuration d&#8217;Exim pour l&#8217;envoi externe</title>
		<link>http://blog.lelevier.fr/configuration-dexim-pour-lenvoi-externe/</link>
		<comments>http://blog.lelevier.fr/configuration-dexim-pour-lenvoi-externe/#comments</comments>
		<pubDate>Sat, 22 Aug 2009 18:37:59 +0000</pubDate>
		<dc:creator>Thibaut</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[exim]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[mta]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[serveur web]]></category>
		<category><![CDATA[smtp]]></category>

		<guid isPermaLink="false">http://blog.lelevier.fr/?p=97</guid>
		<description><![CDATA[La plupart des applications web que nous pouvons être amené à déployer sur un serveur web utilise des fonctions d&#8217;envoi de mails. Afin de gérer soit même les files d&#8217;attentes, il peut alors être utile d&#8217;héberger soit même un serveur SMTP directement sur la machine qui héberge l&#8217;application. Nous allons donc voir comment configurer simplement [...]]]></description>
			<content:encoded><![CDATA[<p>La plupart des applications web que nous pouvons être amené à déployer sur un serveur web utilise des fonctions d&#8217;envoi de mails.</p>
<p>Afin de gérer soit même les files d&#8217;attentes, il peut alors être utile d&#8217;héberger soit même un serveur SMTP directement sur la machine qui héberge l&#8217;application. Nous allons donc voir comment configurer simplement Exim pour l&#8217;envoi de mails vers les domaines externes. Nous utiliserons une distribution Debian stable.</p>
<p>Commençons par installer Exim:</p>
<p># aptitude install exim4</p>
<p>Exim va alors s&#8217;installer avec une configuration de base que nous allons modifier avec l&#8217;assistant fourni par exim4-config:</p>
<p># dpkg-reconfigure exim4-config</p>
<p>Le premier écran vous expliquera le rôle de cet utilitaire, validez avec &laquo;&nbsp;Ok&nbsp;&raquo; pour passer à l&#8217;écran suivant.</p>
<p>Sur celui si, choisissez &laquo;&nbsp;Distribution direct par SMTP (site internet)&nbsp;&raquo;.</p>
<p>Ensuite sur l&#8217;écran suivant entrez le nom tel que vous l&#8217;avez défini dans votre configuration ou tel qu&#8217;il a été défini par votre hébergeur.</p>
<p>Deux écran plus loin, l&#8217;assistant va vous demander sur quelle adresse il va devoir accepter le courrier. Puisque nous sommes parti sur une configuration simple où le serveur d&#8217;applications (php par exemple) se trouve sur la même machine, nous utiliseront donc l&#8217;adresse 127.0.0.1 pour limiter les connections au serveur avec lui-même.</p>
<p>L&#8217;écran suivant nous demande alors de préciser sur quel autre nom le serveur doit accepter les mails. Nous pouvons ici lui repriser le nom DNS de notre machine.</p>
<p>Vient ensuite, la question des domaines à relayer. Nous l&#8217;avons déjà vu, nous n&#8217;acceptons les mails entrant que sur l&#8217;adresse de localhost: 127.0.0.1. Nous pouvons donc autoriser le transfert vers tous les domaines afin que les mails puissent sortir. Remplissez donc ce champ avec une étoile &laquo;&nbsp;*&nbsp;&raquo;.</p>
<p>Laissez la liste des machines à relayer vide car nous souhaitons que le serveur transmette lui même les mails sortants.</p>
<p>Deux écran plus loin, répondez &laquo;&nbsp;Non&nbsp;&raquo; à la proposition de minimiser les requêtes DNS, laissez la distribution du courrier au &laquo;&nbsp;format mbox dans /var/mail&nbsp;&raquo; et ne séparez pas la configuration dans plusieurs fichiers.</p>
<p>L&#8217;assistant va se fermer et va redémarrer Exim et vous pourrez tester sans problème le bon fonctionnement de votre MTA par exemple avec la fonction mail() de PHP.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lelevier.fr/configuration-dexim-pour-lenvoi-externe/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Twitter par script</title>
		<link>http://blog.lelevier.fr/twitter-par-script/</link>
		<comments>http://blog.lelevier.fr/twitter-par-script/#comments</comments>
		<pubDate>Fri, 21 Aug 2009 09:49:41 +0000</pubDate>
		<dc:creator>Thibaut</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[curl]]></category>
		<category><![CDATA[ligne de commande]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://blog.lelevier.fr/?p=114</guid>
		<description><![CDATA[Histoire d&#8217;intégrer twitter dans vos script, voici comment tweeter simplement via ligne de commande: curl -k -u user:pass -d status=&#160;&#187;mon tweet&#160;&#187; https://twitter.com/statuses/update.xml]]></description>
			<content:encoded><![CDATA[<p>Histoire d&#8217;intégrer twitter dans vos script, voici comment tweeter simplement via ligne de commande:</p>
<blockquote><p>curl -k -u user:pass -d status=&nbsp;&raquo;mon tweet&nbsp;&raquo; https://twitter.com/statuses/update.xml</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blog.lelevier.fr/twitter-par-script/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>NSlookup et Dig: surveillez vous mises à jours DNS</title>
		<link>http://blog.lelevier.fr/nslookup-et-dig-surveillez-vous-mises-a-jours-dns/</link>
		<comments>http://blog.lelevier.fr/nslookup-et-dig-surveillez-vous-mises-a-jours-dns/#comments</comments>
		<pubDate>Tue, 18 Aug 2009 21:25:41 +0000</pubDate>
		<dc:creator>Thibaut</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[dig]]></category>
		<category><![CDATA[dns]]></category>
		<category><![CDATA[hebergement]]></category>
		<category><![CDATA[nslookup]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://blog.lelevier.fr/?p=103</guid>
		<description><![CDATA[Lors de l&#8217;achat d&#8217;un nom de domaine chez un registar, celui ci fourni généralement des services d&#8217;hébergement, de mails, mais aussi les services DNS liés à la gestion de ce domaine. On peux alors modifier directement sa configuration DNS dans l&#8217;interface mis à disposition par l&#8217;hébergeur et cette configuration sera alors répliquée sur les différents [...]]]></description>
			<content:encoded><![CDATA[<p>Lors de l&#8217;achat d&#8217;un nom de domaine chez un registar, celui ci fourni généralement des services d&#8217;hébergement, de mails, mais aussi les services DNS liés à la gestion de ce domaine. On peux alors modifier directement sa configuration DNS dans l&#8217;interface mis à disposition par l&#8217;hébergeur et cette configuration sera alors répliquée sur les différents serveurs DNS desservant votre nom de domaine.</p>
<p>Nous allons voir ici comment contrôler la mise en applications de vos modifications via 2 outils en lignes de commande: NSLookup (présent sur tous systèmes) et Dig (présent de base sous Linux et Mac OS X, une version cygwin existe pour Windows).</p>
<p>Prenons un exemple concret, je viens de migrer mon blog sur un nouveau serveur et je souhaite que l&#8217;adresse &laquo;&nbsp;blog.lelevier.fr&nbsp;&raquo; pointe bien sur ce nouveau serveur. J&#8217;ai fait les modifications nécessaire dans l&#8217;interface de mon registar et je connaît l&#8217;adresse ip ou le nom de mon nouveau serveur.</p>
<p>Commençons par NSLookup avec une requête simple:</p>
<blockquote><p>23:03: tibo@Boudallu ~ % nslookup blog.lelevier.fr<br />
Server:		192.168.1.1<br />
Address:	192.168.1.1#53</p>
<p>Non-authoritative answer:<br />
blog.lelevier.fr	canonical name = rps.lelevier.fr.<br />
Name:	rps.lelevier.fr<br />
Address: 87.98.170.232</p></blockquote>
<p>Ici c&#8217;est mon serveur DNS local qui me répond (192.168.1.1) et bien qu&#8217;il n&#8217;ai pas autorité sur le domaine (il ne le gère pas directement) il me répond que &laquo;&nbsp;blog.lelevier.fr&nbsp;&raquo; est un Alias de &laquo;&nbsp;rps.lelevier.fr&nbsp;&raquo; défini par l&#8217;adresse &laquo;&nbsp;87.98.170.232&#8243; qui est justement mon serveur.</p>
<p>Même si le résultat est ici concluant nous allons partir sur le cas où la modification n&#8217;a pas encore été répliquée sur notre serveur local.<br />
Regardons alors directement sur les serveur DNS de notre registar pour voir si les modifications ont était prise en compte sur ces derniers.<br />
Commençons par trouver l&#8217;adresse ou le nom des serveurs DNS faisant autorité sur notre domaine avec Dig:</p>
<blockquote><p>23:04: tibo@Boudallu ~ % dig NS lelevier.fr</p>
<p>; &lt;&lt;&gt;&gt; DiG 9.4.3-P3 &lt;&lt;&gt;&gt; NS lelevier.fr<br />
;; global options:  printcmd<br />
;; Got answer:<br />
;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 64451<br />
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 2</p>
<p>;; QUESTION SECTION:<br />
;lelevier.fr.			IN	NS</p>
<p>;; ANSWER SECTION:<br />
lelevier.fr.		86400	IN	NS	dns11.ovh.net.<br />
lelevier.fr.		86400	IN	NS	ns11.ovh.net.</p>
<p>;; ADDITIONAL SECTION:<br />
dns11.ovh.net.		86371	IN	A	213.251.188.130<br />
ns11.ovh.net.		86371	IN	A	213.251.128.130</p>
<p>;; Query time: 54 msec<br />
;; SERVER: 192.168.1.1#53(192.168.1.1)<br />
;; WHEN: Wed Aug 19 00:06:38 2009<br />
;; MSG SIZE  rcvd: 107</p></blockquote>
<p>Nous pouvons lire ici dans la zone &laquo;&nbsp;ANSWER SECTION&nbsp;&raquo; que notre domaine est gérer par les serveur &laquo;&nbsp;dns11.ovh.net&nbsp;&raquo; et &laquo;&nbsp;ns11.ovh.net&nbsp;&raquo;.<br />
Retournons alors maintenant sur NSLookup pour vérifier l&#8217;état de la résolution sur un serveur précis.<br />
Lançez NSLookup sans argument avec la commande &laquo;&nbsp;NSLookup&nbsp;&raquo;, spécifiez le serveur DNS avec l&#8217;option &laquo;&nbsp;server&nbsp;&raquo; suivit du nom ou de l&#8217;ip d&#8217;un des serveur trouvé au dessus, et enfin entrez le nom DNS que vous souhaitez résoudre:</p>
<blockquote><p>23:06: tibo@Boudallu ~ % nslookup<br />
&gt; server dns11.ovh.net<br />
Default server: dns11.ovh.net<br />
Address: 213.251.188.130#53<br />
&gt; blog.lelevier.fr<br />
Server:		dns11.ovh.net<br />
Address:	213.251.188.130#53</p>
<p>blog.lelevier.fr	canonical name = rps.lelevier.fr.<br />
Name:	rps.lelevier.fr<br />
Address: 87.98.170.232<br />
&gt;</p></blockquote>
<p>On peut alors lire ici que le serveur en question redirige encore une fois &laquo;&nbsp;blog.lelevier.fr&nbsp;&raquo; vers l&#8217;hôte &laquo;&nbsp;rps.lelevier.fr&nbsp;&raquo; dont l&#8217;adresse est &laquo;&nbsp;87.98.170.232&#8243;. On pourra alors vérifier sur le second serveur DNS que les informations concordent et en conclure l&#8217;état de notre modification et sa prise en compte par notre registar.</p>
<p>A noté cependant qu&#8217;il faut généralement entre 4h et 48h pour que la modification soit répliquée.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lelevier.fr/nslookup-et-dig-surveillez-vous-mises-a-jours-dns/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>True Blood saison 2</title>
		<link>http://blog.lelevier.fr/true-blood-saison-2/</link>
		<comments>http://blog.lelevier.fr/true-blood-saison-2/#comments</comments>
		<pubDate>Tue, 04 Aug 2009 14:07:46 +0000</pubDate>
		<dc:creator>Thibaut</dc:creator>
				<category><![CDATA[Séries]]></category>
		<category><![CDATA[Alan Ball]]></category>
		<category><![CDATA[Série]]></category>
		<category><![CDATA[True Blood]]></category>

		<guid isPermaLink="false">http://blog.lelevier.fr/?p=78</guid>
		<description><![CDATA[Depuis quelques semaines maintenant la saison 2 de True Blood est diffusé tout les dimanches soir (heure US) sur HBO. Même si l&#8217;histoire stagne un peux au début de la saison, une fois les nouveaux personnages en place, l&#8217;intrigue reprendre de plus belles (épisode 6/7). Le 31 Juillet dernier, HBO à annoncé officiellement la 3ème [...]]]></description>
			<content:encoded><![CDATA[<p>Depuis quelques semaines maintenant la saison 2 de True Blood est diffusé tout les dimanches soir (heure US) sur HBO.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/qufAFY7FL0U&amp;hl=fr&amp;fs=1" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/qufAFY7FL0U&amp;hl=fr&amp;fs=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>Même si l&#8217;histoire stagne un peux au début de la saison, une fois les nouveaux personnages en place, l&#8217;intrigue reprendre de plus belles (épisode 6/7).</p>
<p>Le 31 Juillet dernier, HBO à annoncé officiellement la 3ème saison qui sera diffusée en 2010.</p>
<p>En attendant, prochain épisode dans la nuit de dimanche prochain!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lelevier.fr/true-blood-saison-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BIRDY NAM NAM &#8211; THE PARACHUTE ENDING</title>
		<link>http://blog.lelevier.fr/birdy-nam-nam-the-parachute-ending-teaser-officel/</link>
		<comments>http://blog.lelevier.fr/birdy-nam-nam-the-parachute-ending-teaser-officel/#comments</comments>
		<pubDate>Fri, 29 May 2009 19:28:37 +0000</pubDate>
		<dc:creator>Thibaut</dc:creator>
				<category><![CDATA[Musique]]></category>
		<category><![CDATA[Birdy Nam Nam]]></category>

		<guid isPermaLink="false">http://blog.lelevier.fr/?p=75</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="560" height="340" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/Bg64QR1Wwno&amp;hl=fr&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="560" height="340" src="http://www.youtube.com/v/Bg64QR1Wwno&amp;hl=fr&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lelevier.fr/birdy-nam-nam-the-parachute-ending-teaser-officel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Préparer Debian Lenny pour Zimbra</title>
		<link>http://blog.lelevier.fr/installation-de-zimbra-sur-debian-lenny/</link>
		<comments>http://blog.lelevier.fr/installation-de-zimbra-sur-debian-lenny/#comments</comments>
		<pubDate>Sun, 12 Apr 2009 00:56:56 +0000</pubDate>
		<dc:creator>Thibaut</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Zimbra]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[zimbra]]></category>

		<guid isPermaLink="false">http://blog.lelevier.fr/?p=58</guid>
		<description><![CDATA[Zimbra 5  ne supporte actuellement pas la nouvelle version stable de Debian : Lenny (alias 5.0) Avec Debian, il reste cependant facile de &#171;&#160;mixer&#160;&#187; les sources afin de faire concorder les version de package présentes sur différentes branches de la distribution. Le premier problème va alors venir du fichier /etc/debian_version qui nous dit clairement que [...]]]></description>
			<content:encoded><![CDATA[<p>Zimbra 5  ne supporte actuellement pas la nouvelle version stable de Debian : Lenny (alias 5.0)</p>
<p>Avec Debian, il reste cependant facile de &laquo;&nbsp;mixer&nbsp;&raquo; les sources afin de faire concorder les version de package présentes sur différentes branches de la distribution.</p>
<p>Le premier problème va alors venir du fichier /etc/debian_version qui nous dit clairement que nous sommes sur une version 5.0. Commençons alors par remplacer le 5 par un 4 dans ce fichier afin de laisser penser à Zimbra qu&#8217;il se trouve sur une machine sous Debian Etch.</p>
<p>Ensuite, nous allons avoir besoin d&#8217;une ancienne version de perl (5.8) uniquement disponible sous Etch.</p>
<p>Pour celà nous devons ajouter les sources de Etch dans la liste des sources de notre serveur pour la faire correspondre à quelque chose dans ce genre (les serveurs peuvent biensur être différents):</p>
<blockquote><p>deb http://ftp2.fr.debian.org/debian/ etch main<br />
deb-src http://ftp2.fr.debian.org/debian/ etch main</p>
<p>deb http://security.debian.org/ etch/updates main<br />
deb-src http://security.debian.org/ etch/updates main</p>
<p>deb http://ftp2.fr.debian.org/debian/ lenny main<br />
deb-src http://ftp2.fr.debian.org/debian/ lenny main</p>
<p>deb http://security.debian.org/ lenny/updates main<br />
deb-src http://security.debian.org/ lenny/updates main</p>
<p>deb http://volatile.debian.org/debian-volatile lenny/volatile main<br />
deb-src http://volatile.debian.org/debian-volatile lenny/volatile main</p></blockquote>
<p>Nous devons ensuite mettre à jour la liste des sources:</p>
<blockquote><p># aptitude update</p></blockquote>
<p>Et nous pouvons enfin installer perl 5.8:</p>
<blockquote><p># aptitude install perl=5.8.8-7etch6</p></blockquote>
<p>Nous pouvons maintenant supprimer exim</p>
<blockquote><p># aptitude remove exim4</p></blockquote>
<p>et installer les packages requis</p>
<blockquote><p># aptitude install  sudo fetchmail openssl libltdl3 libgmp3c2 libexpat1</p></blockquote>
<p>Enfin vérifiez que le nom plainement qualifié du serveur pointe vers son IP réel et non pas sur 127.0.0.1 dans le fichier /etc/hosts et récuperez la dernière version de Zimbra 5 sur le site de Zimbra pour l&#8217;installer.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lelevier.fr/installation-de-zimbra-sur-debian-lenny/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Bonjour, je voudrais un système sécurisé SVP&#8230;</title>
		<link>http://blog.lelevier.fr/bonjour-je-voudrai-un-systeme-securise-svp/</link>
		<comments>http://blog.lelevier.fr/bonjour-je-voudrai-un-systeme-securise-svp/#comments</comments>
		<pubDate>Wed, 08 Apr 2009 16:37:54 +0000</pubDate>
		<dc:creator>Thibaut</dc:creator>
				<category><![CDATA[Divers]]></category>
		<category><![CDATA[Sécurité]]></category>
		<category><![CDATA[exploit]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[root]]></category>
		<category><![CDATA[Securité]]></category>

		<guid isPermaLink="false">http://blog.lelevier.fr/?p=50</guid>
		<description><![CDATA[J&#8217;aime bien le bouche à oreille, car même quand on ne suis pas l&#8217;actualitée, on fini par avoir l&#8217;info L&#8217;homme qui préche le FreeBSD à avoué sa faute et m&#8217;a fait voir ce petit morceau de code Ce qui nous donne: Merci pour l&#8217;info]]></description>
			<content:encoded><![CDATA[<p>J&#8217;aime bien le bouche à oreille, car même quand on ne suis pas l&#8217;actualitée, on fini par avoir l&#8217;info <img src='http://blog.lelevier.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href="http://www.pjollet.fr/" target="_blank">L&#8217;homme qui préche le FreeBSD</a> à avoué sa faute et m&#8217;a fait voir <a href="http://milw0rm.com/exploits/8261" target="_blank">ce petit morceau de code</a> Ce qui nous donne:</p>
<p><img class="aligncenter size-full wp-image-51" title="image-1" src="http://blog.lelevier.fr/wp-content/uploads/2009/04/image-1.png" alt="image-1" width="585" height="447" />Merci pour l&#8217;info <img src='http://blog.lelevier.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lelevier.fr/bonjour-je-voudrai-un-systeme-securise-svp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Migration du Blog</title>
		<link>http://blog.lelevier.fr/migration-du-blog/</link>
		<comments>http://blog.lelevier.fr/migration-du-blog/#comments</comments>
		<pubDate>Wed, 08 Apr 2009 00:00:31 +0000</pubDate>
		<dc:creator>Thibaut</dc:creator>
				<category><![CDATA[Divers]]></category>

		<guid isPermaLink="false">http://blog.lelevier.fr/?p=56</guid>
		<description><![CDATA[Ceci est le nouvel emplacement de mon blog. Celui ci n&#8217;est plus hebergé sur blogspot comme le fut l&#8217;ancien mais sur une plateforme wordpress herbergé sur un serveur privé. Merci donc de prendre en compte cette nouvelle adresse: blog.lelevier.fr]]></description>
			<content:encoded><![CDATA[<p>Ceci est le nouvel emplacement de mon blog.</p>
<p>Celui ci n&#8217;est plus hebergé sur blogspot comme le fut <a href="http://surtemps.blogspot.com">l&#8217;ancien</a> mais sur une plateforme wordpress herbergé sur un serveur privé.</p>
<p>Merci donc de prendre en compte cette nouvelle adresse: <a href="http://blog.lelevier.fr ">blog.lelevier.fr </a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lelevier.fr/migration-du-blog/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installation de mod_python pour Apache sous Mac OS X</title>
		<link>http://blog.lelevier.fr/installation-de-mod_python-pour-apache-sous-mac-os-x/</link>
		<comments>http://blog.lelevier.fr/installation-de-mod_python-pour-apache-sous-mac-os-x/#comments</comments>
		<pubDate>Mon, 30 Mar 2009 23:12:00 +0000</pubDate>
		<dc:creator>Thibaut</dc:creator>
				<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Apache]]></category>

		<guid isPermaLink="false">http://blog.lelevier.fr/?p=19</guid>
		<description><![CDATA[Bataille d&#8217;une soirée, j&#8217;ai passé pas mal de temps avant de réussir à faire redémarré mon Apache avec le chargement du module python. L&#8217;erreur est pourtant simple: mod_python.so: mach-o, but wrong architecture Curieusement, il m&#8217;a alors fallu compiler un mod_python compatible avec toutes les architectures suportées par OS X (alors que je n&#8217;ai que des [...]]]></description>
			<content:encoded><![CDATA[<p>Bataille d&#8217;une soirée, j&#8217;ai passé pas mal de temps avant de réussir à faire redémarré mon Apache avec le chargement du module python.</p>
<p>L&#8217;erreur est pourtant simple:</p>
<blockquote><p>mod_python.so: mach-o, but wrong architecture</p></blockquote>
<p>Curieusement, il m&#8217;a alors fallu compiler un mod_python compatible avec toutes les architectures suportées par OS X (alors que je n&#8217;ai que des machines intel&#8230;)</p>
<p>Attention, pré-requis: vous devez avoir &laquo;&nbsp;gcc&nbsp;&raquo; et &laquo;&nbsp;make&nbsp;&raquo; installé sur votre machine.<br />
Si ce n&#8217;est pas le cas, installez les xcodestools.</p>
<p>Voici alors comment précéder:</p>
<p>-Tout d&#8217;abord, récupérez les dernières sources de mod_python sur <a href="http://www.apache.org/dist/httpd/modpython/">le site du projet apache</a><br />
Actuellement, la dernière version étant la 3.3.1, l&#8217;url compléte des sources sera: <a href="http://www.apache.org/dist/httpd/modpython/mod_python-3.3.1.tgz">http://www.apache.org/dist/httpd/modpython/mod_python-3.3.1.tgz</a> (utilisez wget si vous l&#8217;avez installé!)</p>
<p>-Ouvrez un terminal est localisez l&#8217;endroit où ses sources ont été téléchargées (certainemant dans ~/Downloads)</p>
<p>-Décompressez l&#8217;archive:</p>
<blockquote><p>% tar xvf mod_python-X.Y.Z.tgz</p></blockquote>
<p>(notez que le X.Y.Z correspond à votre version)<br />
et entrez dans le dossier:</p>
<blockquote><p>% cd mod_python-X.Y.Z</p></blockquote>
<p>-Commençons par configurer les sources en précisant l&#8217;emplacement d&#8217;<a href="http://httpd.apache.org/docs/2.2/programs/apxs.html">apxs</a></p>
<blockquote><p>% ./configure &#8211;with-apxs=/usr/sbin/apxs</p></blockquote>
<p>Laissons la machine mouliner et si tout ce passe bien elle devrai nous créer les bons Makefile.</p>
<p>C&#8217;est là que ça se complique puisque nous allons modifier directement le Makefile pour lui préciser les architectures à utiliser:</p>
<p>-Ouvrez donc le fichier src/MakeFile avec votre éditeur de text favori (vi est le mien!)</p>
<p>-Reperez la ligne LDFLAGS et ajoutez en fin de ligne:</p>
<blockquote><p>-arch x86_64 -arch ppc -arch i386</p></blockquote>
<p>Pour obtenir quelque chose du genre:</p>
<blockquote><p>LDFLAGS= -Wl,-framework,Python  -u _PyMac_Error -framework Python   -Wl,-F.  -arch x86_64 -arch ppc -arch i386</p></blockquote>
<p>-Interessez vous maintenant à la ligne CFLAGS et ajoutez lui, en fin de ligne encore une fois:</p>
<blockquote><p>-arch x86_64 -arch ppc -arch i386</p></blockquote>
<p>Vous obtiendrez alors quelque chose qui ressemblera à ceci:</p>
<blockquote><p>CFLAGS=$(OPT) $(INCLUDES) -arch x86_64 -arch ppc -arch i386</p></blockquote>
<p>-Enfin dans la section &laquo;&nbsp;mod_python.so: $(SRCS)&nbsp;&raquo; (un peu plus bas), ajoutez les options:</p>
<blockquote><p>-Wc,&nbsp;&raquo;-arch x86_64&#8243; -Wc,&nbsp;&raquo;-arch ppc&nbsp;&raquo; -Wc,&nbsp;&raquo;-arch i386&#8243;</p></blockquote>
<p>après l&#8217;option -c de la ligne</p>
<blockquote><p>$(APXS) $(INCLUDES) -c $(SRCS) $(LDFLAGS) $(LIBS)</p></blockquote>
<p>pour obtenir un résultat proche de celui-ci:</p>
<blockquote><p>$(APXS) $(INCLUDES) -c -Wc,&nbsp;&raquo;-arch x86_64&#8243; -Wc,&nbsp;&raquo;-arch ppc&nbsp;&raquo; -Wc,&nbsp;&raquo;-arch i386&#8243; $(SRCS) $(LDFLAGS) $(LIBS)</p></blockquote>
<p>-Enregistrez vous modifications et quittez l&#8217;éditeur de texte pour revenir dans le dossier principal des sources.</p>
<p>Passons maintenant à la compilation de ce fameu module:</p>
<p>-Un petit</p>
<blockquote><p>make</p></blockquote>
<p>suvit d&#8217;un</p>
<blockquote><p>sudo make install</p></blockquote>
<p>devrai faire apparaitre un module nommé &laquo;&nbsp;mod_python.so&nbsp;&raquo; dans le dossier /usr/libexec/apache2</p>
<p>-Pour plus d&#8217;information sur notre module:</p>
<blockquote><p>% file mod_python.so<br />
mod_python.so: Mach-O universal binary with 3 architectures<br />
mod_python.so (for architecture x86_64): Mach-O 64-bit bundle x86_64<br />
mod_python.so (for architecture ppc7400): Mach-O bundle ppc<br />
mod_python.so (for architecture i386): Mach-O bundle i386</p></blockquote>
<p>Enfin pour finir, activons le module dans Apache et voyons le résultat:</p>
<p>-Editez le fichier /etc/apache2/httpd.conf avec les droits administrateur et ajoutez la ligne</p>
<blockquote><p>LoadModule python_module libexec/apache2/mod_python.so</p></blockquote>
<p>(proprement parmi les autres LoadModule)</p>
<p>-Enfin pour tester le tout, ajoutez ces lignes à la toute fin du fichier:</p>
<blockquote><p>&lt;Location /mpinfo&gt;<br />
SetHandler mod_python<br />
PythonInterpreter main_interpreter<br />
PythonHandler mod_python.testhandler<br />
&lt;/Location&gt;</p></blockquote>
<p>-Sauvegardez les modification, quittez l&#8217;éditeur de texte et relancez apache:</p>
<blockquote><p>apachectl -k restart</p></blockquote>
<p>Le final:<br />
Connectez vous maintenant à l&#8217;adresse <a href="http://localhost/mpinfo">http://localhost/mpinfo</a> et vous remarquerez que votre serveur fonctionne bien avec les extensions python <img src='http://blog.lelevier.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<div class="blogger-post-footer"><img src="http://res1.blogblog.com/tracker/6740904500241404516-8039988222000421172?l=surtemps.blogspot.com" alt="" width="1" height="1" /></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.lelevier.fr/installation-de-mod_python-pour-apache-sous-mac-os-x/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Hug a developer today</title>
		<link>http://blog.lelevier.fr/hug-a-developer-today/</link>
		<comments>http://blog.lelevier.fr/hug-a-developer-today/#comments</comments>
		<pubDate>Fri, 27 Feb 2009 01:16:00 +0000</pubDate>
		<dc:creator>Thibaut</dc:creator>
				<category><![CDATA[Divers]]></category>

		<guid isPermaLink="false">http://blog.lelevier.fr/?p=18</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="293" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://blip.tv/play/gYwjwZJqjdEh" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="480" height="293" src="http://blip.tv/play/gYwjwZJqjdEh" allowfullscreen="true"></embed></object></p>
<div class="blogger-post-footer"><img src="http://res1.blogblog.com/tracker/6740904500241404516-6661649416984524895?l=surtemps.blogspot.com" alt="" width="1" height="1" /></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.lelevier.fr/hug-a-developer-today/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
