<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Anthony Patricio's Blog</title>
	<atom:link href="https://apatricio.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://apatricio.wordpress.com</link>
	<description>du Middleware Java mais pas que ça</description>
	<lastBuildDate>Wed, 14 Dec 2011 15:19:31 +0000</lastBuildDate>
	<language>fr</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='apatricio.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>https://s-ssl.wordpress.com/i/buttonw-com.png</url>
		<title>Anthony Patricio's Blog</title>
		<link>https://apatricio.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="https://apatricio.wordpress.com/osd.xml" title="Anthony Patricio&#039;s Blog" />
	<atom:link rel='hub' href='https://apatricio.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Seam 2 et JBoss AS 7</title>
		<link>https://apatricio.wordpress.com/2011/09/22/seam-2-et-jboss-as-7/</link>
		<comments>https://apatricio.wordpress.com/2011/09/22/seam-2-et-jboss-as-7/#comments</comments>
		<pubDate>Thu, 22 Sep 2011 09:00:51 +0000</pubDate>
		<dc:creator>apatricio</dc:creator>
				<category><![CDATA[AS7]]></category>
		<category><![CDATA[Seam]]></category>
		<category><![CDATA[Seam 2]]></category>
		<category><![CDATA[JBoss]]></category>
		<category><![CDATA[JBoss AS7]]></category>
		<category><![CDATA[Seam2]]></category>

		<guid isPermaLink="false">http://apatricio.wordpress.com/?p=80</guid>
		<description><![CDATA[Cet article n&#8217;est que la traduction d&#8217;une partie du document https://docs.jboss.org/author/display/AS7/How+do+I+migrate+my+application+from+AS5+or+AS6+to+AS7 de la communauté JBoss. Migrer vers un nouveau serveur d&#8217;applications ou vers une nouvelle version majeure d&#8217;un même serveur d&#8217;application apporte souvent son lot de contrariétés. Avec JBoss AS 7, c&#8217;est le cas même si je trouve personnellement beaucoup moins compliqué de faire tourner ses applications [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=apatricio.wordpress.com&amp;blog=7748836&amp;post=80&amp;subd=apatricio&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Cet article n&#8217;est que la traduction d&#8217;une partie du document <a title="How do I migrate my application from AS5 or AS6 to AS7" href="https://docs.jboss.org/author/display/AS7/How+do+I+migrate+my+application+from+AS5+or+AS6+to+AS7">https://docs.jboss.org/author/display/AS7/How+do+I+migrate+my+application+from+AS5+or+AS6+to+AS7</a> de la communauté JBoss.</p>
<p>Migrer vers un nouveau serveur d&#8217;applications ou vers une nouvelle version majeure d&#8217;un même serveur d&#8217;application apporte souvent son lot de contrariétés. Avec JBoss AS 7, c&#8217;est le cas même si je trouve personnellement beaucoup moins compliqué de faire tourner ses applications web existantes (on verra pour les EJB avec JBoss AS 7.1 plus tard) que lors de migration précédentes. Si vous tentez de déployer brutalement une application WAR basée sur Seam 2, ça ne fonctionnera pas, vous aboutirez à un problème du type</p>
<p><pre class="brush: plain;">Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.Log</pre></p>
<p>Lorsque l&#8217;on tombe sur un problème de ce type, on se dit que les problèmes vont s&#8217;enchaîner et qu&#8217;on va y passer des heures, no stress voici les étapes à suivre pour s&#8217;en sortir très rapidement, prenons l&#8217;exemple d&#8217;un WAR.</p>
<p>Pré-requis: assurez que votre source de données est bien configurée dans votre instance d&#8217;AS7. Niveau JNDI, choisissez <strong>java:jboss/</strong> plutôt que <strong>java:</strong> pour éviter toute surprise.</p>
<ul>
<li>Se pose le problème de JSF. AS7 contient JSF 2.0 mais Seam 2 tourne avec JSF 1.2. Pour notifier à AS7 que votre application ne veut pas de JSF 2.0 mais requiert JSF 1.2, créez un fichier<strong> jboss-deployment-structure.xml</strong> dans <strong>META-INF</strong> et remplissez-le comme suit:</li>
</ul>
<p><pre class="brush: xml;">
&lt;jboss-deployment-structure xmlns=&quot;urn:jboss:deployment-structure:1.0&quot;&gt;
 &lt;deployment&gt;
  &lt;exclusions&gt;
   &lt;module name=&quot;javax.faces.api&amp;quot; slot=&amp;quot;main&quot;&gt;
   &lt;module name=&quot;com.sun.jsf-impl&amp;quot; slot=&amp;quot;main&quot;&gt;
  &lt;/exclusions&gt;
  &lt;dependencies&gt;
   &lt;module name=&quot;javax.faces.api&quot; slot=&quot;1.2&quot;/&gt;
   &lt;module name=&quot;com.sun.jsf-impl&quot; slot=&quot;1.2&quot;/&gt;
   &lt;module name=&quot;org.apache.commons.logging&quot;/&gt;
   &lt;module name=&quot;org.apache.commons.collections&quot;/&gt;
   &lt;module name=&quot;org.apache.log4j&quot;/&gt;
   &lt;module name=&quot;org.dom4j&quot;/&gt;
  &lt;/dependencies&gt;
 &lt;/deployment&gt;
&lt;/jboss-deployment-structure&gt;
</pre></p>
<ul>
<li>Vous remarquez de suite que l&#8217;on en profite pour régler son sort à <strong>commons-loggins</strong> ainsi qu&#8217;aux autres dépendances qui vous auraient posé problème.</li>
<li>Hibernate va lui aussi poser problème. Votre application Seam2 est probablement aussi basée sur Hibernate 3.x, hors AS7 est livré avec Hibernate 4. En théorie pas de problème de rétro compatibilité si ce n&#8217;est quelques classes qui ont disparues dans la version 4&#8230; oui bon ok c&#8217;est un problème de rétro compatibilité. Pour y parer, ajoutez simplement les jars suivants dans votre archive. Pour notre webapp, cela se passe dans <strong>WEB-INF/lib</strong> et vous trouverez les bonnes versions dans votre distribution de Seam 2 ou dans la version de JBoss AS qui la contenait (JBOSS_HOME/seam/lib)</li>
<ul>
<li>slf4j-api.jar</li>
<li>slf4j-log4j12.jar</li>
<li>hibernate-entitymanager.jar</li>
<li>hibernate-core.jar</li>
<li>hibernate-annotations.jar</li>
<li>hibernate-commons-annotations.jar</li>
<li>hibernate-validator.jar</li>
<li>mais aussi gwt-servlet.jar, &#8230; selon ce que vous utilisez de Seam 2</li>
</ul>
<li>Un dernier soucis lié à AS 7.0.1 subsiste quant à JNDI,</li>
<ul>
<li>dans <strong>persistence.xml</strong> , soyez sûrs de définir<strong> jboss.entity.manager.factory.jndi.name</strong> dans<strong> java:jboss/</strong> et non<strong> java:</strong> (ceci devrait être corrigé très prochainement)</li>
<li>dans <strong>components.xml</strong> , idem pour<strong> &lt;persistence:managed-persistence-context/&gt;</strong></li>
</ul>
<li>redeployez votre war (s&#8217;il est explosé, touch mywar.dodeploy)</li>
</ul>
<div>Cela devrait fonctionner.</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/apatricio.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/apatricio.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/apatricio.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/apatricio.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/apatricio.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/apatricio.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/apatricio.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/apatricio.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/apatricio.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/apatricio.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/apatricio.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/apatricio.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/apatricio.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/apatricio.wordpress.com/80/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=apatricio.wordpress.com&amp;blog=7748836&amp;post=80&amp;subd=apatricio&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>https://apatricio.wordpress.com/2011/09/22/seam-2-et-jboss-as-7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="https://secure.gravatar.com/avatar/89ad39471f97100fd8b53ed184b69f46?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">apatricio</media:title>
		</media:content>
	</item>
		<item>
		<title>La certification, pourquoi faire ?</title>
		<link>https://apatricio.wordpress.com/2011/07/29/la-certification-pourquoi-faire/</link>
		<comments>https://apatricio.wordpress.com/2011/07/29/la-certification-pourquoi-faire/#comments</comments>
		<pubDate>Fri, 29 Jul 2011 13:36:43 +0000</pubDate>
		<dc:creator>apatricio</dc:creator>
				<category><![CDATA[Actu / Anecdote]]></category>
		<category><![CDATA[certification]]></category>
		<category><![CDATA[jbcaa]]></category>
		<category><![CDATA[jpa]]></category>
		<category><![CDATA[redhat]]></category>
		<category><![CDATA[Seam]]></category>

		<guid isPermaLink="false">http://apatricio.wordpress.com/?p=82</guid>
		<description><![CDATA[Qui ne s&#8217;est jamais retrouvé dans une querelle d&#8217;experts sur une techno, sur le moyen d&#8217;implémenter un cas d&#8217;utilisation ou je ne sais quel aspect technique avancé. Lorsque l&#8217;on n&#8217;est pas initié soit même, et que l&#8217;on assiste à un tel débat, on est incapable de trancher, comme si l&#8217;on se trouvait au milieu d&#8217;une [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=apatricio.wordpress.com&amp;blog=7748836&amp;post=82&amp;subd=apatricio&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://apatricio.files.wordpress.com/2011/07/poker_by_zabiamedve-d3kfkom.jpg"><img class="alignleft size-medium wp-image-86" title="No Bluff" src="http://apatricio.files.wordpress.com/2011/07/poker_by_zabiamedve-d3kfkom.jpg?w=72&#038;h=108" alt="" width="72" height="108" /></a>Qui ne s&#8217;est jamais retrouvé dans une querelle d&#8217;experts sur une techno, sur le moyen d&#8217;implémenter un cas d&#8217;utilisation ou je ne sais quel aspect technique avancé. Lorsque l&#8217;on n&#8217;est pas initié soit même, et que l&#8217;on assiste à un tel débat, on est incapable de trancher, comme si l&#8217;on se trouvait au milieu d&#8217;une partie de poker face à deux gaillards prétendant tous deux avoir la main maximale, statistiquement proche de l&#8217;impossible, situation plutôt gênante lorsque l&#8217;on est client, chef de projet métier ou même employeur.</p>
<p>Pour toi développeur, technicien, archi avec la tête dans le guidon, ça peut être encore pire, tu peux te voir dé crédibilisé par un autre alors que tu es persuadé qu&#8217;il a tord, oui mais voilà, c&#8217;est un client, ou un concurrent qui est mieux vu. Le but ici n&#8217;est pas d&#8217;avoir raison mais bien de faire avancer le projet au mieux.</p>
<p>Que dire du directeur de marché, d&#8217;équipe ou responsable RH qui ne peut pas s&#8217;y connaître en technique (ce n&#8217;est pas son métier) qui va embaucher une personne selon le nombre de mots compliqués ou buzzables qu&#8217;il y aura sur son CV et qui, au premier projet livré, devra faire face à une montagne de bugs techniques plus bloquants les uns que les autres et à des réclamations en tout genre. La processus d&#8217;embauche mériterait un débat complet tellement il relève d&#8217;une problématique complexe: embaucher une personne compétente sur un domaine précis ça peut être très aléatoire. Pour tester un candidat il faut avoir soit même la compétence et/ou le test, le temps, bref ça coûte de l&#8217;argent tout ça et c&#8217;est une réelle stratégie de l&#8217;entreprise, un investissement, voire un risque si on embauche n&#8217;importe comment.</p>
<p>Il existe pourtant un moyen simple d&#8217;apporter des garantie de crédibilité: les certifications. Attention toutefois, il existe 2 types de certifications. La première s&#8217;apparente au code de la route, à savoir un QCM. A vrai dire, il n&#8217;y a que très peu d&#8217;intérêt à une telle formation, une bonne mémoire, la lecture d&#8217;un bouquin ou deux et hop, nous voilà certifiés. La seconde est plutôt semblable à l&#8217;examen de conduite, comment le candidat utilise t&#8217;il sa connaissance (et surtout son expérience) face à des cas réels ? Ces certifications là valent de l&#8217;or, aussi bien pour la personne certifiée que pour la personne qui va l&#8217;employer où faire appel à ses services. Pour l&#8217;employeur c&#8217;est la garantie de ne pas se tromper, pour le certifié c&#8217;est une garantie de pouvoir se faire respecter dans ses choix, ses développements, c&#8217;est un argument de taille, c&#8217;est aussi l&#8217;occasion de valoriser son CV et prétendre à un salaire plus élevé.</p>
<p>Chaque année des études sont faites pour lister les certifications les plus remarquables, généralement cela se traduit en % supplémentaire de salaire que l&#8217;on peut négocier si l&#8217;on a telle ou telle certification. Par exemple: <a title="http://www.reseaux-telecoms.net/fichiers/dossierpdf/la-grille-des-remunerations.jpg" href="http://www.reseaux-telecoms.net/fichiers/dossierpdf/la-grille-des-remunerations.jpg">http://www.reseaux-telecoms.net/fichiers/dossierpdf/la-grille-des-remunerations.jpg</a>. Deux paramètres influent sur le résultat: la compétence testée bien sûr mais aussi indéniablement la qualité de l&#8217;examen. Etre certifié sur une technologie pointue, rare, très demandée mais via un examen QCM bateau est facile, ne sera pas reconnu et n&#8217;apportera rien à personne. Dans le tableau évoqué précédemment vous noterez la présence des certifications Red Hat sur l&#8217;OS entreprise RHEL. Depuis plusieurs années, les certifications Red Hat sont reconnues parmi les meilleures, souvent même au top 10 des certifications IT. Pourquoi?</p>
<p>Bien sûr car la compétences est recherchés mais aussi pour la qualité de l&#8217;examen lui même. Imaginez que l&#8217;on vous teste sur l&#8217;installation, le tuning, la réparation d&#8217;un système existant, sur des aspects utilisés par toutes les entreprises. Et bien c&#8217;est ce que propose Red Hat: que du cas réel, pas de piège. Tout son savoir faire sur la création de certification a été décliné sur les technologies JBoss. D&#8217;abord sur le serveur d&#8217;application, puis sur JPA, maintenant sur Seam 2, bientôt sur Portal, JPA 2, &#8230;</p>
<p>Conclusion, une certification s&#8217;est</p>
<ul>
<li>pour le certifié,</li>
<ul>
<li>valider ses compétences,</li>
<li>se faire reconnaître pour ses compétences,</li>
<li>valoriser son CV,</li>
<li>avoir plus de poids dans les débats et prise de décisions</li>
</ul>
<li>pour l&#8217;employeur,</li>
<ul>
<li>limiter les risques lors d&#8217;une embauche,</li>
<li>valider son investissement dans une formation pour un collaborateur,</li>
<li>une valeur ajoutée certaine chez le client dans le cadre de prestations, c&#8217;est décliner la garantie chez le client</li>
</ul>
</ul>
<div>En savoir plus sur les certifications Red Hat:</div>
<div>
<ul>
<li><a href="http://www.fr.redhat.com/training/certification/jbcaa/">Serveur d&#8217;application</a> (JBCAA)</li>
<li><a href="http://www.fr.redhat.com/training/certification/jbcd-persistence/">JPA / Persistence</a></li>
<li>Seam 2 à venir</li>
<li><a href="http://www.fr.redhat.com/training/certification/">Autre certification Red Hat</a></li>
</ul>
<div>Si vous souhaitez formuler un souhait de certification, n&#8217;hésitez pas à me contacter.</div>
</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/apatricio.wordpress.com/82/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/apatricio.wordpress.com/82/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/apatricio.wordpress.com/82/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/apatricio.wordpress.com/82/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/apatricio.wordpress.com/82/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/apatricio.wordpress.com/82/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/apatricio.wordpress.com/82/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/apatricio.wordpress.com/82/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/apatricio.wordpress.com/82/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/apatricio.wordpress.com/82/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/apatricio.wordpress.com/82/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/apatricio.wordpress.com/82/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/apatricio.wordpress.com/82/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/apatricio.wordpress.com/82/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=apatricio.wordpress.com&amp;blog=7748836&amp;post=82&amp;subd=apatricio&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>https://apatricio.wordpress.com/2011/07/29/la-certification-pourquoi-faire/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="https://secure.gravatar.com/avatar/89ad39471f97100fd8b53ed184b69f46?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">apatricio</media:title>
		</media:content>

		<media:content url="http://apatricio.files.wordpress.com/2011/07/poker_by_zabiamedve-d3kfkom.jpg?w=200" medium="image">
			<media:title type="html">No Bluff</media:title>
		</media:content>
	</item>
		<item>
		<title>JBoss Application Server 7, moins de 2 secondes au démarrage</title>
		<link>https://apatricio.wordpress.com/2011/07/22/jboss-application-server-7-moins-de-2-secondes-au-demarrage/</link>
		<comments>https://apatricio.wordpress.com/2011/07/22/jboss-application-server-7-moins-de-2-secondes-au-demarrage/#comments</comments>
		<pubDate>Fri, 22 Jul 2011 14:13:27 +0000</pubDate>
		<dc:creator>apatricio</dc:creator>
				<category><![CDATA[Actu / Anecdote]]></category>

		<guid isPermaLink="false">http://apatricio.wordpress.com/?p=70</guid>
		<description><![CDATA[Après un long sommeil, je ne peux m&#8217;empêcher d&#8217;avoir envie de blogger sur JBoss Application Server 7. Peut-être êtes-vous sur une autre planète et ne l&#8217;avez pas entendu mais cette dernière version du serveur d&#8217;application est tout simplement étonnante, bluffante, décoiffante. Habitué depuis des années à travailler sous JBoss AS, je connais sa robustesse, son [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=apatricio.wordpress.com&amp;blog=7748836&amp;post=70&amp;subd=apatricio&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:center;"><a href="http://www.jboss.org/jbossas.html"><img class="aligncenter size-full wp-image-71" title="JBoss AS 7" src="http://apatricio.files.wordpress.com/2011/07/jbossas7-banner.png?w=720&#038;h=87" alt="" width="720" height="87" /></a></p>
<p>Après un long sommeil, je ne peux m&#8217;empêcher d&#8217;avoir envie de blogger sur JBoss Application Server 7.</p>
<p>Peut-être êtes-vous sur une autre planète et ne l&#8217;avez pas entendu mais cette dernière version du serveur d&#8217;application est tout simplement étonnante, bluffante, décoiffante. Habitué depuis des années à travailler sous JBoss AS, je connais sa robustesse, son sérieux mais j&#8217;en reconnais aussi sa lourdeur, taille au téléchargement, délai de démarrage, emprunte mémoire. Cette lourdeur m&#8217;avait même motivé à exploiter <a href="http://www.jboss.org/arquillian">Arquillian</a>, que je recommande toujours chaudement, lors de mes phases de développement.</p>
<p>Lorsqu&#8217;une équipe de costauds de la technique décide qu&#8217;il est temps, après des années, de revoir l&#8217;intégralité d&#8217;un serveur d&#8217;application, de plonger de trois niveaux dans les couches de bas niveau, d&#8217;appliquer des optimisations sur le moindre bloc, d&#8217;exploiter de nouvelles normes, techniques, frameworks, d&#8217;en créer lorsque l&#8217;existant ne donne pas 200% satisfaction et bien lorsqu&#8217;une dream team comme celle de l&#8217;engineering JBoss se met en marche, ça donne JBoss Application Server 7. Peut-être pensez-vous que j&#8217;en fais des montagnes, que je prêche pour ma paroisse, mais il faut le vivre de l&#8217;intérieur pour comprendre le travail que cela représente, la passion, que dis-je, la foie en une constellation de compétences au service d&#8217;un produit, qui plus est open source, c&#8217;est ce que je trouve génial, moi qui suis dans ce domaine depuis 8 ans (là je prends un coup de vieux). Alors, oh toi grand développeur au niveau de geekitude avancée, toi dont on ne distingue plus les doigts lorsque tu libères ton code, toi qui hot-déploies plus vite que ton ombre et qui redémarre ton serveur plus de 10 fois par heure, sache que JBoss a pensé à toi.</p>
<p>Stop au bavardages, voici quelques chiffres, je ne compare pas avec la concurrence, je ne suis pas là pour casser un concurrent juste pour montrer l&#8217;écart avec la génération d&#8217;AS précédentes. Jusqu&#8217;à ce jour j&#8217;utilisais EAP 5.1 (comprenez la version &#8216;product&#8217; de JBoss AS 5). Je compare le profil standalone d&#8217;AS7 et le profil default d&#8217;AS5.</p>
<ul>
<li>Emprunte mémoire: 350M contre 900M</li>
<li>Démarrage à vide: 1,8 secondes (je ne mens pas) contre 20 secondes</li>
<li>Démarrage avec la même application web basée sur Seam 2 et Hibernate 3: 7,8 secondes contre 28 secondes</li>
<li>Taille disque 126M contre 535M</li>
<li>Une console d&#8217;administration, pas trop tôt certains diront, oui ok je suis d&#8217;accord.</li>
</ul>
<p>Certains me diront que la concurrence (tout du moins un AS concurrent très respectable au demeurant) sait faire depuis un petit moment déjà. A ces personnes je dis que l&#8217;intérêt ici est de pouvoir utiliser le même serveur d&#8217;app en dev et prod car il faut être réaliste, JBoss AS est très largement employé en production, comme en dev d&#8217;ailleurs. (attention je n&#8217;ai pas dit que le concurrent en question n&#8217;était pas utilisé en prod, ne me faites pas dire ce que je n&#8217;ai pas dit.)</p>
<p>Evidemment, tout ceci ne fait pas tout, il faudra juger et attendre pour prendre le recul et juger de la robustesse mais je ne m&#8217;en fais pas du tout pour ce point. Qui dit nouvelle génération, refonte totale, dit &#8220;j&#8217;arrive à rien déployer dans ce foutu AS de m&#8230;.&#8221;. Je confirme c&#8217;est ce que je me suis dit à ma première tentative de déploiement d&#8217;une appli que j&#8217;avais créée avec Seam 2 et Hibernate 3. Pour info AS7 fournit Hibernate 4. Un article prochain expliquera comment déployer une telle appli et cerise sur le gâteau l&#8217;article devrait être très court car il n&#8217;y a pas grand chose à faire au final.</p>
<p>Je te laisse l&#8217;essayer, sisi, download, unzip ./standalone.sh , tu en as pour 5 minutes dont 2 secondes pour le démarrer.</p>
<p>Ca se passe là: <a href="http://www.jboss.org/as7.html">http://www.jboss.org/as7.html</a></p>
<div><em>Réflexion: il n&#8217;aura fallu qu&#8217;un an pour sortir cette version finale de JBoss Application Server 7, certifiée Java EE6 Web Profile. Un an ce n&#8217;est rien lorsque l&#8217;on connait la complexité d&#8217;un tel projet, la variété de compétences requise pour le mener à bien. Ca fait réfléchir sur l&#8217;organisation projet, sa gestion, la gestion des ressources, <strong>des compétences</strong>. Je ne peux m&#8217;empêcher de comparer l&#8217;évolution de ce projet avec les expériences projet de mes postes précédents, en interne ou en tant que prestataire. Ma conclusion est radicale et sans appel mais je la garde pour moi, je suis fier d&#8217;être un RedHat!</em></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/apatricio.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/apatricio.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/apatricio.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/apatricio.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/apatricio.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/apatricio.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/apatricio.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/apatricio.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/apatricio.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/apatricio.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/apatricio.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/apatricio.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/apatricio.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/apatricio.wordpress.com/70/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=apatricio.wordpress.com&amp;blog=7748836&amp;post=70&amp;subd=apatricio&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>https://apatricio.wordpress.com/2011/07/22/jboss-application-server-7-moins-de-2-secondes-au-demarrage/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="https://secure.gravatar.com/avatar/89ad39471f97100fd8b53ed184b69f46?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">apatricio</media:title>
		</media:content>

		<media:content url="http://apatricio.files.wordpress.com/2011/07/jbossas7-banner.png" medium="image">
			<media:title type="html">JBoss AS 7</media:title>
		</media:content>
	</item>
		<item>
		<title>Hibernate Search: la cerise sur le gâteau</title>
		<link>https://apatricio.wordpress.com/2009/07/15/hibernate-search-la-cerise-sur-le-gateau/</link>
		<comments>https://apatricio.wordpress.com/2009/07/15/hibernate-search-la-cerise-sur-le-gateau/#comments</comments>
		<pubDate>Wed, 15 Jul 2009 13:13:08 +0000</pubDate>
		<dc:creator>apatricio</dc:creator>
				<category><![CDATA[Persistance / Données]]></category>
		<category><![CDATA[fulltext]]></category>
		<category><![CDATA[hibernate]]></category>
		<category><![CDATA[indexation]]></category>
		<category><![CDATA[jpa]]></category>
		<category><![CDATA[lucene]]></category>
		<category><![CDATA[recherche]]></category>

		<guid isPermaLink="false">http://apatricio.wordpress.com/?p=18</guid>
		<description><![CDATA[Sondage Vous utilisez Hibernate? oui Vous utilisez les annotations pour définir vos méta données? oui Vous ne connaissez pas Hibernate Search? honte à vous! R.O.I. HB-Search Il y a des frameworks qui proposent des ROI assez impressionnants, Hibernate Search en fait partie. Comme vous l&#8217;avez probablement deviné Hibernate Search permet d&#8217;implémenter un moteur de recherche [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=apatricio.wordpress.com&amp;blog=7748836&amp;post=18&amp;subd=apatricio&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h2><img class="alignleft size-full wp-image-46" title="images" src="http://apatricio.files.wordpress.com/2009/07/images.jpg?w=720" alt="images"   />Sondage</h2>
<p>Vous utilisez Hibernate? oui<br />
Vous utilisez les annotations pour définir vos méta données? oui<br />
Vous ne connaissez pas <a href="https://www.hibernate.org/410.html" target="_blank">Hibernate Search</a>? honte à vous!</p>
<h2>R.O.I. HB-Search</h2>
<p>Il y a des frameworks qui proposent des ROI assez impressionnants, Hibernate Search en fait partie.</p>
<p>Comme vous l&#8217;avez probablement deviné Hibernate Search permet d&#8217;implémenter un moteur de recherche fulltext efficace. Il s&#8217;appuie sur <a href="http://lucene.apache.org/" target="_blank">Lucene</a>, Hibernate et les annotations.</p>
<p>Lucene est une technologie java d&#8217;indexation et de recherche très mature, aboutie et efficace. L&#8217;intérêt d&#8217;HB Search réside en son intégration avec Hibernate, il en résulte une facilité de mise en œuvre impressionnante.</p>
<p>Nous sommes régulièrement confronté au problème d&#8217;implémentation de moteur recherche dans nos applications d&#8217;entreprise. Plusieurs soucis:</p>
<ul>
<li> niveau conception : nous sommes très forts pour proposer des formulaires de recherche ciblant toutes les données imaginables de nos modèles, allant parfois implémenter des formulaires de recherche comportant 36 champs. Le problème de ces formulaires étant leur inaccessibilité pour la ménagère de moins de 50 ans &#8211;&gt; pour le grand public</li>
</ul>
<ul>
<li> niveau pertinence: nous savons être pertinents et précis sur des numériques, des dates, des booléens mais lorsque l&#8217;on nous demandes de prendre en compte les fautes d&#8217;orthographes ou les synonymes sur les chaînes de caractères, on se retrouve généralement démunie</li>
</ul>
<p>Avec HB Search vous pouvez proposer à vos clients, pour un coût moindre, une ouverture vers un moteur fulltext user-friendly (typiquement champ de formulaire unique &#8220;à la google&#8221;). Ils seront agréablement surpris et n&#8217;auront aucun mal à élargir le spectre des spécifications pour consolider ce moteur.</p>
<h2>L&#8217;exemple</h2>
<p>Imaginez une classe Produit avec diverses propriétés de type String comme le libellé et la marque ou libellePrincipal et libelleSecondaire.</p>
<p>Vous souhaitez que la recherche cible ces deux propriétés.</p>
<p>Ci-dessous l&#8217;entité annotée comme vous en avez l&#8217;habitude:</p>
<p><pre class="brush: java;">
@Entity
public class Produit {

	@Id
	private int codeProduit;

	private String libellePrincipal;

	private String libelleSecondaire;
 	...
}
</pre></p>
<p>Et effectuer une recherche, par exemple, via HQL:</p>
<p><pre class="brush: java;">
javax.persistence.Query q =
	em.createQuery(
		&quot;select produit &quot; +
		&quot;from Produit produit &quot; +
		&quot;where produit.libellePrincipal = :param&quot;);
q.setParameter(&quot;param&quot;, &quot;café&quot;);
List results = q.getResultList();
</pre></p>
<h2>Méta données</h2>
<p>Que faut-il ajouter pour que l&#8217;entité et ses 2 champs soient puissent être ciblées par le moteur fulltext?</p>
<p><pre class="brush: java;">
@Entity
@Indexed
public class Produit {

	@Id
	@DocumentId
	private int codeProduit;

	@Field
	private String libellePrincipal;

	@Field
	private String libelleSecondaire;
	...
}
</pre></p>
<p>@org.hibernate.search.annotations.Indexed stipule que l&#8217;entité annotée peut être indexée. Grâce à cette annotation, l&#8217;intégration Lucene/Hibernate est activée.</p>
<p>Parmi tant d&#8217;autres fonctionnalités gérées, l&#8217;indexation automatique vous simplifie la vie: lorsque vous agissez sur une entité de ce type, l&#8217;index lucene est automatiquement géré.</p>
<p>org.hibernate.search.annotations.Field déclare qu&#8217;une propriété est indexée. L&#8217;annotation propose divers leviers pour définir comment la propriété est indexée. Pour le moment appliquons le paramétrage par défaut.</p>
<p>Plutôt facile non? Attardons nous maintenant à l&#8217;aspect API</p>
<h2>API de recherche</h2>
<p>Avant de commencer, notez que des APIs équivalentes existent pour la session Hibernate.</p>
<p>Ici, plusieurs étapes sont nécessaires. Il faut d&#8217;abord obtenir un EntityManager fulltext, puis créer une requête Lucene. Enfin, la création d&#8217;une requête de recherche JPA depuis la requête Lucene nous permettra de retomber sur une API familière et pratique pour manipuler les entités retournées par la recherche.</p>
<p>Voici ce que ça donne:</p>
<p><pre class="brush: java;">
// expression littérale de la requête Lucene&lt;/pre&gt;
String searchQuery = &quot;cafe~&quot;;

org.hibernate.search.jpa.FullTextEntityManager fullTextEm =
	Search.getFullTextEntityManager(entityManager);
SearchFactory sf = fullTextEm.getSearchFactory();

// Construction d'un QueryParser, définition du champ par défaut
// récupération de l'analyseur lié à l'entité
org.apache.lucene.queryParser.QueryParser parser = new QueryParser(
	&quot;libellePrincipal&quot;,
	sf.getAnalyzer( Produit.class )
);

// construction de la requête lucene
org.apache.lucene.search.Query luceneQuery = parser.parse(searchQuery);

// création de la requête JPA fulltext
org.hibernate.search.jpa.FullTextQuery ftq =
	fullTextEm.createFullTextQuery(luceneQuery, Produit.class);

// exécution de la requête
List results = ftq.getResultList();
</pre></p>
<p>La subtilité ici réside en la recherche Lucene «~cafe ». Le tilde active une recherche par approximation. Ce type de recherche permet d&#8217;éviter les problèmes d&#8217;accent et de typo que l&#8217;on rencontre très souvent. De même si les utilisateurs saisissent des fautes d&#8217;orthographes, cette recherche s&#8217;en sortira facilement.</p>
<h2>Bien plus de fonctionnalités</h2>
<p>Cette article n&#8217;a pas l&#8217;ambition de couvrir toute la puissance d&#8217;Hibernate Search, simplement de démontrer la facilité et rapidité de mise en œuvre. L&#8217;exploitation d&#8217;un graph d&#8217;objet (et de ses associations) pour la recherche, la pondération de certains champs, la pertinence de la recherche sont possibles et faciles à utiliser.<br />
Bien entendu, d&#8217;autres aspects doivent être pris en compte, notamment l&#8217;utilisation des analyseurs (approximation, phonétique, synonymes,&#8230;) et la gestion / maintenance des index.<br />
Je vous recommande donc la lecture du <a href="http://docs.jboss.org/hibernate/stable/search/reference/en/html_single/" target="_blank">guide de référence</a> mais surtout du livre d&#8217;Emmanuel Bernard et John Griffin.</p>
<p><a href="http://www.amazon.fr/Hibernate-Search-Action-Emmanuel-Bernard/dp/1933988649/ref=sr_1_1?ie=UTF8&amp;s=english-books&amp;qid=1247662741&amp;sr=8-1"><img class="aligncenter size-full wp-image-45" title="search" src="http://apatricio.files.wordpress.com/2009/07/search1.jpg?w=720" alt="search"   /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/apatricio.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/apatricio.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/apatricio.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/apatricio.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/apatricio.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/apatricio.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/apatricio.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/apatricio.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/apatricio.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/apatricio.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/apatricio.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/apatricio.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/apatricio.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/apatricio.wordpress.com/18/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=apatricio.wordpress.com&amp;blog=7748836&amp;post=18&amp;subd=apatricio&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>https://apatricio.wordpress.com/2009/07/15/hibernate-search-la-cerise-sur-le-gateau/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="https://secure.gravatar.com/avatar/89ad39471f97100fd8b53ed184b69f46?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">apatricio</media:title>
		</media:content>

		<media:content url="http://apatricio.files.wordpress.com/2009/07/images.jpg" medium="image">
			<media:title type="html">images</media:title>
		</media:content>

		<media:content url="http://apatricio.files.wordpress.com/2009/07/search1.jpg" medium="image">
			<media:title type="html">search</media:title>
		</media:content>
	</item>
		<item>
		<title>Teiid: les données que vous voulez à partir de celles dont vous disposez</title>
		<link>https://apatricio.wordpress.com/2009/06/12/teiid-les-donnees-que-vous-voulez-a-partir-de-celles-dont-vous-disposez/</link>
		<comments>https://apatricio.wordpress.com/2009/06/12/teiid-les-donnees-que-vous-voulez-a-partir-de-celles-dont-vous-disposez/#comments</comments>
		<pubDate>Fri, 12 Jun 2009 14:49:11 +0000</pubDate>
		<dc:creator>apatricio</dc:creator>
				<category><![CDATA[Persistance / Données]]></category>
		<category><![CDATA[datastore]]></category>
		<category><![CDATA[données]]></category>
		<category><![CDATA[hibernate]]></category>
		<category><![CDATA[metamatrix]]></category>
		<category><![CDATA[teiid]]></category>

		<guid isPermaLink="false">http://apatricio.wordpress.com/?p=23</guid>
		<description><![CDATA[On ne peut être plus clair: les données que vous voulez à partir de celles dont vous disposez. Teiid vous permet d&#8217;agréger plusieurs sources de données en une seule. Imaginez plutôt, vous disposez de 2 bases de données relationnelles, 3 services web et de fichiers plats, vous mettez tout dans le mixeur et à la [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=apatricio.wordpress.com&amp;blog=7748836&amp;post=23&amp;subd=apatricio&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div id="attachment_24" class="wp-caption aligncenter" style="width: 730px"><a href="http://teiid.blogspot.com/"><img class="size-full wp-image-24" title="teiid-banner" src="http://apatricio.files.wordpress.com/2009/06/teiid-banner.png?w=720&#038;h=87" alt="Teiid" width="720" height="87" /></a><p class="wp-caption-text">Teiid</p></div>
<p><!-- 		@page { size: 21cm 29.7cm; margin: 2cm } 		P { margin-bottom: 0.21cm } -->On ne peut être plus clair: les données que vous voulez à partir de celles dont vous disposez.</p>
<p>Teiid vous permet d&#8217;agréger plusieurs sources de données en une seule. Imaginez plutôt, vous disposez de 2 bases de données relationnelles, 3 services web et de fichiers plats, vous mettez tout dans le mixeur et à la fin vous ne manipulez plus qu&#8217;une seule source de données.</p>
<p>Si l&#8217;appli cliente est en Java, vous exploiterez cette source de données via JDBC ou encore mieux via Hibernate ou JPA puisque la dernière release incluse un dialect Hibernate.</p>
<p>Bien entendu, Teiid dispatchera chaque ordre vers les sources de données finales.</p>
<p>La force de Teiid réside, à mon sens en 3 points:</p>
<ul>
<li>la maturité, Teiid est en fait fondé sur 	MetaMatrix</li>
<li>l&#8217;<a href="http://www.jboss.org/teiiddesigner.html" target="_blank">outillage</a>, tout simplement impressionnant</li>
<li>une liste de fonctionnalités bien plus riche et 	subtile que le résumé de cet article</li>
</ul>
<p>Rendez-vous au plus vite le <a href="http://teiid.blogspot.com/" target="_blank">blog </a>et sur les sites <a href="http://www.jboss.org/teiid.html" target="_blank">Teiid</a> et <a href="http://www.jboss.org/teiiddesigner.html" target="_blank">Teiid designer</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/apatricio.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/apatricio.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/apatricio.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/apatricio.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/apatricio.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/apatricio.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/apatricio.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/apatricio.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/apatricio.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/apatricio.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/apatricio.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/apatricio.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/apatricio.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/apatricio.wordpress.com/23/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=apatricio.wordpress.com&amp;blog=7748836&amp;post=23&amp;subd=apatricio&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>https://apatricio.wordpress.com/2009/06/12/teiid-les-donnees-que-vous-voulez-a-partir-de-celles-dont-vous-disposez/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="https://secure.gravatar.com/avatar/89ad39471f97100fd8b53ed184b69f46?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">apatricio</media:title>
		</media:content>

		<media:content url="http://apatricio.files.wordpress.com/2009/06/teiid-banner.png" medium="image">
			<media:title type="html">teiid-banner</media:title>
		</media:content>
	</item>
		<item>
		<title>Darwin et Java, prochaine étape de l&#8217;évolution des applications</title>
		<link>https://apatricio.wordpress.com/2009/06/10/darwin-et-java-prochaine-etape-de-levolution-des-applications/</link>
		<comments>https://apatricio.wordpress.com/2009/06/10/darwin-et-java-prochaine-etape-de-levolution-des-applications/#comments</comments>
		<pubDate>Wed, 10 Jun 2009 14:33:39 +0000</pubDate>
		<dc:creator>apatricio</dc:creator>
				<category><![CDATA[Actu / Anecdote]]></category>
		<category><![CDATA[EJB3]]></category>
		<category><![CDATA[Hibernate Search]]></category>
		<category><![CDATA[jpa]]></category>
		<category><![CDATA[RichFaces]]></category>
		<category><![CDATA[Seam]]></category>

		<guid isPermaLink="false">http://apatricio.wordpress.com/?p=20</guid>
		<description><![CDATA[Année 2000, ahhh je me souviens le bon vieux temps où je crachais sur les EJBs et prônais le standalone efficace en développant une allergie hypodermique à tout ce qui se rapprochait d&#8217;un serveur d&#8217;app. On développait avec JSP, struts et hibernate, le tout en stateless bien sûr, et on était contents, super contents. Grâce [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=apatricio.wordpress.com&amp;blog=7748836&amp;post=20&amp;subd=apatricio&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><!-- 		@page { size: 21cm 29.7cm; margin: 2cm } 		P { margin-bottom: 0.21cm } -->Année 2000, ahhh je me souviens le bon vieux temps où je crachais sur les EJBs et prônais le standalone efficace en développant une allergie hypodermique à tout ce qui se rapprochait d&#8217;un serveur d&#8217;app.</p>
<p>On développait avec JSP, struts et hibernate, le tout en stateless bien sûr, et on était contents, super contents. Grâce à struts, on passait 1h45 heure au lieu de 2 à concevoir notre JSP, la plugger à notre logique de navigation, coder nos validations de surface. Ahhh ce que c&#8217;était chia&#8230;.</p>
<p>Tous ces aspects m&#8217;ont vite persuadé de me focaliser sur la persistance, le développement côté serveur, bref TOUT sauf les vues.</p>
<p>Quelques années ont passé, EJB3 est arrivé et j&#8217;ai retrouvé les beans session et le stateful et toute sa puissance. C&#8217;est Seam, un next generation framework imaginé par Gavin King, qui a d&#8217;ailleurs redoré le blason du stateful.</p>
<p>Les annotations nous ont délivrés de l&#8217;enfer du XML et struts, après tant de bons et loyaux services, a doucement passé la main à JSF et là&#8230; c&#8217;est le bonheur surtout avec RichFaces.</p>
<p>J&#8217;espère avoir assez de temps libre pour partager des avis/exemples sur toutes ces technologies, EJB3, JPA, Seam, RichFaces mais aussi Hibernate Search qui marquent un pas décisifs dans le monde des applications Java.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/apatricio.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/apatricio.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/apatricio.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/apatricio.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/apatricio.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/apatricio.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/apatricio.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/apatricio.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/apatricio.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/apatricio.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/apatricio.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/apatricio.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/apatricio.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/apatricio.wordpress.com/20/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=apatricio.wordpress.com&amp;blog=7748836&amp;post=20&amp;subd=apatricio&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>https://apatricio.wordpress.com/2009/06/10/darwin-et-java-prochaine-etape-de-levolution-des-applications/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="https://secure.gravatar.com/avatar/89ad39471f97100fd8b53ed184b69f46?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">apatricio</media:title>
		</media:content>
	</item>
		<item>
		<title>Foutaises, apprenez à les détecter</title>
		<link>https://apatricio.wordpress.com/2009/05/15/foutaises-apprenez-a-les-detecter/</link>
		<comments>https://apatricio.wordpress.com/2009/05/15/foutaises-apprenez-a-les-detecter/#comments</comments>
		<pubDate>Fri, 15 May 2009 12:21:46 +0000</pubDate>
		<dc:creator>apatricio</dc:creator>
				<category><![CDATA[Actu / Anecdote]]></category>
		<category><![CDATA[datamapper]]></category>
		<category><![CDATA[décideur]]></category>
		<category><![CDATA[FUD]]></category>
		<category><![CDATA[orm]]></category>

		<guid isPermaLink="false">http://apatricio.wordpress.com/?p=11</guid>
		<description><![CDATA[Tout travail mérite le respect, la réflexion et le temps passé à concevoir et implémenter une solution ne peuvent être directement et gratuitement fustigés. Il en va différemment lorsque les auteurs s&#8217;exposent eux-mêmes en lançant une information agressive et fausse (aka F.U.D) avec d&#8217;autres produits. C&#8217;est ce qu&#8217;il s&#8217;est passé ici où l&#8217;on nous ressort [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=apatricio.wordpress.com&amp;blog=7748836&amp;post=11&amp;subd=apatricio&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Tout travail mérite le respect, la réflexion et le temps passé à concevoir et implémenter une solution ne peuvent être directement et gratuitement fustigés.</p>
<p>Il en va différemment lorsque les auteurs s&#8217;exposent eux-mêmes en lançant une information agressive et fausse (aka <a href="http://fr.wikipedia.org/wiki/Fear,_uncertainty_and_doubt" target="_blank">F.U.D</a>) avec d&#8217;autres produits.</p>
<p>C&#8217;est ce qu&#8217;il s&#8217;est passé <a href="http://www.theserverside.com/news/bookmark!add.jspa?forumID=2&amp;threadID=54535">ici</a> où l&#8217;on nous ressort un DataMapper basé sur des patterns anciens voire du millénaire passé comme commenté sur la page:</p>
<blockquote><p>Honestly, the approach is old. I know that I&#8217;ve used similar approach going back to 1999 and it was old back then.</p></blockquote>
<p>Reprenons depuis le début, le produit présenté n&#8217;a rien d&#8217;un ORM (Object Relationnal Mapping) dès lors qu&#8217;il impose d&#8217;énormes limitations au modèle objet, comme la non prise en charge de l&#8217;héritage et surtout qu&#8217;il ne propose pas de mapping&#8230; ben oui forcément. Ici il s&#8217;agit en fait d&#8217;imposer, via un framework, une organisation/une structuration du code dans des classes stéréotypées. L&#8217;idée est louable, toujours meilleures que d&#8217;avoir du JDBC pur non organisé et explosé partout dans un projet.</p>
<p>Cependant, c&#8217;est assez préhistorique et très franchement pénalisant sur beaucoup de points, lisons entre les lignes :</p>
<blockquote><p>No lazy loading. Just eager loading because you can expect whatever you want during coding. Eager loading removes n + 1 queries.</p></blockquote>
<p>Mouais, c&#8217;est un peu beaucoup n&#8217;importe quoi. Le lazy loading peut effectivement entraîner un soucis de <em>n + 1 requête</em>s mais <span style="text-decoration:underline;"><strong>uniquement</strong></span><strong> </strong>si le développeur est un lazy développeur (= développeur fainéant). Avec un ORM et hibernate en particulier, tout est fait pour pouvoir optimiser les modes de récupération de graphe d&#8217;objets. En passant &#8220;just eager loading&#8221; tend à forcer le chargement entier des graphes d&#8217;objets. Ceci est purement unitle et simplement consommateur de ressources. D&#8217;où l&#8217;existence d&#8217;une fonctionnalité comme le <em>lazy loading</em> qui permet de charger uniquement la portion de graphe nécessaire à un cas d&#8217;utilisation. Le <em>lazy loading</em> bouchonne le reste du graphe avec des <em>proxies</em> qui permettront eux-même le chargement transparent du reste du graphe en cas de nécessité, comprende? &#8230; la boucle est bouclée</p>
<blockquote><p>an entity object which extends <strong><em>POJO</em></strong></p></blockquote>
<p>Comme le dirait un de mes bons amis:  &#8220;<em>namuf</em> ?&#8221; (= quoi?, <em>kékidi</em>? ou encore C&#8217;est une blague?). Pour faire court, simple et pour ceux qui n&#8217;ont pas tilté, un <em>POJO </em>est un objet pur, qui ne dépend d&#8217;aucun framework, encore moins technique. Un <em>POJO </em>est libre et peut être exploité par un client sans que l&#8217;on ait besoin de déployer une quelconque armada de jars de frameworks techniques au risque de se prendre une <em>ClassNotFoundException</em>.</p>
<p>Notre ami nous explique donc que les classes persistantes utilisées avec son framework doivent étendre une classe technique, présente dans son framework, classe qui se nomme très intelligemment <em>POJO</em>. C&#8217;est fantastique! Forcément et probablement sans même savoir pourquoi, il a du compléter son framework de convertisseurs:</p>
<blockquote><p>built-in converter that can be used to convert a Java Object into a frontend String or a frontend String into a backend Java Object. The converter prevents data conversion from scattering different pages and layers.</p></blockquote>
<p>Beh oui, les objets n&#8217;étant pas des <em>POJOS</em>, ils deviennent difficilement manipulables d&#8217;une couche à l&#8217;autre. Il faut passer par le bon vieux <em>DTO</em>, à savoir un <em>POJO </em>destiné essentiellement à des fins de manipulation de données. Et pour automatiser la transposition d&#8217;un &#8220;<em>truc</em>&#8221; (désolé ses trucs ne sont pas des <em>POJOS </em>pour moi) vers un DTO, que faut-il? Des convertisseurs, bravo. Il va forcément falloir gérer ces conversions de manière systématique, typiquement entre la couche service et la couche web.</p>
<p>Ces traitements sont coûteux en terme de développement et de maintenance, complètement inutile car ne contenant aucune plu value métier et forcément c&#8217;est vraiment contre productif. Mais non puisque notre ami nous affirme gratuitement:</p>
<blockquote><p>High productivity compared to Hibernate.</p></blockquote>
<p>Sans exagérer 70% de ce que dit l&#8217;auteur est faux et je vais arréter là, &#8230; euh, &#8230; aller une dernière pour la route, lisez attentivement le titre est les premiers mots du <a href="http://www.theserverside.com/news/thread.tss?thread_id=54535&amp;m=bm.added#308576" target="_blank">commentaire ici</a> (écrit par l&#8217;auteur du framework lui-même. ):</p>
<blockquote>
<h2>No limitation</h2>
</blockquote>
<p>suivi de</p>
<blockquote><p>There are no polymorphic queries</p></blockquote>
<p>Comme c&#8217;est beau, il m&#8217;a convaincu!</p>
<p>Tout ceci ne veut pas dire que le framework est inutile ou mauvais, il ne répond simplement pas à un outil du spectre d&#8217;un ORM. En le aisant délibérement, l&#8217;auteur s&#8217;est tiré une balle dans le pied.</p>
<p>J&#8217;ai connu et connais encore plusieurs décideurs qui se laissent berner par ce type d&#8217;argumentation. Résultat: des applications qui utilisent des technos d&#8217;un autre millénaire (ce qui n&#8217;est pas grave) mais qui passent aussi à côté de technos pouvant résuire sensiblement les coûts de développement, de maintenance et d&#8217;évolution. Prenez une application de 50 tables avec 1000 requêtes SQL codées en dure, forcément pas le choix avec un DataMapper, il faut en coder une par cas d&#8217;utilisation. Ajoutez une colonne par ci par là lors d&#8217;une évolution, vous m&#8217;en direz des nouvelles&#8230;</p>
<p>Apprenez à lire entre les lignes et si vous êtes décideur sans être expert sur un sujet en particulier, déléguez à un de vos petits gars passionnés. Il vous fera gagner beaucoup d&#8217;argent à terme, croyez-moi. De même, méfiez-vous toujours des <em>software marabous</em> qui vous vendent une bidouille propriétaire  sortie du chapeau et qui vous certifie qu&#8217;elle est bien meilleure que les frameworks les plus robustes, matures et éprouvés.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/apatricio.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/apatricio.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/apatricio.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/apatricio.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/apatricio.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/apatricio.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/apatricio.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/apatricio.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/apatricio.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/apatricio.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/apatricio.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/apatricio.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/apatricio.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/apatricio.wordpress.com/11/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=apatricio.wordpress.com&amp;blog=7748836&amp;post=11&amp;subd=apatricio&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>https://apatricio.wordpress.com/2009/05/15/foutaises-apprenez-a-les-detecter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="https://secure.gravatar.com/avatar/89ad39471f97100fd8b53ed184b69f46?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">apatricio</media:title>
		</media:content>
	</item>
		<item>
		<title>Comparer des pommes avec des oranges.</title>
		<link>https://apatricio.wordpress.com/2009/05/14/hello-world/</link>
		<comments>https://apatricio.wordpress.com/2009/05/14/hello-world/#comments</comments>
		<pubDate>Thu, 14 May 2009 13:22:34 +0000</pubDate>
		<dc:creator>apatricio</dc:creator>
				<category><![CDATA[Actu / Anecdote]]></category>
		<category><![CDATA[benchmark]]></category>
		<category><![CDATA[db4o]]></category>
		<category><![CDATA[hibernate]]></category>
		<category><![CDATA[jpa]]></category>
		<category><![CDATA[méthodologie]]></category>
		<category><![CDATA[test]]></category>
		<category><![CDATA[versant]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Comparer des pommes avec des oranges est-il si stupide que cela? Cette phrase amplement utilisée pour signifier que deux sujets ne peuvent être comparés entre eux est-elle réellement pertinente? Pour ma part, les affirmations absolues n&#8217;ont pas leur place dans ce monde, tout est question de contexte. Il est ainsi intéressant de comparer des pommes [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=apatricio.wordpress.com&amp;blog=7748836&amp;post=1&amp;subd=apatricio&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><!-- 		@page { size: 21cm 29.7cm; margin: 2cm } 		P { margin-bottom: 0.21cm } -->Comparer des pommes avec des oranges est-il si stupide que cela?</p>
<p style="margin-bottom:0;">Cette phrase amplement utilisée pour signifier que deux sujets ne peuvent être comparés entre eux est-elle réellement pertinente? Pour ma part, les affirmations absolues n&#8217;ont pas leur place dans ce monde, tout est question de contexte. Il est ainsi intéressant de comparer des pommes avec des oranges dans différents contextes comme la nutrition ou le goût.</p>
<p style="margin-bottom:0;">Il y a quelques semaines, j&#8217;ai vérifié et corrigé une application destinée à comparer des outils de persistance d&#8217;objets java. Il y avait trois produits: un ORM mystérieux couplé à une BDD relationnelle et 2 Bases Objet.</p>
<p style="margin-bottom:0;">Cette expérience fût l&#8217;objet de longs débats plus sémantiques et méthodologiques que techniques entre l&#8217;étudiant (préparant son doctorat) et moi-même qui devais valider son code et ses mappings. Au delà des résultats des tests, ce qui m&#8217;intéressait était de permettre à l&#8217;étudiant de prendre du recul et si cela ressortait dans sa dissertation alors mon objectif serait atteint. Pour lui faire entendre raison il m&#8217;a fallu ruser et utiliser une autre comparaison, place aux engins motorisés.</p>
<p style="margin-bottom:0;">S&#8217;il fallait comparer une moto, une formule 1 et un 4&#215;4, beaucoup de questions me viendraient à l&#8217;esprit, et malheureusement l&#8217;étudiant en question a foncé tête baissée dans le code sans se les poser:</p>
<p style="margin-bottom:0;"><em>Qui pilote les engins?</em></p>
<ul>
<li>une personne sans permis</li>
</ul>
<ul>
<li>
<p style="margin-bottom:0;">une personne avec une expérience 	significative pour chacun des véhicules</p>
</li>
</ul>
<p style="margin-bottom:0;">L&#8217;expérience semble nécessaire, malheureusement l&#8217;étudiant n&#8217;avait pas de réelle expérience pratique et, oh mon dieu!, n&#8217;a fait que survoler les guides de référence. Résultats: des erreurs graves un peu partout. Après une première passe sur ces erreurs grossières, les performances étaient déjà 2 à 3 fois meilleures.</p>
<p style="margin-bottom:0;"><em>Où tester les 	véhicules ?</em></p>
<ul>
<li>sur un terrain neutre, très difficile à définir ?</li>
<li>sur un circuit ?</li>
</ul>
<p style="margin-bottom:0;">Tout dépend de l&#8217;objectif du test et de l&#8217;utilisation attendue par les destinataires du test. Admettons dans notre cas un test sur piste pour tester la vitesse pure des engins, en ligne droite, courbe, blah blah. Ici, le modèle Java utilisé avait du sens, tous les types d&#8217;associations étaient présents, ainsi que l&#8217;héritage. Petite chose irritante cependant, au lieu de se pencher sur un listing des fonctionnalités de chaque outil, le test cible les performances dans des cas d&#8217;utilisation de type batch. Les connaisseurs comprendront de suite le soucis: on ne choisit pas ce type d&#8217;outil pour faire des insertions/extractions massives de données mais bien pour permettre de concevoir une application qui nécessite une modélisation orientée objet.</p>
<p style="margin-bottom:0;"><em>Autorisation de prendre des 	raccourcis ?</em></p>
<ul>
<li> Seul le 4&#215;4 est capable de couper 		à travers champ pour le test</li>
<li>Alors que la formule 1 n&#8217;y 		survivrait pas.</li>
</ul>
<p style="margin-bottom:0;">Dans ce cas il semble nécessaire d&#8217;expliquer que le 4&#215;4 dispose d&#8217;un avantage certains, non négligeable sur ces concurrents.</p>
<p style="margin-bottom:0;">Si tous les véhicules peuvent prendre le raccourcis, la question se pose aussi, tout dépend de l&#8217;exhaustivité et de la lisibilité souhaitées. Ainsi un des deux fournisseurs de base objet a essayé de forcer l&#8217;étudiant à configurer son architecture autour du mode « stockage in-memory ». Oui mais voilà, des BDD relationnelles in-memory existent aussi, permettant des performances virtuellement explosives. L&#8217;étudiant a fait preuve d&#8217;impartialité et n&#8217;a pas accepté cette requête.</p>
<p style="margin-bottom:0;"><em>Quels pneus utiliser ?</em></p>
<p style="margin-bottom:0;">Certainement l&#8217;aspect pouvant impacter le plus les résultats. Utiliser des pneus en mousse pour la formule 1 invaliderait l&#8217;ensemble des tests. De nombreux points techniques relevant de ce domaine ont du être rectifiés dans le code. Dans le cas ORM + BDD relationnelle, ce n&#8217;est pas l&#8217;ORM qui est testé, c&#8217;est bien l&#8217;ensemble. Il semble donc intéressant de comparer les résultats avec 2 BDD relationnelles différentes.</p>
<p style="margin-bottom:0;"><strong>Épilogue</strong>: après différentes corrections et optimisations de bon sens (pas de triche genre cache de second niveau expressément tunné pour les cas d&#8217;utilisation), tous les tests (une 15ene) tournent entre 4 fois et 40 (oui 40!!!) fois plus vite.</p>
<p style="margin-bottom:0;"><strong>Conclusion</strong>: même si la solution ORM/BDD relationnelle s&#8217;en sort une fois de plus grandie, je persiste à penser que, comme la quasi totalité des comparatifs axés uniquement sur la performance, ce test est un nième benchmark peu utile. Posez-vous toujours et en priorité la question de votre contexte d&#8217;applications d&#8217;entreprise. Pensez d&#8217;abord fonctionnalités, pérennité et réputation des produits. Si un produit est réputé et massivement utilisé, c&#8217;est déjà un gage de sécurité.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/apatricio.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/apatricio.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/apatricio.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/apatricio.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/apatricio.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/apatricio.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/apatricio.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/apatricio.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/apatricio.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/apatricio.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/apatricio.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/apatricio.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/apatricio.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/apatricio.wordpress.com/1/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=apatricio.wordpress.com&amp;blog=7748836&amp;post=1&amp;subd=apatricio&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>https://apatricio.wordpress.com/2009/05/14/hello-world/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="https://secure.gravatar.com/avatar/89ad39471f97100fd8b53ed184b69f46?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">apatricio</media:title>
		</media:content>
	</item>
	</channel>
</rss>
