<?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>Vincent Mazenod, aka mazenovi, aka voisin de gennetines &#187; www</title>
	<atom:link href="http://blog.mazenod.fr/tag/www/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.mazenod.fr</link>
	<description>#ispcp #php #symfony #social_networking #cornemuse</description>
	<lastBuildDate>Wed, 23 Nov 2011 09:46:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>forcer l&#8217;utilisation de ssl sur un sous domaine avec ispcp</title>
		<link>http://blog.mazenod.fr/2011/03/forcer-lutilisation-de-ssl-sur-un-sous-domaine-avec-ispcp/</link>
		<comments>http://blog.mazenod.fr/2011/03/forcer-lutilisation-de-ssl-sur-un-sous-domaine-avec-ispcp/#comments</comments>
		<pubDate>Mon, 28 Mar 2011 12:11:56 +0000</pubDate>
		<dc:creator>mazenovi</dc:creator>
				<category><![CDATA[bricolage]]></category>
		<category><![CDATA[dev]]></category>
		<category><![CDATA[libre]]></category>
		<category><![CDATA[Non classé]]></category>
		<category><![CDATA[securité]]></category>
		<category><![CDATA[gratuit]]></category>
		<category><![CDATA[ispcp]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[sécurité]]></category>
		<category><![CDATA[www]]></category>

		<guid isPermaLink="false">http://blog.mazenod.fr/?p=1878</guid>
		<description><![CDATA[<p><a href="http://blog.mazenod.fr/wp-content/uploads/2011/03/isp-control-panel_bigger.jpg"><img class="alignleft" style="margin-left: 20px; margin-right: 20px;" title="isp-control-panel_bigger" src="http://blog.mazenod.fr/wp-content/uploads/2011/03/isp-control-panel_bigger.jpg" alt="" width="73" height="73" /></a>Apprenez comment ajouter et même forcer l'utilisation de ssl sur les domaines ou sous domaines que vous hébergez ispcp, un control panel simple et complet</p>
]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.mazenod.fr%2F2011%2F03%2Fforcer-lutilisation-de-ssl-sur-un-sous-domaine-avec-ispcp%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.mazenod.fr%2F2011%2F03%2Fforcer-lutilisation-de-ssl-sur-un-sous-domaine-avec-ispcp%2F&amp;style=normal&amp;b=2" height="61" width="50" title="forcer lutilisation de ssl sur un sous domaine avec ispcp" alt=" forcer lutilisation de ssl sur un sous domaine avec ispcp" /><br />
			</a>
		</div>
<p>Tout d&#8217;abord il faut activer ssl sur votre serveur et générer vos certificats ssl (à moins que vous en ayez déjà).</p>
<p>Le how to officiel d&#8217;ispcp <a href="http://isp-control.net/documentation/howto/security/ssl_made_easy">How to: SSL made easy</a> est très bien fait et vous apprendra en premier lieu comment sécuriser votre control panel.</p>
<p><a href="http://blog.mazenod.fr/wp-content/uploads/2011/03/ispcp.png" rel="lightbox[1878]"><img class="aligncenter size-full wp-image-1880" title="ispcp" src="http://blog.mazenod.fr/wp-content/uploads/2011/03/ispcp.png" alt="ispcp forcer lutilisation de ssl sur un sous domaine avec ispcp" width="502" height="256" /></a></p>
<p>Ayant un peu plus cherché pour mettre la même chose en place avec un sous domaine géré par ispcp, je me permets de relayer la solution (en allemand) que<a href="http://isp-control.net/forum/printthread.php?tid=9450"> j&#8217;ai trouvé dans un forum</a>.</p>
<p>le but est de créer un virtual host sub.domain.tld accessible en ssl (sachant que le virtual host est simplement créé avec ispcp)</p>
<p>il faut d&#8217;abord créer vhost en écoute sur le port 443 en éditant</p>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>apache2<span style="color: #000000; font-weight: bold;">/</span>site-available<span style="color: #000000; font-weight: bold;">/</span>sub-ssl</div></div>
<p>et en y ajoutant</p>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">&lt;</span>VirtualHost XXX.XXX.XXX.XXX:<span style="color: #000000;">443</span><span style="color: #000000; font-weight: bold;">&gt;</span><br />
<br />
&nbsp; &nbsp; SSLEngine On<br />
<br />
&nbsp; &nbsp; SSLCertificateFile <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>ssl<span style="color: #000000; font-weight: bold;">/</span>certs<span style="color: #000000; font-weight: bold;">/</span>domain.tld.crt<br />
&nbsp; &nbsp; SSLCertificateKeyFile <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>ssl<span style="color: #000000; font-weight: bold;">/</span>certs<span style="color: #000000; font-weight: bold;">/</span>domain.tld.key<br />
<br />
&nbsp; &nbsp; SSLProtocol All <span style="color: #660033;">-SSLv2</span><br />
&nbsp; &nbsp; SSLCipherSuite ALL:<span style="color: #000000; font-weight: bold;">!</span>EXP:<span style="color: #000000; font-weight: bold;">!</span>NULL:<span style="color: #000000; font-weight: bold;">!</span>ADH:<span style="color: #000000; font-weight: bold;">!</span>LOW<br />
&nbsp; &nbsp; SetEnvIf User-Agent “.<span style="color: #000000; font-weight: bold;">*</span>MSIE.<span style="color: #000000; font-weight: bold;">*</span>” nokeepalive ssl-unclean-shutdown<br />
<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;</span>IfModule suexec_module<span style="color: #000000; font-weight: bold;">&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SuexecUserGroup vu2001 vu2001<br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;/</span>IfModule<span style="color: #000000; font-weight: bold;">&gt;</span><br />
<br />
&nbsp; &nbsp; ServerAdmin &nbsp; &nbsp; webmestre.cerdi<span style="color: #000000; font-weight: bold;">@</span>u-clermont1.fr<br />
&nbsp; &nbsp; DocumentRoot &nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>virtual<span style="color: #000000; font-weight: bold;">/</span>domain.tld<span style="color: #000000; font-weight: bold;">/</span>sub<span style="color: #000000; font-weight: bold;">/</span>htdocs<br />
<br />
&nbsp; &nbsp; ServerName &nbsp; &nbsp; &nbsp;pssi.domain.tld<br />
<br />
&nbsp; &nbsp; Alias <span style="color: #000000; font-weight: bold;">/</span>errors <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>virtual<span style="color: #000000; font-weight: bold;">/</span>domain.tld<span style="color: #000000; font-weight: bold;">/</span>errors<span style="color: #000000; font-weight: bold;">/</span><br />
<br />
&nbsp; &nbsp; ErrorDocument <span style="color: #000000;">401</span> <span style="color: #000000; font-weight: bold;">/</span>errors<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">401</span>.html<br />
&nbsp; &nbsp; ErrorDocument <span style="color: #000000;">403</span> <span style="color: #000000; font-weight: bold;">/</span>errors<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">403</span>.html<br />
&nbsp; &nbsp; ErrorDocument <span style="color: #000000;">404</span> <span style="color: #000000; font-weight: bold;">/</span>errors<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">404</span>.html<br />
&nbsp; &nbsp; ErrorDocument <span style="color: #000000;">500</span> <span style="color: #000000; font-weight: bold;">/</span>errors<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">500</span>.html<br />
&nbsp; &nbsp; ErrorDocument <span style="color: #000000;">503</span> <span style="color: #000000; font-weight: bold;">/</span>errors<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">503</span>.html<br />
<br />
&nbsp; &nbsp; ErrorLog <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>log<span style="color: #000000; font-weight: bold;">/</span>apache2<span style="color: #000000; font-weight: bold;">/</span>ssl_error_log<br />
&nbsp; &nbsp; CustomLog <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>log<span style="color: #000000; font-weight: bold;">/</span>apache2<span style="color: #000000; font-weight: bold;">/</span>ssl_request_log &nbsp; ssl_combined<br />
<br />
&nbsp; &nbsp; <span style="color: #666666; font-style: italic;"># httpd sub entry cgi support BEGIN.</span><br />
&nbsp; &nbsp; ScriptAlias <span style="color: #000000; font-weight: bold;">/</span>cgi-bin<span style="color: #000000; font-weight: bold;">/</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>virtual<span style="color: #000000; font-weight: bold;">/</span>domain.tld<span style="color: #000000; font-weight: bold;">/</span>sub<span style="color: #000000; font-weight: bold;">/</span>cgi-bin<span style="color: #000000; font-weight: bold;">/</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;</span>Directory <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>virtual<span style="color: #000000; font-weight: bold;">/</span>domain.tld<span style="color: #000000; font-weight: bold;">/</span>sub<span style="color: #000000; font-weight: bold;">/</span>cgi-bin<span style="color: #000000; font-weight: bold;">&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; AllowOverride AuthConfig<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #666666; font-style: italic;">#Options ExecCGI</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; Order allow,deny<br />
&nbsp; &nbsp; &nbsp; &nbsp; Allow from all<br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;/</span>Directory<span style="color: #000000; font-weight: bold;">&gt;</span><br />
&nbsp; &nbsp; <span style="color: #666666; font-style: italic;"># httpd sub entry cgi support END.</span><br />
<br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;</span>Directory <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>virtual<span style="color: #000000; font-weight: bold;">/</span>domain.tld<span style="color: #000000; font-weight: bold;">/</span>sub<span style="color: #000000; font-weight: bold;">/</span>htdocs<span style="color: #000000; font-weight: bold;">&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #666666; font-style: italic;"># httpd sub entry PHP support BEGIN.</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #666666; font-style: italic;"># httpd sub entry PHP support END.</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; Options <span style="color: #660033;">-Indexes</span> Includes FollowSymLinks MultiViews<br />
&nbsp; &nbsp; &nbsp; &nbsp; AllowOverride All<br />
&nbsp; &nbsp; &nbsp; &nbsp; Order allow,deny<br />
&nbsp; &nbsp; &nbsp; &nbsp; Allow from all<br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;/</span>Directory<span style="color: #000000; font-weight: bold;">&gt;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #666666; font-style: italic;"># httpd sub entry PHP2 support BEGIN.</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;</span>IfModule mod_php5.c<span style="color: #000000; font-weight: bold;">&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; php_admin_value open_basedir <span style="color: #ff0000;">&quot;/var/www/virtual/domain.tld/:/var/www/virtual/domain.tld/phptmp/:/usr/share/php/&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; php_admin_value upload_tmp_dir <span style="color: #ff0000;">&quot;/var/www/virtual/domain.tld/phptmp/&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; php_admin_value session.save_path <span style="color: #ff0000;">&quot;/var/www/virtual/domain.tld/phptmp/&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; php_admin_value sendmail_path <span style="color: #ff0000;">'/usr/sbin/sendmail -f vu2001 -t -i'</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;/</span>IfModule<span style="color: #000000; font-weight: bold;">&gt;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;</span>IfModule mod_fastcgi.c<span style="color: #000000; font-weight: bold;">&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; ScriptAlias <span style="color: #000000; font-weight: bold;">/</span>php5<span style="color: #000000; font-weight: bold;">/</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>fcgi<span style="color: #000000; font-weight: bold;">/</span>domain.tld<span style="color: #000000; font-weight: bold;">/</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;</span>Directory <span style="color: #ff0000;">&quot;/var/www/fcgi/domain.tld&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; AllowOverride None<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Options +ExecCGI <span style="color: #660033;">-MultiViews</span> <span style="color: #660033;">-Indexes</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Order allow,deny<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Allow from all<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;/</span>Directory<span style="color: #000000; font-weight: bold;">&gt;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;/</span>IfModule<span style="color: #000000; font-weight: bold;">&gt;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;</span>IfModule mod_fcgid.c<span style="color: #000000; font-weight: bold;">&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; Include <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>apache2<span style="color: #000000; font-weight: bold;">/</span>mods-available<span style="color: #000000; font-weight: bold;">/</span>fcgid_ispcp.conf<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;</span>Directory <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>virtual<span style="color: #000000; font-weight: bold;">/</span>domain.tld<span style="color: #000000; font-weight: bold;">/</span>sub<span style="color: #000000; font-weight: bold;">/</span>htdocs<span style="color: #000000; font-weight: bold;">&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; FCGIWrapper <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>fcgi<span style="color: #000000; font-weight: bold;">/</span>domain.tld<span style="color: #000000; font-weight: bold;">/</span>php5-fcgi-starter .php<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Options +ExecCGI<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;/</span>Directory<span style="color: #000000; font-weight: bold;">&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;</span>Directory <span style="color: #ff0000;">&quot;/var/www/fcgi/domain.tld&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; AllowOverride None<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Options +ExecCGI MultiViews <span style="color: #660033;">-Indexes</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Order allow,deny<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Allow from all<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;/</span>Directory<span style="color: #000000; font-weight: bold;">&gt;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;/</span>IfModule<span style="color: #000000; font-weight: bold;">&gt;</span><br />
&nbsp; &nbsp; <span style="color: #666666; font-style: italic;"># httpd sub entry PHP2 support END.</span><br />
<br />
<span style="color: #000000; font-weight: bold;">&lt;/</span>VirtualHost<span style="color: #000000; font-weight: bold;">&gt;</span></div></div>
<p>activer le virtual host</p>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">sudo</span> a2ensite sub-ssl</div></div>
<p>et recharger la configuration d&#8217;apache</p>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>apache2 reload</div></div>
<p>reste à interdire l&#8217;utilisation du http non sécurisé, ce qui revient à forcer le https via un règle de rewriting qui peut par exemple être mise dans un .htaccess à la racine du sous domaine</p>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>virtual<span style="color: #000000; font-weight: bold;">/</span>domain.tld<span style="color: #000000; font-weight: bold;">/</span>sub<span style="color: #000000; font-weight: bold;">/</span>htdocs<span style="color: #000000; font-weight: bold;">/</span>.htaccess</div></div>
<p>et ajouter quelque chose du genre<a href="http://blog.mazenod.fr/wp-content/uploads/2011/03/isp-control-panel_bigger.jpg" rel="lightbox[1878]"><br />
</a></p>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">&lt;</span>IfModule mod_rewrite.c<span style="color: #000000; font-weight: bold;">&gt;</span><br />
&nbsp; &nbsp;RewriteEngine On<br />
&nbsp; &nbsp;RewriteCond <span style="color: #000000; font-weight: bold;">%</span><span style="color: #7a0874; font-weight: bold;">&#123;</span>SERVER_PORT<span style="color: #7a0874; font-weight: bold;">&#125;</span> <span style="color: #000000;">80</span><br />
&nbsp; &nbsp;RewriteRule ^<span style="color: #7a0874; font-weight: bold;">&#40;</span>.<span style="color: #000000; font-weight: bold;">*</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>$ https:<span style="color: #000000; font-weight: bold;">//</span>sub.domain.tld<span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$1</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span>R,L<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000; font-weight: bold;">&lt;/</span>IfModule<span style="color: #000000; font-weight: bold;">&amp;</span>gt<span style="color: #000000; font-weight: bold;">&gt;</span></div></div>
<p><a href="http://blog.mazenod.fr/wp-content/uploads/2011/03/ispcp-box.jpg" rel="lightbox[1878]"><img class="aligncenter size-full wp-image-1882" title="ispcp-box" src="http://blog.mazenod.fr/wp-content/uploads/2011/03/ispcp-box.jpg" alt="ispcp box forcer lutilisation de ssl sur un sous domaine avec ispcp" width="219" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mazenod.fr/2011/03/forcer-lutilisation-de-ssl-sur-un-sous-domaine-avec-ispcp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>postgreSQL &amp; xampp portable sous windows</title>
		<link>http://blog.mazenod.fr/2011/03/postgresql-xampp-portable-sous-windows/</link>
		<comments>http://blog.mazenod.fr/2011/03/postgresql-xampp-portable-sous-windows/#comments</comments>
		<pubDate>Wed, 23 Mar 2011 18:09:41 +0000</pubDate>
		<dc:creator>mazenovi</dc:creator>
				<category><![CDATA[bricolage]]></category>
		<category><![CDATA[dev]]></category>
		<category><![CDATA[libre]]></category>
		<category><![CDATA[portable apps]]></category>
		<category><![CDATA[doctrine]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[www]]></category>

		<guid isPermaLink="false">http://blog.mazenod.fr/?p=1862</guid>
		<description><![CDATA[<p><a href="http://blog.mazenod.fr/wp-content/uploads/2011/03/03568004-photo-logo-postgresql.jpg"><img class="alignleft" style="margin-left: 20px; margin-right: 20px;" title="03568004-photo-logo-postgresql" src="http://blog.mazenod.fr/wp-content/uploads/2011/03/03568004-photo-logo-postgresql.jpg" alt="" width="220" height="170" /></a>PostgreSQL est une alternative libre et professionnelle à MySQL. Si il est répandu dans le monde UNIX il l'est un peu moins dans le monde windows, et encore moins en tant qu'application portable. Le propos de ce post est donc de pouvoir installer ce SGBD afin de l'intégrer à un XAMPP portable déjà installé</p>
]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.mazenod.fr%2F2011%2F03%2Fpostgresql-xampp-portable-sous-windows%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.mazenod.fr%2F2011%2F03%2Fpostgresql-xampp-portable-sous-windows%2F&amp;style=normal&amp;b=2" height="61" width="50" title="postgreSQL & xampp portable sous windows" alt=" postgreSQL & xampp portable sous windows" /><br />
			</a>
		</div>
<p>Tout est dans le titre je crois. Je suis parti de ce billet <a href="http://notepad.patheticcockroach.com/628/adding-postgresql-portable-to-xampp-on-windows/">http://notepad.patheticcockroach.com/628/adding-postgresql-portable-to-xampp-on-windows/</a>et je vous livre ce qui a fonctionné pour moi. J&#8217;ai déjà expliqué sur ce blog <a href="http://blog.mazenod.fr/2009/11/environnement-de-developpement-portable-pour-symfony-framakey/">comment installer une plateforme xampp portable sous windows</a>.</p>
<p>Le prérequis est donc d&#8217;en avoir une fonctionnelle pour la suite <img src='http://blog.mazenod.fr/wp-includes/images/smilies/icon_wink.gif' alt="icon wink postgreSQL & xampp portable sous windows" class='wp-smiley' title="postgreSQL & xampp portable sous windows" /> </p>
<p>Tout d&#8217;abord il vous faudra une version portable de postrgre, que vous trouverez sur <a href="http://www.postgresql.org/download/windows">http://www.postgresql.org/download/windows</a>. En tant qu&#8217;<em>&laquo;&nbsp;Advanced user&nbsp;&raquo; </em>vous téléchagerez l&#8217; <a href="http://www.enterprisedb.com/products/pgbindownload.do">archive zip</a> sans l&#8217;installeur (la version portable quoi). J&#8217;ai opté pour la <em> 9.0.3-1</em> qui semble être la stable du moment.</p>
<p>Une fois l&#8217;archive décompressée, copier / coller le répertoire pgsql qu&#8217;elle contient dans Z:/MyApps/xampp/.</p>
<p><a href="http://blog.mazenod.fr/wp-content/uploads/2011/03/images.jpg" rel="lightbox[1862]"><img class="aligncenter size-full wp-image-1874" title="images" src="http://blog.mazenod.fr/wp-content/uploads/2011/03/images.jpg" alt="images postgreSQL & xampp portable sous windows" width="259" height="194" /></a></p>
<p>La première des choses à faire est ensuite de créer un cluster en tapant</p>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">Z:\MyApps\xampp\pgsql\bin\initdb.exe <span style="color: #660033;">-D</span> ..\data<br />
<br />
Les fichiers de ce cluster appartiendront à l<span style="color: #ff0000;">'utilisateur « mazenovi».<br />
Le processus serveur doit également lui appartenir.<br />
<br />
Le cluster sera initialisé avec la locale French_France.1252.<br />
L'</span>encodage par défaut des bases de données a été configuré en conséquence<br />
avec WIN1252.<br />
La configuration de la recherche plein texte a été initialisée à « french ».<br />
<br />
correction des droits sur le répertoire existant ..<span style="color: #000000; font-weight: bold;">/</span>data... ok<br />
création des sous-répertoires... ok<br />
sélection de la valeur par défaut de max_connections... <span style="color: #000000;">100</span><br />
sélection des valeurs par défaut de shared_buffers<span style="color: #000000; font-weight: bold;">/</span>max_fsm_pages... 32MB<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">204800</span><br />
création des fichiers de configuration... ok<br />
création de la base de données template1 dans ..<span style="color: #000000; font-weight: bold;">/</span>data<span style="color: #000000; font-weight: bold;">/</span>base<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">1</span>... ok<br />
initialisation de pg_authid... ok<br />
initialisation des dépendances... ok<br />
création des vues système... ok<br />
chargement de la description des objets système... ok<br />
création des conversions... ok<br />
création des dictionnaires... ok<br />
initialisation des droits sur les objets internes... ok<br />
création <span style="color: #c20cb9; font-weight: bold;">du</span> schéma d<span style="color: #ff0000;">'informations... ok<br />
lancement du vacuum sur la base de données template1... ok<br />
copie de template1 vers template0... ok<br />
copie de template1 vers postgres... ok<br />
<br />
ATTENTION : active l'</span>authentification « trust » pour les connexions<br />
locales.<br />
Vous pouvez modifier ceci en éditant pg_hba.conf ou en utilisant l<span style="color: #ff0000;">'option -A<br />
au prochain lancement d'</span>initdb.<br />
<br />
Succès. Vous pouvez maintenant lancer le serveur de bases de données par :<br />
<br />
<span style="color: #ff0000;">&quot;postgres&quot;</span> <span style="color: #660033;">-D</span> <span style="color: #ff0000;">&quot;../data&quot;</span><br />
ou<br />
<span style="color: #ff0000;">&quot;pg_ctl&quot;</span> <span style="color: #660033;">-D</span> <span style="color: #ff0000;">&quot;../data&quot;</span> <span style="color: #660033;">-l</span> journal_applicatif start</div></div>
<p><strong>N.B. </strong>le cluster appartient à l&#8217;utilisateur système avec lequel il est créé c&#8217;est important pour la suite!</p>
<p>pour lancer le serveur</p>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #7a0874; font-weight: bold;">cd</span> Z:\MyApps\xampp\pgsql\bin<br />
<br />
<span style="color: #ff0000;">&quot;pg_ctl&quot;</span> <span style="color: #660033;">-D</span> <span style="color: #ff0000;">&quot;../data&quot;</span> <span style="color: #660033;">-l</span> journal_applicatif start</div></div>
<p>vous pouvez déjà jouer avec pgAdmin3 en entrant l&#8217;adresse de votre serveur (127.0.01 ou localhost) et le login mot de passe de l&#8217;utilisateur que vous avez utilisez pour créer le cluster. Mais il s&#8217;agit ici de faire fonctionner postgreSQL avec php. On va donc décommenter deux extensions dans le Z:\MyApps\xampp\php\php.ini</p>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">; php driver to use postgreSQL databases<br />
<span style="color: #007800;">extension</span>=php_pgsql.dll<br />
; abstraction layer <span style="color: #000000; font-weight: bold;">for</span> PDO<br />
<span style="color: #007800;">extension</span>=php_pdo_pgsql.dll</div></div>
<p>Mais là vous risquez d&#8217;être victime de message d&#8217;erreur car PostgreSQl a besoin de quelques dll pour fonctionner sous windows. Afin de garder l&#8217;installation portable il faut ajouter \MyApps\xampp\pgsql\bin au path, car ce répertoire contient les dll nécessaires (et évite du coup d&#8217;avoir à les copier dans c:\windows\system32).</p>
<p><a href="http://blog.mazenod.fr/wp-content/uploads/2011/03/environnement.png" rel="lightbox[1862]"><img class="aligncenter size-full wp-image-1864" title="environnement" src="http://blog.mazenod.fr/wp-content/uploads/2011/03/environnement.png" alt="environnement postgreSQL & xampp portable sous windows" width="578" height="420" /></a></p>
<p>Afin de tester que postgreSQL fonctionne bien avec php je vous propose d&#8217;installer phpPgAdmin en le téléchargeant sur le site officiel http://phppgadmin.sourceforge.net/ puis en le décompressant dans Z:/MyApps/xampp/phpPgAdmin/</p>
<p>Afin de le rendre visible ajouter dans Z:\MyApps\xampp\apache\conf\extra\httpd-xampp.conf</p>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">Alias <span style="color: #000000; font-weight: bold;">/</span>phppgadmin <span style="color: #ff0000;">&quot;Z:/MyApps/xampp/phpPgAdmin/&quot;</span><br />
<br />
<span style="color: #000000; font-weight: bold;">&amp;</span>lt;Directory <span style="color: #ff0000;">&quot;Z:/MyApps/xampp/phpPgAdmin&quot;</span><span style="color: #000000; font-weight: bold;">&amp;</span>gt;<br />
AllowOverride AuthConfig<br />
<span style="color: #000000; font-weight: bold;">&amp;</span>lt;<span style="color: #000000; font-weight: bold;">/</span>Directory<span style="color: #000000; font-weight: bold;">&amp;</span>gt;</div></div>
<p>et modifier</p>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">&amp;</span>lt;LocationMatch <span style="color: #ff0000;">&quot;^/(?i:(?:xampp|security|licenses|phpmyadmin|phppgadmin|webalizer|server-status|server-info))&quot;</span><span style="color: #000000; font-weight: bold;">&amp;</span>gt;<br />
Order deny,allow<br />
Deny from all<br />
Allow from 127.0.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">8</span><br />
ErrorDocument <span style="color: #000000;">403</span> <span style="color: #000000; font-weight: bold;">/</span>error<span style="color: #000000; font-weight: bold;">/</span>HTTP_XAMPP_FORBIDDEN.html.var<br />
<span style="color: #000000; font-weight: bold;">&amp;</span>lt;<span style="color: #000000; font-weight: bold;">/</span>LocationMatch<span style="color: #000000; font-weight: bold;">&amp;</span>gt;</div></div>
<p>éditer également selon vos besoins le fichier de configuration de phpPgAdmin Z:\MyApps\xampp\phpPgAdmin\conf\config.inc.php</p>
<p>ouvrez maintenant http://localhost/phppgadmin dans votre navigateur et saisissez les login mot de passe de l&#8217;utilisateur associé au cluster</p>
<p><a href="http://blog.mazenod.fr/wp-content/uploads/2011/03/phppgadmin.png" rel="lightbox[1862]"><img class="aligncenter size-full wp-image-1867" title="phppgadmin" src="http://blog.mazenod.fr/wp-content/uploads/2011/03/phppgadmin.png" alt="phppgadmin postgreSQL & xampp portable sous windows" width="591" height="183" /></a></p>
<p>&nbsp;</p>
<p>A vous postgreSQL</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mazenod.fr/2011/03/postgresql-xampp-portable-sous-windows/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Git portable &amp; Console2 sous windows</title>
		<link>http://blog.mazenod.fr/2011/02/git-portable-console2-sous-windows/</link>
		<comments>http://blog.mazenod.fr/2011/02/git-portable-console2-sous-windows/#comments</comments>
		<pubDate>Thu, 10 Feb 2011 18:18:43 +0000</pubDate>
		<dc:creator>mazenovi</dc:creator>
				<category><![CDATA[bricolage]]></category>
		<category><![CDATA[dev]]></category>
		<category><![CDATA[libre]]></category>
		<category><![CDATA[portable apps]]></category>
		<category><![CDATA[gratuit]]></category>
		<category><![CDATA[unix]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[www]]></category>

		<guid isPermaLink="false">http://blog.mazenod.fr/?p=1294</guid>
		<description><![CDATA[<p><a href="../wp-content/uploads/2010/08/github.png"><img class="alignleft" style="margin-left: 30px; margin-right: 30px;" title="github" src="../wp-content/uploads/2010/08/github-300x300.png" alt="" width="132" height="132" /></a>Un tuto rapide pour installer git de manière portable et l'intégrer aux mieux dans son prompt préféré (Console2). Nous verrons ensuite comment débuter un nouveau projet géré avec git sur github.</p>
]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.mazenod.fr%2F2011%2F02%2Fgit-portable-console2-sous-windows%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.mazenod.fr%2F2011%2F02%2Fgit-portable-console2-sous-windows%2F&amp;style=normal&amp;b=2" height="61" width="50" title="Git portable & Console2 sous windows" alt=" Git portable & Console2 sous windows" /><br />
			</a>
		</div>
<p>Git est un système de gestion de versions qui s&#8217;est répandu dans le monde du développement comme une traînée de poudre il y a quelques temps; surtout depuis que plusieurs projets majeurs, dont <a href="http://github.com/symfony/symfony">Symfony 2</a> sont passés de svn à git.</p>
<p>Le propos de cet article est d&#8217;installer git de manière portable et intégrée à<a href="http://sourceforge.net/projects/console/"> Console 2</a> qui est mon prompt de commande préféré, et de voir les quelques commandes de bases</p>
<h2>Installation</h2>
<p><a href="http://code.google.com/p/msysgit/">msysgit</a> propose une version portable de git. Une fois décompressée dans votre suite d&#8217;applications portables préférées, vous pouvez avoir accès à Git en ligne de commande en lançant <em>git-cmd.bat</em> ou mieux <em>git-bash.cmd</em>, qui vous donne accès à un bash UNIX minimal (c&#8217;est à dire limité à quelques commandes) dans votre windows</p>
<p>Il n&#8217;y a absolument rien de sorcier là dedans, mais notez tout de même que pour changer de répertoire vous ne devez utiliser que des / et non pas des \, et faire référence à la lettre du lecteur de disque comme suit</p>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666;">$ </span><span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>c<span style="color: #000000; font-weight: bold;">/</span>Users<span style="color: #000000; font-weight: bold;">/</span>mazenovi<span style="color: #000000; font-weight: bold;">/</span>Desktop</div></div>
<p>C&#8217;est un peu comme du cygwin, mais visiblement ça n&#8217;en est pas!</p>
<h2>Console2</h2>
<p>Ce qui est sympa c&#8217;est d&#8217;intégrer l&#8217;environnement ligne de commande Git en tant qu&#8217;onglet de <a href="http://console.sourceforge.net">Console2</a>.</p>
<p><a href="http://console.sourceforge.net/">Console2</a> est un prompt de commande souple, personnalisable (police, couleur, transparence, etc &#8230;) et complètement portable.</p>
<p>Vous pouvez ajouter des onglets prédéfinis dans &laquo;&nbsp;Edit&nbsp;&raquo; -&gt; &laquo;&nbsp;Settings&nbsp;&raquo;</p>
<p style="text-align: center;"><a href="http://blog.mazenod.fr/wp-content/uploads/2010/08/settings.png" rel="lightbox[1294]"><img class="size-medium wp-image-1298 aligncenter" title="settings" src="http://blog.mazenod.fr/wp-content/uploads/2010/08/settings-293x300.png" alt="settings 293x300 Git portable & Console2 sous windows" width="293" height="300" /></a></p>
<p>Vous devez spécifier le chemin vers le batch permettant d&#8217;accéder à git en ligne de comande (git-bash.bat).</p>
<p>Vous pouvez également spécifier un répertoire par défaut dans lequel sera positionné votre prompt.</p>
<p>Il suffit ensuite de bien penser à mettre des paths relatifs ou absolus, mais dans ce dernier cas sans spécifier la lettre du lecteur pour que la configuration reste elle aussi portable.</p>
<p>Ensuite le git-bash peut se lancer dans <a href="http://console.sourceforge.net/">Console2</a> en ouvrant un nouvel onglet<a href="http://console.sourceforge.net/"><br />
</a></p>
<p style="text-align: center;"><a href="http://blog.mazenod.fr/wp-content/uploads/2010/08/tab.png" rel="lightbox[1294]"><img class="size-medium wp-image-1299 aligncenter" title="tab" src="http://blog.mazenod.fr/wp-content/uploads/2010/08/tab-300x179.png" alt="tab 300x179 Git portable & Console2 sous windows" width="300" height="179" /></a></p>
<p>Notez bien que nous n&#8217;avons pas touché aux variables d&#8217;environnement  du système, et que pour autant la commande git est accessible de partout &#8230; le path système est en fait modifié directement par le script git-bash.bat</p>
<h1>Test sur github</h1>
<p><a href="http://github.com">github</a> est un site d&#8217;hébergement et de gestion de développement  de logiciels utilisant git et <a href="http://fr.wikipedia.org/wiki/GitHub">choisi par beaucoup de projets open source</a>.</p>
<h2>Avec git-bash</h2>
<h3>générer et configurer une clé RSA</h3>
<p>Dans un onglet git bash (que vous venez de créer) tapez</p>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666;">$ </span><span style="color: #c20cb9; font-weight: bold;">ssh-keygen</span> <span style="color: #660033;">-t</span> rsa</div></div>
<p>Laissez tous les choix par défaut (appuyez deux fois sur entrée)</p>
<p>Vous obtenez deux fichiers (mazenovi est bien sûr à remplacer par votre nom d&#8217;utilisateur) :</p>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">/</span>c<span style="color: #000000; font-weight: bold;">/</span>Users<span style="color: #000000; font-weight: bold;">/</span>mazenovi<span style="color: #000000; font-weight: bold;">/</span>.ssh<span style="color: #000000; font-weight: bold;">/</span>id_rsa</div></div>
<p>est votre clé privée, et elle est au bon endroit et</p>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">/</span>c<span style="color: #000000; font-weight: bold;">/</span>Users<span style="color: #000000; font-weight: bold;">/</span>mazenovi<span style="color: #000000; font-weight: bold;">/</span>.ssh<span style="color: #000000; font-weight: bold;">/</span>id_rsa.pub</div></div>
<p>est votre clé publique que vous devez saisir dans la section <a href="https://github.com/account#keys">Account settings</a> -&gt; SSH Public Keys.</p>
<p>Vous pouvez ensuite configurer votre nom &amp; mail (à remplacer par les votre)</p>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">git config</span> <span style="color: #660033;">--global</span> user.name <span style="color: #ff0000;">&quot;mazenovi&quot;</span><br />
<br />
<span style="color: #c20cb9; font-weight: bold;">git config</span> <span style="color: #660033;">--global</span> user.email vmazenod<span style="color: #000000; font-weight: bold;">@</span>mail.com</div></div>
<p>de manière générale la conf de git est stockée dans</p>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">/</span>c<span style="color: #000000; font-weight: bold;">/</span>Users<span style="color: #000000; font-weight: bold;">/</span>mazenovi<span style="color: #000000; font-weight: bold;">/</span>.gitconfig</div></div>
<p>Tout est alors prêt pour créer votre &#8230;</p>
<h3>Premier repository</h3>
<p>il vous faudra tout d&#8217;abord <a href="http://github.com/repositories/new">créer un nouveau dépôt </a>(&laquo;&nbsp;ckMedia&nbsp;&raquo; dans mon cas) sur <a href="http://github.com/">github</a></p>
<p><strong>créer le dépôt sur votre machine local</strong>, qui n&#8217;est rien de plus qu&#8217;un répertoire géré par git, en tapant toujours dans l&#8217;onglet onglet git bash</p>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">mkdir</span> ckMedia<br />
<br />
<span style="color: #7a0874; font-weight: bold;">cd</span> ckMedia</div></div>
<p><strong>le faire gérer par git</strong></p>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">git init</span></div></div>
<p><strong>le modifier</strong> (créer un simple fichier vide README par exemple)</p>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">touch</span> README</div></div>
<p><strong>ne plus faire gérer un fichier par git</strong> (les modifications apportées au fichier ne sont plus prises en compte par git)</p>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">git rm</span> README</div></div>
<p><strong>annuler les modifications</strong> (revenir à la denière verison)</p>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">git checkout</span></div></div>
<p><strong>ajouter la modification au prochain commit</strong> (prochaine mise à jour du repostory sur github)</p>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">git add</span> README</div></div>
<p><strong>supprimer le fichier du prochain commit</strong></p>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">git reset</span> README</div></div>
<p><strong>faire un commit</strong> (valider les changements sur le repository local)</p>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">git commit</span> <span style="color: #660033;">-m</span> <span style="color: #ff0000;">'first commit'</span></div></div>
<p><strong>N.B.</strong> le commentaire est obligatoire, si vous oubliez l&#8217;option -m l&#8217;éditeur de texte par défaut est lancé</p>
<p><strong>Pour faire un commit sur tous les fichiers modifiés et gérés par git</strong> vous pouvez utiliser l&#8217;option -a. Les fichiers supprimés dans le projet seront supprimés (git rm) du dépôt</p>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">git commit</span> <span style="color: #660033;">-a</span> <span style="color: #660033;">-m</span> <span style="color: #ff0000;">'update all my changes'</span></div></div>
<p><strong>Pour faire afficher ce qui est à &laquo;&nbsp;commiter&nbsp;&raquo;</strong>, c&#8217;est à dire ce qui a déjà fait l&#8217;objet d&#8217;un add, et ce qui a été simplement modifié, c&#8217;est à dire qui est géré mais n&#8217;a pas fait l&#8217;objet d&#8217;un add:</p>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">git status</span></div></div>
<p>on appelle cet état transitoire entre le moment où le fichier est modifié et le commit le <strong>stage</strong></p>
<p>Les schéma suivant résume les commandes que nous venons de voir<br />
<object width="728" height="312" type="image/svg+xml" data="http://marklodato.github.com/visual-git-guide/basic-usage.svg"></object></p>
<p><strong>ajouter un raccourcis vers l&#8217;URL du dépot github</strong>. On le nomme ici origin</p>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">git remote</span> add origin <span style="color: #c20cb9; font-weight: bold;">git</span><span style="color: #000000; font-weight: bold;">@</span>github.com:mazenovi<span style="color: #000000; font-weight: bold;">/</span>ckMedia.git</div></div>
<p><strong>répercuter les changements sur le dépot cible</strong></p>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">git push</span> origin master</div></div>
<p><strong>pour lister tous les commit</strong></p>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">git log</span></div></div>
<h3>Pour la petite histoire</h3>
<p>Le magazine PC  World  nous apprend que « quand on lui a demandé   pourquoi il avait  appelé son logiciel &laquo;&nbsp;git&nbsp;&raquo;, qui est à peu près   l&#8217;équivalent de « connard »  en argot anglais, Linus Torvalds a répondu «   je ne suis qu&#8217;un  égocentrique, donc j&#8217;appelle tous mes projets  d&#8217;après  ma propre  personne. D&#8217;abord Linux, puis Git. »</p>
<p>source : <a href="http://fr.wikipedia.org/wiki/Git">http://fr.wikipedia.org/wiki/Git</a></p>
<h3>compélément</h3>
<ul>
<li>pour plus de détails  <a href="http://gitref.org/">http://gitref.org/</a></li>
<li>pour me trouver sur git <a href="http://github.com/mazenovi"> http://github.com/mazenovi</a></li>
<li>Git staging area <a href="http://www.gitready.com/beginner/2009/01/18/the-staging-area.html">http://www.gitready.com/beginner/2009/01/18/the-staging-area.html</a></li>
<li>un petit guide en français: <a href="http://www.unixgarden.com/index.php/administration-systeme/git-it">http://www.unixgarden.com/index.php/administration-systeme/git-it</a></li>
<li>une documentation un peu plus exhaustive en français : <a href="http://www.alexgirard.com/git-book/">http://www.alexgirard.com/git-book/</a></li>
<li>un tuto en anglais: <a href="http://gitimmersion.com">http://gitimmersion.com</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.mazenod.fr/2011/02/git-portable-console2-sous-windows/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Hadopi, l&#8217;accordéon, les manouches, et comment notre patrimoine culturel s&#8217;appauvrit</title>
		<link>http://blog.mazenod.fr/2010/10/hadopi-laccordeon-les-manouches-et-comment-notre-patrimoine-culturel-sappauvrit/</link>
		<comments>http://blog.mazenod.fr/2010/10/hadopi-laccordeon-les-manouches-et-comment-notre-patrimoine-culturel-sappauvrit/#comments</comments>
		<pubDate>Wed, 06 Oct 2010 08:34:06 +0000</pubDate>
		<dc:creator>mazenovi</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[son]]></category>
		<category><![CDATA[gratuit]]></category>
		<category><![CDATA[musique]]></category>
		<category><![CDATA[www]]></category>

		<guid isPermaLink="false">http://blog.mazenod.fr/?p=1627</guid>
		<description><![CDATA[<p><a href="http://blog.mazenod.fr/2010/10/hadopi-laccordeon-les-manouches-et-comment-notre-patrimoine-culturel-sappauvrit/"><img class="alignleft" style="margin-left: 30px; margin-right: 30px;" title="BEU01020114" src="http://blog.mazenod.fr/wp-content/uploads/2010/10/BEU01020114.jpg" alt="" width="104" height="144" /></a>Après avoir passé pas mal de temps à relayer de l'info sur la loi HADOPI, je me permets une petite étude de cas concret, en forme d'interrogation: à l'heure du tout numérique, peut on admettre que des pans de patrimoine culturel disparaissent, sous (le faux) prétexte de ne pas être rentables? La responsabilité des maisons de disques ne pourrait elle pas être engagée sur le sujet?</p>
]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.mazenod.fr%2F2010%2F10%2Fhadopi-laccordeon-les-manouches-et-comment-notre-patrimoine-culturel-sappauvrit%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.mazenod.fr%2F2010%2F10%2Fhadopi-laccordeon-les-manouches-et-comment-notre-patrimoine-culturel-sappauvrit%2F&amp;style=normal&amp;b=2" height="61" width="50" title="Hadopi, laccordéon, les manouches, et comment notre patrimoine culturel sappauvrit" alt=" Hadopi, laccordéon, les manouches, et comment notre patrimoine culturel sappauvrit" /><br />
			</a>
		</div>
<p><a href="http://blog.mazenod.fr/wp-content/uploads/2010/10/BEU01020114.jpg" rel="lightbox[1627]"></a><a href="http://blog.mazenod.fr/wp-content/uploads/2010/10/joprivart.jpg" rel="lightbox[1627]"><img class="size-full wp-image-1631 alignleft" style="margin: 30px;" title="joprivart" src="http://blog.mazenod.fr/wp-content/uploads/2010/10/joprivart.jpg" alt="joprivart Hadopi, laccordéon, les manouches, et comment notre patrimoine culturel sappauvrit" width="180" height="180" /></a>Ce blog me sert rarement de tribune, mais comme il se trouve que <a href="http://www.korben.info/">korben</a> m&#8217;offre un (gros) peu de traffic qualifié comme disent les markéteux et que le sujet me tient à coeur, j&#8217;aimerais mettre noir sur blanc ce qui me chagrine le plus dans cette loi <a href="http://hadopi.fr/">HADOPI</a> et porter à votre connaissance les effets néfastes qu&#8217;elle engendre déjà.</p>
<p>Tout commence par une découverte. Evidemment. Pas une fortuite qui arrive sur une faute de frappe dans les moteurs de recherche. Une vraie, à l&#8217;heure du café, avec un chineur, un connaisseur, un mineur de fond des musiques du monde et d&#8217;ailleurs.</p>
<p>Ce jour là, c&#8217;est jazz manouche. Tout part d&#8217;un truc de <a href="http://fr.wikipedia.org/wiki/Paris_Combo">Paris combo</a> à l&#8217;époque je crois, puis on arrive fatalement sur les classiques du genre <a href="http://fr.wikipedia.org/wiki/Django_Reinhardt">Django Rheinardt</a>, <a href="http://fr.wikipedia.org/wiki/St%C3%A9phane_Grappelli">Stéphane Grappelli</a> &#8230; que du très classique, disponibles pour 3€ à 5€ dans tous les bacs promotionnels qui se réspectent et c&#8217;est très bien comme ça.</p>
<p>Et tout à coup on arrive au coeur du sujet, avec un disque de <a href="http://fr.wikipedia.org/wiki/Jo_Privat">Jo Privat</a>, accompagné par &laquo;&nbsp;les manouches de Paris&nbsp;&raquo; : Manouche Partie. Jo Privat est un accordéonsite, vieille France, le genre qu&#8217;on associe facilement à <a href="http://fr.wikipedia.org/wiki/Yvette_Horner">Yvette</a> &#8230; L&#8217;accordéon à paillette, la chemise tigrée et le sourire juste prix arboré bien haut!</p>
<p><a href="http://blog.mazenod.fr/wp-content/uploads/2010/10/privat_300x306.shkl_.jpg" rel="lightbox[1627]"><img class="alignright size-full wp-image-1633" style="margin: 30px;" title="privat_300x306.shkl" src="http://blog.mazenod.fr/wp-content/uploads/2010/10/privat_300x306.shkl_.jpg" alt="privat 300x306.shkl  Hadopi, laccordéon, les manouches, et comment notre patrimoine culturel sappauvrit" width="300" height="306" /></a>En fait pas tout à fait! Manouche Partie représente une vraie facette de ce personnage, fasciné par la culture manouche, qui aime à jouer les standards du genre, (les yeux noirs, nuages, &#8230;) avec les gars du campement d&#8217;à côté.</p>
<p>Sur cet album d&#8217;ailleurs, s&#8217;il y a au moins un gratteux connu (Matelo Ferret),  le nom d&#8217;un des violonistes est inconnu.</p>
<p>Enregistré en une journée, sans répétition préalable, cette galette est un monument, de l&#8217;ordre du biblique, pour tous les amoureux du jazz manouche &#8230; et croyez moi<a href="http://www.festivaldjangoreinhardt.com/"> il en reste</a></p>
<p>Ca sent bon l&#8217;identité, la vraie, celle qui sait d&#8217;où elle vient, pour mieux comprendre celles des autres, celle de la France, celle du peuple rom, ça sent le partage, le sourire, le tabac, l&#8217;alcool du repas de midi (le livret est à lire c&#8217;est Jo Privat qui raconte &#8230;) &#8230; Bref ça sent la vie et l&#8217;humain.</p>
<p>J&#8217;espère vous avoir donné envie d&#8217;écouter ce joyaux du Jazz manouche &#8230;. car c&#8217;est le pivot de ma démonstration.</p>
<p>En effet vous ne pourrez pas trouver ce disque <a href="http://www.amazon.com/exec/obidos/ASIN/B00005OASG/musicbrainz0d-20?v=glance&amp;s=music">sur amazon</a>, ni sur aucun autre site de vente en ligne, ni bien entendu à la fnac #lol. Cet album est chez quelques spécialistes et plus dans les bacs. <a href="http://musicbrainz.org/release/2b3321d9-a5a1-4b10-ac54-0b2ac6c2a7df.html">Vous apprendrez ici que la dernière édition date d&#8217;il y a 20 ans</a>.</p>
<p>Vous pouvez fouiller de fond en compte l&#8217;&nbsp;&raquo;offre légale&nbsp;&raquo;, vous n&#8217;écouterez cet album ni sur <a href="http://www.deezer.com/fr/">deezer</a>, ni sur <a href="http://www.spotify.com/fr/new-user/">spotify</a> &#8230;</p>
<p>Si vous trouvez un lien qui contredit mes dires, les commentaires sont ouverts: faites moi mentir!</p>
<p>Ma question est la suivante: pourquoi ne peut on pas avoir accès à ce disque? Pourquoi les maisons de disques, grandes gagnantes et grandes manipulatrices de l&#8217;<a href="http://hadopi.fr/">HADOPI</a>, n&#8217;ont aucune obligation quant à la diversité et la pérennité de leur catalogue?</p>
<p>Avant on trouvait cet album sur la mule, et maintenant?</p>
<p>Si quelqu&#8217;un du ministère de la culture me lit, les commentaires sont aussi ouverts pour lui et la réponse m&#8217;intéresse.</p>
<p>Si cet exemple vous fait sourire, sachez qu&#8217;il est loin d&#8217;être isolé, et que la musique n&#8217;est qu&#8217;un début dans l&#8217;appauvrissement orchestré que nous allons vivre.</p>
<p>Il y a un bouquin que j&#8217;ai adoré, parce qu&#8217;il parle de liberté, il apprend à croire en ses rêves, il rend juste la vie plus belle quand on l&#8217;a lu, et quand on l&#8217;a fini on a qu&#8217;une envie c&#8217;est l&#8217;offrir à tout son entourage. Il s&#8217;appelle le &laquo;&nbsp;Messie récalcitrant&nbsp;&raquo; &#8230; <a href="http://www.amazon.fr/messie-r%C3%A9calcitrant-Illusions-Richard-Bach/dp/2290339865">essayez de l&#8217;acheter neuf pour voir?</a></p>
<p><a href="http://blog.mazenod.fr/wp-content/uploads/2010/10/messie.jpg" rel="lightbox[1627]"><img class="aligncenter size-full wp-image-1632" title="messie" src="http://blog.mazenod.fr/wp-content/uploads/2010/10/messie.jpg" alt="messie Hadopi, laccordéon, les manouches, et comment notre patrimoine culturel sappauvrit" width="500" height="500" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mazenod.fr/2010/10/hadopi-laccordeon-les-manouches-et-comment-notre-patrimoine-culturel-sappauvrit/feed/</wfw:commentRss>
		<slash:comments>30</slash:comments>
		</item>
		<item>
		<title>Le Web sémantique</title>
		<link>http://blog.mazenod.fr/2010/09/le-web-semantique/</link>
		<comments>http://blog.mazenod.fr/2010/09/le-web-semantique/#comments</comments>
		<pubDate>Mon, 27 Sep 2010 10:28:50 +0000</pubDate>
		<dc:creator>mazenovi</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[libre]]></category>
		<category><![CDATA[Semantic Web]]></category>
		<category><![CDATA[www]]></category>

		<guid isPermaLink="false">http://blog.mazenod.fr/?p=1577</guid>
		<description><![CDATA[<p><a href="http://blog.mazenod.fr/2010/09/le-web-semantique/"><img class="alignleft" style="margin-left: 30px; margin-right: 30px;" title="sw-vert-w3c" src="/wp-content/uploads/2010/09/sw-vert-w3c.png" alt="" width="72" height="136" /></a>Je tenterai dans ce post de faire une présentation vulgaire et humble, de ce que j'ai compris au web Sémantique. J'ai en effet eu la chance de participer a une formation animée par <a href="http://www.lespetitescases.ne/">Gautier Poupeau</a> un spécialiste de la quesiton. Ce post s'intéresse essentiellement aux concepts qui se cachent derrière le Web sémantique et j'essaierai de le compléter par<a href="http://blog.mazenod.fr/2010/09/comment-se-familiariser-avec-rdf-en-creant-son-profil-foaf/"> d'autres plus pragmatiques</a>!</p>
]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.mazenod.fr%2F2010%2F09%2Fle-web-semantique%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.mazenod.fr%2F2010%2F09%2Fle-web-semantique%2F&amp;style=normal&amp;b=2" height="61" width="50" title="Le Web sémantique" alt=" Le Web sémantique" /><br />
			</a>
		</div>
<p>à la suite d&#8217;une formation distillée par l&#8217;enthousiaste et sympathique <a href="http://www.lespetitescases.ne/">Gautier Poupeau</a> (aka <a href="http://twitter.com/lespetitescases">@lespetitescases</a>), gentiment proposée et organisée par le <a href="http://www.ccsd.cnrs.fr/">ccsd</a>, je vais tenter de résumer, en quelques posts, ce que j&#8217;ai retenu d&#8217;un sujet auquel je ne connaissais absolument rien! à savoir :</p>
<h1>Le Web sémantique</h1>
<h1><a href="http://blog.mazenod.fr/wp-content/uploads/2010/09/sw-horz-w3c.png" rel="lightbox[1577]"><img class="alignleft size-full wp-image-1579" style="margin: 40px;" title="sw-horz-w3c" src="http://blog.mazenod.fr/wp-content/uploads/2010/09/sw-horz-w3c.png" alt="sw horz w3c Le Web sémantique" width="241" height="48" /></a></h1>
<p>Pour bien commencer il faut se débarasser de fausses idées qui peuvent rendre la compréhension du concept difficile: on parle de sémantique au sens logique du terme et non au sens linguistique. L&#8217;objectif n&#8217;est pas de faire des recherches en langage naturel, mais plutôt d&#8217;organiser l&#8217;information pour faciliter la recherche d&#8217;&nbsp;&raquo;information utile&nbsp;&raquo;, c&#8217;est à dire avoir un moyen de trouver ce qui nous intéresse, et que ce qui nous intéresse!</p>
<p>Pour le moment un humain est capable  d&#8217;interroger un moteur de recherche afin de trouver ce qui l&#8217;intéresse, en triant les résultats qui lui sont retournés. Un programmme ne pourra pas réaliser cette opération de  manière automatique : il sera bloqué tôt ou tard par certaines amibiguités. Pour prendre un exemple parlant, imaginons que je fasse des recherches sur le goupe de heavy metal japonais  <a href="http://fr.wikipedia.org/wiki/X_Japan">X</a> (si si il existe vraiment) &#8230; Vous voyez tout de suite le nombre de résultats non musicaux que je vais être obligé de trier (on appelle ça le bruit: ce sont tous les résultats qui ne m&#8217;intéressent pas, mais que le moteur de recherche me renvoie quand même). Même en affinant ma requête en tapant &laquo;&nbsp;X groupe&nbsp;&raquo;, je ne lève pas l&#8217;ambiguité /-)<br />
Le moteur de recherche répond à la question &laquo;&nbsp;quelles sont les pages les plus populaires du web contenant les mot clés &#8216;X&#8217; et &#8216;groupe&#8217;&nbsp;&raquo;, je n&#8217;ai aucun moyen de limiter le résultat de ma recherche aux groupes de musique &#8230;</p>
<p>C&#8217;est à cette problèmatique que le web sémantique s&#8217;intéresse.</p>
<p>Le <a href="http://fr.wikipedia.org/wiki/Web_s%C3%A9mantique">Web sémantique</a> est en fait un ensemble de technologies visant à structurer les données et  à les organiser entre elles, afin de faciliter et d&#8217;automatiser la navigation et la recherche au sein de ces données.</p>
<p>Pour simplifier, l&#8217;idée est d&#8217;ajouter du sens aux documents présents sur le web, afin d&#8217;avoir des résultats de recherche précis et pertinents. Ces données propres (sans bruit) pourraient ensuite alimentées des traitements automatiques..<br />
Un enjeu majeur actuel est par exemple la mise à disposition des données publiques. Barack Obama a été moteur sur ce genre d&#8217;initiative qui si elles commencent à voir le jour aux USA avec le projet <a href="http://en.wikipedia.org/wiki/Open_government">OpenGovernment</a>, se font encore timides en France. L&#8217;ouverture des données publiques, entrainent la création de nouveaux métiers émergents, notamment le <a href="http://owni.fr/2010/07/07/donnees-publiques-et-journalisme-une-mine-de-richesses/">data journalisme</a>.</p>
<p>L&#8217;avènement des web services nous a déjà donné un avant goût  de ce type d&#8217;application avec les API.<br />
Mais une API:</p>
<ul>
<li>est limitée aux fonctions qu&#8217;elle met à disposition</li>
<li>n&#8217;est en général valable que sur une petite portion de données (à l&#8217;échelle des données présentent sur le web)</li>
</ul>
<p>Cet aspect du sujet repose sur des standards technologiques à adopter ou à ajouter à ceux déjà en vigueur sur le web, visant à normaliser la manière dont les données sont structurées et décrites. Il ne s&#8217;agit pas de remettre en question le web que nous connaissons aujourd&#8217;hui, mais plutôt de l&#8217;améliorer.</p>
<p>L&#8217;autre aspect, est l&#8217;interconnexion et l&#8217;ouverture de ces données structurées. En effet pour que le Web Sémantique soit intéressant il faut qu&#8217;un maximum de données, de types hétérogènes, puissent être interrogeables. L&#8217;interconnexion et l&#8217;interropérabilité de ces bases de données permet de naviguer d&#8217;une base à l&#8217;autre, voir d&#8217;agréger des données de provenance différente. Par exemple pour connaître les prochains concerts les plus proche du lieu ou je suis dans mon style de musique préféré, une base de données musicale, évènementielle, et de géolocalisation seront nécessaires. Il faut également que ces bases agrègent une information la plus exhaustive possible.</p>
<div style="text-align: center;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="446" height="326" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="align" value="center" /><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="wmode" value="transparent" /><param name="bgColor" value="#ffffff" /><param name="flashvars" value="vu=http://video.ted.com/talks/dynamic/TimBerners-Lee_2009-medium.flv&amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/TimBerners-Lee-2009.embed_thumbnail.jpg&amp;vw=432&amp;vh=240&amp;ap=0&amp;ti=484&amp;introDuration=15330&amp;adDuration=4000&amp;postAdDuration=830&amp;adKeys=talk=tim_berners_lee_on_the_next_web;year=2009;theme=what_s_next_in_tech;event=TED2009;&amp;preAdTag=tconf.ted/embed;tile=1;sz=512x288;" /><param name="src" value="http://video.ted.com/assets/player/swf/EmbedPlayer.swf" /><param name="bgcolor" value="#ffffff" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="446" height="326" src="http://video.ted.com/assets/player/swf/EmbedPlayer.swf" align="center" allowfullscreen="true" allowscriptaccess="always" wmode="transparent" bgcolor="#ffffff" flashvars="vu=http://video.ted.com/talks/dynamic/TimBerners-Lee_2009-medium.flv&amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/TimBerners-Lee-2009.embed_thumbnail.jpg&amp;vw=432&amp;vh=240&amp;ap=0&amp;ti=484&amp;introDuration=15330&amp;adDuration=4000&amp;postAdDuration=830&amp;adKeys=talk=tim_berners_lee_on_the_next_web;year=2009;theme=what_s_next_in_tech;event=TED2009;&amp;preAdTag=tconf.ted/embed;tile=1;sz=512x288;"></embed></object></div>
<p>C&#8217;est l&#8217;enjeu du projet <a href="http://en.wikipedia.org/wiki/Linked_Data">linked data</a> porté par Tim Berners Lee (qui n&#8217;est autre que l&#8217;inventeur du web est ce besoin de le préciser) qui rassemble plusieurs bases ayant toute une spécialité thèmatique, et possèdant éventuellement une grammaire spécifique pour décrire les données liées à leur spécialité: ces grammaires sont appelées des ontologies</p>
<p style="text-align: center;"><a href="http://blog.mazenod.fr/wp-content/uploads/2010/09/lod-datasets_2009-07-14.png" rel="lightbox[1577]"><img class="size-medium wp-image-1581 aligncenter" style="margin-top: 30px; margin-bottom: 30px;" title="lod-datasets_2009-07-14" src="http://blog.mazenod.fr/wp-content/uploads/2010/09/lod-datasets_2009-07-14-300x224.png" alt="lod datasets 2009 07 14 300x224 Le Web sémantique" width="300" height="224" /></a></p>
<p>Parmi ces bases l&#8217;une des plus vieilles et l&#8217;une des plus populaires est sans doute <a href="http://dbpedia.org/">dbpedia</a>. Cette base de connaissance est en fait déduite directement de wikipédia. Plus excatement dbpedia parcourt automatiquement (crawl)  wikipédia (en) et structrue de manière sémantique les boites de résumés en haut à droite de toutes les pages qui en ont une. L&#8217;information dans ces boites est très structurée et permet à dbpedia de la convertir en triplets RDF. Voyons voir en détails de quoi il s&#8217;agit.</p>
<h1>Terminologie</h1>
<p>L&#8217;unité de base est la Ressource.<br />
Tout le formalisme va consister en la définition d&#8217;un cadre de description de ces ressources, d&#8217;où le nom de ce formalisme : <a href="http://fr.wikipedia.org/wiki/Resource_Description_Framework">RDF (Resource Description Framework)</a>.</p>
<p>Le RDF hérite du XML, et reprend donc en grande partie le paradigme objet. Ainsi une ressource (qu&#8217;on peut voir comme un objet) possède des propriétés (qu&#8217;on peut aussi appeler attributs).<br />
Une ressource est identifiée de manière unique par une <a href="http://fr.wikipedia.org/wiki/Uniform_Resource_Identifier">URI (Uniform Resource Identifier)</a> qui peut être, si cette ressource est présente sur le web, caractèrisée par son <a href="http://fr.wikipedia.org/wiki/Uniform_Resource_Locator">URL (Uniform Resource Locator)</a>. L&#8217;URI d&#8217;une ressource permet d&#8217;y faire référence, au sein de la description d&#8217;une autre ressource par exemple.<br />
Une ressource peut avoir plusieurs représentations: Une information au format RDF, pourra par exemple être affichée en (X)HTML, afin d&#8217;être affichable par un navigateur web.</p>
<p>Une URI répond à un scheme générique</p>
<pre> foo://example.com:8042/over/there/index.dtb?type=animal;name=ferret#nose
  \ /  \_________/ \__/\___________________/ \_____________________/ \__/
   |        |       |                |               |                |
protocole  hôte    port            path             requête          fragment</pre>
<p>Une URI est unique, stable, maitrisable, extensible.</p>
<p>Si je veux parler de symfony par exemple, je me réfèrerais à son uri sur wikipedia <a href="http://dbpedia.org/page/Symfony">http://dbpedia.org/page/Symfony</a>. Si vous voulez parler de moi vous vous réfèrerrez à mon profile FOAF <a href="http://vincent.mazenod.fr/oim.rdf#VM">http://vincent.mazenod.fr/oim.rdf#VM</a>.</p>
<p>Le RDF a pour but  de typer les ressources, de les décrire, de les lier entre elles et de qualifier les liens qui les unissent.<br />
L&#8217;idée est de séparer la logique des données, de la logique applicative. Vous allez me &laquo;&nbsp;dire il n&#8217;y a rien de révolutionnaire dans ce que tu viens de dire, voilà des années que je design des bases de données, et que je sépare la logique des données de la logique applicative&nbsp;&raquo;. Et je vous répondrez &laquo;&nbsp;Oui mais il ne s&#8217;agit pas tout à fait de la même séparation&nbsp;&raquo;.<br />
Considérons une jointure SQL, qui serait le résultat d&#8217;un lien entre deux tables, découlant  d&#8217;une analyse UML ou entité association de ce genre</p>
<p style="text-align: center;"><a href="http://blog.mazenod.fr/wp-content/uploads/2010/09/ea.png" rel="lightbox[1577]"><img class="size-medium wp-image-1582 aligncenter" title="ea" src="http://blog.mazenod.fr/wp-content/uploads/2010/09/ea-300x122.png" alt="ea 300x122 Le Web sémantique" width="300" height="122" /></a></p>
<p>Une fois implémenté en base de données, on perd &#8216;linformation concernant la nature du lien unissant ces deux tables. Les contraintes d&#8217;intégrité référentielles (si elles sont bien construites) indiquent qu&#8217;un lien existe entre ces deux tables (clé étrangère), mais sans la logique applicative on ne peut pas en dire plus.<br />
Le Web semantic tend à déporter le plus de renseignements possibles dans les données, y compris la description des liens entre données.<br />
L&#8217;unité de base de l&#8217;intelligence dans les données est le <a href="http://fr.wikipedia.org/wiki/Resource_Description_Framework">triplet RDF</a>, c&#8217;est un modèle générique qui permet de décrire toute donnée ou relation entre donnée en trois parties.<br />
Un triplet RDF se compose :</p>
<ul>
<li>Le <em>sujet</em> (encore appelé domaine) représente la <a title="Ressource (Web)" href="http://fr.wikipedia.org/wiki/Ressource_%28Web%29">ressource</a> à décrire ;</li>
<li>Le <em>prédicat</em> (encore appelé propriété) représente un type de <a title="Propriété (informatique) (page inexistante)" href="http://fr.wikipedia.org/w/index.php?title=Propri%C3%A9t%C3%A9_%28informatique%29&amp;action=edit&amp;redlink=1">propriété</a> applicable à cette ressource ;</li>
<li>L&#8217;<em>objet</em> (encore appelé co-domaine) représente une donnée ou une autre ressource : c&#8217;est la valeur de la propriété.</li>
</ul>
<p>un triplet RDF peut se représenter comme un vecteur (sujet, prédicat, objet) mais aussi comme un graph orienté, en effet le sujet et l&#8217;objet peuvent être vu comme des noeuds, et le prédicat comme l&#8217;arête qui décrit l&#8217;association qu&#8217;il y a entre le sujet et l&#8217;objet. Cette arête est orientée puisqu&#8217;elle n&#8217;est valable que dans un sens.<br />
Une association est aussi répérée par une URI. Par exemple si je veux exprimer que je suis <a href="http://xmlns.com/foaf/0.1/interest">intéressé</a> par Symfony, en tant que <a href="http://xmlns.com/foaf/spec/#term_Person">foaf personne</a>, je ferais référence au prédicat ayant pour URI http://xmlns.com/foaf/0.1/interest</p>
<p><a href="http://blog.mazenod.fr/wp-content/uploads/2010/09/graph.png" rel="lightbox[1577]"><img class="aligncenter size-medium wp-image-1583" title="graph" src="http://blog.mazenod.fr/wp-content/uploads/2010/09/graph-300x77.png" alt="graph 300x77 Le Web sémantique" width="300" height="77" /></a></p>
<p>Notez bien que là c&#8217;est bien la foaf:person Vincent Mazenod qui s&#8217;intéresse à symfony et que la relation d&#8217;intérêt ne fonctionne que dans le sens de la flèche.</p>
<p>Notez également qu&#8217;un triplet peut décrire une relation entre deux ressources autant qu&#8217;une relation entre une ressource et l&#8217;un de ses attributs. Dans ce dernier cas l&#8217;attribut de la ressource est lui même vu comme un prédicat, la ressource comme le sujet et l&#8217;objet du triplet n&#8217;est autre que la valeur de l&#8217;attribut. La différence que les formalismes comme UML ou MERISE, font entre liens entre objets et liens entre objets et propriétés, est en WebSémantique complètement effacée.</p>
<p>la grammaire permettant de décrire les types de ressources et les liens entre ces ressources, s&#8217;appelle une <a href="http://semanticweb.org/wiki/Ontology">ontologie</a>, <a href="http://schemapedia.com/">il en existe beaucoup</a> , et chacune a sa  spécialité, j&#8217;ai déjà évoqué l&#8217;<a href="http://xmlns.com/foaf/spec/images/foafspec.jpg" rel="lightbox[1577]">ontologie FOAF</a> par exemple qui permet de décrire des peronnes et le liens qui les unis. <a href="http://www4.wiwiss.fu-berlin.de/dbpedia/dev/ontology.htm">Dbpedia utilise en partie sa propre ontologie</a>. L&#8217;ontologie est un système de classification puissant qui permet de lier les concepts entre eux. Elle diffère des sytèmes de classification classiques</p>
<ul>
<li>la folksonomie, ou foutoironomie, ou encore bordelonomie permet à tous de classer des concepts de manière spontanée (i.e. avec les mots que chacun choisit)</li>
<li>le vocabulaire contrôlé est une folksonomie bornée  (i.e. le choix des mots est limité au vocabulaire choisi)</li>
<li>la taxinomie ou taxonomie permet de hièrarchisés les concepts (i.e. décrire une arborescence)</li>
<li>le thésaurus est une taxinomie avec possibilité d&#8217;une relation transverse entre concept (limitée à la notion d&#8217;équivalence ou d&#8217;association)</li>
<li>l&#8217;ontologie permet de lier des concepts entre eux et de qualifier finement la relation qui unie chaque concept</li>
</ul>
<p>Il existe deux languages qui permettent de décrire des ontologies : <a href="http://fr.wikipedia.org/wiki/RDF_Schema">RDF Schema</a> &amp; <a href="http://fr.wikipedia.org/wiki/Web_Ontology_Language">OWL</a> (owl peut être vu comme une extension de RDF spécialisé dans la description des prédicats).<br />
A priori toute ressource hérite au final de owl:Thing. owl:Thing est aux ontologies qu&#8217;il permet de décrire, ce que la classe object est au langage Java: une classe racine.</p>
<h1>En guise de conclusion</h1>
<p>Il est assez complexe de présenter le web sémantique de manière ordonné, car beaucoup de concepts sont imbriqués. L&#8217;appréhension de ce domaine est d&#8217;autant plus compliqué qu&#8217;il y a peu d&#8217;application directe, testable par l&#8217;utilisateur. Dans un propchain post je tenterai de présenter <a href="http://blog.mazenod.fr/2010/09/comment-se-familiariser-avec-rdf-en-creant-son-profil-foaf/">le formalisme RDF plus en détail</a> afin de comprendre les informations supplémentaires et structurées qu&#8217;une ontologie permet de décrire. Dans un autre encore je vous parlerai de SPARQL, le langage d&#8217;interrogation pour RDF, qui permet d&#8217;exécuter des requêtes complexes sur les projets qui composent le web sémantique actuel</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mazenod.fr/2010/09/le-web-semantique/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>installation de symfony via PEAR avec UwAmp</title>
		<link>http://blog.mazenod.fr/2010/01/installation-de-symfony-via-pear-avec-uwamp/</link>
		<comments>http://blog.mazenod.fr/2010/01/installation-de-symfony-via-pear-avec-uwamp/#comments</comments>
		<pubDate>Sun, 31 Jan 2010 19:43:41 +0000</pubDate>
		<dc:creator>mazenovi</dc:creator>
				<category><![CDATA[dev]]></category>
		<category><![CDATA[gratuit]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[symfony]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[www]]></category>

		<guid isPermaLink="false">http://blog.mazenod.fr/?p=827</guid>
		<description><![CDATA[<p><a href="http://blog.mazenod.fr/wp-content/uploads/2010/01/uwamp_logo.jpg"><img class="alignleft" style="margin-left: 20px; margin-right: 20px;" title="uwamp_logo" src="http://blog.mazenod.fr/wp-content/uploads/2010/01/uwamp_logo-300x135.jpg" alt="" width="300" height="135" /></a> Une plateforme entièrement portable, avec gestion des services et de la configuration via une interface graphique et qui permet d'utiliser plusieurs version de PHP?</p>
<p>C'est un environnement de dev pour ma Framakey!!</p>
]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.mazenod.fr%2F2010%2F01%2Finstallation-de-symfony-via-pear-avec-uwamp%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.mazenod.fr%2F2010%2F01%2Finstallation-de-symfony-via-pear-avec-uwamp%2F&amp;style=normal&amp;b=2" height="61" width="50" title="installation de symfony via PEAR avec UwAmp" alt=" installation de symfony via PEAR avec UwAmp" /><br />
			</a>
		</div>
<p><a href="http://blog.mazenod.fr/wp-content/uploads/2010/01/uwamp_logo.jpg" rel="lightbox[827]"></a>sorti en fin d&#8217;année 2009 UwAmp est un environnement de développement Apache MySQL PHP portable pour windows. Son installation est on ne peut plus simple puisqu&#8217;il suffit de le télécharger et de le dézipper (dans z:\Apps\UwAmp par exemple) pour l&#8217;utiliser.</p>
<p>C&#8217;est sans aucun doute le plus sexy de tous les environnements de développement PHP pour windows (<a href="http://www.wampserver.com/">wampserver2</a>, successeur du défunt Wamp5, <a href="http://www.apachefriends.org/en/xampp.html">xampp</a> , et <a href="http://www.easyphp.org/">easyPHP</a>), en effet son interface de maintenance est riche et ergonomique</p>
<p style="text-align: center;"><a href="http://blog.mazenod.fr/wp-content/uploads/2010/01/screenshot.2.jpg" rel="lightbox[827]"><img class="aligncenter size-medium wp-image-829" title="UwAmp" src="http://blog.mazenod.fr/wp-content/uploads/2010/01/screenshot.2-268x300.jpg" alt="screenshot.2 268x300 installation de symfony via PEAR avec UwAmp" width="268" height="300" /></a></p>
<p>Elle permet notamment de passer d&#8217;une version à une autre de PHP en 1 clic, ce qui n&#8217;est pas négligeable.</p>
<p>Elle propose des interfaces de gestion simplifiées pour la configuration de PHP (extensions et variables du fichier  php.ini)</p>
<p style="text-align: center;"><a href="http://blog.mazenod.fr/wp-content/uploads/2010/01/screenshot.4.jpg" rel="lightbox[827]"><img class="aligncenter size-medium wp-image-830" title="config extension php" src="http://blog.mazenod.fr/wp-content/uploads/2010/01/screenshot.4-300x234.jpg" alt="screenshot.4 300x234 installation de symfony via PEAR avec UwAmp" width="300" height="234" /></a></p>
<p style="text-align: center;"><a href="http://blog.mazenod.fr/wp-content/uploads/2010/01/screenshot.4.jpg" rel="lightbox[827]"></a><a href="http://blog.mazenod.fr/wp-content/uploads/2010/01/screenshot.5.jpg" rel="lightbox[827]"><img class="aligncenter size-medium wp-image-831" title="config php.ini" src="http://blog.mazenod.fr/wp-content/uploads/2010/01/screenshot.5-300x234.jpg" alt="screenshot.5 300x234 installation de symfony via PEAR avec UwAmp" width="300" height="234" /></a></p>
<p>ainsi que pour celle d&#8217;apache (configuration de virtual hosts &amp; modules apache)</p>
<p><a href="http://blog.mazenod.fr/wp-content/uploads/2010/01/screenshot.6.jpg" rel="lightbox[827]"><img class="aligncenter size-medium wp-image-832" title="screenshot.6" src="http://blog.mazenod.fr/wp-content/uploads/2010/01/screenshot.6-300x265.jpg" alt="screenshot.6 300x265 installation de symfony via PEAR avec UwAmp" width="300" height="265" /></a></p>
<p><a href="http://blog.mazenod.fr/wp-content/uploads/2010/01/screenshot.7.jpg" rel="lightbox[827]"><img class="aligncenter size-medium wp-image-833" title="screenshot.7" src="http://blog.mazenod.fr/wp-content/uploads/2010/01/screenshot.7-300x265.jpg" alt="screenshot.7 300x265 installation de symfony via PEAR avec UwAmp" width="300" height="265" /></a></p>
<p>Pour les barbus, les fichiers php.ini et httpd.conf sont toujours accessibles via un bouton, et il est même possible de paramétrer son éditeur de texte  préféré (paths portables acceptés!) en cliquant sur le bouton &laquo;&nbsp;préférences&nbsp;&raquo;.</p>
<p>Dans la séries des raccourcis vous pourrez accéder en un clic</p>
<ul>
<li>à la page d&#8217;accueil de votre répertoire racine &#8211; http://localhost/</li>
<li>au répertoire contenant les virtual hosts &#8211; z:\Apps\UwAmp\www\</li>
<li>à phpMyAdmin &#8211; http://localhost/mysql/ (à noter que le mot de passe root de MySQL par défaut est root)</li>
<li>à un phpinfo() &#8211; http://localhost/uwamp/phpinfo.php</li>
<li>à SQLite Database Browser qui vous permettra de gérer vos bases de données SQLite</li>
</ul>
<p>et en cadeau bonus</p>
<ul>
<li>Les logs access du serveur apache</li>
<li>Les logs error du serveur apache</li>
<li>Les logs du serveur MySQL</li>
<li>à la suppression des fichiers de log sus cités</li>
<li>à la suppression des fichiers de sessions PHP</li>
</ul>
<p>&#8230;</p>
<p>Le petit bémol que je mettrais par rapport à l&#8217;installation de <a href="../2009/11/environnement-de-developpement-portable-pour-symfony-framakey/">xampp portable</a>, que j&#8217;ai déjà documentée, est que PEAR n&#8217;est pas préinstallé.</p>
<p>Pour utiliser les commandes PHP et mysql sans se préoccupper de leur path, suivez <a href="http://blog.mazenod.fr/2009/11/environnement-de-developpement-portable-pour-symfony-framakey/#path">les explications suivantes</a> en remplaçant ;\Apps\xampp\php\;\Apps\xampp\mysql\bin\ par  ;\Apps\UwAmp\apache\php_5.3.1;\Apps\UwAmpp\mysql\bin\. N&#8217;oubliez pas de fermer et de rouvrir votre session pour prendre en compte le nouveau Path (n&#8217;oubliez pas non plus de laisser un commentaire si vous avez une meilleure solution).</p>
<p>ouvrez ensuite un prompt de commande et tapez</p>
<pre class="php:nogutter">cd z:\Apps\UwAmp\apache\php_5.31
go-pear.bat</pre>
<p>si vous ne vous mettez pas dans le dossier  vous allez obtenir un message d&#8217;erreur du genre</p>
<p>Could not open input file: PEAR\go-pear.phar<br />
Appuyez sur une touche pour continuer&#8230;</p>
<p>Sinon PEAR vous demandera si vous souhaitez faire une installation système ou locale. La différence réside essentiellement dans la localisation du fichier pear.ini. Si vous voulez comme moi jouer avec plusieurs installations de PEAR choisissez local. En effet l&#8217;installation système installe le fichier pear.ini dans c:\windows, ce qui le rendra commun à toutes  vos installations de PEAR. L&#8217;installation local permet de ranger le pear.ini dans le répertoire de la commande php auquel CETTE commande PEAR est associée &#8230;</p>
<p>Une fois le choix fait vous pouvez choisir les options par défaut lors du process d&#8217;installation</p>
<p>ensuite pour installer symfony 1.0</p>
<pre class="php:nogutter">pear upgrade PEAR
pear channel-discover pear.symfony-project.com
pear install symfony/symfony-1.0.21
symfony -V</pre>
<p>Vous êtes alors prêt pour <a href="http://www.symfony-project.org/askeet/1_0/en/">askeet</a>.</p>
<p>Pour installer la dernière version courante de symfony1.4.1</p>
<pre class="php:nogutter">pear install symfony/symfony</pre>
<p>Vous êtes alors prêt pour <a href="http://www.symfony-project.org/jobeet/1_4/Doctrine/en/">jobeet</a>.</p>
<p>L&#8217;avantage c&#8217;est que vous disposez d&#8217;une installation de PEAR par version de PHP, ce qui est idéale pour avoir plusieurs version de symfony sur votre plateforme de développement!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mazenod.fr/2010/01/installation-de-symfony-via-pear-avec-uwamp/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Design Pattern MVC &#8211; zoom sur la couche modèle : DAL / DAO / ORM / CRUD</title>
		<link>http://blog.mazenod.fr/2010/01/design-pattern-mvc-zoom-sur-la-couche-modele-dal-dao-orm-crud/</link>
		<comments>http://blog.mazenod.fr/2010/01/design-pattern-mvc-zoom-sur-la-couche-modele-dal-dao-orm-crud/#comments</comments>
		<pubDate>Sun, 17 Jan 2010 14:30:41 +0000</pubDate>
		<dc:creator>mazenovi</dc:creator>
				<category><![CDATA[dev]]></category>
		<category><![CDATA[design pattern]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[www]]></category>

		<guid isPermaLink="false">http://blog.mazenod.fr/?p=739</guid>
		<description><![CDATA[<p><a href="http://blog.mazenod.fr/wp-content/uploads/2010/01/ORMNam_5.jpg"><img class="alignleft" style="margin-left: 20px; margin-right: 20px;" title="ORMNam_5" src="http://blog.mazenod.fr/wp-content/uploads/2010/01/ORMNam_5-240x300.jpg" alt="" width="240" height="300" /></a></p>
<p>L'ORM Un <strong>object-relational mapping</strong> (<strong>mapping objet-relationnel</strong> en pseudo français) est considéré comme le Vietnam de l'informatique ... Une bataille obligée qui ne possède pas de bonne solution ...</p>
<p>Sous cette acronyme se cache en fait la possibilité pour les développeurs de manipuler des données en provenance d'une base de données sous forme d'objets.</p>
<p>L'idée est ici d'effectuer une première approche en identifiant et en disséquant les différentes strates que sont</p>
<ul>
<li>La DAL</li>
<li>le DAO</li>
<li>L'ORM proprement dite</li>
</ul>
<p>Des concepts sont souvent galvaudés ...</p>
]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.mazenod.fr%2F2010%2F01%2Fdesign-pattern-mvc-zoom-sur-la-couche-modele-dal-dao-orm-crud%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.mazenod.fr%2F2010%2F01%2Fdesign-pattern-mvc-zoom-sur-la-couche-modele-dal-dao-orm-crud%2F&amp;style=normal&amp;b=2" height="61" width="50" title="Design Pattern MVC   zoom sur la couche modèle : DAL / DAO / ORM / CRUD" alt=" Design Pattern MVC   zoom sur la couche modèle : DAL / DAO / ORM / CRUD" /><br />
			</a>
		</div>
<h2><a href="http://blog.mazenod.fr/wp-content/uploads/2010/01/ORMNam_5.jpg" rel="lightbox[739]"></a>Design Pattern MVC</h2>
<p>Voilà deux ans que je fais un cours, suivi d’un petit projet traitant du design Pattern MVC.  Le projet est à écrire en PHP5, avec une base de données MySQL comme support de stockage des données, l’architecture MVC est donc à implémenter dans un contexte purement web. Le paradigme objet est tout indiqué quand il s&#8217;agit d&#8217;écrire et d&#8217;agencer des composants logiciels, c&#8217;est donc celui qui sera adopté dans toute la suite.</p>
<p>Il y a bien entendu beaucoup de projets existants implémentant le design Pattern MVC en PHP, mais le propos du cours est plutôt de réaliser un cas pratique d’implémentation afin de bien saisir les bien faits du design pattern  MVC.</p>
<p>En effet l’utilisation d’un design pattern architectural en PHP, s’oppose à la pratique empirique de ce langage qui consiste à mélanger les connexions et accès à la base de données, avec le traitement des données et leur affichage. Dans ce cas il est alors commun d’avoir dans un seul script: du PHP, du SQL, du Javascript et du CSS dans les attributs des balises HTML soit pas moins de 5 langages distincts.</p>
<p>Au même titre qu’il est conseillé dans la présentation de séparer l’HTML, qui structure le document, du CSS, qui l’habille, il est conseillé d’<a href="http://www.do-as-i-say.com/notes/2009/09/design-patterns-symfony-explique-a-ma-maman-2/">utiliser un design pattern architectural pour structurer une application web</a>.</p>
<p>Pour mémoire cette architecture permet d’organiser une application en 3 couches distinctes à savoir :</p>
<ul>
<li>le modèle, qui contient la logique métier;</li>
<li>la vue, qui regroupe tout ce qui a trait à la présentation (des données / comme des interactions utilisateur);</li>
<li>le contrôleur, qui répond à des interactions utilisateurs en provenance de la vue, en appelant des traitements mis à disposition sous forme de méthode par le modèle, afin de nourrir la vue associée au traitement demandé par l&#8217;utilisateur.</li>
</ul>
<p style="text-align: center;"><a href="http://blog.mazenod.fr/wp-content/uploads/2010/01/MVC_final.png" rel="lightbox[739]"><img class="aligncenter" title="MVC_final" src="http://blog.mazenod.fr/wp-content/uploads/2010/01/MVC_final.png" alt="MVC final Design Pattern MVC   zoom sur la couche modèle : DAL / DAO / ORM / CRUD" width="585" height="315" /></a></p>
<p>Si vous pratiquez PHP et n&#8217;avez jamais utilisé le design pattern MVC, je vous recommande la lecture de : &laquo;&nbsp;<a href="http://trac.symfony-project.org/wiki/Documentation/fr_FR/book/1.0/trunk/02-Exploring-Symfony-s-Code">comment convertir une application PHP standard en une application basée sur l’architecture MVC</a>&laquo;&nbsp;.</p>
<p>Le propos de ce billet n’est pas de vanter <a href="http://www.do-as-i-say.com/notes/2010/01/symfony-explique-a-ma-maman-4eme-partie-le-mvc/">les mérites du design pattern MVC</a>, car ils sont en général bien compris par mes étudiants. C&#8217;est plutôt d’en détailler la couche modèle dont la structure est assez dure à disséquer. J’ai moi-même pas mal lu et beaucoup débattu, avec le camarade <a href="http://willdurand.fr">will durand</a> notamment, avant d&#8217;arriver à isoler chaque composant de cette couche.</p>
<p><a href="http://blog.mazenod.fr/wp-content/uploads/2010/01/Zoom_modele.png" rel="lightbox[739]"><img class="aligncenter size-full wp-image-741" title="Zoom_modele" src="http://blog.mazenod.fr/wp-content/uploads/2010/01/Zoom_modele.png" alt="Zoom modele Design Pattern MVC   zoom sur la couche modèle : DAL / DAO / ORM / CRUD" width="568" height="268" /></a></p>
<h2>le Modèle</h2>
<p>Sous sa forme la plus brute, la couche modèle peut être vu comme les « données ». Par données on entend tout ce qui est persistant, c&#8217;est-à-dire tout ce qu’on pourra lire à partir d’une source, et modifier pour le relire plus tard si besoin est. Dans une logique de découplage, il est de bon ton d’essayer de s’affranchir le plus possible de la forme brute des données. C’est ce que va faire le modèle en transformant des données brutes en objets structurés, utilisables simplement par la couche inférieure : le contrôleur.</p>
<p>Pour réaliser ce découplage le modèle utilise 3 couches d’abstraction :</p>
<ul>
<li>La DAL (Data Access Layer) : couche abstraction de données</li>
<li>Le DAO (Data Access Object) : objet d’accès aux données</li>
<li>L’ORM (Object / Relation Mapping) : Mapping objet / relationnel</li>
</ul>
<p><a href="http://blog.mazenod.fr/wp-content/uploads/2010/01/DAL_final.png" rel="lightbox[739]"><img class="aligncenter size-full wp-image-766" title="DAL_final" src="http://blog.mazenod.fr/wp-content/uploads/2010/01/DAL_final.png" alt="DAL final Design Pattern MVC   zoom sur la couche modèle : DAL / DAO / ORM / CRUD" width="555" height="323" /></a></p>
<p>Pour l&#8217;exemple je vous propose de partir du diagramme UML suivant</p>
<p><a href="http://blog.mazenod.fr/wp-content/uploads/2010/01/uml.png" rel="lightbox[739]"><img class="aligncenter size-full wp-image-754" title="uml" src="http://blog.mazenod.fr/wp-content/uploads/2010/01/uml.png" alt="uml Design Pattern MVC   zoom sur la couche modèle : DAL / DAO / ORM / CRUD" width="315" height="152" /></a></p>
<p>qui donne le MLD (schéma de base de données) suivant</p>
<p><a href="http://blog.mazenod.fr/wp-content/uploads/2010/01/mld.png" rel="lightbox[739]"><img class="aligncenter size-full wp-image-755" title="mld" src="http://blog.mazenod.fr/wp-content/uploads/2010/01/mld.png" alt="mld Design Pattern MVC   zoom sur la couche modèle : DAL / DAO / ORM / CRUD" width="529" height="470" /></a></p>
<h3>La DAL</h3>
<p>La DAL Permet de s’abstraire du support des données. Pour se faire elle met à disposition des méthodes génériques permettant d’accomplir des actions de maintenances sur les données. Les actions les plus communes sont regroupées sous l’acronyme CRUD (Create Read Update Delete). Basiquement la DAL va donc mettre à disposition des méthodes permettant d’ajouter, mettre à jour, lire, supprimer un enregistrement, et ce quelque soit le support de stockage des donnéees.</p>
<p>La généricité par rapport au stockage est en général matérialisée par un paramètre permettant de spécifier la nature du support (on appelle ça des drivers). Ainsi les méthodes CRUD associées au support de stockage sont utilisées de manière transparente par le développeur. Concrètement il n’y a donc en théorie qu’un paramètre à changer pour qu’une application utilisant une DAL puisse changer de support.</p>
<p>D’un point de vue strictement théorique la DAL devrait offrir la possibilité de maintenir des données dans n&#8217;importe quelle base de données, dans des fichiers texte, dans des fichiers xml …</p>
<p>D’un point de vue pratique, en PHP, une DAL utilise toujours un SGBD. Son rôle est donc de rendre l’applicatif qui l’utilise (la DAL) portable par rapport au SGBD utilisé.</p>
<p>Les DAL PHP que je connais sont <a href="http://pear.php.net/package/DB">Pear DB</a> (la première que j&#8217;ai utilisé), <a href="http://creole.phpdb.org/trac/wiki/Documentation/CreoleGuide">Creole</a>, et <a href="http://php.net/manual/fr/book.pdo.php">PDO</a> qui tend à devenir le standard en PHP, puisque disponible sous forme d&#8217;extension PHP.</p>
<h3>Le DAO</h3>
<p>Le Dao a pour but de transformer les données contenues dans une bases de données en objets et inversement</p>
<p>Pour se faire il va faire correspondre (de manière bijective &#8211; ca veut dire qu&#8217;on peut rajouter &laquo;&nbsp;et inversement&nbsp;&raquo; à la fin de chacun des points suivants)</p>
<ul>
<li>une table (appelée aussi relation) à une liste d’objets</li>
<li>une ligne d&#8217;une table (appelée aussi tuple) à un objet</li>
<li>un champs de base de données à un attribut d’objet</li>
<li>une valeur d’un champs à une valeur d’attribut d’un objet</li>
</ul>
<p>Dans notre exemple les classes issues du DAO seront au minimum</p>
<p style="text-align: center;"><a href="http://blog.mazenod.fr/wp-content/uploads/2010/01/UML_DAO.png" rel="lightbox[739]"><img class="aligncenter size-full wp-image-794" title="UML_DAO" src="http://blog.mazenod.fr/wp-content/uploads/2010/01/UML_DAO.png" alt="UML DAO Design Pattern MVC   zoom sur la couche modèle : DAL / DAO / ORM / CRUD" width="479" height="511" /></a></p>
<p>je dis au minimum, car ces classes pourraient avoir un peu plus de &#8230; classe! avec des getters et des setters.</p>
<p>Techniquement la DAO interroge le SGBD via la DAL sur la structure des tables afin de maintenir la correspondance entre les champs des tables de la base de données et les attributs des objets. Il y a au moins deux façons de réaliser celà:</p>
<ul>
<li>soit en générant un code PHP minimale fonction de la structure de la base de données (il faudra alors regénérer à chaque modification du schéma de base de données).</li>
<li>soit en utilisant les méthodes magiques PHP (comme <a href="http://www.php.net/manual/en/language.oop5.overloading.php">__get, __set ou __call et ___callStatic</a>) et le <a href="http://php.net/manual/fr/language.oop5.late-static-bindings.php">late static binding de PHP 5.3</a></li>
</ul>
<p>Notez qu&#8217;à ce niveau là le seul code logique que possède les objets construits à partir d’un DAO sont les méthodes CRUD qui vont permettre d’aller le lire, le modifier, le supprimer en base. En cela les objets issus d’un DAO pourraient être appelés des POPO  (rigolez pas! c&#8217;est pas moi qui l&#8217;ai dit le premier) par analogie aux <a href="http://fr.wikipedia.org/wiki/Plain_Old_Java_Object">POJO Java (Plain Old Java Object)</a></p>
<p>Notez également que dans le schéma de présentation des couches d&#8217;abstraction du modèle,  le DAO utilise la DAL, mais que ce n’est pas une vraie obligation : un DAO hardcodé en mysql resterait un DAO … simplement non portable au niveau du SGBD.</p>
<p>Notez enfin que chaque classe est isolée, c&#8217;est à dire qu&#8217;il n&#8217;existe pas de code logique qui permette une quelconque interaction entre elles.</p>
<h3>L’ORM</h3>
<p>L’ORM a pour but de transformer les relations entre les tables d’ une base de données en relations entre objets et inversement</p>
<p>Elle va typiquement se préoccuper de matérialiser les clés étrangères par des dépendances entre objets<a href="http://blog.mazenod.fr/wp-content/uploads/2010/01/UML_ORM.png" rel="lightbox[739]"><img class="aligncenter size-full wp-image-777" title="UML_ORM" src="http://blog.mazenod.fr/wp-content/uploads/2010/01/UML_ORM.png" alt="UML ORM Design Pattern MVC   zoom sur la couche modèle : DAL / DAO / ORM / CRUD"  /></a>L&#8217;intérêt réside dans le fait que les méthodes de la couche ORM, renvoient ou prennent en paramètres des listes d&#8217;objets. Par exemple $post-&gt;getComments() renverra une liste d&#8217;objets de classe Comment. Ces objets Comment seront sous forme de POPOS, c&#8217;est en celà que l&#8217;ORM utilise le DAO.</p>
<p>Techniquement l’ORM utilise soit les contraintes d’intégrité référentielle, soit une certaine logique de nommage, pour déterminer les clés étrangères. Dans les deux cas elle passe par la DAL.</p>
<p>Comme pour le DAO, les stratégies de génération de code ou d&#8217;utilisation des méthodes magiques peuvent être adoptées.</p>
<p>Comme pour le DAO également, l&#8217;utilisation d&#8217;une DAL est conseillée mais pas obligatoire.</p>
<p><a href="http://propel.phpdb.org">propel</a> et <a href="http://www.doctrine-project.org/">doctrine</a> sont deux <a href="http://trac.symfony-project.org/wiki/ComparingPropelAndDoctrine">ORM PHP typiques</a>.</p>
<h3>La couche métier</h3>
<p>Le but des couhes précédentes est de soulager la couche métier. Si la couche métier peut hériter des méthodes de la DAO et de l&#8217;ORM, nous aurons des objets présentant toutes les méthodes pour les gérer en base.</p>
<p><a href="http://blog.mazenod.fr/wp-content/uploads/2010/01/UML_METIER.png" rel="lightbox[739]"><img class="aligncenter size-full wp-image-778" title="UML_METIER" src="http://blog.mazenod.fr/wp-content/uploads/2010/01/UML_METIER.png" alt="UML METIER Design Pattern MVC   zoom sur la couche modèle : DAL / DAO / ORM / CRUD"  /></a></p>
<p>La couche métier est sensée ne contenir que la logique métier, c&#8217;est à dire propre à l&#8217;objet qu&#8217;elle représente. Ce sera effectivement le cas dans la class Post par exemple, où l&#8217;on pourra n&#8217;avoir qu&#8217;une seule méthode Post::getArchives(), qui retourne une liste de liste contenant les archives du type</p>
<pre class="php:nogutter">Array(
'2009' =&gt; Array('janvier' =&gt; 1),
'2008' =&gt; Array('septembre' =&gt; 7, 'octobre' =&gt; 2, 'novembre' =&gt; 1, 'décembre' =&gt; 1)
)</pre>
<p>Cette méthode fait bien parti de la couche métier puisqu&#8217;elle est propre au concept de post (ou billet) de blog.</p>
<p>En appelant cette méthode le contrôleur pourra nourrir une vue qui n&#8217;aura alors qu&#8217;un double foreach à faire pour présenter les archives dans le menu de droite.</p>
<h2>conclusion</h2>
<p>Les concepts que je viens de détailler sont souvent amalgamés, aussi il est souvent difficile de les cerner précisément. J&#8217;ai essayé d&#8217;illustrer le rôle de chacun par un exemple simpliste, mais je ne prétends détenir aucune vérité sur le sujet et les commentaires sont ouverts pour accueillir vos questions, suggestions et corrections</p>
<p>le mld a été généré avec <a href="http://www.fabforce.net/dbdesigner4/">DBDesigner4</a> et tout les diagrammes uml ont été générés avec <a href="http://yuml.me/diagram/scruffy/class/draw">yUML</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mazenod.fr/2010/01/design-pattern-mvc-zoom-sur-la-couche-modele-dal-dao-orm-crud/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>alimenter facebook &amp; twitter via un filet RSS</title>
		<link>http://blog.mazenod.fr/2009/12/alimenter-facebook-twitter-via-un-filet-rss/</link>
		<comments>http://blog.mazenod.fr/2009/12/alimenter-facebook-twitter-via-un-filet-rss/#comments</comments>
		<pubDate>Mon, 21 Dec 2009 14:10:20 +0000</pubDate>
		<dc:creator>mazenovi</dc:creator>
				<category><![CDATA[dev]]></category>
		<category><![CDATA[Non classé]]></category>
		<category><![CDATA[réalisations]]></category>
		<category><![CDATA[free]]></category>
		<category><![CDATA[réseaux sociaux]]></category>
		<category><![CDATA[www]]></category>

		<guid isPermaLink="false">http://blog.mazenod.fr/?p=714</guid>
		<description><![CDATA[<a href="../wp-content/uploads/2010/01/twitterfeed.png"><img class="alignleft" style="margin: 10px;" title="twitterfeed" src="../wp-content/uploads/2010/01/twitterfeed.png" alt="" width="142" height="134" /></a>je cherchais à réaliser cette opération pour les <a href="http://www.voyage-grand-coeur.org/">voyageurs au grand coeur</a>, pour qui je viens juste de terminer une nouvelle version de leur site web. Le but est de pouvoir suivre les différents voyages organisés pour les dons du sang sur les réseaux sociaux, en particulier sur facebook et twitter.

J'ai donc créée un <a href="http://www.voyage-grand-coeur.org/feed">filet RSS "mixant" les derniers comptes rendus d'étapes et les dernières news</a>. Ce qui m'a préoccupé ensuite c'est comment brancher ce flux à un compte twitter et à compte facebook.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.mazenod.fr%2F2009%2F12%2Falimenter-facebook-twitter-via-un-filet-rss%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.mazenod.fr%2F2009%2F12%2Falimenter-facebook-twitter-via-un-filet-rss%2F&amp;style=normal&amp;b=2" height="61" width="50" title="alimenter facebook &amp; twitter via un filet RSS" alt=" alimenter facebook &amp; twitter via un filet RSS" /><br />
			</a>
		</div>
<p>je cherchais à réaliser cette opération pour les <a href="http://www.voyage-grand-coeur.org/">voyageurs au grand coeur</a>, pour qui je viens juste de terminer une nouvelle version de leur site web. Le but est de pouvoir suivre les différents voyages organisés pour les dons du sang sur les réseaux sociaux, en particulier sur facebook et twitter.</p>
<ul>
<li>www: <a href="http://www.voyage-grand-coeur.org/">http://www.voyage-grand-coeur.org/</a></li>
<li>rss: <a href="http://www.voyage-grand-coeur.org/">http://www.voyage-grand-coeur.org/feed</a></li>
<li><a href="http://www.facebook.com/pages/Les-voyageurs-au-grand-coeur-tour-du-monde-a-velo-pour-le-don-du-sang/208897501614?v=wall">fan page facebook</a></li>
<li>twitter : <a href="http://twitter.com/vagc63">http://twitter.com/vagc63</a></li>
</ul>
<p><a href="http://blog.mazenod.fr/wp-content/uploads/2009/12/vagc.png" rel="lightbox[714]"><img class="aligncenter size-medium wp-image-721" title="vagc" src="http://blog.mazenod.fr/wp-content/uploads/2009/12/vagc.png" alt="vagc alimenter facebook &amp; twitter via un filet RSS" width="404" /></a></p>
<p>Il est évident que les voyageurs n&#8217;auront ni le temps, ni les moyens techniques de mettre à jour leur statu en temps réel. En revanche il vont faire à intervalle régulier des &laquo;&nbsp;comptes rendus d&#8217;étape&nbsp;&raquo;. Le but est de diffuser automatiquement ces comptes rendus dès qu&#8217;un voyage est en cours et de diffuser de manière tout aussi automatique les news du site entre deux voyages.</p>
<p>J&#8217;ai donc créée un <a href="http://www.voyage-grand-coeur.org/feed">filet RSS &laquo;&nbsp;mixant&nbsp;&raquo; les derniers comptes rendus d&#8217;étapes et les dernières news</a>. Ce qui m&#8217;a préoccupé ensuite c&#8217;est comment brancher ce flux à un compte twitter et à compte facebook.</p>
<p>Je suis rapidement tombé sur une <a href="http://socialmediarockstar.com/update-twitter-facebook-fan-pages-automatically">solution utilisant twitterfeed</a>. Cette solution utilise l&#8217;application <a href="http://apps.facebook.com/selectivetwitter/">selective tweet statu</a> (l&#8217;une des <a href="http://blog.mazenod.fr/2009/09/applications-facebook-pour-twitter/">applications facebook pour twitter</a>) qui est capable d&#8217;alimenter le statu d&#8217;une fan page facebook avec un compte twitter. Le problème de cette application, et donc de cette solution, est que chaque tweet doit être suffixé avec le hashtag #fb, ce qui ne fait pas de très beaux tweets &#8230;</p>
<p>Heureusement en regardant un peu plus dans le détails twitterfeed, j&#8217;ai remarqué qu&#8217;il était possible de configuré non seulement un compte twitter pour recevoir un flux RSS, mais aussi un compte facebook. Voici comment faire en quelques étapes</p>
<p>conifgurer le RSS à diffuser</p>
<p style="text-align: center;"><a href="http://blog.mazenod.fr/wp-content/uploads/2009/12/step1.png" rel="lightbox[714]"><img class="size-full wp-image-716 aligncenter" title="step1" src="http://blog.mazenod.fr/wp-content/uploads/2009/12/step1.png" alt="step1 alimenter facebook &amp; twitter via un filet RSS" width="500" /></a></p>
<p>configurer le compte twitter sur lequel le RSS sera publié</p>
<p style="text-align: center;"><a href="http://blog.mazenod.fr/wp-content/uploads/2009/12/step2.png" rel="lightbox[714]"><img class="size-full wp-image-716 aligncenter" title="step1" src="http://blog.mazenod.fr/wp-content/uploads/2009/12/step2.png" alt="step2 alimenter facebook &amp; twitter via un filet RSS" width="500" /></a></p>
<p>configurer le compte facebook de l&#8217;administrateur de la fan page sur laquelle le RSS sera publié</p>
<p style="text-align: center;"><a href="http://blog.mazenod.fr/wp-content/uploads/2009/12/step3.png" rel="lightbox[714]"><img class="size-full wp-image-716 aligncenter" title="step1" src="http://blog.mazenod.fr/wp-content/uploads/2009/12/step3.png" alt="step3 alimenter facebook &amp; twitter via un filet RSS" width="500" /></a></p>
<p>aperçu du dashboard</p>
<p style="text-align: center;"><a href="http://blog.mazenod.fr/wp-content/uploads/2009/12/step4.png" rel="lightbox[714]"><img class="size-full wp-image-716 aligncenter" title="step1" src="http://blog.mazenod.fr/wp-content/uploads/2009/12/step4.png" alt="step4 alimenter facebook &amp; twitter via un filet RSS" width="500" /></a></p>
<p>Notez que vous pouvez aussi alimenter ping.fm, hellotxt ou laconica, et qu&#8217;il est possible de paramétrer un compte bit.ly pour tracker les clics sur vos liens &#8230; Bref twitterfeed est un point d&#8217;entrée automatique idéal pour les pipelines sociaux<br />
pour en savoir plus</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mazenod.fr/2009/12/alimenter-facebook-twitter-via-un-filet-rss/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>afficher les referers complets dans google analytics</title>
		<link>http://blog.mazenod.fr/2009/09/afficher-les-referers-complets-dans-google-analytics/</link>
		<comments>http://blog.mazenod.fr/2009/09/afficher-les-referers-complets-dans-google-analytics/#comments</comments>
		<pubDate>Wed, 30 Sep 2009 21:15:18 +0000</pubDate>
		<dc:creator>mazenovi</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[www]]></category>

		<guid isPermaLink="false">http://blog.mazenod.fr/?p=577</guid>
		<description><![CDATA[
			
				
			
		





]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.mazenod.fr%2F2009%2F09%2Fafficher-les-referers-complets-dans-google-analytics%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.mazenod.fr%2F2009%2F09%2Fafficher-les-referers-complets-dans-google-analytics%2F&amp;style=normal&amp;b=2" height="61" width="50" title="afficher les referers complets dans google analytics" alt=" afficher les referers complets dans google analytics" /><br />
			</a>
		</div>
<p style="text-align: center;"><a href="http://blog.mazenod.fr/wp-content/uploads/2009/10/1.png" rel="lightbox[577]"><img class="aligncenter size-medium wp-image-583" title="1" src="http://blog.mazenod.fr/wp-content/uploads/2009/09/1-300x95.png" alt="1 300x95 afficher les referers complets dans google analytics" width="300" height="95" /></a></p>
<p style="text-align: center;"><a href="http://blog.mazenod.fr/wp-content/uploads/2009/10/2.png" rel="lightbox[577]"><img class="aligncenter size-medium wp-image-584" title="2" src="http://blog.mazenod.fr/wp-content/uploads/2009/09/2-300x113.png" alt="2 300x113 afficher les referers complets dans google analytics" width="300" height="113" /></a></p>
<p style="text-align: center;"><a href="http://blog.mazenod.fr/wp-content/uploads/2009/10/3.png" rel="lightbox[577]"><img class="aligncenter size-medium wp-image-585" title="3" src="http://blog.mazenod.fr/wp-content/uploads/2009/09/3-300x96.png" alt="3 300x96 afficher les referers complets dans google analytics" width="300" height="96" /></a></p>
<p style="text-align: center;"><a href="http://blog.mazenod.fr/wp-content/uploads/2009/09/4.png" rel="lightbox[577]"><img class="aligncenter size-medium wp-image-586" title="4" src="http://blog.mazenod.fr/wp-content/uploads/2009/09/4-300x77.png" alt="4 300x77 afficher les referers complets dans google analytics" width="300" height="77" /></a><a href="http://blog.mazenod.fr/wp-content/uploads/2009/10/5.png" rel="lightbox[577]"><img class="aligncenter size-medium wp-image-587" title="5" src="http://blog.mazenod.fr/wp-content/uploads/2009/09/5-300x233.png" alt="5 300x233 afficher les referers complets dans google analytics" width="300" height="233" /></a></p>
<p style="text-align: center;"><a href="http://blog.mazenod.fr/wp-content/uploads/2009/09/valeurs-personnalisees.png" rel="lightbox[577]"><img class="aligncenter size-medium wp-image-579" title="valeurs-personnalisees" src="http://blog.mazenod.fr/wp-content/uploads/2009/09/valeurs-personnalisees-207x300.png" alt="valeurs personnalisees 207x300 afficher les referers complets dans google analytics" width="207" height="300" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mazenod.fr/2009/09/afficher-les-referers-complets-dans-google-analytics/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Internet libre ou Minitel 2.0 ?</title>
		<link>http://blog.mazenod.fr/2009/09/internet-libre-web-2-0-ou-minitel/</link>
		<comments>http://blog.mazenod.fr/2009/09/internet-libre-web-2-0-ou-minitel/#comments</comments>
		<pubDate>Tue, 29 Sep 2009 12:26:53 +0000</pubDate>
		<dc:creator>mazenovi</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[gratuit]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[www]]></category>

		<guid isPermaLink="false">http://blog.mazenod.fr/?p=570</guid>
		<description><![CDATA[
			
				
			
		


Internet libre ou minitel 2.0 &#8211; Benjamin Bayard (1/4)
Internet libre ou minitel 2.0 &#8211; Benjamin Bayard (2/4)
Internet libre ou minitel 2.0 &#8211; Benjamin Bayard (3/4)
Internet libre ou minitel 2.0 &#8211; Benjamin Bayard (4/4)
Internet libre ou minitel 2.0 &#8211; Benjamin Bayard (avi)

]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.mazenod.fr%2F2009%2F09%2Finternet-libre-web-2-0-ou-minitel%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.mazenod.fr%2F2009%2F09%2Finternet-libre-web-2-0-ou-minitel%2F&amp;style=normal&amp;b=2" height="61" width="50" title="Internet libre ou Minitel 2.0 ?" alt=" Internet libre ou Minitel 2.0 ?" /><br />
			</a>
		</div>
<div><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="398" 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.dailymotion.com/swf/x5pgb0&amp;related=0" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="480" height="398" src="http://www.dailymotion.com/swf/x5pgb0&amp;related=0" allowscriptaccess="always" allowfullscreen="true"></embed></object></div>
<ul>
<li><a href="http://www.dailymotion.com/video/x5pgb0_web-20-ou-minitel-y-1-sur-4_webcam">Internet libre ou minitel 2.0 &#8211; Benjamin Bayard (1/4)</a></li>
<li><a href="http://www.dailymotion.com/related/x8fexq/video/x5pgjv_web-20-ou-minitel-y-2-sur-4_webcam">Internet libre ou minitel 2.0 &#8211; Benjamin Bayard (2/4)</a></li>
<li><a href="http://www.dailymotion.com/related/x5q3qy/video/x8ffa4_benjamin-bayart-conference-internet_tech">Internet libre ou minitel 2.0 &#8211; Benjamin Bayard (3/4)</a></li>
<li><a href="http://www.dailymotion.com/video/x5q3qy_internet-libre-ou-minitel-20-part4_tech">Internet libre ou minitel 2.0 &#8211; Benjamin Bayard (4/4)</a></li>
<li><a href="http://www.fdn.fr/minitel.avi">Internet libre ou minitel 2.0 &#8211; Benjamin Bayard (avi)</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.mazenod.fr/2009/09/internet-libre-web-2-0-ou-minitel/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
<enclosure url="http://www.fdn.fr/minitel.avi" length="103372440" type="video/x-msvideo" />
		</item>
	</channel>
</rss>

