<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-405757572114494409</id><updated>2024-09-01T15:18:14.682-07:00</updated><category term="Débat"/><category term="ressources"/><category term="architecture"/><category term="Eclipse"/><category term="Softs"/><category term="Windows"/><category term="bash"/><category term="osx"/><category term="shell"/><title type='text'>noframeworks</title><subtitle type='html'>Des réflexions sur la conception, l&#39;architecture et le développement.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://noframeworks.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/405757572114494409/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://noframeworks.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Pom</name><uri>http://www.blogger.com/profile/07385313389447984906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>14</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-405757572114494409.post-4716659061697080575</id><published>2016-02-20T06:09:00.002-08:00</published><updated>2016-02-20T06:09:39.084-08:00</updated><title type='text'>Migration vers Github pages</title><content type='html'>Le blog est maintenant hébergé sur Github.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://pom421.github.io/&quot;&gt;http://pom421.github.io/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
See you! </content><link rel='replies' type='application/atom+xml' href='http://noframeworks.blogspot.com/feeds/4716659061697080575/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/405757572114494409/4716659061697080575' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/405757572114494409/posts/default/4716659061697080575'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/405757572114494409/posts/default/4716659061697080575'/><link rel='alternate' type='text/html' href='http://noframeworks.blogspot.com/2016/02/migration-vers-github-pages.html' title='Migration vers Github pages'/><author><name>Pom</name><uri>http://www.blogger.com/profile/07385313389447984906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-405757572114494409.post-5686632674509936308</id><published>2016-02-20T05:20:00.001-08:00</published><updated>2016-02-20T05:22:55.739-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="bash"/><category scheme="http://www.blogger.com/atom/ns#" term="osx"/><category scheme="http://www.blogger.com/atom/ns#" term="shell"/><title type='text'>Bash et Homebrew sous OS X</title><content type='html'>&lt;h2&gt;
Mettre à jour son bash sous Mac OS X 10.10&lt;/h2&gt;
Le bash en version 4 est très utile. Par exemple avec l&#39;expansion de paramètre qui permet ceci :&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;for file in *.pdf; do

&amp;nbsp; mv &quot;${file}&quot; &quot;${file,,}&quot;

done

&lt;/pre&gt;
&lt;br /&gt;
Ce script a pour but de prendre tous les fichiers pdf du répertoire courant et de modifier tous les noms pour qu&#39;ils soient en minuscules. ^^ fait exactement l&#39;inverse à savoir tout mettre en majuscule.&lt;br /&gt;
&lt;br /&gt;
Pour plus d&#39;informations sur ces substitutions : http://wiki.bash-hackers.org/syntax/pe#overview &lt;br /&gt;
&lt;br /&gt;
On peut faire des choses assez puissantes comme ne récupérer que certaines parties d&#39;une chaîne suivant une expression régulière. Ce qui est intéressant est la concision pour y parvenir.&lt;br /&gt;
&lt;br /&gt;
Mais sous OS X Yosemite, il y a un problème. La console nous renvoie ce message :&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;line 5: on trouve ${file,,}: bad substitution

