<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Blog de Gildas Cuisinier</title>
	
	<link>http://blog.hikage.be</link>
	<description />
	<lastBuildDate>Tue, 10 May 2011 18:40:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/Hikage" /><feedburner:info uri="hikage" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Tutoriel : Comment créer un DMG</title>
		<link>http://feedproxy.google.com/~r/Hikage/~3/WxeA0Z8mae8/</link>
		<comments>http://blog.hikage.be/2011/05/10/tutoriel-comment-creer-un-dmg-partie1/#comments</comments>
		<pubDate>Tue, 10 May 2011 18:40:14 +0000</pubDate>
		<dc:creator>Hikage</dc:creator>
				<category><![CDATA[Non classé]]></category>

		<guid isPermaLink="false">http://blog.hikage.be/?p=215</guid>
		<description><![CDATA[Les utilisateurs de Mac utilisent souvent de type de fichier, qui sont en fait des images disques (comme des .iso) qui peuvent être montées et qui apparaitront comme un nouveau disque sous Mac OS X. Ce type de fichier est très souvent utilisé sous Mac comme moyen d&#8217;installer des logiciels. Afin de fournir un Bundle [...]]]></description>
			<content:encoded><![CDATA[<p>Les utilisateurs de Mac utilisent souvent de type de fichier, qui sont en fait des images disques (comme des .iso) qui peuvent être montées et qui apparaitront comme un nouveau disque sous Mac OS X.</p>
<p>Ce type de fichier est très souvent utilisé sous Mac comme moyen d&#8217;installer des logiciels.<br />
Afin de fournir un Bundle pour OpenJDK pour Mac OS X, j&#8217;ai voulu regarder de plus près comment faire pour créer un tel fichier.<br />
<span id="more-215"></span></p>
<h2>Créer le dmg</h2>
<p>La première étape consiste à créer un fichier .dmg via l&#8217;utilitaire de disque, via le bouton &laquo;&nbsp;Nouvelle Image&nbsp;&raquo; :</p>
<p><a href="http://blog.hikage.be/wp-content/uploads/2011/04/Capture-d’écran-2011-04-25-à-21.01.57.png" rel="lightbox[215]"><img src="http://blog.hikage.be/wp-content/uploads/2011/04/Capture-d’écran-2011-04-25-à-21.01.57-300x251.png" alt="" title="Utilitaire de disque" width="300" height="251" class="aligncenter size-medium wp-image-242" /></a></p>
<p>La nouvelle fenêtre permet de spécifier le type d&#8217;image que l&#8217;on souhaite :</p>
<p><a href="http://blog.hikage.be/wp-content/uploads/2011/04/Capture-d’écran-2011-04-25-à-21.02.25.png" rel="lightbox[215]"><img src="http://blog.hikage.be/wp-content/uploads/2011/04/Capture-d’écran-2011-04-25-à-21.02.25-300x260.png" alt="" title="Création d&#039;une image" width="300" height="260" class="aligncenter size-medium wp-image-244" /></a></p>
<ul>
</ul>
<li>Nom : Le nom de l&#8217;image une fois montée</li>
<li>Taille : La taille maximum du conteneur, il est nécessaire de mettre suffisamment de place, voir trop. L&#8217;image finale sera réduite plus tard</li>
<li>Format : Mac OS X Etendu</li>
<li>Chiffrement : Aucun</li>
<li>Partition : Partition unique &#8211; Table de partition Apple</li>
<li>Format d&#8217;image : Image disque en lecture / écriture</li>
<p>Le format d&#8217;image en lecture / écriture sera modifié plus tard afin de ne pas laisser au &laquo;&nbsp;utilisateur&nbsp;&raquo; de modifier une image .dmg fournie.</p>
<h2>Remplir le DMG</h2>
<p>Une fois le DMG créé, il est monté et visible sur le bureau :</p>
<p><a href="http://blog.hikage.be/wp-content/uploads/2011/04/Capture-d’écran-2011-04-25-à-21.25.15.png" rel="lightbox[215]"><img src="http://blog.hikage.be/wp-content/uploads/2011/04/Capture-d’écran-2011-04-25-à-21.25.15-300x234.png" alt="" title="Image disque montée" width="300" height="234" class="aligncenter size-medium wp-image-247" /></a></p>
<p>Il suffit de l&#8217;ouvrir pour afficher son contenu, vide pour l&#8217;instant, et de le modifier comme n&#8217;importe quel répertoire</p>
<h2>Modifier son icone</h2>
<p>Comme pour n&#8217;importe quel fichier sous Mac, il est possible de modifier l&#8217;icone du volume une fois monté.<br />
Pour cela, il faut tout d&#8217;abord ouvrir l&#8217;image que l&#8217;on souhaite utilisé comme icone avec l&#8217;<strong>Aperçu</strong>.</p>
<p>Dans celui-ci, faire <i>Command+A</i> pour sélectionner l&#8217;image, puis <i>Command+C</i> pour copier celle-ci.</p>
<p>Une fois cela fait, aller sur le bureau, click-droit sur l&#8217;icone de votre image montée et sélectionner &laquo;&nbsp;Lire les informations&nbsp;&raquo;</p>
<p><a href="http://blog.hikage.be/wp-content/uploads/2011/04/Capture-d’écran-2011-04-25-à-21.47.31.png" rel="lightbox[215]"><img src="http://blog.hikage.be/wp-content/uploads/2011/04/Capture-d’écran-2011-04-25-à-21.47.31-288x300.png" alt="" title="Lire les informations" width="288" height="300" class="aligncenter size-medium wp-image-249" /></a></p>
<p>Cliquer ensuite sur l&#8217;icone tout en haut à gauche de la fenêtre qui vient de s&#8217;ouvrir, et faire <i>Command+V</i><br />
Cette dernière devrait être devenue l&#8217;image que vous avez choisie.</p>
<h2>Modifier l&#8217;arrière plan</h2>
<p>Il est également possible de modifier l&#8217;arrière plan de la fenêtre qui sera ouverte lors de l&#8217;accès au volume.<br />
Voici par exemple à quoi ressemble l&#8217;image OpenJDK :</p>
<p><a href="http://blog.hikage.be/wp-content/uploads/2011/05/openjdk.png" rel="lightbox[215]"><img src="http://blog.hikage.be/wp-content/uploads/2011/05/openjdk-296x300.png" alt="" title="openjdk" width="296" height="300" class="aligncenter size-medium wp-image-253" /></a></p>
<p>Pour cela, il faut que l&#8217;image soit elle même présente dans le DMG, mais que le fichier lui même ne soit pas visible.<br />
Pour cela, il suffit de créer un répertoire <strong>.background</strong> dans lequel nous viendront mettre l&#8217;image.</p>
<p>Ensuite, à la racine du volume monté, il suffit de faire un click-droit et de séléctionner &laquo;&nbsp;Afficher les options de présentation&nbsp;&raquo; :<br />
<a href="http://blog.hikage.be/wp-content/uploads/2011/05/option-de-presentation.png" rel="lightbox[215]"><img src="http://blog.hikage.be/wp-content/uploads/2011/05/option-de-presentation-147x300.png" alt="" title="option de presentation" width="147" height="300" class="aligncenter size-medium wp-image-254" /></a></p>
<p>Dans la section &laquo;&nbsp;Arrière plan&nbsp;&raquo; il suffira de faire glisser l&#8217;image du répertoire .background dans l&#8217;espace &laquo;&nbsp;Faire glisser ici&nbsp;&raquo;.</p>
<h2>Finaliser l&#8217;image</h2>
<p>Une fois que le Volume contient les fichiers que vous souhaitez publier et que la présentation vous convient, il faut finaliser l&#8217;image.</p>
<p>Pour cela, nous retournons dans l&#8217;utilitaire de disque, dans la frame de gaucher, selectionnez le dmg que vous venez de créer, et cliquez sur &laquo;&nbsp;Convertir&nbsp;&raquo; dans le menu du haut.</p>
<p>Sélectionner le format &laquo;&nbsp;Compressé&nbsp;&raquo;, et cliquez sur OK.<br />
Le nouveau DMG sera réduit à la taille que vous utilisez rééllement, et ne pourra plus être modifié.</p>
<p>Il est donc prêt à être livrer !</p>
<h2>Amélioration</h2>
<p>Si il est facile de créer un DMG de cette manière, cela demande de nombreuse manipulation par le développeur.<br />
Dans un prochain article, j&#8217;expliquerai comment il est possible de scripter la création de ce DMG.</p>
<img src="http://feeds.feedburner.com/~r/Hikage/~4/WxeA0Z8mae8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.hikage.be/2011/05/10/tutoriel-comment-creer-un-dmg-partie1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.hikage.be/2011/05/10/tutoriel-comment-creer-un-dmg-partie1/</feedburner:origLink></item>
		<item>
		<title>Mesange</title>
		<link>http://feedproxy.google.com/~r/Hikage/~3/v-WzTG1mrnU/</link>
		<comments>http://blog.hikage.be/2011/03/12/mesange/#comments</comments>
		<pubDate>Sat, 12 Mar 2011 21:38:26 +0000</pubDate>
		<dc:creator>Hikage</dc:creator>
				<category><![CDATA[Non classé]]></category>

		<guid isPermaLink="false">http://blog.hikage.be/?p=235</guid>
		<description />
			<content:encoded><![CDATA[<div id="attachment_236" class="wp-caption aligncenter" style="width: 215px"></p>
<div class="mceTemp mceIEcenter">
<dl id="attachment_236" class="wp-caption aligncenter" style="width: 215px;">
<dt class="wp-caption-dt"><a href="http://blog.hikage.be/wp-content/uploads/2011/03/20110312-Messange.jpg" rel="lightbox[235]"><img class="size-medium wp-image-236" title="Mesange" src="http://blog.hikage.be/wp-content/uploads/2011/03/20110312-Messange-205x300.jpg" alt="Mesange" width="205" height="300" /></a><p class="wp-caption-text">Mesange</p></div>
</dt>
</dl>
</div>
<img src="http://feeds.feedburner.com/~r/Hikage/~4/v-WzTG1mrnU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.hikage.be/2011/03/12/mesange/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.hikage.be/2011/03/12/mesange/</feedburner:origLink></item>
		<item>
		<title>[Photo] Divination</title>
		<link>http://feedproxy.google.com/~r/Hikage/~3/6nk0KKdezSM/</link>
		<comments>http://blog.hikage.be/2011/01/15/photo-divination/#comments</comments>
		<pubDate>Sat, 15 Jan 2011 17:23:00 +0000</pubDate>
		<dc:creator>Hikage</dc:creator>
				<category><![CDATA[Mes photos]]></category>

		<guid isPermaLink="false">http://blog.hikage.be/?p=231</guid>
		<description />
			<content:encoded><![CDATA[<div id="attachment_217" class="wp-caption aligncenter" style="width: 670px"><a href="http://blog.hikage.be/wp-content/uploads/2011/01/divination.jpg" rel="lightbox[231]"><img class="size-full wp-image-217" title="Divination" src="http://blog.hikage.be/wp-content/uploads/2011/01/divination.jpg" alt="Divination" width="660" height="960" /></a><p class="wp-caption-text">Artiste de rue à Avignon</p></div>
<img src="http://feeds.feedburner.com/~r/Hikage/~4/6nk0KKdezSM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.hikage.be/2011/01/15/photo-divination/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://blog.hikage.be/2011/01/15/photo-divination/</feedburner:origLink></item>
		<item>
		<title>SpringOne 2gx : Résumé des annonces</title>
		<link>http://feedproxy.google.com/~r/Hikage/~3/zD5Zij9NEqQ/</link>
		<comments>http://blog.hikage.be/2010/10/26/springone-2gx-resume-des-annonces/#comments</comments>
		<pubDate>Tue, 26 Oct 2010 18:59:39 +0000</pubDate>
		<dc:creator>Hikage</dc:creator>
				<category><![CDATA[Conférence]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[s2gx]]></category>
		<category><![CDATA[spring]]></category>

		<guid isPermaLink="false">http://blog.hikage.be/?p=201</guid>
		<description><![CDATA[La semaine dernière a eu lieu le gros évènement pour la communauté Spring et Groovy : Les conférences SpringOne 2gx. Comme souvent, ce fut l&#8217;occasion pour SpringSource et ses divers partenaires pour présenter leur dernières nouveautés Code2Cloud La plus grosse annonce fut certainement l&#8217;annonce de Code2Cloud, de SpringSource et Tasktop. Ce dernier est un service [...]]]></description>
			<content:encoded><![CDATA[<p>La semaine dernière a eu lieu le gros évènement pour la communauté Spring et Groovy : Les conférences SpringOne 2gx.<br />
Comme souvent, ce fut l&#8217;occasion pour SpringSource et ses divers partenaires pour présenter leur dernières nouveautés<br />
<span id="more-201"></span></p>
<h2>Code2Cloud</h2>
<p>La plus grosse annonce fut certainement l&#8217;annonce de Code2Cloud, de SpringSource et Tasktop. Ce dernier est un service déployé sur le Cloud qui répond à un besoin : La gestion du cycle de vie d&#8217;une application.</p>
<p>En pratique, Code2Cloud propose plusieurs services nécessaire pour une application :</p>
<ul>
<li>Un gestionnaire de source, Git en l&#8217;occurence ici</li>
<li>Un moteur d&#8217;intégration continue, Hudson bien évidemment</li>
<li>Un système de suivi de bug (Issue Tracker), compatible Bugzilla et Mylin</li>
<li>Un runtime dans lequel il semble possible de déployer sur le Cloud (Peu d&#8217;information sur les possibilités de ce runtime pour l&#8217;instant : Sql ? Limitation des API Java ? etc )
</ul>
<p>Le tout bien ficelé avec un plugin Eclipse qui semble assez facile d&#8217;accès.</p>
<h2>Spring 3.1</h2>
<p><a href="http://www.springsource.com/people/jhoeller">Juergen Hoeller</a> à profiter de l&#8217;évènement pour présenter la prochaine version du framework Spring, la 3.1 :</p>
<ul>
<li>API de Conversation</li>
<li>Support de Servlet 3.0</li>
<li>&laquo;&nbsp;Profil d&#8217;environnement&nbsp;&raquo;, qui permet de faire une résolution des placeholder (de type ${datasource.url} par exemple) selon un environnement. Cela permettrait d&#8217;avoir des valeurs différentes pour les environnements de DEV et de PROD.</li>
<li>Ajout d&#8217;une abstraction pour les système de cache  (EhCache et Gemfire dans un premier temps) en fournissant un jeu d&#8217;annotation (@Cacheable)
</li>
<li>Réduire l&#8217;écart des possibilités qui existent entre la configuration XML et JavaConfig</li>
</ul>
<h2>Nouveaux projets dans le portfolio</h2>
<p>Le portfolio n&#8217;est pas en reste non plus avec l&#8217;arrivée de plusieurs</p>
<h3>Spring Data</h3>
<p>Le mouvement NoSQL étant à la mode, il fallait s&#8217;attendre à ce que SpringSource propose quelques chose. <a href="www.springsource.org/spring-data">Spring Data</a> est la réponse <img src='http://blog.hikage.be/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Spring Data est en réalité un groupe de projet, subdivisé en plusieurs modules dédiés à un type de base NoSQL :</p>
<ul>
<li>Base Clé-Valeur : Support de Redis
</li>
<li>Base Document : Support de CouchDB et MongoDB
</li>
<li>Base Graphe : Support de Neo4j
</li>
<li>Et un module pour Oracle RAC</li>
</ul>
<h3>Spring Payment</h3>
<p>En collaboration avec Visa, SpringSource à développé un module pour la gestion des paiements en ligne.</p>
<h3>Spring Social</h3>
<p>C&#8217;est un projet qui propose divers classe utilitaire ( à la mode *Template) pour accéder aux réseaux sociaux populaire tels que Facebook, Linkedin, Twitter ou TripIt.</p>
<h3>Spring Mobile</h3>
<p>SpringSource aurait également annoncé un projet pour simplifier le développement Mobile (Web?) pour iPhone et Android.</p>
<h2>Collaboration Google et SpringSource</h2>
<p>SpringSource et Google concrétisent leur collaboration via le développement Spring Roo.<br />
Par ailleurs, leur outil SpeedTracer et Spring Insight sont de mieux en mieux intégré afin d&#8217;aider au monitoring et à l&#8217;amélioration des performances des applications.</p>
<p>Une des informations que je trouve particulièrement intéressante est que la nouvelle démo de SpringSource (Spring Travel) sur Google App Engine utiliserait le nouveau service SQL de Google.<br />
Ce qui voudrait dire que celui-ci est presque prêt et pourrait être disponible bientot.<br />
Si c&#8217;est le cas, c&#8217;est un nouveau pas aidant à l&#8217;adoption de Google App Engine, car BigTable &#8230; ca fait peur aux entreprises !</p>
<img src="http://feeds.feedburner.com/~r/Hikage/~4/zD5Zij9NEqQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.hikage.be/2010/10/26/springone-2gx-resume-des-annonces/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.hikage.be/2010/10/26/springone-2gx-resume-des-annonces/</feedburner:origLink></item>
		<item>
		<title>Google I/O : Le plein d’annonces !</title>
		<link>http://feedproxy.google.com/~r/Hikage/~3/MWUTpp_SAME/</link>
		<comments>http://blog.hikage.be/2010/05/20/google-io-le-plein-dannonces/#comments</comments>
		<pubDate>Thu, 20 May 2010 19:56:33 +0000</pubDate>
		<dc:creator>Hikage</dc:creator>
				<category><![CDATA[Conférence]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[spring]]></category>

		<guid isPermaLink="false">http://blog.hikage.be/?p=195</guid>
		<description><![CDATA[Google I/O, les conférences de Google pour l&#8217;Innovation et l&#8217;Ouverture, furent l&#8217;occasion pour annoncer un lot de nouveautés pour la société de Mountain View : Ouverture publique de Google Wave Un des gros buzz Google, Google Wave ou un mix de l&#8217;email, de la messagerie instanée et des robots à la IRC était jusqu&#8217;ici accessible [...]]]></description>
			<content:encoded><![CDATA[<p>Google I/O, les conférences de Google pour l&#8217;Innovation et l&#8217;Ouverture, furent l&#8217;occasion pour annoncer un lot de nouveautés pour la société de Mountain View :</p>
<h2>Ouverture publique de Google Wave</h2>
<p>Un des gros buzz Google, Google Wave ou un mix de l&#8217;email, de la messagerie instanée et des robots à la IRC était jusqu&#8217;ici accessible uniquement sur invitation.<br />
Ce service est maintenant publique, et même accessible via les Google App pour entreprise.</p>
<p>Autrement dit, plus d&#8217;excuse pour ne pas suivre les Wave de Olivier Croisier, auteur du blog <a href="http://thecodersbreakfast.net/">The Coder&#8217;s Breakfast</a> lors des conférences du ParisJUG.</p>
<h2>Google Font Directory et Google Font API</h2>
<p>Jusqu&#8217;ici la plupart des sites utilisaient des polices de caractères standards, disponibles par défaut sur tout les OS, et cela afin d&#8217;être certains du rendu sur le poste client.</p>
<p>Google Font Directory et Google Font API vont permettre d&#8217;élargir les possibilités en proposant une liste de police libre de droit utilisable via CSS. Une fois la police choisie, le site propose de l&#8217;importer dans votre site de manière très simple :</p>
<pre class="brush: xml; title: ;">
&lt;link href='http://fonts.googleapis.com/css?family=Inconsolata' rel='stylesheet' type='text/css'&gt;
</pre>
<p>Dès lors, il sera possible de l&#8217;utiliser dans les style css :</p>
<pre class="brush: css; title: ;">
h1 { font-family: 'Inconsolata', arial, serif; }
</pre>
<p>Plus d&#8217;informations sur le site de <a href="http://code.google.com/webfonts">Google Font Directory</a></p>
<h2>Lancement de Google App for Business</h2>
<p>Google <a href="http://googlecode.blogspot.com/2010/05/announcing-google-app-engine-for.html">annonce</a> le lancement d&#8217;une version &#8216;Pro&#8217; de Google App.</p>
<p>Celle-ci propose des nouvelles fonctionnalités :</p>
<ul>
<li>Administration centralisée des applications pour un domaine</li>
<li>SLA de 99,9%</li>
<li>Sécurisée par défaut, autrement dit seul les utilisateurs du domaine peuvent y accéder</li>
<li>A venir : Base de donnée SQL, gestion des certificats SSL</li>
</ul>
<p>Par ailleurs, il semblerait que Google et VMware/SpringSource collabore afin de créer un Platforme ouverte, le but étant de permettre de déployer une application aussi bien sur Google App que sur un cloud VMware. Vers une standardisation du cloud ? <img src='http://blog.hikage.be/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /><br />
De quoi rassurer les sociétés je pense.</p>
<h2>WebM, ou un standard video OpenSource (pour le HTML5?)</h2>
<p>WebM propose un codec video OpenSource et royalty-free, et est soutenu par Google, Opera, Mozilla et même Adobe.</p>
<p>La question : Est-ce que Apple et Microsoft vont accepter ce codec? </p>
<h2>Android 2.2, alias Froyo</h2>
<p>Tout le monde s&#8217;en doutait,  c&#8217;est maintenant officiel : L&#8217;Android nouveau est arrivé !</p>
<p>Parmi les nouveautés :</p>
<ul>
<li>Compilateur JIT</li>
<li>Nouveau Browser avec moteur V8</li>
<li>Possibilité de partager la connection 3G
</li>
</ul>
<p>Et certainement encore d&#8217;autre choses, je mettrais à jour petit à petit <img src='http://blog.hikage.be/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<img src="http://feeds.feedburner.com/~r/Hikage/~4/MWUTpp_SAME" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.hikage.be/2010/05/20/google-io-le-plein-dannonces/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.hikage.be/2010/05/20/google-io-le-plein-dannonces/</feedburner:origLink></item>
		<item>
		<title>Roomba, robot aspirateur</title>
		<link>http://feedproxy.google.com/~r/Hikage/~3/1UvkTgsyz9k/</link>
		<comments>http://blog.hikage.be/2010/05/06/roomba-aspirateur-robot/#comments</comments>
		<pubDate>Thu, 06 May 2010 12:27:02 +0000</pubDate>
		<dc:creator>Hikage</dc:creator>
				<category><![CDATA[Divers]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[robot]]></category>
		<category><![CDATA[vie]]></category>

		<guid isPermaLink="false">http://blog.hikage.be/?p=187</guid>
		<description><![CDATA[Une fois n&#8217;est pas coutume, mais le sujet ne sera pas informatique cette fois. Cependant, je reste tout de même un geek dans l&#8217;âme donc cela restera fun quand même Je vais vous parler de mon dernier achat : un robot aspirateur, le Roomba 555. Alors gadget ou pas ? Bon, je l&#8217;ai depuis 2h [...]]]></description>
			<content:encoded><![CDATA[<p>Une fois n&#8217;est pas coutume, mais le sujet ne sera pas informatique cette fois.<br />
Cependant, je reste tout de même un geek dans l&#8217;âme donc cela restera fun quand même <img src='http://blog.hikage.be/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Je vais vous parler de mon dernier achat : un robot aspirateur, le Roomba 555.<br />
Alors gadget ou pas ? Bon, je l&#8217;ai depuis 2h donc je ne vais pas pouvoir être fort objectif sur le coup mais ..</p>
<p>Tout d&#8217;abord, j&#8217;ai été un peu surpris par sa taille. Je ne sais pas pourquoi, mais je le voyais plus petit.<br />
Le voici en photo à coté d&#8217;un CD :</p>
<p><a href="http://blog.hikage.be/wp-content/uploads/2010/05/Roomba555.jpg" rel="lightbox[187]"><img class="aligncenter size-medium wp-image-188" title="Roomba555" src="http://blog.hikage.be/wp-content/uploads/2010/05/Roomba555-200x300.jpg" alt="" width="200" height="300" /></a></p>
<p>Sinon, est-ce que cela fonctionne ? J&#8217;aurais tendance à dire oui !<br />
Une fois lancé, il commence à tourner en spirale, il détecte les obstacles, s&#8217;il trouve un mur il va le suivre. Dès qu&#8217;il se heurte à un pied, il va chercher à en faire le tour. Bref, il est véritablement autonome à première vue.</p>
<p>Mais est-ce efficace ? Encore une fois, je dirai oui ..<br />
Hier, nous avions passé l&#8217;aspirateur (le normal, celui qu&#8217;on tire) à l&#8217;étage. Aujourd&#8217;hui une fois le Roomba ayant fini le même étage, j&#8217;ai été assez impressionné par le contenu aspiré ! Comme quoi, il nettoie plutôt bien !</p>
<p>Bon, c&#8217;est ici un retour à chaud, je verrai à l&#8217;usage si cela fonctionne toujours aussi bien mais pour l&#8217;heure, le geek en moi est content <img src='http://blog.hikage.be/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<img src="http://feeds.feedburner.com/~r/Hikage/~4/1UvkTgsyz9k" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.hikage.be/2010/05/06/roomba-aspirateur-robot/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.hikage.be/2010/05/06/roomba-aspirateur-robot/</feedburner:origLink></item>
		<item>
		<title>Feedback : Switch PC vers Mac</title>
		<link>http://feedproxy.google.com/~r/Hikage/~3/uqJaH38KxCU/</link>
		<comments>http://blog.hikage.be/2010/04/28/feedback-switch-pc-vers-mac/#comments</comments>
		<pubDate>Wed, 28 Apr 2010 12:10:49 +0000</pubDate>
		<dc:creator>Hikage</dc:creator>
				<category><![CDATA[Divers]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[pc]]></category>
		<category><![CDATA[test]]></category>

		<guid isPermaLink="false">http://blog.hikage.be/?p=179</guid>
		<description><![CDATA[Tentation, doute et .. Ceci n&#8217;est pas un billet de plus pour faire de la propagande Apple, mais juste l&#8217;envie de partager mon expérience sur le switch de Pc vers Mac. J&#8217;ai eu l&#8217;occasion de tester, très épisodiquement, Mac OS X chez mon premier employeur. J&#8217;ai trouvé le concept intéressant, plutôt bien fini esthétiquement et [...]]]></description>
			<content:encoded><![CDATA[<h2>Tentation, doute et ..</h2>
<p>Ceci n&#8217;est pas un billet de plus pour faire de la propagande Apple, mais juste l&#8217;envie de partager mon expérience sur le switch de Pc vers Mac.</p>
<p>J&#8217;ai eu l&#8217;occasion de tester, très épisodiquement, Mac OS X chez mon premier employeur. J&#8217;ai trouvé le concept intéressant, plutôt bien fini esthétiquement et simple à utiliser.<br />
Mais en tant que développeur/administrateur système, j&#8217;ai également découvert avec horreur le clavier Apple..</p>
<p>Quelques temps plus  tard, un ami proche, administrateur système de profession, à tenter le switch vers un portable Apple. Mais il a rapidement changé, en particulier à cause du clavier qui ne lui était pas fort pratique.</p>
<p>Suite à cela, moi qui était jusque la tenter de passer le pas, j&#8217;ai été fort refroidit. Et quand j&#8217;ai effectivement été forcé de changer de portable, je suis resté sur le marque PC qui ne m&#8217;a jamais fait défaut.<br />
Mais avec un léger regret tout de même. </p>
<p>Et finalement, fin 2009, j&#8217;ai franchi le cap et me suis commandé un Mac Book Pro 15&#8243;.</p>
<h2>Premiers avis</h2>
<p>Au déballage, il faut avouer que le MacBook unibode en jette assez : mince (par rapport à mon précedent portable), bien design.</p>
<p>La première utilisation est elle-aussi très professionelle : je saute sur PhotoBooth pour faire rire mes enfants.<br />
Je découvre un peu les soft installés : iPhoto, iWork, Mail, Safari .. </p>
<p>Mais rapidement, j&#8217;ai un besoin de retrouver mes repères. J&#8217;installe donc les logiciels que j&#8217;utilisais le plus souvent sous Windows :</p>
<p>Thunderbird pour les emails, avec mon domaine sur Gmail.<br />
Firefox et ses plugins, mais également la version Mac de Google Chrome<br />
iTunes<br />
Eclipse STS<br />
Intellij Idea<br />
Bon pour ces deux derniers, j&#8217;ai eu un peu de mal au début (et il faut l&#8217;avouer, encore maintenant) avec les raccourcis Mac. J&#8217;ai longtemps ralé sur le Commande+S (Enregistrer) que je loupais en faisant un Commande+Q (Quitter).</p>
<p>Par contre, le Touch Pad multitouch est une vrai merveille.. Il m&#8217;arrive souvent maintenant lorsque je suis sur des portables Windows de faire machinalement un slide vers le bas ou le haut .. et de me dire &laquo;&nbsp;Zut ca marche pas ici&nbsp;&raquo;.</p>
<h2>Ce que j&#8217;ai adoré</h2>
<p>En tant que développeur, j&#8217;ai eu l&#8217;agréable surprise de voir pas mal d&#8217;outils préinstallés : Java 1.6, Maven 2.2, Ant 1.7.1, Subversion.<br />
Même Apache est préconfiguré pour gérer les répertoires Sites des utilisateurs.<br />
La seule chose que j&#8217;ai eu à faire est d&#8217;installer MySql je crois, afin d&#8217;avoir une base de donnée.</p>
<p>Un autre point fort de Mac OS X c&#8217;est qu&#8217;il est basé sur BSD. On a donc une véritable console accessible avec les commandes habituelles : grep, wc, find, tail, .. </p>
<h2>Ce que j&#8217;ai moins aimé</h2>
<p>Un des concepts de Mac OS X est de ne pouvoir lancé qu&#8217;une seule instance d&#8217;une application. Cela parait logique et certainement préférable pour la plupart des utilisateurs.</p>
<p>Dans mon cas, j&#8217;aurais aimé pouvoir lancer plusieurs Eclipses. Cela reste possible, mais je dois lancer cela par la console. Moins chouette tout de suite .</p>
<p>Un autre regret, c&#8217;est que j&#8217;aurais espéré que le système soit full UTF-8 par défault. J&#8217;ai appris à mes dépens qu&#8217;il existait un charset MacRoman qui est la valeur par défaut. Ce n&#8217;est pas la fin du monde, mais ca aurait été utile de ne plus devoir se soucier de cela.</p>
<p>Dans un point de vue plus utilisateur lambda, il y a une fonctionnalité était beaucoup plus pratique sous Windows : L&#8217;Aperçu des images. Sous Windows, je double cliquais sur une image, elle s&#8217;ouvrait. Mais j&#8217;avais la possibilité d&#8217;avancer/reculer dans les images du répertoire avec les flèches.<br />
Sous Mac, si tu ne choisi qu&#8217;une seule image, tu ne pourras voir que celle-ci ..  </p>
<h2>Conclusion</h2>
<p>Globalement, je suis super content de mon MacBook Pro, et je ne regrette pas mon switch. Cela dit, il faut rester les pieds sur terre : Mac OS X n&#8217;est pas sans défaut. Je ne suis pas de ceux qui disent que Mac OS X est mieux que tout le reste, d&#8217;autant plus que je n&#8217;ai pas eu la possibilité de tester Windows Seven.</p>
<img src="http://feeds.feedburner.com/~r/Hikage/~4/uqJaH38KxCU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.hikage.be/2010/04/28/feedback-switch-pc-vers-mac/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://blog.hikage.be/2010/04/28/feedback-switch-pc-vers-mac/</feedburner:origLink></item>
		<item>
		<title>Créer un namespace Spring</title>
		<link>http://feedproxy.google.com/~r/Hikage/~3/Qgws-ZsJUwA/</link>
		<comments>http://blog.hikage.be/2010/04/24/creer-un-namespace-spring/#comments</comments>
		<pubDate>Sat, 24 Apr 2010 07:20:10 +0000</pubDate>
		<dc:creator>Hikage</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[namespace]]></category>
		<category><![CDATA[spring]]></category>
		<category><![CDATA[tutoriel]]></category>

		<guid isPermaLink="false">http://blog.hikage.be/?p=134</guid>
		<description><![CDATA[Une des fonctionnalités fort pratique avec Spring est la notion de namespace. Ceux-ci permettre de simplifier et réduire de manière significative une configuration XML. Spring en possède plusieurs de bases : jms, jee, scheduling, jdbc, mvc, &#8230; Cependant, il est tout à fait possible d&#8217;en créer des spécifiques à nos propres besoins, et sans trop [...]]]></description>
			<content:encoded><![CDATA[<p>Une des fonctionnalités fort pratique avec Spring est la notion de namespace. Ceux-ci permettre de simplifier et réduire de manière significative une configuration XML.</p>
<p>Spring en possède plusieurs de bases : jms, jee, scheduling, jdbc, mvc, &#8230;</p>
<p>Cependant, il est tout à fait possible d&#8217;en créer des spécifiques à nos propres besoins, et sans trop de difficulté.</p>
<h2>Créer le schéma xml</h2>
<p>Lorsqu&#8217;on créer un namespace pour Spring, la toute première chose à faire est de définir les éléments de celui-ci.<br />
Et comme on parle de namespace XML, cela se traduit par un schema XSD.</p>
<p>Le plus simple pour créer une XSD est de préparer un exemple de XML valide, et d&#8217;ensuite créer le XSD à partir de celui-ci.<br />
Dans le cadre du projet de modèle, je voulais pouvoir importer un fichier et définir des variables :</p>
<pre class="brush: xml; title: ;">
&lt;import-template location=&quot;classpath:be/hikage/template/template.xml&quot;&gt;
       &lt;variable name=&quot;variable1&quot; value=&quot;valeur1&quot; /&gt;
&lt;/import-template&gt;
</pre>
<p>A partir de différents outils (Intellij Idea, XmlSpy, ..), il est possible de générer une XSD correspondant à notre exemple :</p>
<pre class="brush: xml; title: ;">
&lt;?xml version=&quot;1.0&quot;?&gt;
&lt;?xml version=&quot;1.0&quot;?&gt;
&lt;xs:schema xmlns:xs=&quot;http://www.w3.org/2001/XMLSchema&quot; elementFormDefault=&quot;qualified&quot;&gt;
  &lt;xs:element name=&quot;import-template&quot;&gt;
    &lt;xs:complexType&gt;
      &lt;xs:sequence&gt;
        &lt;xs:element name=&quot;variable&quot;&gt;
          &lt;xs:complexType&gt;
            &lt;xs:attribute name=&quot;name&quot; type=&quot;xs:string&quot; use=&quot;required&quot;/&gt;
            &lt;xs:attribute name=&quot;value&quot; type=&quot;xs:string&quot; use=&quot;required&quot;/&gt;
          &lt;/xs:complexType&gt;
        &lt;/xs:element&gt;
      &lt;/xs:sequence&gt;
      &lt;xs:attribute name=&quot;location&quot; type=&quot;xs:string&quot; use=&quot;required&quot;/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;
&lt;/xs:schema&gt;
</pre>
<p>Cependant, cette XSD ne comporte pas encore de notion de namespace dédié. Pour cela, il faut lui ajouter l&#8217;attribut targetNamespace avec comme valeur l&#8217;identifiant de notre namespace.<br />
Dans mon cas, il s&#8217;agira de <strong>http://www.hikage.be/schema/import-template</strong>.</p>
<p>La XSD complètée sera donc :</p>
<pre class="brush: xml; title: ;">
&lt;?xml version=&quot;1.0&quot;?&gt;
&lt;xs:schema xmlns:xs=&quot;http://www.w3.org/2001/XMLSchema&quot; elementFormDefault=&quot;qualified&quot; targetNamespace=&quot;http://www.hikage.be/schema/import-template&quot;&gt;
  &lt;xs:element name=&quot;import-template&quot;&gt;
    &lt;xs:complexType&gt;
      &lt;xs:sequence&gt;
        &lt;xs:element name=&quot;variable&quot;&gt;
          &lt;xs:complexType&gt;
            &lt;xs:attribute name=&quot;name&quot; type=&quot;xs:string&quot; use=&quot;required&quot;/&gt;
            &lt;xs:attribute name=&quot;value&quot; type=&quot;xs:string&quot; use=&quot;required&quot;/&gt;
          &lt;/xs:complexType&gt;
        &lt;/xs:element&gt;
      &lt;/xs:sequence&gt;
      &lt;xs:attribute name=&quot;location&quot; type=&quot;xs:string&quot; use=&quot;required&quot;/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;
&lt;/xs:schema&gt;
</pre>
<p>On enregistre cette classe dans les sources du projets, par exemple dans le package be.hikage.namespaces.schemas.</p>
<h2>Créer un NamespaceHandler</h2>
<p>Une fois le schéma défini, il faut encore dire à Spring comment l&#8217;utiliser.<br />
Pour cela, il faut implémenter un NamespaceHandler, le plus souvent en étendant la classe NamespaceHandlerSupport :</p>
<pre class="brush: java; title: ;">
public class TemplateNamespaceHandler extends NamespaceHandlerSupport {
   private static final String IMPORT_TEMPLATE_TAG = &quot;import-template&quot;;

   public void init() {
       // Spécifie que les éléments &lt;import-template&gt; seront traités
       // par la classe ImportTemplateBeanDefinitionParser
       registerBeanDefinitionParser(IMPORT_TEMPLATE_TAG,
          new ImportTemplateBeanDefinitionParser());

   }
}                                                                                                                                                                                              }
</pre>
<p>Etendre NamespaceHandlerSupport nécessite d&#8217;implémenter une méthode init dans laquelle il est nécessaire de lier les éléments racines (import-template dans notre cas) à un BeanDefinitionParser.</p>
<h2>Créer le BeanDefinitionParser</h2>
<p>Les BeanDefinitionParser sont certainements les classes les plus importantes dans la création d&#8217;un namespace car ce sont elles qui vont véritablement dire à Spring quel Beans devront être ajoutés dans le contexte.</p>
<p>Dans notre cas, la classe ImportTemplateBeanDefinitionParser va être responable de</p>
<p>* Parser l&#8217;élément import-template et ses éléments fils (variable)<br />
* Lire le fichier spécifié dans l&#8217;attribut location<br />
* Injecter dans le contexte Spring les définition définies dans le fichier en remplacant les variables présente dans celui-ci</p>
<p>En pratique, cela se fait dans la méthode parse, qui est définie dans l&#8217;interface BeanDefinitionParser :</p>
<pre class="brush: java; title: ;">
	public BeanDefinition parse(Element element, ParserContext parserContext) {

		// On lit l'attribut location pour connaitre le fichier modèle
		String resource = element.getAttribute(LOCATION_ATTRIBUTE);

		// On récupère les &lt;variable name=&quot;cle&quot; value=&quot;valeur&quot; sous forme de
		// Map&lt;Cle, Valeur&gt;
		Map&lt;String, String&gt; variables = prepareReplacement(element);

		// On lit les BeanDefinition (représentation de la configuration d'un
		// Bean) à partir du fichier modèle
		Map&lt;String, BeanDefinition&gt; tempDefinitions = loadTemplateBeans(location);

		// On remplace les variables dans les définitions ( nom de beans,
		// attributs, valeurs )
		Map&lt;String, BeanDefinition&gt; beansDefinition = replaceVariable(
				tempDefinitions, variables);

		for (Map.Entry&lt;String, BeanDefinition&gt; entry : templateBeansDefinitions
				.entrySet()) {
			// On ajoute chaque beans dans le contexte Spring
			parserContext.getRegistry().registerBeanDefinition(entry.getKey(),
					entry.getValue());
		}

		return null;
	}

}
</pre>
<p>J&#8217;ai volontairement simplié le code concernant les méthodes loadTemplateBeans() et replaceVariable() par soucis de simplicité.</p>
<p>Dans le cas de la méthode loadTemplateBeans, j&#8217;utilise la classe XmlBeanDefinitionReader de Spring qui va lire et créer les BeanDefinitions à ma place. Un BeanDefinition est le modèle interne à Spring pour représenter un Bean : son nom, la classe, les variables constructeurs, les propriétés à configurer, &#8230;</p>
<h2>Enregistrer le NamespaceHandler et le schéma</h2>
<p>Nous avons maintenant notre schéma ainsi que les classes nécessaire pour que Spring puisse traiter correctement un fichier de ce type  :</p>
<pre class="brush: xml; title: ;">
&lt;beans xmlns=&quot;http://www.springframework.org/schema/beans&quot;
      xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
      xmlns:hikage=&quot;http://www.hikage.be/schema/import-template&quot;
      xsi:schemaLocation=&quot;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.hikage.be/schema/import-template http://www.hikage.be/schema/import-template/import-template-1.0.xsd&quot;&gt;

   &lt;hikage:import-template location=&quot;classpath:template.xml&quot;&gt;
       &lt;hikage:variable name=&quot;env&quot; value=&quot;dev&quot;/&gt;
   &lt;/hikage:import-template&gt;

&lt;/beans&gt;
</pre>
<p>Pour cela, il est nécessaire de créer deux fichiers dans META-INF :</p>
<ul>
<li><strong>spring.handlers</strong> : qui va associé un namespace à son NamespaceHandler
</li>
<li><strong>spring.schemas</strong> : qui va associé l&#8217;URL utilisé dans xsd:schemaLocation à la XSD dans le classpath</li>
</ul>
<p>Le fichier spring.handlers :</p>
<pre class="brush: plain; title: ;">
http\://www.hikage.be/schema/import-template=be.hikage.springtemplate.TemplateNamespaceHandler
</pre>
<ul>
<li>Clé : Le namespace défini dans le targetNamespace de la XSD</li>
<li>Valeur : la FQN du NamespaceHandler</li>
</ul>
<p>Le fichier spring.schemas :</p>
<pre class="brush: plain; title: ;">
http\://www.hikage.be/schema/import-template/import-template.xsd=be/hikage/springtemplate/import-template-1.0.xsd
</pre>
<ul>
<li>Clé : L&#8217;URI définie dans le schemaLocation</li>
<li>Valeur : Le chemin de la XSD dans le classpath</li>
</ul>
<h2>Compléments</h2>
<p>Cela dit, cet exemple est assez basique. Les possibilités d&#8217;un namespace sont plus étendue. Il est également possible d&#8217;améliorer le schema XSD et le code du BeanDefinitionParser pour mieux s&#8217;intégrer dans les IDEs. </p>
<p>En attendant, pour plus d&#8217;informations :</p>
<ul>
</ul>
<li>Le code complet de l&#8217;<a href="http://code.google.com/p/spring-import-template/">Import-Template</a> vous permettra de voir en détail comment créer un namespace</li>
<li>La <a href="http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/extensible-xml.html">documentation officielle </a>sur la création d&#8217;un namespace</li>
<img src="http://feeds.feedburner.com/~r/Hikage/~4/Qgws-ZsJUwA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.hikage.be/2010/04/24/creer-un-namespace-spring/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://blog.hikage.be/2010/04/24/creer-un-namespace-spring/</feedburner:origLink></item>
		<item>
		<title>Liens de la semaine</title>
		<link>http://feedproxy.google.com/~r/Hikage/~3/1ErGeLBgLZA/</link>
		<comments>http://blog.hikage.be/2010/04/14/liens-de-la-semaine/#comments</comments>
		<pubDate>Wed, 14 Apr 2010 08:00:25 +0000</pubDate>
		<dc:creator>Hikage</dc:creator>
				<category><![CDATA[Liens]]></category>
		<category><![CDATA[spring]]></category>

		<guid isPermaLink="false">http://blog.hikage.be/?p=74</guid>
		<description><![CDATA[REST et XML avec Spring MVC et Groovy JMS : Spring versus Groovy Sondage : Spring ou JEE 6 pour votre projet ent 2010 ? SpringSource acquiert RabbitMQ James Gosling, père fondateur de Java, quitte Sun/Oracle]]></description>
			<content:encoded><![CDATA[<ul>
<li><a href="REST and XML using Spring MVC and Groovy">REST et XML avec Spring MVC et Groovy</a></li>
<li><a href="http://blog.xebia.fr/2010/03/31/jmsactivemq-spring-vs-grails/">JMS : Spring versus Groovy</a></li>
<li><a href="http://www.developpez.net/forums/d905708/java/communaute-java/spring-3-java-ee-6-vos-nouveaux-projets-java/">Sondage : Spring ou JEE 6 pour votre projet ent 2010 ?</a></li>
<li><a href="http://www.springsource.com/springsource-acquires-rabbit-technologies">SpringSource acquiert RabbitMQ</a></li>
<li><a href="http://www.developpez.net/forums/d905477/java/communaute-java/james-gosling-pere-fondateur-java-demissionne-doracle-2-avril/">James Gosling, père fondateur de Java, quitte Sun/Oracle</a></li>
</ul>
<img src="http://feeds.feedburner.com/~r/Hikage/~4/1ErGeLBgLZA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.hikage.be/2010/04/14/liens-de-la-semaine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.hikage.be/2010/04/14/liens-de-la-semaine/</feedburner:origLink></item>
		<item>
		<title>Introduction au Plugin Release de Maven sur Google Code</title>
		<link>http://feedproxy.google.com/~r/Hikage/~3/_hfv44Ux19s/</link>
		<comments>http://blog.hikage.be/2010/04/13/introduction-plugin-release-sur-google-code/#comments</comments>
		<pubDate>Tue, 13 Apr 2010 18:07:12 +0000</pubDate>
		<dc:creator>Hikage</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[google code]]></category>
		<category><![CDATA[maven]]></category>

		<guid isPermaLink="false">http://blog.hikage.be/?p=80</guid>
		<description><![CDATA[Suite à ma lecture de Apache Maven, j&#8217;ai eu envie de tester le plugin Release. Pour rappel, ce plugin de Maven permet d&#8217;automatiser les tâches de livraison d&#8217;un projet : Vérification qu&#8217;il n&#8217;y a pas de sources modifiées en local Compilation, lancement des tests Création du tag sur le dépôt de sources Publication des artefacts [...]]]></description>
			<content:encoded><![CDATA[<p>Suite à ma lecture de <a href="http://blog.hikage.be/2010/04/06/critique-apache-maven/">Apache Maven</a>, j&#8217;ai eu envie de tester le plugin Release.</p>
<p>Pour rappel, ce plugin de Maven permet d&#8217;automatiser les tâches de livraison d&#8217;un projet :</p>
<ul>
<li>Vérification qu&#8217;il n&#8217;y a pas de sources modifiées en local</li>
<li>Compilation, lancement des tests</li>
<li>Création du tag sur le dépôt de sources</li>
<li>Publication des artefacts sur un dépot Maven</li>
</ul>
<p>Le tout en deux commandes : <code>mvn release:prepare release:perform</code></p>
<p>Cependant, l&#8217;utilisation de ce plugin nécessite une configuration spécique dans le descripteur Maven.<br />
<span id="more-80"></span></p>
<h2>Configuration du dépôt de source</h2>
<p>Afin de pouvoir commiter les modifications de release et créer les tags, le plugin Release nécessite de savoir quel type et la location de gestionnaire de sources il doit utiliser :</p>
<pre class="brush: xml; title: ;">
&lt;project&gt;
    &lt;scm&gt;
        &lt;developerConnection&gt;scm:svn:https://project.googlecode.com/svn/trunk/
        &lt;/developerConnection&gt;
    &lt;/scm&gt;
&lt;/project&gt;
</pre>
<p>Où <strong>project</strong> est le nom de votre projet sur Google Code</p>
<h2>Ajout du plugin Maven</h2>
<pre class="brush: xml; title: ;">
&lt;build&gt;
   &lt;plugins&gt;
      &lt;plugin&gt;
         &lt;artifactId&gt;maven-release-plugin&lt;/artifactId&gt;
         &lt;version&gt;2.0&lt;/version&gt;
         &lt;configuration&gt;
            &lt;tagBase&gt;https://project.googlecode.com/svn/tags&lt;/tagBase&gt;
            &lt;goals&gt;deploy gcupload:gcupload&lt;/goals&gt;
         &lt;/configuration&gt;
      &lt;/plugin&gt;
   &lt;/plugins&gt;
&lt;/build&gt;
&lt;/pre&gt;
</pre>
<p>Le <strong>tagBase</strong> permet de spécifier où devront être créés les tags de livraison, tandis que <strong>goal</strong> permet de remplacer le mécanisme par défaut du plugin lors de la livraison.</p>
<p>Dans mon cas, en plus du <strong>deploy</strong> (qui va publier les artefacts sur le dépôt Maven), j&#8217;avais envie d&#8217;automatiser également la remontée de mon artefact vers la section <a href="http://code.google.com/p/spring-import-template/downloads/list">Téléchargement</a> de Google Code.</p>
<h2>Configurer le Plugin Google Code Upload</h2>
<p>Ce plugin, lui même disponible sur Google Code à <a href="http://code.google.com/p/gcupload-maven-plugin/">cette adresse</a> permet donc de mettre directement l&#8217;artefact généré en téléchargement sur la page Google Code via la commande <code>mvn gcupload:gcupload</code>.</p>
<p>Pour cela, il faut tout d&#8217;abord ajouter cette configuration :</p>
<pre class="brush: xml; title: ;">
&lt;plugin&gt;
     &lt;groupId&gt;org.riedelcastro&lt;/groupId&gt;
     &lt;artifactId&gt;gcupload-maven-plugin&lt;/artifactId&gt;
     &lt;version&gt;0.9&lt;/version&gt;
     &lt;configuration&gt;
         &lt;projectName&gt;project&lt;/projectName&gt;
         &lt;uploads&gt;
             &lt;upload&gt;
                 &lt;extensions&gt;jar&lt;/extensions&gt;
                 &lt;labels&gt;Type-Library,Featured&lt;/labels&gt;
                 &lt;summary&gt;My Library&lt;/summary&gt;
             &lt;/upload&gt;
         &lt;/uploads&gt;
     &lt;/configuration&gt;
 &lt;/plugin&gt;
</pre>
<p>Il faudra également configurer l&#8217;authentification dans le fichier setting.xml de Maven :</p>
<pre class="brush: xml; title: ;">
&lt;server&gt;
    &lt;id&gt;googlecode&lt;/id&gt;
    &lt;username&gt;{googlecode username}&lt;/username&gt;
    &lt;password&gt;{gooclecode password}&lt;/password&gt;
  &lt;/server&gt;
</pre>
<p>Dès lors, comme le goal <code>gcupload:gcupload</code> est spécifié dans la configuration du plugin Release, il sera appelé lors du <code>release:perform</code>.</p>
<h2>Utiliser Svn comme dépot Maven sur Google Code</h2>
<p>Comme Google Code ne propose pas de fonctionnalité de dépôt Maven, et que tout le monde n&#8217;en possède pas dans le fond de sa poche, il est possible d&#8217;utiliser le SVN comme dépôt.</p>
<p>Pour cela, il faut il faut spécifié l&#8217;url dans la section <strong>distributionManagement</strong> du Pom :</p>
<pre class="brush: xml; title: ;">
&lt;distributionManagement&gt;
   &lt;repository&gt;
       &lt;uniqueVersion&gt;false&lt;/uniqueVersion&gt;
       &lt;id&gt;googlecode&lt;/id&gt;
       &lt;url&gt;svn:https://spring-import-template.googlecode.com/svn/repo&lt;/url&gt;
   &lt;/repository&gt;
&lt;/distributionManagement&gt;
</pre>
<p>Cependant, comme SVN n&#8217;est pas le mode par défaut du plugin deploy, il faut également configurer ce mode de transport pour pouvoir l&#8217;utiliser :</p>
<pre class="brush: xml; title: ;">
&lt;extensions&gt;
    &lt;extension&gt;
        &lt;groupId&gt;org.jvnet.wagon-svn&lt;/groupId&gt;
        &lt;artifactId&gt;wagon-svn&lt;/artifactId&gt;
        &lt;version&gt;1.8&lt;/version&gt;
    &lt;/extension&gt;
&lt;/extensions&gt;
</pre>
<p>Et voilà <img src='http://blog.hikage.be/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<img src="http://feeds.feedburner.com/~r/Hikage/~4/_hfv44Ux19s" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.hikage.be/2010/04/13/introduction-plugin-release-sur-google-code/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://blog.hikage.be/2010/04/13/introduction-plugin-release-sur-google-code/</feedburner:origLink></item>
	</channel>
</rss>

