<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

  <title><![CDATA[Dreamisle.net Blog]]></title>
  <link href="http://dreamisle.net/atom.xml" rel="self"/>
  <link href="http://dreamisle.net/"/>
  <updated>2013-01-29T08:44:16+01:00</updated>
  <id>http://dreamisle.net/</id>
  <author>
    <name><![CDATA[Mikael Robert]]></name>
    
  </author>
  <generator uri="http://octopress.org/">Octopress</generator>

  
  <entry>
    <title type="html"><![CDATA[Applications Rails en production avec Nginx et Unicorn et déployée avec Capistrano]]></title>
    <link href="http://dreamisle.net/blog/2011/12/28/applications-rails-en-production-avec-nginx-et-unicorn/"/>
    <updated>2011-12-28T15:46:00+01:00</updated>
    <id>http://dreamisle.net/blog/2011/12/28/applications-rails-en-production-avec-nginx-et-unicorn</id>
    <content type="html"><![CDATA[<p>Un peu d&#8217;infra aujourd&#8217;hui!
Tout d&#8217;abord un grand merci à Bertrand Paquet de m&#8217;avoir formé à ces outils.</p>

<br />


<p>Pour faire tourner une application rails en production, on utilise souvent le duo passenger/apache.
Personnellement j&#8217;ai lâché apache depuis longtemps pour Nginx. On ne va pas rentrer dans le débat du pourquoi mais essentiellement car Nginx est plus léger et plus performant.</p>

<p>Du coup pour mes applications rails j&#8217;utilisais le module nginx passenger.
Sauf que celui ci est plein de bugs et très gourmand en ressources.
La solution : unicorn.</p>

<p>Unicorn est un serveur rails léger pouvant être en écoute sur une socket unix.
L&#8217;idée est donc de faire en sorte que Nginx et Unicorn communiquent à travers une socket unix.
Un autre avantage du duo unicorn/nginx est qu&#8217;il permet d&#8217;heberger des applications rails sur autre chose que la racine d&#8217;un nom de domaine (par exemple dreamisle.net/monappli), hors avec passenger c&#8217;est très compliqué à faire.</p>

<p>Mais voyons un peu un exemple, admettons que je souhaite héberger une application Rails sur /monappli dans sur l&#8217;url mesapplis.dreamisle.net.</p>

<h2>Nginx</h2>

<p>Voyons déjà la configuration Nginx</p>

<p>La partie interessante se situe dans le location /monappli.
L&#8217;idée ici est que si nginx ne trouve pas le fichier demandé, il forward la requête sur la socket unix.
la déclaration de la socket unix en haut du fichier de configuration est tout ce qu&#8217;il y a de plus classique.</p>

<h2>Unicorn</h2>

<p><a href="http://unicorn.bogomips.org/">Site officiel d&#8217;unicorn : </a></p>

<p>Unicorn est en fait une commande shell pour lancer un serveur rails que l&#8217;on configure via un script ruby.
Configurons maintenant Unicorn.</p>

<h3>Script de configuration unicorn</h3>

<p>Celui-ci se configure via un script ruby.
Voici un exemple de configuration.</p>

<h3>Script de lancement d&#8217;unicorn</h3>

<p>Notez le RAILS_RELATIVE_ROOT_URL qui indique à unicorn l&#8217;url relative utilisée.</p>

<h2>Capistrano</h2>

<p>Capistrano est un outil de gestion de déploiement distribué.
L&#8217;idée est de pouvoir depuis son poste local, taper &#8220;cap deploy&#8221; pour deployer l&#8217;application en production.
Capistrano peut aussi être utilisé en mode multistage pour utiliser plusieurs serveurs/environnements différents pour déployer.
Je vous invite à découvrir l&#8217;outil ici :
<a href="https://github.com/capistrano/capistrano/wiki/Documentation-v2.x">Capistrano</a>.
Ce fichier nommé deploy.rb doit être placé dans le repertoire config/ de votre application rails.
Il vous permettra une fois la gem install (gem install capistrano), de lancer en local &#8220;cap deploy&#8221; pour déployer.</p>

<p>Si vous n&#8217;utilisez pas RVM il faut bien entendu supprimer tous les appels à celui-ci.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Ruby et RVM sous mac os lion]]></title>
    <link href="http://dreamisle.net/blog/2011/12/20/ruby-et-rvm-sous-mac-os-lion/"/>
    <updated>2011-12-20T17:06:00+01:00</updated>
    <id>http://dreamisle.net/blog/2011/12/20/ruby-et-rvm-sous-mac-os-lion</id>
    <content type="html"><![CDATA[<h1>Mac OS X et les galères de ruby</h1>

<p>Sous Snow Leopard je n&#8217;arrivais pas à faire tourner ruby 1.9.2 avec RVM, la compilation échouait systématiquement malgré de nombreux tutoriaux du net suivis.</p>

<p>Passé à Lion magie ruby 1.9.2 puis plus tard 1.9.3 fonctionnent !
Mais la magie s&#8217;arrête là car les applications en ruby 1.8.7 ou avec REE (ruby enterprise edition) ne voulaient plus marcher. En effet, impossible d&#8217;installer ree sous Lion.
Suivant divers liens et posts Stackoverflow j&#8217;ai trouvé qu&#8217;il fallait faire un export CC=/usr/bin/gcc-4.2 pour utiliser le gcc standard et non le gcc-llvm (low level virtual machine) fourni par les developpeurs tools de XCode 4.2 (la version pour Lion).</p>

<p>Néanmoins pas moyen de trouver l&#8217;exitence de ce gcc-4.2.
Il semblerait que la solution réside dans l&#8217;installation de XCode 4.1 à la place de 4.2.</p>

<p>Pour le télécharger c&#8217;est ici :</p>

<p><a href=" https://developer.apple.com/downloads/download.action?path=Developer_Tools/xcode_4.1_for_lion/xcode_4.1_for_lion.dmg">XCode 4.1 pour Lion</a></p>

<p>Les étapes :</p>

<ol>
<li>Supprimer les install xcode present dans /Applications</li>
<li>Desinstaller votre version d&#8217;XCode : /Developper/Library/uninstall-devtools &#8211;mode=all</li>
<li>Installer le InstallXcode.pkg présent dans le dmg téléchargé avec le lien ci dessus</li>
<li>Installer &#8220;Install XCode&#8221; que le package ajoute dans /Applications</li>
<li>Reinstaller rvm : rvm implode puis bash &lt; &lt;(curl -s https://rvm.beginrescueend.com/install/rvm)</li>
<li>Tester d&#8217;installer ree : CC=/usr/bin/gcc-4.2 rvm install ree</li>
</ol>


<p>Puis on peut reinstaller les autres versions de ruby : rvm install 1.9.2, rvm install 1.9.3 avec le gcc-llvm ça marche sans problèmes!</p>

<p>Hope that&#8217;s will help someone else!</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Mise à jour du blog]]></title>
    <link href="http://dreamisle.net/blog/2011/12/19/mise-a-jour-du-blog/"/>
    <updated>2011-12-19T18:12:00+01:00</updated>
    <id>http://dreamisle.net/blog/2011/12/19/mise-a-jour-du-blog</id>
    <content type="html"><![CDATA[<h2>Octopress</h2>

<p>Le blog dans son ancienne version était fait avec Jekyll un générateur de site fait en ruby. Je suis maintenant passé à Octopress qui est en fait une intégration de Jekyll dans un outil plus simple à utiliser avec tout un outillage de scripts très utiles.
Je n&#8217;ai pas encore eu le temps de refaire le design du site mais ça viendra rapidement.</p>

<p>Bon je reconnais que j&#8217;ai rien publié depuis un an&#8230; pourquoi ?</p>

<ul>
<li>J&#8217;ai publié sur le blog OCTO, je vous invite d&#8217;ailleurs à visiter le lien dans la barre de menu ci-dessus pour voir mes derniers articles du blog OCTO.</li>
<li>J&#8217;ai joué avec pas mal d&#8217;outils que je vous présente à la fin de cet article</li>
<li>J&#8217;ai contribué et co-géré la refonte du middleware d&#8217;une grande banque en ligne, ce n&#8217;est pas une mince affaire :)</li>
<li>j&#8217;ai été à Devoxx et derrière j&#8217;avais envie d&#8217;essayer tout ce que j&#8217;ai vu&#8230; dur d&#8217;être un geek :)</li>
<li>La vie suit son cours et des fois on laisse un peu son blog de côté &#8230;</li>
</ul>


<h2>Quelques trucs de geek avec les quels j&#8217;ai joué récemment et que je vous conseilles de fouiller</h2>

<h3>Coté dev :</h3>

<ul>
<li>Git : plus besoin de présenter ce superbe DVCS qui a changé ma vie de développeur mais aussi d&#8217;admin sys.</li>
<li>Starteam : le plus mauvais VCS que j&#8217;ai jamais utilisé. Je crois que je préférerais CVS ou même un répertoire partagé sur un disque réseau &#8230;</li>
<li>CXF : un superbe framework pour JAX WS 2.0 / SOAP. La documentation est très bien pour les bases, pour l&#8217;approfondissement et faire des trucs un peu &#8220;sioux&#8221; il ne faut pas hésiter à fouilleur leur code qui est truffé d&#8217;astuces en tout genre</li>
<li>Spring 3 : Trop connu pour que j&#8217;ai besoin d&#8217;exprimer mon avis dessus</li>
<li>Ruby on Rails : c&#8217;est juste génial, j&#8217;en suis à quelques applis dont certaines professionnelles faites avec et je suis bluffé par la rapidité de développement et les possibilités de ce langage et de ce framework. Mélé à Capistrano et Unicorn pour le déploiement c&#8217;est juste magique. On développe vite, et on déploie vite.
Quelques gems utiles :

<ul>
<li>Haml : permet de réduire la verbosité du HTML que vous écrivez en utilisant des tags et l&#8217;indentation.</li>
<li>ruby-openid : pour mettre en place openid sur votre application rails</li>
<li>rvc : permet de piloter des ESX à distance via des scripts ruby</li>
</ul>
</li>
</ul>


<h3>Coté infra :</h3>

<ul>
<li>Nginx : Apache devient vite une usine à gaz, Nginx est beaucoup plus performant de part son modèle de programmation (orienté acteur). Petit regret il est beaucoup plus compliqué qu&#8217;apache à utiliser/administrer.</li>
<li>Unicorn : un serveur rails très performant. Comme nginx il est un peu compliqué à prendre en main
Prochainement je compte écrire un article sur comment configurer Nginx et Unicorn pour qu&#8217;ils fonctionnent ensemble.</li>
<li>Capistrano : un gestionnaire de déploiement automatisé pour les applicationss rails mais qui peut s&#8217;adapter à</li>
<li>JBoss 7 : Hallucinant de rapidité de démarrage et de déploiement. Entièrement scriptable et ça c&#8217;est génial pour ceux qui font du devops. Truffé de nouvelles fonctionnalités fort utiles pour les applications Java/JEE.</li>
<li>OpenShift : JBoss 7 dans le cloud, le pendant RedHat de SpringSource CloudFoundry en quelque sortes.
votre cloud gérable depuis eclipse ou depuis la ligne de commande, et un cluster de jboss qui se met en place très facilement. Votre application devient donc scalable simplement.</li>
</ul>


<h3>Côté outils :</h3>

<ul>
<li>Gollum : un systeme de wiki basé sur git : vous redigiez vos pages en textile/markdown&#8230; vous les versionnez avec git. Gollum n&#8217;affiche que ce qui est présent dans l&#8217;index (commité).</li>
<li>Redmine : un très bon systme de gestion d&#8217;issues</li>
<li>Bitbucket : un concurrent à github ou pas vraiment. Chez github les repository gratuit sont public. Chez bitbucket on peut avoir des repos privé gratuitement.</li>
<li>Octopress qui propulse ce blog</li>
</ul>

]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Mettre à jour un Sonar existant]]></title>
    <link href="http://dreamisle.net/blog/2010/12/01/mettre-a-jour-un-sonar-existant/"/>
    <updated>2010-12-01T00:00:00+01:00</updated>
    <id>http://dreamisle.net/blog/2010/12/01/mettre-a-jour-un-sonar-existant</id>
    <content type="html"><![CDATA[Tout d&#8217;abord voici un peu listing de nouveautés entre Sonar 1.11.1 et Sonar 2.4.1 (qui représente mon saut de mise à jour)
<ul>
<li> Correction de bugs  </li>
<li> Supports de nombreux plugins (gwt &#8230;) </li>
<li> Importante hausse des performances </li>
<li> Intégration de WebServices pour interroger sonar à distances </li>
<li> Ajout d&#8217;une gestion complète des utilisateurs + possibilité de le brancher à un référentiel externe (à étudier dans une prochaine évolution du Sonar OCTO)</li>
<li> Coloration syntaxique du code </li>
<li> Dashboard customizables </li>
<li> Mise en place d&#8217;un Update Center pour les plugins</li>
</ul>


Mes recherches sur la toile ne m&#8217;ont pas donné de réponse à comment faire une migration d&#8217;une version majeure de sonar à une autre je rédige donc un court article de blog à ce sujet en espérant qu&#8217;il aidera. <br />
<br />
Si vous êtes amenés à mettre à jour un sonar déjà installé (en version war déployé dans mon cas) vous pourriez vous dire comme moi que changer le war sera suffisant. <br />
<br />
Néanmoins ce n&#8217;est pas le cas, entre chaque versions la structure des tables de la base de données sonar change. <br />
Dans mon cas il s&#8217;agissait de passer de la version 1.11.1 à la version 2.4.1 : une montée de version majeure.<br />
Une première tentative avec le war de la 2.4.1 fut un échec.<br />
Aussi bien en essayant de le faire partir sur une base de donnée existante qu&#8217;en tentant de le lancer sur une base vide puis d&#8217;insérer les données après. <br />
<br />
La démarche est donc bête est méchante : il faut passer progressivement toutes les versions entre votre actuelle et celle que vous voulez atteindre.<br />
<br />
En fait chaque version dispose de son propre script de mise à jour de la base de données (fait en rails d&#8217;ailleurs donc n&#8217;oubliez pas de l&#8217;installer sudo apt-get install rails sur un ubuntu/debian).<br />
A chaque nouvelle version déployée appelez l&#8217;url : http://votreserveur/sonar/setup et suivez les instructions.<br />
Sachez toutefois que les version 2.3 et 2.4 ne sont pas nécessaires car elles sont buggées, passez directement aux 2.3.1 et 2.4.1.<br /><br />

Personnellement je suis un peu déçu qu&#8217;un outil aussi bien fait que Sonar ne dispose pas d&#8217;un système de mise à jour plus évolué que ça. Ou bien au moins d&#8217;une doc expliquant de quelle version à quelle version il est possible d&#8217;upgrader.<br />
Enfin ça ne m&#8217;empêchera pas de continuer d&#8217;utiliser ce formidable outil de qualimétrie de code qui est devenu indispensable dans mes développements aujourd&#8217;hui.<br />

]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[La gestion des exceptions en java]]></title>
    <link href="http://dreamisle.net/blog/2010/11/29/la-gestion-des-exceptions-en-java/"/>
    <updated>2010-11-29T00:00:00+01:00</updated>
    <id>http://dreamisle.net/blog/2010/11/29/la-gestion-des-exceptions-en-java</id>
    <content type="html"><![CDATA[<p>La gestion des exceptions, un sujet brulant dans beaucoup d&#8217;applications.
Après quelques audits chez des clients d&#8217;Octo je me suis dit qu&#8217;un petit article rappelant quelques notions serait utile à tous.
Voici donc mon dernier article pour le blog d&#8217;Octo :</p>

<p><a href="http://blog.octo.com/la-gestion-des-exceptions-en-java/">L&#8217;article sur le blog</a></p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Nouveau Blog et nouveau design]]></title>
    <link href="http://dreamisle.net/blog/2010/10/31/nouveau-blog-et-design/"/>
    <updated>2010-10-31T00:00:00+02:00</updated>
    <id>http://dreamisle.net/blog/2010/10/31/nouveau-blog-et-design</id>
    <content type="html"><![CDATA[<p>Ces derniers temps j&#8217;en avais marre des mises à jours incessantes de Wordpress.
Qui plus est je commençais à trouver ce CMS de plus en plus usine à gaz.
Comme quelques aficionados j&#8217;ai donc décidé de migrer sur Jekyll.</p>

<h4>Jekyll </h4>


<p>Jekyll est un générateur de site static, c&#8217;est à dire que j&#8217;écris mes posts à partir d&#8217;un langage de template avec une syntaxe style wiki, que je lance mon
générateur et que je récupère un site en html au bout.
Alors vous allez me dire pour un blog c&#8217;est pas pratique !
Et bien figurez que vous que si.
Je versionne les fichiers des posts (markdown) et l&#8217;ensemble du site, ainsi que le site généré avec git et lorsque j&#8217;écris un post je n&#8217;ai qu&#8217;à faire un git push :)
Ainsi je peux rédiger mes posts avec un vrai éditeur (vim ou textmate dans mon cas) et pas avec une textarea tentant d&#8217;imiter un traitement de texte et au final me prenant
plus de temps pour la mise en page que la rédaction.
Comme vous pouvez le voir la coloration syntaxique est aussi active sur les posts ayant du code.
Quant aux commentaires j&#8217;ai tout migré sur disqus, ainsi ils sont hebergés sur un provider externe et chargés sur les pages en javascript.</p>

<p>Voilà, si vous avez vous aussi un blog je vous conseille de regarder ce système qui après un peu de travail vous facilitera grandement la vie et vous préviendra de tous les problèmes de sécurité des applications types wordpress qu&#8217;il faut mettre à jour plusieurs fois par semaine des fois (quand on a un certain nombre de plugin).</p>

<p>Ah oui, je me suis pas mal mis au ruby ces derniers temps et Jekyll est fait en ruby :)</p>

<p>Je vous renvoi à l&#8217;article d&#8217;un collègue d&#8217;Octo sur le sujet : <a href="http://david.rousselie.name/2009/11/09/migration-wordpress-jekyll/">http://david.rousselie.name/2009/11/09/migration-wordpress-jekyll/</a></p>

<p>L&#8217;ancien blog est toujours en ligne à cette adresse :
<a href="http://dreamisle.net/wordpress/">http://dreamisle.net/wordpress/</a></p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[La fédération d'identité en entreprise]]></title>
    <link href="http://dreamisle.net/blog/2010/09/14/la-federation-didentite-en-entreprise/"/>
    <updated>2010-09-14T00:00:00+02:00</updated>
    <id>http://dreamisle.net/blog/2010/09/14/la-federation-didentite-en-entreprise</id>
    <content type="html"><![CDATA[<p>La gestion des identités est un domaine qui reviens à grand pas dans les sujets chauds du moment en grande partie grâce à l&#8217;avénement du cloud Computing.
Suite à mon stage sur la fédération d&#8217;identité chez Octo Technology et à mon embauche dans l&#8217;entreprise j&#8217;ai rédigié un article sur le blog Octo sur le sujet, je vous invite donc à le lire.</p>

<p>Désormais j&#8217;alternerais les publications entre le blog Octo et celui-ci mais je mettrais des liens sur ce blog en cas de publication chez Octo.</p>

<p>Bonne lecture à vous !</p>

<p>L&#8217;article : <a href="http://blog.octo.com/la-federation-d%E2%80%99identite-en-entreprise/">http://blog.octo.com/la-federation-d%E2%80%99identite-en-entreprise/</a></p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[PicketLink, Fédération d'identité et SSO]]></title>
    <link href="http://dreamisle.net/blog/2010/05/07/picketlink-federation-didentite-et-sso/"/>
    <updated>2010-05-07T00:00:00+02:00</updated>
    <id>http://dreamisle.net/blog/2010/05/07/picketlink-federation-didentite-et-sso</id>
    <content type="html"><![CDATA[<p>Comme vous avez pu le voir j&#8217;ai peu publié ces derniers temps pour la simple raison que j&#8217;avais explicité précédemment : je travaille actuellement sur un domaine un peu transverse la fédération d&#8217;identité.</p>

<p>Je publierais prochainement des articles sur le fonctionnement et les grands principes de la fédération d&#8217;identité  mais en attendant pour ceux qui ont déjà des notions de fédération ou de SSO je voulais vous présenter un projet de JBoss que j&#8217;approfondie en ce moment : PicketLink.</p>

<p>Voici une brêve présentation de PicketLink :</p>

<p><a rel="nofollow" href="http://jboss.org/picketlink">Le site officiel de PicketLink</a></p>

<p>PicketLink est un projet libre soutenu par JBoss qui a pour but d&#8217;englober différentes problématiques de gestion d&#8217;identité communes :</p>

<ul>
    <li>Security Token Service : WebService fournisseur de Token, basé sur la spec WS-Trust</li>
    <li>SAML : API permettant de communiquer en SAML avec un identity ou service provider compatible.</li>
    <li>Identity Manager : Vous permet d&#8217;implémenter votre propre Identity Manager interconnectable en SAML en vous fournissant un cadre architectural et de développement.</li>
    <li>XACML : API vous permettant d&#8217;avoir une gestion des autorisations fines et distribuée un peu à la manière de SAML mais complètement orientée autorisation (XACML 2.0 ici).</li>
    <li>Negociation : Fournit un négociateur Kerberos/SPNego pour le SSO orienté desktop.</li>
</ul>


<p>Grosso modo il vous permet de résoudre dans votre application les problématique de SSO et de fédération d&#8217;identité.</p>

<p>Il s&#8217;agit plus d&#8217;une grosse API et d&#8217;un ensemble de classes à appeler/configurer qui sont prêtes à l&#8217;emploi que d&#8217;un progiciel ou d&#8217;un logiciel de fédération d&#8217;identité.</p>

<p>A l&#8217;heure ou ces lignes sont écrites PicketLink est encore en release candidate mais j&#8217;ai pu réaliser quelques PoC tout à fait fonctionnels et efficaces.</p>

<p>PicketLink profite de l&#8217;avantage de la communauté JBoss : celle ci est large et très réactive (j&#8217;ai eu des réponses à mes questions sur les forums parfois dans la journée même du post avec même une release faite le lendemain d&#8217;un de mes signalements de bug), les documentations sont complètes et claires, la communauté aide beaucoup.</p>

<p>PicketLink propose un ensemble de projets d&#8217;exemples des possibilités de l&#8217;API qu&#8217;il suffit de déployer et de tester.</p>

<p>Il est prévu pour fonctionner avec JBoss et Tomcat.</p>

<p>Là ou Picketlink concerne plus particulièrement ce blog, c&#8217;est dans le fait qu&#8217;il apporte aussi un module Seam pour intégrer dans une application Seam les possibilités de</p>

<ul>
    <li>SSO</li>
    <li>Communication SAML</li>
    <li>Externalisation de l&#8217;authentification et Interconnection avec un IDP SAML</li>
    <li>Externalisation de l&#8217;authentification et Interconnection avec un IDP OpenId</li>
</ul>


<p>Grâce à ce module et l&#8217;API de sécurité de Seam il est donc possible de sécuriser :</p>

<ul>
    <li>Les pages</li>
    <li>Les ressources</li>
    <li>Les webservices</li>
    <li>L&#8217;appel de méthode/d&#8217;objets</li>
</ul>


<p>Quelques tutoriaux interessant sur PicketLink  :</p>

<ul>
    <li>Implémentation d&#8217;un Security Token Service (service qui vous attribue un token après authentification pour que vous puissiez attester de votre identité auprès d&#8217;autres services) : <a rel="nofollow" href="http://community.jboss.org/wiki/PicketLinkSecurityTokenService">http://community.jboss.org/wiki/PicketLinkSecurityTokenService</a></li>
    <li>Autorisation SAML pour pouvoir appeller un EJB <a rel="nofollow" href="http://community.jboss.org/wiki/SAMLEJBIntegrationwithPicketLinkSTS">http://community.jboss.org/wiki/SAMLEJBIntegrationwithPicketLinkSTS<sup><img src="http://dreamisle.net/confluence/images/icons/linkext7.gif" border="0" alt="" width="7" height="7" align="absmiddle" /></sup></a></li>
    <li>Création d&#8217;un Identity Manager : <a rel="nofollow" href="http://community.jboss.org/wiki/PicketLinkIDM">http://community.jboss.org/wiki/PicketLinkIDM</a></li>
    <li>Intégration du module Seam cité plus haut : <a rel="nofollow" href="http://community.jboss.org/wiki/HowtoaddSAMLandOpenIDauthenticationtoyourSeamapplication">http://community.jboss.org/wiki/HowtoaddSAMLandOpenIDauthenticationtoyourSeamapplication<sup><img src="http://dreamisle.net/confluence/images/icons/linkext7.gif" border="0" alt="" width="7" height="7" align="absmiddle" /></sup></a></li>
    <li>Authentification externe avec OpenSSO sans le module Seam : <a rel="nofollow" href="http://community.jboss.org/wiki/ExternalauthenticationexampleusingOpenSSO">http://community.jboss.org/wiki/ExternalauthenticationexampleusingOpenSSO<sup><img src="http://dreamisle.net/confluence/images/icons/linkext7.gif" border="0" alt="" width="7" height="7" align="absmiddle" /></sup></a></li>
</ul>

]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Sortie de JEE 6, qu'en est il de l'avenir de Seam?]]></title>
    <link href="http://dreamisle.net/blog/2009/12/18/sortie-de-jee-6-quen-est-il-de-lavenir-de-seam/"/>
    <updated>2009-12-18T00:00:00+01:00</updated>
    <id>http://dreamisle.net/blog/2009/12/18/sortie-de-jee-6-quen-est-il-de-lavenir-de-seam</id>
    <content type="html"><![CDATA[<p>Avec la sortie de java EE 6 on peut se demander quel est l&#8217;avenir de Seam. J&#8217;écris cet article car j&#8217;ai eu cette discussion avec quelques personnes et j&#8217;aimerais exprimer mon opinion la dessus.
En effet une bonne partie des éléments pouvant amener à utiliser Seam tels que l&#8217;injection de dépendance, le nommage de Pojo via une annotation (@Name) etc &#8230; Mais aussi toutes les améliorations apportées à JSF 1.2.</p>

<p>Si vous avez suivi les apports de la Spec JEE 6, on a un équivalent au @Name : le @Named.
Pour ce qui est de l&#8217;injection de dépendance (@In) elle est présente et aussi simple que celle de Seam grâce à Weld (ou CDI).
Enfin, l&#8217;arrivée de JSF 2.0 nous amène un JSF encore plus simplifié qu&#8217;un JSF amélioré par Seam.</p>

<p>On peut donc se demander si on doit garder Seam ou tout passer en JEE 6 ?</p>

<p>Déjà, il ne faut pas oublier une chose cruciale : c&#8217;est bien les concepteurs et développeurs de Seam qui ont contribué aux nouvelles spécifications de JEE6 qui font le plus parler d&#8217;elle : à savoir CDI (implémenté par Weld), l&#8217;injection de dépendances, et JSF 2. Mais aussi la suppression de la couche intermédiaire entre JSF et EJB. De mémoire Seam a aussi contribué aux améliorations faites sur la norme EJB. Donc Seam est derrière les nouveautés majeures de JEE 6!</p>

<p>En fait pour moi, il est évident, si on suit la volonté initiale de Seam, qu&#8217;il faut coller le plus possible aux standards. Contrairement à Spring qui part du principe que la spec JEE n&#8217;est pas bien/efficace Seam est parti du principe qu&#8217;on pouvait l&#8217;améliorer et la faciliter tout en respectant les normes et standards apportés par celle-ci.</p>

<p>Mais limiter Seam à ce rôle est bien réducteur.</p>

<p>L&#8217;intégration simplifiée de nombreux frameworks et outils est pour moi un des éléments clefs du framework. Si vous l&#8217;utilisez vous avez du être aussi bluffé que moi lorsque vous chercher à intégrer Hibernate Search, iText ou encore Quartz et jPBM et j&#8217;en passe. Tous ces éléments sont nécessaire à de nombreuses d&#8217;applications, et pourquoi se compliquer la vie quand il suffit d&#8217;ajouter une à quelques lignes dans un fichier components.xml pour les intégrer ?</p>

<p>Voilà grosso modo pour moi la direction que devrait prendre Seam dans l&#8217;avenir, c&#8217;est à servir de sandbox à framework pour les intégrer dans une appli JEE6 standard.  Mais aussi apporter ses outils : génération excel, seam mail, seam pdf, Seam Remoting,intégration simplifiée d&#8217;Hibernate et Hibernate Search &#8230; et n&#8217;oublions pas nos composants Seam nous apportant quasiment autant que les EJB sans nécessiter de conteneur lourd.</p>

<p>Bref si les développeurs de Seam continuent à améliorer tout cela, on risque d&#8217;avoir dans les mois à venir un framework vraiment complet, et une vraie boite à outil archi complète pour JEE6.</p>

<p>Donc un bel avenir bien prometteur, aidé par la standardisation dans la spec JEE des idées innovante apportées initialement par Seam, qui va permettre aux développeurs de Seam de se concentrer sur le côté boite à outil :)</p>

<p><a href="http://dreamisle.net/wordpress/wp-content/uploads/2009/12/java-duke-guitar_m.jpg"><img style="border: 0px initial initial;" title="java-duke-guitar_m" src="http://dreamisle.net/wordpress/wp-content/uploads/2009/12/java-duke-guitar_m-300x255.jpg" alt="java-duke-guitar_m" width="300" height="255" /></a></p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Evolutions du blog, à propos de l'auteur ...]]></title>
    <link href="http://dreamisle.net/blog/2009/12/18/evolutions-du-blog-a-propos-de-lauteur/"/>
    <updated>2009-12-18T00:00:00+01:00</updated>
    <id>http://dreamisle.net/blog/2009/12/18/evolutions-du-blog-a-propos-de-lauteur</id>
    <content type="html"><![CDATA[<p>Si vous avez lu un peu la section a propos, vous avez déjà une petite idée de qui je suis.</p>

<p>Pour parler un peu de moi et de ou j&#8217;en suis, je fini bientôt mes cours à l&#8217;UTC (le 18 janvier) et à partir du 1er février je ferais mon stage de fin d&#8217;études (6 mois), chez Octo Technology.</p>

<p><a href="http://dreamisle.net/wordpress/wp-content/uploads/2009/12/octo_logo-35c73.jpg"><img class="alignnone size-full wp-image-314" title="octo_logo-35c73" src="http://dreamisle.net/wordpress/wp-content/uploads/2009/12/octo_logo-35c73.jpg" alt="octo_logo-35c73" width="150" height="118" /></a></p>

<p>Je pense que je vais énormément apprendre chez Octo qui est à mes yeux une des meilleures entreprises Française aussi bien au niveau JEE qu&#8217;au niveau méthodes agiles. Je vous conseille d&#8217;ailleurs leur blog très instructif et complet, mais aussi les livres blancs qu&#8217;ils ont publié.</p>

<p>Octo est à la pointe de la technologie et est en constante veille sur tout ce qui tourne autour de l&#8217;architecture logicielle et de JEE mais aussi des méthodes agiles, vu mon cursus et mes passions j&#8217;ai donc tout fait pour entrer la bas et ce fut avec succès. Les architectes d&#8217;Octo Technology contribuent d&#8217;ailleurs beaucoup à l&#8217;Open Source, et participent à de nombreuses conférences (Jug, Devoxx &#8230;) et sont souvent très enclins à transmettre leurs compétences. Octo organise aussi l&#8217;USI, l&#8217;université du système d&#8217;information, une fois par an (<a title="université du SI" href="http://www.universite-du-si.com/" target="_blank">Voir ici</a>).  Il faut savoir qu&#8217;un consultant ou architecte chez Octo passe entre 10 et 15% de son temps de travail en formation/veille, ce qui explique leur haut niveau. Personnellement après les entretiens que j&#8217;ai passé et discussion avec des connaissances qui ont des contacts chez Octo,  ça me laisse rêveur  :)</p>

<p>Mon sujet de stage est plutôt orienté sécurité applicative je pense donc que j&#8217;écrirais donc des articles à ce propos très rapidement, je vais plus précisément  travailler sur la fédération d&#8217;identité.  En effet en dehors de mes loisirs et travails temporaire sur JEE ma formation à l&#8217;UTC est plutôt orienté Système / Réseau / sécurité. Je vais donc pouvoir méler ma passion pour JEE et l&#8217;architecture à mon intérêt pour le système et la sécurité.</p>

<p>Maintenant concernant le blog,  finissant mon école d&#8217;ingénieur j&#8217;ai énormément de travail sur divers projets (certains en Seam, d&#8217;autre pas). Et comme je travaille aussi pour une entreprise à temps partiel comme ingénieur JEE en plus de l&#8217;école, j&#8217;ai été carrément débordé ces derniers temps.  Je commence aussi à m&#8217;ouvrir un peu aux autres frameworks et à regarder un peu ce qui se fait ailleurs, comme par exemple GWT ou plus récemment le framework Play! Je travaille aussi pas mal sur tout ce qui est sécurité informatique (réseau, système et applicative) pour mes cours.</p>

<p>Bref tout cela explique aussi la faible régularité de publication sur le blog depuis 2 ou 3 mois.</p>

<p>Toujours est il que je réfléchi à diversifier un peu le thème de ce blog car je découvre souvent des choses que je pense qu&#8217;il serait bien de faire partager à tout le monde &#8230; Donc pourquoi parler un peu de Java EE6 quand j&#8217;aurais le temps de m&#8217;y mettre à fond, mais aussi d&#8217;autres frameworks java, voir même de sécurité applicative ?</p>

<p>Bref à voir, n&#8217;hésitez pas à me laisser vos commentaires si ces sujets vous intéressent (ou pas).</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Optimisation de JBoss]]></title>
    <link href="http://dreamisle.net/blog/2009/12/05/optimisation-de-jboss/"/>
    <updated>2009-12-05T00:00:00+01:00</updated>
    <id>http://dreamisle.net/blog/2009/12/05/optimisation-de-jboss</id>
    <content type="html"><![CDATA[<p>Bonjour à tous,</p>

<p>voici deux liens que je vous conseil concernant l&#8217;optimisation d&#8217;un serveur JBoss, très interessant à lire.</p>

<p>Cependant ils demandent d&#8217;avoir une certaine maitrise du fonctionnement de la JVM et d&#8217;un serveur lourd, c&#8217;est un peu compliqué par moment.</p>

<p><a title="Jboss performance tunning 1" href="http://www.mastertheboss.com/en/jboss-application-server/113-jboss-performance-tuning-1.html  ">jboss-performance-tuning-1</a></p>

<p><a title="jboss performance tunning 2" href="http://www.mastertheboss.com/en/jboss-application-server/130-jboss-performance-tuning-part-2.html">jboss-performance-tuning-part-2</a></p>

<p>Bonne lecture !</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Seam et l'internationalisation]]></title>
    <link href="http://dreamisle.net/blog/2009/11/30/seam-et-linternationalisation/"/>
    <updated>2009-11-30T00:00:00+01:00</updated>
    <id>http://dreamisle.net/blog/2009/11/30/seam-et-linternationalisation</id>
    <content type="html"><![CDATA[<p>Bonjour à tous,
Tout d&#8217;abord désolé pour le temps d&#8217;absence j&#8217;ai été débordé de travail ces derniers temps.
Aujourd&#8217;hui un petit article assez court mais qui me semble important car j&#8217;ai été assez impressionné par le support de l&#8217;internationalisation dans Seam.</p>

<p>Dans le cadre d&#8217;un projet développé à l&#8217;école et probablement destiné au  logiciel libre d&#8217;ici un ou deux mois (je ferais des publications pour vous le faire savoir car je pense qu&#8217;il y aura du code la dedans qui pourra vous intéresser), j&#8217;ai eu à gérer plusieurs langues.
Ce projet consiste en un cartographieur du web. Grosso modo des crawler parcours le web selon une configuration voulu, et en fonction de leurs retours un graph est généré. Vous pouvez alors naviguer dans ce graph au sein d&#8217;un applet flash qui vous permet d&#8217;ouvrir les pages via un proxy qui contrôle votre navigation dans les pages crawlées.</p>

<p>Souvent mettre un site ou une webapp en plusieurs langue est assez problématique. Le modèle le plus utilisé est celui des fichier de messages_[langue].properties et c&#8217;est aussi celui par Seam.</p>

<p>Quand j&#8217;ai su que mon projet devrait être internationalisé je me suis dit : galère ça va prendre un temps fou ça.</p>

<p>Et bien je me trompais, voici pourquoi.</p>

<h2>Première étape, le selecteur de langue </h2>


<p>La première chose est de stocker dans la session utilisateur la langue choisie par l&#8217;utilisateur. Et la Seam a tout prévu pour vous : le localeSelector est là pour ça.
Donc pour mettre un selecteur de langue c&#8217;est très simple :</p>

<p>Et là on vois déjà apparaître quelques extraits de code qui amènent à s&#8217;interroger, par exemple :</p>

<p>En fait Seam intègre un composant messages interrogeable tel que via une EL, qui est lié à la locale choisie dans le locale selector et va chercher le fichier de messages.properties en fonction de cette locale.
Vous l&#8217;avez peut être vu quand vous générez un projet avec Seam-Gen celui-ci vous intègre des fichiers de properties tels que messages_fr.properties, messages_en.properties etc &#8230;
Par défaut la locale choisie est celle configurée dans votre fichiers faces-config.xml:</p>

<p>Et donc pour mon <code>messages['org.sweetmap.english']</code> j&#8217;ai dans mes fichiers de properties une ligne correspondante telle que : <code>org.sweetmap.english=Anglais</code>.</p>

<p>Voilà, ainsi quelque soit l&#8217;endroit ou j&#8217;ai du texte à ajouter, au lieu d&#8217;écrire ce texte j&#8217;écris des EL du style <code>"#{messages['org.sweetmap.menu.themap']}"</code> et je remplis mes fichiers de properties, et l&#8217;internationalisation est gérée toute seule. Simple non?</p>

<p>Enfin si côté serveur on a besoin de tester la langue de l&#8217;utilisateur, par exemple pour faire une requête ejbql en fonction de la langue, on peut récupérer la locale choisie via cet appel :</p>

<p>Celui-ci retournera une String avec par exemple en ou fr selon la langue.</p>

<p>Dans mon cas pour mes Entités JPA, j&#8217;ai choisi de stocker cette String en base afin de pouvoir requêter la base par langue.
Autre info, les locales gérées par Seam sont du type java.util.Locale afin de rester assez générique.</p>

<p>Voilà j&#8217;espère que cet article vous a été utile !</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Application Seam derrière un Proxy]]></title>
    <link href="http://dreamisle.net/blog/2009/11/30/application-seam-derriere-un-proxy/"/>
    <updated>2009-11-30T00:00:00+01:00</updated>
    <id>http://dreamisle.net/blog/2009/11/30/application-seam-derriere-un-proxy</id>
    <content type="html"><![CDATA[<p>Vous avez peut être déjà eu le problème : vous êtes en entreprise ou dans n&#8217;importe quel lieu avec une connection partagée et vous êtes donc derrière un proxy.
La majorité du temps aucun problème pour votre application, mais parfois le proxy utilisé un cache des pages.
Dans ce cas un problème peut vite arriver : une incohérence du Session ID. En effet si le proxy a caché le cookies et/ou la page, il peut y avoir des perte de session aléatoire si le jsessionid linké n&#8217;est pas le bon.</p>

<p>En fait il existe une technique de &#8220;sioux&#8221; pour parer à ça, jouer sur les en têtes HTTP pour forcer la réactualisation de la page et empêcher la mise en cache.
Il faut jouer sur deux en têtes : Expires, et Cache-Control.</p>

<p>Voici une ServletFilter que vous pouvez rajouter dans votre application pour qu&#8217;elle ajoute automatiquement les en têtes qui vont bien à toutes vos pages :</p>

<p>Voilà, ainsi normalement cela devrait régler vos problèmes de perte de session derrière un proxy !
Grâce à l&#8217;annotation @Filter il n&#8217;est pas necessaire de l&#8217;ajouter au fichier web.xml, Seam s&#8217;en occupe pour vous.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Seam 2.2.0.GA]]></title>
    <link href="http://dreamisle.net/blog/2009/10/03/seam-2-2-0-ga/"/>
    <updated>2009-10-03T00:00:00+02:00</updated>
    <id>http://dreamisle.net/blog/2009/10/03/seam-2-2-0-ga</id>
    <content type="html"><![CDATA[<p>Bonjour à tous,</p>

<p>Seam 2.2.0.GA étant sorti, j&#8217;ai mis à jour les poms de mes projets, mais ayant eu quelques problèmes de versionning de librairies, je vous fait partager la compatibilité des librairies principales entre elles.</p>

<p>Tout d&#8217;abord pour Seam :</p>

<p>Ensuite, vous devriez avoir des problèmes avec Drools si vous êtes encore sur la version 4, car Seam 2.2 est passé à Drools 5, voici donc la version à appeller, ainsi que le mvel à joindre :</p>

<p>Si vous avez des problèmes pour recuperer mvel, ajouter ce dépot dans vos repositories :</p>

<p>Et enfin Hibernate et Lucene ( pour Hibernate Search ) :</p>

<p>Et voilà, en espérant vous avoir aidé !</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Seam Mail et Jboss 5.1]]></title>
    <link href="http://dreamisle.net/blog/2009/07/13/seam-mail-et-jboss-5-1/"/>
    <updated>2009-07-13T00:00:00+02:00</updated>
    <id>http://dreamisle.net/blog/2009/07/13/seam-mail-et-jboss-5-1</id>
    <content type="html"><![CDATA[<p>Un petit post pour vous signaler un bug que j&#8217;ai eu.
Avec Seam 2.1.1 et jboss 5.1.0.GA il m&#8217;était impossible d&#8217;envoyer un mail.
En effet j&#8217;avais une erreur lorsque je tentais d&#8217;injecter le renderer.
Pour information j&#8217;ai résolu ce bug en passant à Seam 2.1.2.
Voilà ! en espérant que cela vous sera utile.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Présentation de Seam]]></title>
    <link href="http://dreamisle.net/blog/2009/06/21/presentation-de-seam/"/>
    <updated>2009-06-21T00:00:00+02:00</updated>
    <id>http://dreamisle.net/blog/2009/06/21/presentation-de-seam</id>
    <content type="html"><![CDATA[<p>Suite à la présentation de Seam que j&#8217;ai faite avec Patrice Pichereau au Tours JUG le 09 Juin dernier, j&#8217;ai préparé un PDF de la présentation.</p>

<p>Je me suis dis que ça pourrait vous intéresser, voici donc</p>

<p>Le pdf :</p>

<p><a href="http://dreamisle.net/wordpress/wp-content/uploads/2009/06/SeamConf.pdf">SeamConf</a></p>

<p>La keynote (powerpoint) au format pdf :</p>

<p><a href="http://dreamisle.net/wordpress/wp-content/uploads/2009/06/SeamConfDiapo.pdf">SeamConfDiapo</a></p>

<p><a href="http://dreamisle.net/wordpress/wp-content/uploads/2009/06/seam_icon_large.png"><img src="http://dreamisle.net/wordpress/wp-content/uploads/2009/06/seam_icon_large.png" alt="seam_icon_large" title="seam_icon_large" width="196" height="160" class="alignnone size-full wp-image-286" /></a></p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Nouveau design]]></title>
    <link href="http://dreamisle.net/blog/2009/06/12/nouveau-design/"/>
    <updated>2009-06-12T00:00:00+02:00</updated>
    <id>http://dreamisle.net/blog/2009/06/12/nouveau-design</id>
    <content type="html"><![CDATA[<p>Comme vous pouvez le constater j&#8217;ai fait évolué le design du site, n&#8217;hésitez pas à me signaler tout problème, ou vos avis :)</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Hadopi : le conseil constitutionnel a censuré la riposte graduée !]]></title>
    <link href="http://dreamisle.net/blog/2009/06/12/hadopi-le-conseil-constitutionnel-a-censure-la-riposte-graduee/"/>
    <updated>2009-06-12T00:00:00+02:00</updated>
    <id>http://dreamisle.net/blog/2009/06/12/hadopi-le-conseil-constitutionnel-a-censure-la-riposte-graduee</id>
    <content type="html"><![CDATA[<p>Une bonne nouvelle enfin !
Voir :
http://www.lemonde.fr/technologies/article/2009/06/10/hadopi-le-conseil-constitutionnel-censure-la-riposte-graduee_1205290_651865.html</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Gestion d'un processus Asynchrone avec Quartz]]></title>
    <link href="http://dreamisle.net/blog/2009/06/12/gestion-dun-processus-asynchrone-avec-quartz/"/>
    <updated>2009-06-12T00:00:00+02:00</updated>
    <id>http://dreamisle.net/blog/2009/06/12/gestion-dun-processus-asynchrone-avec-quartz</id>
    <content type="html"><![CDATA[<blockquote>Il est souvent nécessaire dans une applications d&#8217;avoir des Batchs qui tournent pour effectuer des traitements diverses et variés. Lorsque ces process ne nécessitent pas interaction avec un utilisateur ceux-ci peuvent être différés pour des raisons d&#8217;optimisation entre autre.
Depuis Java 1.4 il est possible de planifier des tâches de manière simple, cependant la librairie Quartz permet de gérer ces process différés de manière plus fine, avec un déclenchement similaire à l&#8217;utilisation d&#8217;un cron sous unix.
Ce billet relativement court présente une manière très simple d&#8217;utiliser ce mécanisme avec Seam.
</blockquote>


<p>Seam intègre un mécanisme basé sur <strong>Quartz</strong>, et utilisant l&#8217;annotation <strong>@Asynchronous</strong> pour faciliter ces traitements.
Par exemple si jai besoin dun batch qui tourne toutes les 5 minutes voici comment je pourrais procéder.</p>

<p>Dans un composant on commence par écrire une méthode annotée <strong>@Asynchronous</strong>
Ici FileBrowser est simplement un composant conservant l&#8217;état des données.
FileBrowserService contient notre méthode asynchrone.</p>

<p>On remarque trois chose :
- Il suffit d&#8217;annoter la méthode @Asynchronous pour que celle-ci le devienne.
- <strong>@Expiration Date when</strong>, définit la date de départ du process.
- <strong>@IntervalCron String cron</strong>, définit l&#8217;interval du cron.</p>

<p>Et pour le lancer on peut écrire un composant (FileBrowserInitializer dans mon cas), qui appellera la méthode lors de sa création.</p>

<p>Pour ce qui est du paramétrage du deuxième argument je vous renvoi à l&#8217;utilisation classique des Crons : <a href="http://fr.wikipedia.org/wiki/Crontab"><strong>Crontab</strong></a></p>

<p>Et voilà, c&#8217;est très simple, mais très utile !</p>

<p><img src="http://dreamisle.net/wordpress/wp-content/uploads/2009/06/coffee_cup.png" alt="coffee_cup" title="coffee_cup" width="128" height="128" class="alignnone size-full wp-image-265" rel="lightbox"/></p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Présentation de Seam au Jug de Tours le 09/06/2009]]></title>
    <link href="http://dreamisle.net/blog/2009/06/09/presentation-de-seam-au-jug-de-tours-le-09062009/"/>
    <updated>2009-06-09T00:00:00+02:00</updated>
    <id>http://dreamisle.net/blog/2009/06/09/presentation-de-seam-au-jug-de-tours-le-09062009</id>
    <content type="html"><![CDATA[<p><a href="http://dreamisle.net/wordpress/wp-content/uploads/2009/06/jug.png"><img class="alignnone size-full wp-image-250" title="jug" src="http://dreamisle.net/wordpress/wp-content/uploads/2009/06/jug.png" alt="jug" width="129" height="128" rel=lightbox /></a></p>

<p>Bonjour à tous,
J&#8217;ai été invité à présenter Seam lors d&#8217;une réunion ouverte du Jug de Tours. L&#8217;entrée est ouverte à tous si vous êtes à proximité.</p>

<p>Plus d&#8217;informations ici :
<a href="http://www.toursjug.org/xwiki/bin/view/Meetings/20090609"> http://www.toursjug.org/xwiki/bin/view/Meetings/20090609</a></p>
]]></content>
  </entry>
  
</feed>