&lt;/pre&gt;
&lt;br /&gt;
Un coup de man bash nous apprend que la bash qu&#39;on utilise est en version 3.2, version qui ne permet pas encore ce genre de substitution.&lt;br /&gt;
&lt;br /&gt;
Qu&#39;à cela ne tienne nous allons mettre à jour bash. On pourrait aller télécharger la dernière version (4.4 à l&#39;heure où je parle) sur le site officiel et l&#39;installer à la mano.&lt;br /&gt;
&lt;br /&gt;
Mais nous allons utiliser homebrew qui est un gestionnaire de paquets sous Mac et qui s&#39;installe très facilement. &lt;br /&gt;
&lt;br /&gt;
Pour cela, on va sur http://brew.sh/&lt;br /&gt;
On copie dans un terminal la commande demandée :&lt;br /&gt;
&lt;pre style=&quot;clear: both; margin-bottom: 0.9em; text-align: center;&quot;&gt;&lt;code id=&quot;selectable&quot;&gt;/usr/bin/ruby -e &quot;$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)&quot;&lt;/code&gt;&lt;/pre&gt;
On peut se passer d&#39;installer XCode pour l&#39;instant (question posée par l&#39;installer).&lt;br /&gt;
&lt;br /&gt;
Ensuite, on lance dans le terminal brew install bash.&lt;br /&gt;
Ceci a pour effet d&#39;installer un nouveau bash 4.3.42 dans /usr/local/Cellar/bash/4.3.42/bin/bash /bin/bash&lt;br /&gt;
&lt;br /&gt;
On renomme ensuite l&#39;ancien bash en bash-3&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;sudo mv /bin/bash /bin/bash-3&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Attention car alors nous n&#39;avons plus de bash disponible pour nos scripts! Corrigeons vite cela : &lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;sudo ln -s&amp;nbsp; /usr/local/Cellar/bash/4.3.42/bin/bash /bin/bash&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Et voila, notre script est maintenant fonctionnel!&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://noframeworks.blogspot.com/feeds/5686632674509936308/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/405757572114494409/5686632674509936308' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/405757572114494409/posts/default/5686632674509936308'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/405757572114494409/posts/default/5686632674509936308'/><link rel='alternate' type='text/html' href='http://noframeworks.blogspot.com/2016/02/bash-et-homebrew-sous-os-x.html' title='Bash et Homebrew sous OS X'/><author><name>Pom</name><uri>http://www.blogger.com/profile/07385313389447984906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-405757572114494409.post-4023509038667987375</id><published>2014-05-04T08:22:00.003-07:00</published><updated>2014-05-04T08:24:35.398-07:00</updated><title type='text'>Typologies d&#39;application</title><content type='html'>Il peut être intéressant de typer la diversité des applications d&#39;un système d&#39;information, ne serait-ce que pour dresser une grille de lecture de l&#39;informatique de gestion :&lt;br /&gt;
&lt;br /&gt;
Voici ce qu&#39;on peut résumer :&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;gestion :&amp;nbsp;&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;IHM web, IHM client lourd, application mainframe, etc..&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;restitution&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;batch + envoi de fichier, envoi de mail&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;décisionnel&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;infocentre&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;acquisition&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;scannage, EDI&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;archivage&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;sauvegarde&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;collaboratif&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;réseau social, forum, wiki&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;publication&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;blog, CMS&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;infrastructure&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;gestion certificat, courriel, blackberry, etc..&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;outillage&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;socle système d&#39;exploitation&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;socle pour un serveur d&#39;application&lt;/li&gt;
&lt;li&gt;socle pour un serveur de données&lt;/li&gt;
&lt;li&gt;socle pour un serveur d&#39;échange&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;socle de développement&amp;nbsp;&lt;/li&gt;
&lt;li&gt;outil pour la production, supervision, etc..&lt;/li&gt;
&lt;li&gt;librairies transverses au SI&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://noframeworks.blogspot.com/feeds/4023509038667987375/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/405757572114494409/4023509038667987375' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/405757572114494409/posts/default/4023509038667987375'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/405757572114494409/posts/default/4023509038667987375'/><link rel='alternate' type='text/html' href='http://noframeworks.blogspot.com/2014/05/typologie-dapplication.html' title='Typologies d&#39;application'/><author><name>Pom</name><uri>http://www.blogger.com/profile/07385313389447984906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-405757572114494409.post-2127772722168165968</id><published>2010-08-23T02:14:00.000-07:00</published><updated>2010-08-23T02:14:24.440-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Windows"/><title type='text'>Formater un disque de grosse capacité en FAT32</title><content type='html'>Si vous avez déjà essayé de formater un disque dur externe sous XP, vous avez peut être été surpris de voir que la limite était de 32 Go. &lt;br /&gt;
&lt;br /&gt;
Ce n&#39;est pas une limite de FAT32 mais un bridage voulu par Microsoft pour favoriser son système de fichier plus récent, NTFS. Mais le problème c&#39;est que NTFS est beaucoup moins facilement accessible d&#39;un poste sous Linux... &lt;br /&gt;
&lt;br /&gt;
Bref, ce bridage peut facilement être sauté en utilisant des outils tiers, dont le fameux &lt;a href=&quot;www.ridgecrop.demon.co.uk/index.htm?fat32format&quot;&gt;fat32format &lt;/a&gt;et son interface graphique : &lt;a href=&quot;http://www.ridgecrop.demon.co.uk/guiformat.htm&quot;&gt;guiformat&lt;/a&gt;. &lt;br /&gt;
&lt;br /&gt;
Bonus, le formatage sera bien plus rapide que la commande format de DOS ;)</content><link rel='replies' type='application/atom+xml' href='http://noframeworks.blogspot.com/feeds/2127772722168165968/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/405757572114494409/2127772722168165968' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/405757572114494409/posts/default/2127772722168165968'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/405757572114494409/posts/default/2127772722168165968'/><link rel='alternate' type='text/html' href='http://noframeworks.blogspot.com/2010/08/formater-un-disque-de-grosse-capacite.html' title='Formater un disque de grosse capacité en FAT32'/><author><name>Pom</name><uri>http://www.blogger.com/profile/07385313389447984906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-405757572114494409.post-5946166674877044897</id><published>2010-07-28T13:55:00.000-07:00</published><updated>2010-07-28T13:55:00.182-07:00</updated><title type='text'>Projets verts</title><content type='html'>J&#39;ai fait récemment le bilan des technologies que je trouve soit intéressantes, soit utiles au quotidien. Et j&#39;ai fait le projet de m&#39;améliorer dans ces domaines :&lt;br /&gt;
&lt;br /&gt;
Du côté des technos intéressantes :&amp;nbsp; &lt;br /&gt;
&lt;ul&gt;&lt;li&gt;HTML5 en général. C&#39;est très vaste, ça comprend les CSS3, le Javascript et jQuery, @font-face, ... Je suis même très tenté par JetPack pour faire des extensions dans FireFox...&lt;/li&gt;
&lt;/ul&gt;Il faut avouer que quand on voit ce qu&#39;il est capable de faire, ici une &lt;a href=&quot;http://www.dailymotion.com/video/xe6i6f_firefox-4-beta-2-la-demo-a-laquelle_tech&quot;&gt;vidéo de Mozilla&lt;/a&gt;, il y a de quoi être enthousiaste.&lt;br /&gt;
&lt;br /&gt;
Du côté des technos utiles :&amp;nbsp; &lt;br /&gt;
&lt;ul&gt;&lt;li&gt;le bash : quoi de plus utile que de bien connaître l&#39;interface la plus utilisée de Linux? Je me rends compte que c&#39;est cela le plus important et le point de départ pour mieux utiliser vi, awk et consorts. Et c&#39;est en utilisant ces outils qu&#39;on devient réellement efficace sous Linux. &lt;/li&gt;
&lt;li&gt;Linux : mieux comprendre le fonctionnement global du système. Pourquoi pas utiliser une Slackware pour cela ? On se fait des idées, mais ça ne doit pas être si difficile que ça ;)&lt;/li&gt;
&lt;/ul&gt;Voila, que de bonnes résolutions de vacances.&amp;nbsp; :)</content><link rel='replies' type='application/atom+xml' href='http://noframeworks.blogspot.com/feeds/5946166674877044897/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/405757572114494409/5946166674877044897' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/405757572114494409/posts/default/5946166674877044897'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/405757572114494409/posts/default/5946166674877044897'/><link rel='alternate' type='text/html' href='http://noframeworks.blogspot.com/2010/07/projets-verts.html' title='Projets verts'/><author><name>Pom</name><uri>http://www.blogger.com/profile/07385313389447984906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-405757572114494409.post-5953160363943736400</id><published>2009-09-25T05:48:00.000-07:00</published><updated>2009-09-25T08:49:06.883-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ressources"/><title type='text'>Quick reference cards &amp; cheat sheets</title><content type='html'>Bien souvent, quand on développe ou qu&#39;on administre un système, le plus important n&#39;est pas de savoir, mais de savoir où chercher.&lt;br /&gt;&lt;br /&gt;Et quand on devient un peu expérimente dans un domaine, il n&#39;est pas utile d&#39;avoir accès à une documentation pléthorique, mais juste à un certains nombre de recettes les plus récurrentes.&lt;br /&gt;&lt;br /&gt;C&#39;est pour cela que les quick reference cards &amp;amp; les cheat sheets sont intéressants, puisqu&#39;ils résument un sujet à un pense-bête d&#39;une page ou deux (rarement plus).&lt;br /&gt;&lt;br /&gt;2 ressources qui listent ce genre de documentation sur le web :&lt;br /&gt;- &lt;a href=&quot;http://www.digilife.be/quickreferences/quickrefs.htm&quot;&gt;http://www.digilife.be/quickreferences/quickrefs.htm&lt;/a&gt;&lt;br /&gt;- &lt;a href=&quot;http://www.cheat-sheets.org/&quot;&gt;http://www.cheat-sheets.org/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;La granularité optimale de l&#39;information est dépendante du contexte. Il y a un temps pour lire un livre de 1000 pages sur le Java, et un temps où il faut avancer et il est préférable dans ce cas de n&#39;avoir qu&#39;une référence sur le Java de 2 pages.</content><link rel='replies' type='application/atom+xml' href='http://noframeworks.blogspot.com/feeds/5953160363943736400/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/405757572114494409/5953160363943736400' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/405757572114494409/posts/default/5953160363943736400'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/405757572114494409/posts/default/5953160363943736400'/><link rel='alternate' type='text/html' href='http://noframeworks.blogspot.com/2009/09/quick-reference-cards-cheat-sheet.html' title='Quick reference cards &amp; cheat sheets'/><author><name>Pom</name><uri>http://www.blogger.com/profile/07385313389447984906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-405757572114494409.post-2011570105286654455</id><published>2009-05-04T06:26:00.000-07:00</published><updated>2009-09-25T06:01:03.579-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ressources"/><title type='text'>HTML begins : templates &amp; validation</title><content type='html'>A chaque nouveau démarrage d&#39;un projet Web, se pose la question d&#39;utiliser une forme standard du HTM. Le copier-coller étant à la base de l&#39;informatique, voici une référence de 2 templates, l&#39;un avec la syntaxe avec des CSS et JS déportés, l&#39;autre avec ces mêmes CSS &amp;amp; JS en local.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;1ère version (avec style et script déportés)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; xml:lang=&quot;fr&quot; lang=&quot;fr&quot;&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;&amp;lt;title&amp;gt;&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;lt;link href=&quot;nn4.css&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot; /&amp;gt;&lt;br /&gt;&amp;lt;script src=&quot;script.js&quot; type=&quot;text/javascript&quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;lt;h1&amp;gt;Coucou&amp;lt;/h1&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Exemple 2  (avec style et script dans la page) :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; xml:lang=&quot;fr&quot; lang=&quot;fr&quot;&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;&amp;lt;title&amp;gt;&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;lt;style type=&quot;text/css&quot;&amp;gt;&lt;br /&gt;&amp;lt;!-- mettre css ici --&amp;gt;&lt;br /&gt;&amp;lt;/style&amp;gt;&lt;br /&gt;&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;&lt;br /&gt;&amp;lt;!-- mettre js ici --&amp;gt;&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;lt;h1&amp;gt;Coucou&amp;lt;/h1&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Pour valider son HTML : &lt;a href=&quot;http://validator.w3.org/check&quot;&gt;http://validator.w3.org/check&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;L&#39;image à afficher pour démontrer son passage de validation.&lt;br /&gt;&lt;br /&gt;&amp;lt;p&amp;gt;&lt;br /&gt;   &amp;lt;a href=&quot;http://validator.w3.org/check?uri=referer&quot;&amp;gt;&amp;lt;img&lt;br /&gt;       src=&quot;http://www.w3.org/Icons/valid-xhtml10-blue&quot;&lt;br /&gt;       alt=&quot;Valid XHTML 1.0 Strict&quot; height=&quot;31&quot; width=&quot;88&quot; /&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt; &amp;lt;/p&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Pour valider son CSS : &lt;a href=&quot;http://jigsaw.w3.org/css-validator/&quot;&gt;http://jigsaw.w3.org/css-validator/&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;L&#39;image à afficher pour démontrer son passage de validation.&lt;br /&gt;&lt;br /&gt;&amp;lt;p&amp;gt;&lt;br /&gt;&amp;lt;a href=&quot;http://jigsaw.w3.org/css-validator/check/referer&quot;&amp;gt;&lt;br /&gt;&amp;lt;img style=&quot;border: 0pt none ; width: 88px; height: 31px;&quot; src=&quot;http://jigsaw.w3.org/css-validator/images/vcss-blue&quot; alt=&quot;CSS Valide !&quot; /&amp;gt;&lt;br /&gt;&amp;lt;/a&amp;gt;&lt;br /&gt;&amp;lt;/p&amp;gt;&lt;br /&gt;&lt;br /&gt;Edit : &lt;a href=&quot;http://www.alsacreations.com/page/squelettor/&quot;&gt;un module de Alsacreation&lt;/a&gt; génère ce prologue très bien. Le seul truc manquant, c&#39;est la ligne XML donnant l&#39;encodage utilisé pour le reste du document.</content><link rel='replies' type='application/atom+xml' href='http://noframeworks.blogspot.com/feeds/2011570105286654455/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/405757572114494409/2011570105286654455' title='2 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/405757572114494409/posts/default/2011570105286654455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/405757572114494409/posts/default/2011570105286654455'/><link rel='alternate' type='text/html' href='http://noframeworks.blogspot.com/2009/05/modele-html.html' title='HTML begins : templates &amp; validation'/><author><name>Pom</name><uri>http://www.blogger.com/profile/07385313389447984906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-405757572114494409.post-3564585990126899042</id><published>2009-03-30T02:56:00.000-07:00</published><updated>2009-09-25T06:01:30.409-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="architecture"/><category scheme="http://www.blogger.com/atom/ns#" term="Débat"/><title type='text'>Le facteur clé d&#39;un bon framework</title><content type='html'>Lu sur LE Lexpage :&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Rasmus lerdorf dit que pour lui, chaque société / groupe devrait avoir son propre framework&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Le problème avec les frameworks, c&#39;est que l&#39;on cherche la balle d&#39;argent, le framework ultime. C&#39;est une recherche de perfection qui n&#39;a pas de fin et qui ne pourra jamais être totalement satisfaite. Il y aura toujours un cas à la marge qui ne fonctionnera pas. Et au bout d&#39;un moment, les gens ont envie de changer, c&#39;est humain. C&#39;est pas un hasard qu&#39;on parle de nouvelles technologies. Qu&#39;on passe de client-lourd à client léger, et que ça oscille depuis la nuit des temps (de l&#39;informatique).&lt;br /&gt;&lt;br /&gt;Donc comme aucun framework n&#39;est appelé à durer, les seuls bons sont ceux qui se rendent le moins indispensable. Quand Spring parle d&#39;injection de dépendance, et que leur philosophie est de créer de simple POJO en Java, c&#39;est positif. Ca fait que l&#39;on peut utiliser Spring, mais que le chantier pour éventuellement passer de Spring à autre chose n&#39;est pas si compliqué ni coûteux, car les POJO sont réutilisables sans rien faire.&lt;br /&gt;&lt;br /&gt;De la même façon, j&#39;avais été favorablement impressionné par iBatis (et pas par toutes les solutions d&#39;ORM traditionelles style Hibernate). Parce que l&#39;idée d&#39;iBatis c&#39;est d&#39;utiliser le langage le plus connu, et le plus performant pour gérer une logique ensembliste : le SQL. Et iBatis se charge juste de charger/décharger les résultats des requêtes dans des beans Java. Là aussi, si iBatis vous ennuie au bout d&#39;un moment, le chantier de réécriture n&#39;est pas pharaonique.&lt;br /&gt;&lt;br /&gt;Donc pour moi, le critère clé d&#39;un bon framework c&#39;est d&#39;arriver à s&#39;en passer assez rapidement (si le besoin s&#39;en fait sentir).&lt;br /&gt;&lt;br /&gt;Pour Django ou Rails, je les vois plus comme des outils-frameworks. C&#39;est un peu l&#39;équivalent de Ant+(Spring+Hibernate+...). La différence avec un framework pur, c&#39;est qu&#39;il y a un socle, une console, qui permet de lancer des commandes (comme Ant). L&#39;intérêt de ces outils, c&#39;est le protoypage rapide d&#39;application. Tout est fait pour aller vite. Mais il faut bien connaitre bien sûr.&lt;br /&gt;&lt;br /&gt;Mais ce que j&#39;aime dans Django, (même s&#39;il n&#39;a pas le critère clé du bon framework), c&#39;est sa philosophie très cohérente dans les templates, l&#39;ORM, la gestion des URL.&lt;br /&gt;&lt;br /&gt;Et faire une pile aussi cohérente en Java demanderait un gros boulot...</content><link rel='replies' type='application/atom+xml' href='http://noframeworks.blogspot.com/feeds/3564585990126899042/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/405757572114494409/3564585990126899042' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/405757572114494409/posts/default/3564585990126899042'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/405757572114494409/posts/default/3564585990126899042'/><link rel='alternate' type='text/html' href='http://noframeworks.blogspot.com/2009/03/le-facteur-cle-dun-bon-framework.html' title='Le facteur clé d&#39;un bon framework'/><author><name>Pom</name><uri>http://www.blogger.com/profile/07385313389447984906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-405757572114494409.post-1936267230530667946</id><published>2008-12-23T04:48:00.001-08:00</published><updated>2009-09-25T06:01:52.721-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ressources"/><title type='text'>UTF-8</title><content type='html'>Après quelques frayeurs en Python, qui semble-t-il gérait mal les accents, je me suis remis à essayer de comprendre les arcanes des encodages...&lt;br /&gt;&lt;br /&gt;Dans mon cas, j&#39;avais écrit cette fonction :&lt;br /&gt;&lt;blockquote&gt; def returnStatut(self):&lt;br /&gt;  if self.dfin is not None:&lt;br /&gt;    return &#39;Obsolète&#39;&lt;br /&gt;  if self.dvalid is not None:&lt;br /&gt;    return &#39;Validé&#39;&lt;br /&gt;  else :&lt;br /&gt;    return &#39;Créé&#39;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;En ayant soin de marquer au début du fichier :&lt;br /&gt;&lt;blockquote&gt;# coding: UTF-8&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;et quand je lançais mon application Django, je ne voyais rien, pas même une erreur.&lt;br /&gt;&lt;br /&gt;J&#39;ait tenté la commande :&lt;br /&gt;&lt;blockquote&gt;chaine = unicode(&#39;Créé&#39;, &#39;UTF-8&#39;)&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;qui a foiré lamentablement.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;chaine = unicode(&#39;Créé&#39;, &#39;cp1252&#39;)&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;lui a fonctionné.&lt;br /&gt;&lt;br /&gt;En fait, le problème venait de Notepad++, mon éditeur qui par défaut fonctionne en ANSI, qui doit être proche du cp1252 (chère à Eclipse et Windows, vu que je connais ce format pour ça).&lt;br /&gt;&lt;br /&gt;Toujours est-il qu&#39;après avoir changé le format de base de Notepad++ en UTF-8, mon problème a disparu. Alleluia!&lt;br /&gt;&lt;br /&gt;Comme quoi aussi, il faut bien connaitre les alias entre les différents encodages.&lt;br /&gt;ANSI = cp1252&lt;br /&gt;ISO = latin1 = ISO-8859-1&lt;br /&gt;&lt;br /&gt;Vu que chaque outils utilisent son propre vocabulaire, ça devient vite le bordel.&lt;br /&gt;&lt;br /&gt;Ce qui m&#39;étonne c&#39;est que je n&#39;ai jamais eu ce type de problème en Java?&lt;br /&gt;&lt;br /&gt;Ressources :&lt;br /&gt;&lt;br /&gt;Voici pourtant &lt;a href=&quot;http://surunairdejava.blogspot.com/2007/05/utf-8-encoding.html&quot;&gt;un lien &lt;/a&gt;qui explique bien les choses à regarder quand on a pourtant un problème en Unicode et J2EE (ça fait du boulot!)&lt;br /&gt;&lt;br /&gt;Une &lt;a href=&quot;http://pythonfacile.free.fr/python/unicode.html&quot;&gt;explication simple &lt;/a&gt;de l&#39;unicode en Python.&lt;br /&gt;&lt;br /&gt;Une &lt;a href=&quot;http://drj11.wordpress.com/2007/05/14/python-how-is-sysstdoutencoding-chosen/&quot;&gt;très bonne discussion &lt;/a&gt;qui s&#39;étonne de la fin de la possibilité de forcer l&#39;encodage pour sys.stdout.&lt;br /&gt;&lt;br /&gt;Un &lt;a href=&quot;http://www.pyzine.com/Issue008/Section_Articles/article_Encodings.html&quot;&gt;article du PyZine&lt;/a&gt; sur l&#39;encodage.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://docs.python.org/3.0/howto/unicode.html#unicode-howto&quot;&gt;Un point &lt;/a&gt;sur le site officiel de Python&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.joelonsoftware.com/articles/Unicode.html&quot;&gt;Un guide&lt;/a&gt; sur le minimum à connaitre par tous développeur (selon l&#39;auteur)</content><link rel='replies' type='application/atom+xml' href='http://noframeworks.blogspot.com/feeds/1936267230530667946/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/405757572114494409/1936267230530667946' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/405757572114494409/posts/default/1936267230530667946'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/405757572114494409/posts/default/1936267230530667946'/><link rel='alternate' type='text/html' href='http://noframeworks.blogspot.com/2008/12/utf-8.html' title='UTF-8'/><author><name>Pom</name><uri>http://www.blogger.com/profile/07385313389447984906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-405757572114494409.post-7797431749451711519</id><published>2008-07-08T05:34:00.001-07:00</published><updated>2008-07-08T05:51:45.405-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Softs"/><title type='text'>Expressions régulières (regex) dans Notepad2</title><content type='html'>Je suis un grand fan de &lt;a href=&quot;http://www.flos-freeware.ch/notepad2.html&quot;&gt;Notepad2&lt;/a&gt;. C&#39;est plutôt mignon, tout petit, (il n&#39;y a pas d&#39;install ni rien, juste un seul fichier .exe à lancer), il se lance instantanément, et étant basé sur Scintilla, il est aussi assez puissant. (il est loin d&#39;être ridicule par rapport à Ultraedit ou PSPad par exemple).&lt;br /&gt;&lt;br /&gt;Malheureusement, il n&#39;y a pas de documentation digne de ce nom pour savoir comment utiliser l&#39;outil Replace.&lt;br /&gt;&lt;br /&gt;Or j&#39;en ai eu besoin récemment, pour transformer une liste de mots séparés par des virgules, et remplacer ces virgules par des sauts de lignes.&lt;br /&gt;&lt;br /&gt;Voila la manip&#39; :&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjj2gcZ3fqZpiqcQDygPW-U2fYqek8wUMgFmbkkFoRtopk_i4yK7pKvrFvtjS-km6AuSbt1tvjT0HzBYF0RttvtpcK3n2kOBzi-0iwMdYdtOnlR3TqdujGqy2z4WQDgan75JrJnEWLcfgc/s1600-h/deb.png&quot;&gt;&lt;img style=&quot;cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjj2gcZ3fqZpiqcQDygPW-U2fYqek8wUMgFmbkkFoRtopk_i4yK7pKvrFvtjS-km6AuSbt1tvjT0HzBYF0RttvtpcK3n2kOBzi-0iwMdYdtOnlR3TqdujGqy2z4WQDgan75JrJnEWLcfgc/s400/deb.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5220621560638944770&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipIaSMKxbX2M55wMoOC3bTljUKibLY2JXcSww6lHxn9_n62LiD1QoP0zvk_J8-mcOs-Enso37CuJiX9MRN7DFajzPgsYFB5pgjBU4HzA0uIisajytWBl_Y6_sMEMlKd9KJM5U3nKSKdTw/s1600-h/inter.png&quot;&gt;  &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Allez dans Edit &gt; Replace :&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipIaSMKxbX2M55wMoOC3bTljUKibLY2JXcSww6lHxn9_n62LiD1QoP0zvk_J8-mcOs-Enso37CuJiX9MRN7DFajzPgsYFB5pgjBU4HzA0uIisajytWBl_Y6_sMEMlKd9KJM5U3nKSKdTw/s1600-h/inter.png&quot;&gt;&lt;img style=&quot;cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipIaSMKxbX2M55wMoOC3bTljUKibLY2JXcSww6lHxn9_n62LiD1QoP0zvk_J8-mcOs-Enso37CuJiX9MRN7DFajzPgsYFB5pgjBU4HzA0uIisajytWBl_Y6_sMEMlKd9KJM5U3nKSKdTw/s400/inter.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5220621626794780482&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Le point important est de cocher &lt;span style=&quot;font-weight: bold;&quot;&gt;Transform backlashes&lt;/span&gt; , ce qui demande à Notepad2 d&#39;interpréter le \n comme le caractère ASCII &quot;nouvelle ligne&quot; (et non pas 2 caractères)&lt;br /&gt;&lt;br /&gt;Et voila le résultat.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCtmBopXhrmsUu9Y3VvkXq3WCR8JE2sRR2gP1X-xc4hciKo-jWXf4X8P-T1CbfW5bh6seP52aAJ_vpSqBgEfVxZX8LAEjGL13jwDub09fkqoA52BiO2bwFSvJZpmiXg-aQyqcYvbjTyMc/s1600-h/final.png&quot;&gt;&lt;img style=&quot;cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCtmBopXhrmsUu9Y3VvkXq3WCR8JE2sRR2gP1X-xc4hciKo-jWXf4X8P-T1CbfW5bh6seP52aAJ_vpSqBgEfVxZX8LAEjGL13jwDub09fkqoA52BiO2bwFSvJZpmiXg-aQyqcYvbjTyMc/s400/final.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5220621679671825490&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;En bonus, &lt;a href=&quot;http://www.grymoire.com/Unix/Regular.html&quot;&gt;un lien sur les Regex Unix &lt;/a&gt;(voir la partie Regex Perl, acceptés par Notepad2 donc).</content><link rel='replies' type='application/atom+xml' href='http://noframeworks.blogspot.com/feeds/7797431749451711519/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/405757572114494409/7797431749451711519' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/405757572114494409/posts/default/7797431749451711519'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/405757572114494409/posts/default/7797431749451711519'/><link rel='alternate' type='text/html' href='http://noframeworks.blogspot.com/2008/07/expression-rgulires-regex-dans-notepad2.html' title='Expressions régulières (regex) dans Notepad2'/><author><name>Pom</name><uri>http://www.blogger.com/profile/07385313389447984906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjj2gcZ3fqZpiqcQDygPW-U2fYqek8wUMgFmbkkFoRtopk_i4yK7pKvrFvtjS-km6AuSbt1tvjT0HzBYF0RttvtpcK3n2kOBzi-0iwMdYdtOnlR3TqdujGqy2z4WQDgan75JrJnEWLcfgc/s72-c/deb.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-405757572114494409.post-4174591515682501803</id><published>2008-04-18T07:40:00.000-07:00</published><updated>2008-04-18T07:56:21.338-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Eclipse"/><title type='text'>Truc Eclipse</title><content type='html'>Un truc qui arrive souvent dans un projet sous Eclispe, c&#39;est de devoir jongler entre plusieurs workspace. La manière directe, c&#39;est de changer le workspace, ce qui a pour effet d&#39;éteindre et de relancer l&#39;appli.&lt;br /&gt;&lt;br /&gt;Je préfère faire carrément 2 raccourcis.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5nIRDuPyRA89ovy7rqZGhJ3ANeurXqQYcfFAmq9AbNSbkbMHLahAZ0WM4wfeKGWZDwHHiLHGkagosxDiEQnVGwZKT-HCLJxlVeRSCdc5kEcJzYkutJXF2_IRIb1I1yvwDhBL7N7J41nQ/s1600-h/europas.png&quot;&gt;&lt;img style=&quot;cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5nIRDuPyRA89ovy7rqZGhJ3ANeurXqQYcfFAmq9AbNSbkbMHLahAZ0WM4wfeKGWZDwHHiLHGkagosxDiEQnVGwZKT-HCLJxlVeRSCdc5kEcJzYkutJXF2_IRIb1I1yvwDhBL7N7J41nQ/s400/europas.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5190597234610661634&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Et configurer le raccourci pour taper dans le bon workspace.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivxnj45RPdBNpaeBtd89sXf9k5oFoO2Z4H_Z4rBeuEjjrbHViAOtEuoN0VKw5FLqOm_zgj0z78K_pv6r-SX6JaJWLK3A2jPCt9roVRIZ7bd9ogmgfmP_L_lyA3hJpUPjtiiNsxwKITK0c/s1600-h/europas2.png&quot;&gt;&lt;img style=&quot;cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivxnj45RPdBNpaeBtd89sXf9k5oFoO2Z4H_Z4rBeuEjjrbHViAOtEuoN0VKw5FLqOm_zgj0z78K_pv6r-SX6JaJWLK3A2jPCt9roVRIZ7bd9ogmgfmP_L_lyA3hJpUPjtiiNsxwKITK0c/s400/europas2.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5190598158028630290&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;eclipse.exe -data C:\chemin-du-workspace&lt;br /&gt;&lt;br /&gt;Lancer 2 eclipses à la fois permet ensuite de &quot;alt-tabber&quot; entre les 2 environnements.</content><link rel='replies' type='application/atom+xml' href='http://noframeworks.blogspot.com/feeds/4174591515682501803/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/405757572114494409/4174591515682501803' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/405757572114494409/posts/default/4174591515682501803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/405757572114494409/posts/default/4174591515682501803'/><link rel='alternate' type='text/html' href='http://noframeworks.blogspot.com/2008/04/truc-eclipse.html' title='Truc Eclipse'/><author><name>Pom</name><uri>http://www.blogger.com/profile/07385313389447984906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5nIRDuPyRA89ovy7rqZGhJ3ANeurXqQYcfFAmq9AbNSbkbMHLahAZ0WM4wfeKGWZDwHHiLHGkagosxDiEQnVGwZKT-HCLJxlVeRSCdc5kEcJzYkutJXF2_IRIb1I1yvwDhBL7N7J41nQ/s72-c/europas.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-405757572114494409.post-2232989415067873757</id><published>2008-03-25T10:25:00.000-07:00</published><updated>2010-07-30T14:03:57.502-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Débat"/><title type='text'>Essentiel Java</title><content type='html'>&lt;a href=&quot;http://2.bp.blogspot.com/_f4sMkQSDNLA/R-kx0sr0vzI/AAAAAAAAAHQ/WMakZySqCjM/s1600-h/wicketjump.gif&quot; onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5181727627684396850&quot; src=&quot;http://2.bp.blogspot.com/_f4sMkQSDNLA/R-kx0sr0vzI/AAAAAAAAAHQ/WMakZySqCjM/s400/wicketjump.gif&quot; style=&quot;cursor: pointer; float: left; margin: 0pt 10px 10px 0pt;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
Non, vous n&#39;êtes pas seul à trouver des limites à l&#39;approche : avec-1-framework-c-est-mieux.&lt;br /&gt;
&lt;br /&gt;
Voyez plutôt cet article sur architectes.it : &lt;a href=&quot;http://www.architectes.it/index.php/post/2008/02/04/Une-alternative-a-J2EE-:-Essential-Java2&quot;&gt;Une alternative à J2EE&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
L&#39;idée de Pirmin Lemberger est de définir un label Essentiel Java, qui permet de qualifier le code source d’une application. Ce label donnera l&#39;assurance du respect de principes de simplicité et de sobriété.&lt;br /&gt;
&lt;br /&gt;
Voila quelques excellents arguments qu&#39;il développe :&lt;br /&gt;
&lt;blockquote&gt;Envisageons donc la tâche consistant à assimiler un ensemble réaliste de technologies. Pour fixer les idées disons : J2EE + Spring + Hibernate + Struts. A l’évidence cette tâche n’est pas inhumaine mais elle nécessite, même pour une tête bien faite, plusieurs années de pratique quotidienne. On le constate, cette durée &lt;span style=&quot;font-weight: bold;&quot;&gt;excède de loin la durée des dites technologies&lt;/span&gt;.&lt;/blockquote&gt;&lt;br /&gt;
Et :&lt;br /&gt;
&lt;blockquote&gt;Loin de simplifier quoi que ce soit, la seule présence d’un framework induit alors un mode de &lt;span style=&quot;font-weight: bold;&quot;&gt;transmission oral &lt;/span&gt;du savoir-faire d’un ou deux experts transformés de fait en petits &lt;span style=&quot;font-weight: bold;&quot;&gt;gourous&lt;/span&gt;. Mode de transmission qui s’avère souvent redondant, confus et inefficace. Dans ces cas de figure, le travail du concepteur d’une application s’apparente d’avantage à celui d’un archéologue que celui d’un ingénieur.&lt;/blockquote&gt;&lt;br /&gt;
&lt;br /&gt;
Enfin :&lt;br /&gt;
&lt;blockquote&gt;... la comparaison objective de plusieurs frameworks relève carrément de l’impossible lorsqu’ils sont déjà &lt;span style=&quot;font-weight: bold;&quot;&gt;complexes individuellement&lt;/span&gt;. Dans ces conditions un choix rationnel est difficile. Dans le meilleur des cas, des &lt;span style=&quot;font-weight: bold;&quot;&gt;considérations commerciales&lt;/span&gt; objectives l’emportent. Plus souvent &lt;span style=&quot;font-weight: bold;&quot;&gt;l’idéologie &lt;/span&gt;et le &lt;span style=&quot;font-weight: bold;&quot;&gt;conformisme intellectuel&lt;/span&gt; naturel à l’esprit humain prennent le dessus.&lt;/blockquote&gt;&lt;br /&gt;
Les problèmes évoqués, sont bien là.&lt;br /&gt;
Les décideurs ont besoin de répères et les frameworks (tout comme les techno, style XML.. ou les méthodes, style CMMI) les rassurent.&lt;br /&gt;
Les créateurs de frameworks ont aussi tout intérêt à diffuser largement leurs idées, pour des raisons commerciales, d&#39;ego, de satisfaction intellectuelle.&lt;br /&gt;
&lt;br /&gt;
Mais au final, quel est le gain réel pour l&#39;utilisateur, en prenant en compte ce qu&#39;il a gagné &quot;en puissance de feu&quot; en retirant le temps passé à apprendre ledit framework?&lt;br /&gt;
&lt;br /&gt;
Concernant l&#39;idée de Pirmin Lemberger, est-ce que l&#39;utilisation d&#39;un label permettra de définir qu&#39;une application est simple et sobre? Je comprends l&#39;idée de définir un sous-ensemble d&#39;API qui seraient dans le périmètre &quot;Essential Java&quot;, mais le problème est qu&#39;il est soumis à interprétation. Pour certains (dont je ne fais pas partie), JSF est simple et standard. Pour d&#39;autres, Log4J (dont je fais partie) est simple et non standard.&lt;br /&gt;
&lt;br /&gt;
Où situer la limite?</content><link rel='replies' type='application/atom+xml' href='http://noframeworks.blogspot.com/feeds/2232989415067873757/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/405757572114494409/2232989415067873757' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/405757572114494409/posts/default/2232989415067873757'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/405757572114494409/posts/default/2232989415067873757'/><link rel='alternate' type='text/html' href='http://noframeworks.blogspot.com/2008/03/non-vous-ntes-pas-seul-trouver-des.html' title='Essentiel Java'/><author><name>Pom</name><uri>http://www.blogger.com/profile/07385313389447984906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_f4sMkQSDNLA/R-kx0sr0vzI/AAAAAAAAAHQ/WMakZySqCjM/s72-c/wicketjump.gif" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-405757572114494409.post-4742018924064509036</id><published>2008-03-25T09:29:00.001-07:00</published><updated>2009-09-25T06:02:37.116-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Débat"/><title type='text'>The beginning is the end is the beginning</title><content type='html'>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFyoFe1BFbAJ1s1XLnktkHBVDO_r6Xem4IryQgEOhyRENi35Frap1NKcgxVy30LvKMk8h-cooylQrLSMqWLdQAC6Rj0lwqfC-nOnaIiz1EUDoRFrtyjBVbrvpkMuyEXdz49X4n9o-flIQ/s1600-h/mexican.gif&quot;&gt;&lt;img style=&quot;margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFyoFe1BFbAJ1s1XLnktkHBVDO_r6Xem4IryQgEOhyRENi35Frap1NKcgxVy30LvKMk8h-cooylQrLSMqWLdQAC6Rj0lwqfC-nOnaIiz1EUDoRFrtyjBVbrvpkMuyEXdz49X4n9o-flIQ/s400/mexican.gif&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5181722220320571170&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;A quoi sert le blog &lt;span style=&quot;background-color: rgb(255, 255, 0);&quot;&gt;noframeworks&lt;/span&gt;?&lt;br /&gt;&lt;br /&gt;Ce blog veut donner des exemples pratiques sur la pratique et la théorie informatique, à 3 niveaux : analyse, conception  et développement. Par exemple, je projette de parler d&#39;analyse du domaine métier, de pattern d&#39;architecture &amp;amp; de conception et des bonnes pratiques de développement.&lt;br /&gt;&lt;br /&gt;Ces billets n&#39;engageront que moi, et me permettront de mettre à plat ce que je pense.&lt;br /&gt;&lt;br /&gt;Ce que je constate, c&#39;est la fuite en avant de la communauté Java, vers toujours plus d&#39;outillages, toujours plus de frameworks. Ces outils, certes très intéressants, sont complexes à appréhender, fragilise la compréhension du code, puisqu&#39;il ne devient plus explicite, et tend à enfermer le développeur en lui promettant l&#39;inverse.&lt;br /&gt;&lt;br /&gt;A l&#39;inverse, vous avez les patterns, qui eux sont connus et stables dans le temps, ou les standards Java qui sont gravés dans le marbre de l&#39;histoire.&lt;br /&gt;&lt;br /&gt;La question est : à l&#39;heure actuelle, si je veux faire un développement Java Web, quelle architecture puis-je retenir, qui combinent, simplicité et facilité de maintenance?&lt;br /&gt;&lt;br /&gt;Suis-je obligé d&#39;utiliser les Spring, Seam, Struts, Hibernate, GWT, ... pour faire une application de qualité?&lt;br /&gt;&lt;br /&gt;Il me semble que la communauté Java souffre d&#39;un excès d&#39;outils, de &quot;modes&quot; (bon, c&#39;est un signe de vitalité, en même temps...) et qu&#39;il serait utile d&#39;apporter des réponses claires, précises et simples, quand cela est possible.&lt;br /&gt;&lt;br /&gt;Voila, le but de &lt;span style=&quot;background-color: rgb(255, 255, 0);&quot;&gt;noframeworks&lt;/span&gt;.</content><link rel='replies' type='application/atom+xml' href='http://noframeworks.blogspot.com/feeds/4742018924064509036/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/405757572114494409/4742018924064509036' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/405757572114494409/posts/default/4742018924064509036'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/405757572114494409/posts/default/4742018924064509036'/><link rel='alternate' type='text/html' href='http://noframeworks.blogspot.com/2008/03/quoi-sert-le-blog-noframeworks-ce-blog.html' title='The beginning is the end is the beginning'/><author><name>Pom</name><uri>http://www.blogger.com/profile/07385313389447984906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFyoFe1BFbAJ1s1XLnktkHBVDO_r6Xem4IryQgEOhyRENi35Frap1NKcgxVy30LvKMk8h-cooylQrLSMqWLdQAC6Rj0lwqfC-nOnaIiz1EUDoRFrtyjBVbrvpkMuyEXdz49X4n9o-flIQ/s72-c/mexican.gif" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-405757572114494409.post-5960866643816423897</id><published>2008-03-06T07:43:00.000-08:00</published><updated>2014-05-04T08:34:05.591-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="architecture"/><title type='text'>L&#39;architecture à 5 couches</title><content type='html'>Une pratique répandue dans l&#39;architecture d&#39;une application de gestion, est d&#39;utiliser une solution à &lt;span style=&quot;font-weight: bold;&quot;&gt;5 couches&lt;/span&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;Qu&#39;est-ce qui caractérise une application de gestion ?&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Une application de gestion, comme son nom l&#39;indique, doit gérer des données. Ce qui implique l&#39;utilisation d&#39;une base de données (la plupart du temps relationnel). Cela implique également une interface pour permettre à des gestionnaire de voir et modifier ces données.&lt;br /&gt;
&lt;br /&gt;
Tout n&#39;est pas assimilable à une application de gestion. Il y a des besoins d&#39;informatiques embarqués, d&#39;informatiques industriel, des logiciels utilitaires, etc.. Dans ces cas là, le découpage en 5 couches ne s&#39;appliquent pas.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;Pourquoi distinguer des couches? &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Le but de la conception en général, est d&#39;attribuer des responsabilités. Définir des couches est un moyen de séparer les responsabilités et ainsi, de minimiser l&#39;impact du changement.&lt;br /&gt;
&lt;br /&gt;
Maintenant que l&#39;avertissement est donné, je vais clarifier le rôle de ces 5 couches.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIPYVXKrw8NarmQsTXsdN1uSV3eXy6rJDBYcy8Tte5GpVcnaN7qwbxjSkqzqw8D0VPExixs_Je7q0IvKEDbK0Ec_1yWmKJpl_MXdFCtizq6TVsUEfnqXc3ybNKZ4X7kYRADP7d9juFK-M/s1600-h/5couches.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIPYVXKrw8NarmQsTXsdN1uSV3eXy6rJDBYcy8Tte5GpVcnaN7qwbxjSkqzqw8D0VPExixs_Je7q0IvKEDbK0Ec_1yWmKJpl_MXdFCtizq6TVsUEfnqXc3ybNKZ4X7kYRADP7d9juFK-M/s400/5couches.png&quot; id=&quot;BLOGGER_PHOTO_ID_5176797535917364882&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;la couche Présentation&lt;/span&gt;&lt;br /&gt;Cette couche est l&#39;apparence visuelle de l&#39;application, telle qu&#39;elle sera perçue par l&#39;utilisateur finale. C&#39;est ici que vous aurez les images, les pages JSP, etc..&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;la couche Coordination&lt;/span&gt;&lt;br /&gt;Ici vous avez les contrôleurs du pattern MVC. C&#39;est à dire des composants qui interceptent les interactions de l&#39;utilisateur et qui gère la cinématique (ou logique) des écrans.&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;la couche Service&lt;/span&gt;&lt;br /&gt;La couche Service regroupe tous les services, ou réalisation de cas d&#39;utilisation.&amp;nbsp;L&#39;idée est d&#39;exposer ces services pour différentes applications clientes.&amp;nbsp;On peut retrouver&amp;nbsp;dans cette couche les Web Services d&#39;une architecture SOA ou les service RESTful. On peut également trouver des EJB session, si le SI est en pure Java.&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;la couche Métier &lt;/span&gt;(ou Domaine)&lt;br /&gt;La couche Métier reprend tous les objets métiers de l&#39;application considérée. C&#39;est ici qu&#39;est portée la logique des règles de gestion sur ces objets. On peut trouver des EJB session, mais non exposés au monde extérieur.&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;la couche Persistance&lt;/span&gt;&lt;br /&gt;La couche Persistance est la couche qui sert de communicateur avec la base de données. Son avantage est le rôle de sas de sécurité entre l&#39;application et la base de données. Si la structure de données change, seule (en théorie) cette couche est à modifier. On trouve ici des entités persistantes (JPA, Hibernate ou EJB entity).&lt;/li&gt;
&lt;/ol&gt;
Chaque couche a seulement la permission d&#39;appeler la couche suivante (ainsi, la couche Présentation, ne peut utiliser/récupérer/instancier/etc.. que des objets de sa propre couche ou de la couche Service, et à l&#39;autre bout, la couche Persistence ne peut utiliser que des objets de sa propre couche)&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;Les raisons d&#39;être des couches.&amp;nbsp;&lt;/span&gt;L&#39;avantage de la couche Métier est que les &lt;span style=&quot;font-weight: bold;&quot;&gt;règles de gestion (RG) &lt;/span&gt;sont regroupés à un seul endroit. La couche persistance n&#39;est pas parasitée par ces RG. Elle peut par exemple récupérer une entité en base, et la couche Métier peut la déclarer invalide (si elle casse une RG) et lancer une exception.&lt;br /&gt;
&lt;br /&gt;
L&#39;avantage de la couche Service est qu&#39;elle &lt;span style=&quot;font-weight: bold;&quot;&gt;orchestre &lt;/span&gt;l&#39;appel aux objets métiers, nécessaires pour l&#39;accomplissement du service (et donc du cas d&#39;utilisation). De ce fait, elle gère l&#39;&lt;span style=&quot;font-weight: bold;&quot;&gt;aspect transactionnel &lt;/span&gt;des choses, c&#39;est à dire l&#39;assurance qu&#39;un service s&#39;effectue en totalité ou pas du tout. C&#39;est donc la couche Service, qui doit demander une connexion à la base de données, et la configurer pour ouvrir (si besoin est) une transaction.&lt;br /&gt;
&lt;br /&gt;
L&#39;avantage de la couche Coordination, est qu&#39;elle &lt;span style=&quot;font-weight: bold;&quot;&gt;orchestre &lt;/span&gt;l&#39;appel aux différents services,&amp;nbsp;par le pilotage d&#39;un&amp;nbsp;&lt;b&gt;processus&lt;/b&gt;. De ce fait, elle peut elle aussi gérer l&#39;&lt;span style=&quot;font-weight: bold;&quot;&gt;aspect transactionnel mais au niveau inter-applicatifs&lt;/span&gt;.&lt;br /&gt;
&lt;br /&gt;
Par exemple, imaginons qu&#39;on ait un service S1, qui fasse un travail d&#39;update sur une base de données B1. Et qu&#39;un service S2, fasse un autre travail d&#39;update sur une base de données B2. Si l&#39;on a une exigence que les 2 bases soient cohérentes l&#39;une par rapport à l&#39;autre, et si jamais une modification sur B2 n&#39;a pas pu avoir lieu, il faudra défaire la modification sur B1.&lt;br /&gt;
&lt;br /&gt;
C&#39;est donc à cette couche Coordination de gérer cela, en détricotant elle-même les modifications antérieures.&lt;br /&gt;
&lt;br /&gt;
Enfin, nous pouvons trouvons une couche Transverse, contenant tous les objets accessibles par l&#39;ensemble des autres couches. Cette couche contiendra des objets valeurs et différentes classes utilitaires (de date, de chaîne de caractères, etc..)&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://noframeworks.blogspot.com/feeds/5960866643816423897/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/405757572114494409/5960866643816423897' title='1 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/405757572114494409/posts/default/5960866643816423897'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/405757572114494409/posts/default/5960866643816423897'/><link rel='alternate' type='text/html' href='http://noframeworks.blogspot.com/2008/03/une-pratique-rpandue-dans-larchitecture.html' title='L&#39;architecture à 5 couches'/><author><name>Pom</name><uri>http://www.blogger.com/profile/07385313389447984906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIPYVXKrw8NarmQsTXsdN1uSV3eXy6rJDBYcy8Tte5GpVcnaN7qwbxjSkqzqw8D0VPExixs_Je7q0IvKEDbK0Ec_1yWmKJpl_MXdFCtizq6TVsUEfnqXc3ybNKZ4X7kYRADP7d9juFK-M/s72-c/5couches.png" height="72" width="72"/><thr:total>1</thr:total></entry></feed>