<?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/"
	>

<channel>
	<title>jeremyp.info</title>
	<atom:link href="http://blog.jeremyp.info/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.jeremyp.info</link>
	<description>French blog of a newcomer about GWT, Java, AppEngine and maybe more</description>
	<pubDate>Fri, 08 May 2009 15:02:00 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Tutorial #1 TabPanel, historique et liens directs</title>
		<link>http://blog.jeremyp.info/2009/05/tutorial-1-tabpanel-et-liens-directs/</link>
		<comments>http://blog.jeremyp.info/2009/05/tutorial-1-tabpanel-et-liens-directs/#comments</comments>
		<pubDate>Fri, 08 May 2009 10:51:27 +0000</pubDate>
		<dc:creator>jeremy</dc:creator>
		
		<category><![CDATA[Tutoriaux]]></category>

		<category><![CDATA[historique]]></category>

		<category><![CDATA[TabPanel]]></category>

		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://blog.jeremyp.info/?p=72</guid>
		<description><![CDATA[But du tutorial

Montrer comment faire un lien direct sur un onglet d&#8217;un TabPanel (cela fonctionne quasiment de la même manière avec un DeckPanel d&#8217;ailleurs).
Montrer comment gérer l&#8217;historique dans GWT (boutons précédent et suivant du navigateur).
Montrer un pattern pour une application avec un TabPanel.

Rappels sur GWT
Tout d&#8217;abord, petite précision sur les TabPanel : c&#8217;est un composant [...]]]></description>
			<content:encoded><![CDATA[<h3>But du tutorial</h3>
<ul>
<li>Montrer comment faire un lien direct sur un onglet d&#8217;un TabPanel (cela fonctionne quasiment de la même manière avec un DeckPanel d&#8217;ailleurs).</li>
<li>Montrer comment gérer l&#8217;historique dans GWT (boutons précédent et suivant du navigateur).</li>
<li>Montrer un pattern pour une application avec un TabPanel.</li>
</ul>
<h3>Rappels sur GWT</h3>
<p>Tout d&#8217;abord, petite précision sur les TabPanel : c&#8217;est un composant GWT de type composite qui comprends une TabBar et un DeckPanel. A chaque élément de la TabBar est associé un Deck, et seulement un Deck à la fois peut être affiché. C&#8217;est donc un outil très pratique qui permet de facilement gérer une interface avec des onglets.</p>
<p>L&#8217;exemple que je vais décrire montre comment associer un lien direct à un onglet de notre TabPanel. On peut ainsi donner une URL affichant notre application avec la vue choisie.</p>
<p>La solution utilise le mécanisme d&#8217;historique de GWT, qui consiste à associer un fragment de l&#8217;url à un état de l&#8217;application. Par exemple, index.html#vue1 et index.html#vue2 présente la même application mais dans un état différent. &#8220;vue1&#8243; et &#8220;vue2&#8243; sont appelé des tokens et ces éléments sont passé au navigateur lorsque l&#8217;utilisateur utilise les boutons &#8220;précédent&#8221; et &#8220;suivant&#8221;. Cela permet d&#8217;améliorer l&#8217;intégration de l&#8217;application dans le navigateur, ce qui est crucial pour une application AJAX.</p>
<h3>L&#8217;application</h3>
<p>Voici l&#8217;application qui va nous servir d&#8217;exemple :</p>
<p style="text-align: center;"><a href="http://blog.jeremyp.info/tutorial/tuto1-historique-tabPanel/index.html"><img src="http://blog.jeremyp.info/wp-content/uploads/2009/05/tuto1-small.jpg" alt="tuto1" /><br />
</a></p>
<p>Lorsque l&#8217;on clique sur un onglet, le token correspondant s&#8217;affiche dans l&#8217;URL de l&#8217;application. L&#8217;utilisation des boutons &#8220;précédent&#8221; et &#8220;suivant&#8221; permettent de retracer l&#8217;historique de la navigation. De plus, on peut accéder directement à la vue voulue (vous avez envie de voir un bout&#8230; d&#8217;<a href="http://blog.jeremyp.info/tutorial/tuto1-historique-tabPanel/index.html#italie">Italie</a>? ).</p>
<h3>Description du projet</h3>
<p style="text-align: center;"><a href="http://blog.jeremyp.info/tutorial/tuto1-historique-tabPanel/tuto1.zip"><img src="http://blog.jeremyp.info/wp-content/uploads/2009/05/arboprojet.jpg" alt="arborescence du projet" /><br />
</a></p>
<ul>
<li>Tuto1 : point d&#8217;entrée de l&#8217;application. Se charge de créer les onglets et charge l&#8217;application dans la page HTML.</li>
<li>Tuto1Page : gère le TabPanel et l&#8217;historique. D&#8217;après la liste d&#8217;onglets reçus, on créé une HashMap qui associe à chaque onglet son token d&#8217;historique correspondant.</li>
<li>Package tab : gère le contenu des onglets. La classe abstraite TabAbstract permet de factoriser le code et favoriser l&#8217;ajout de nouveaux onglets.</li>
</ul>
<h3>Comment cela fonctionne ?</h3>
<ul>
<li>Cas d&#8217;un lien direct : on analyse le token reçu et on se sert de notre hashMap pour décider quel onglet affiché.</li>
<li>Cas d&#8217;un changement d&#8217;onglet par l&#8217;utilisateur : grâce à un listener sur la TabBar, on peut modifier le token existant pour le remplacer par celui du nouvel onglet affiché.</li>
</ul>
<p>Le code est très <i>&#8220;straightforward&#8221;</i> donc je ne pense pas qu&#8217;il soit nécessaire d&#8217;entrer dans les détails d&#8217;ordre technique. J&#8217;en profite juste pour préciser les 3 points  à respecter pour gérer l&#8217;historique :</p>
<ol>
<li>Implémentation de l&#8217;interface ValueChangeHandler&lt;&gt;</li>
<li>Enregistrement de l&#8217;handler (History.addValueChangeHandler(this))</li>
<li>Ajout du code HTML pour le support de l&#8217;historique dans Internet Explorer (<em>&lt;iframe src=&#8221;javascript:&#8221; &#8221; id=&#8221;__gwt_historyFrame&#8221; tabIndex=&#8217;-1&#8242; style=&#8221;position:absolute; width:0;height:0 ;border:0&#8243;&gt; &lt;/iframe&gt;</em>)</li>
</ol>
<p><a href="http://blog.jeremyp.info/tutorial/tuto1-historique-tabPanel/tuto1.zip">Télécharger le code source de l&#8217;application</a></p>
<p><a href="http://blog.jeremyp.info/tutorial/tuto1-historique-tabPanel/index.html">Lien vers l&#8217;application</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jeremyp.info/2009/05/tutorial-1-tabpanel-et-liens-directs/feed/</wfw:commentRss>
		</item>
		<item>
		<title>GWT 1.6 &#8230; and friends !</title>
		<link>http://blog.jeremyp.info/2009/04/gwt-16-and-friends/</link>
		<comments>http://blog.jeremyp.info/2009/04/gwt-16-and-friends/#comments</comments>
		<pubDate>Wed, 08 Apr 2009 09:50:14 +0000</pubDate>
		<dc:creator>jeremy</dc:creator>
		
		<category><![CDATA[GWT]]></category>

		<category><![CDATA[AppEngine]]></category>

		<category><![CDATA[plugin]]></category>

		<guid isPermaLink="false">http://blog.jeremyp.info/?p=70</guid>
		<description><![CDATA[Ce matin est sortit une nouvelle version majeure de GWT 1.6.
Lire l&#8217;annonce
Le support Java pour AppEngine n&#8217;est pas vraiment ce que j&#8217;attendais le plus pour mes projets à court terme mais, par contre, cela pourrait beaucoup m&#8217;intéresser dans quelques temps&#8230; J&#8217;irai donc faire un tour bientôt dans cette plate-forme Google, notamment pour sa gratuité (payante [...]]]></description>
			<content:encoded><![CDATA[<p>Ce matin est sortit une nouvelle version majeure de GWT 1.6.</p>
<p><a href="http://googlewebtoolkit.blogspot.com/2009/04/introducing-gwt-16-and-friends.html"><em>Lire l&#8217;annonce</em></a></p>
<p>Le support Java pour AppEngine n&#8217;est pas vraiment ce que j&#8217;attendais le plus pour mes projets à court terme mais, par contre, cela pourrait beaucoup m&#8217;intéresser dans quelques temps&#8230; J&#8217;irai donc faire un tour bientôt dans cette plate-forme Google, notamment pour sa gratuité (payante à partir de 5 millions de pages vues par mois, y&#8217;a de la marge :p) !</p>
<p>Concernant le plugin Eclipse, là c&#8217;était vraiment quelque chose que j&#8217;attendais. Je ne sais pas s&#8217;il me sera très utile vu que je n&#8217;utilise pas de servlets (et qu&#8217;il m&#8217;oblige à restructurer mes projets à la sauce 1.6 !), mais j&#8217;espère qu&#8217;il sera la solution à mon problème récent : avoir une structure de projet propre, qui contient plusieurs modules et où l&#8217;on peut facilement compiler chaque module séparément, quelque soit le système d&#8217;exploitation sur lequel on travaille&#8230; to be continued.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jeremyp.info/2009/04/gwt-16-and-friends/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Installer Internet Explorer sur un mac</title>
		<link>http://blog.jeremyp.info/2009/03/installer-internet-explorer-sur-un-mac/</link>
		<comments>http://blog.jeremyp.info/2009/03/installer-internet-explorer-sur-un-mac/#comments</comments>
		<pubDate>Wed, 25 Mar 2009 16:17:05 +0000</pubDate>
		<dc:creator>jeremy</dc:creator>
		
		<category><![CDATA[Mac OS]]></category>

		<category><![CDATA[IE]]></category>

		<category><![CDATA[ies4osx]]></category>

		<category><![CDATA[Internet Explorer]]></category>

		<guid isPermaLink="false">http://blog.jeremyp.info/?p=53</guid>
		<description><![CDATA[Déjà, pour quoi faire? Il y a déjà Safari et Firefox (entre autres), pourquoi s&#8217;encombrer avec un navigateur pas franchement recommandé? Eh bien&#8230; pour faire des tests ! Lorsque l&#8217;on fait un peu de développement web, on est toujours confronté à un problème de compatibilité entre les navigateurs, le dilemme étant de faire un site [...]]]></description>
			<content:encoded><![CDATA[<p>Déjà, pour quoi faire? Il y a déjà Safari et Firefox (entre autres), pourquoi s&#8217;encombrer avec un navigateur pas franchement recommandé? Eh bien&#8230; pour faire des tests ! Lorsque l&#8217;on fait un peu de développement web, on est toujours confronté à un problème de compatibilité entre les navigateurs, le dilemme étant de faire un site qui s&#8217;affiche correctement quelque soit le navigateur du client (cela ne veut pas dire que le site s&#8217;affiche de la même manière sur tous les navigateurs d&#8217;ailleurs).</p>
<p>Donc, avec MacOS X, on peut aussi installer IE6 sans utiliser tout un système Windows (via bootcamp, parallels ou vmware fusion par exemple) avec ies4osx : <a href="http://www.kronenberg.org/ies4osx/">http://www.kronenberg.org/ies4osx/</a>. Tout est très bien expliqué sur le site, et l&#8217;installation est très simple. Ce logiciel m&#8217;est vraiment utile dans la mesure où je n&#8217;ai pas encore trouvé de solution de virtualisation GRATUITE convenable pour émuler XP (et Ubuntu). Cerise sur le gâteau, c&#8217;est open-source :).</p>
<p style="text-align: center;"><a href="http://blog.jeremyp.info/wp-content/uploads/2009/03/ie6_mac.jpg"><img src="http://blog.jeremyp.info/wp-content/uploads/2009/03/ie6_mac-small.jpg" alt="IE6 sur Leopard" title="IE6 sur Leopard" width=376 /></a></p>
<p>Tiens, c&#8217;est marrant&#8230; en écrivant ce billet je découvre qu&#8217;il existe aussi <a href="http://ipinfo.info/netrenderer/">netrenderer</a>, qui propose de vous afficher online la manière dont IE (5.5, 6, 7 ou 8, au choix !) affiche votre page. Alléchant mais malheureusement cela ne semble pas très bien marcher, notamment lorsqu&#8217;il y a du javascript sur la page.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jeremyp.info/2009/03/installer-internet-explorer-sur-un-mac/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Scripter son upload FTP</title>
		<link>http://blog.jeremyp.info/2009/03/scripter-son-upload-ftp/</link>
		<comments>http://blog.jeremyp.info/2009/03/scripter-son-upload-ftp/#comments</comments>
		<pubDate>Mon, 23 Mar 2009 14:57:17 +0000</pubDate>
		<dc:creator>jeremy</dc:creator>
		
		<category><![CDATA[GWT]]></category>

		<category><![CDATA[Misc]]></category>

		<category><![CDATA[ftp]]></category>

		<guid isPermaLink="false">http://blog.jeremyp.info/?p=44</guid>
		<description><![CDATA[Voici un script que j&#8217;utilise pour uploader une application GWT en cours de développement sur un serveur web :

1
2
3
4
5
6
7
8
9
10
11
#! /bin/sh
./Project-compile
tar -cf project.tar www/#packageProject.client/*
ftp -n #ftp_address&#60;&#60;_FTP
quote USER #username
quote PASS #passwd
prompt
cd dirProject
lcd www/#packageProject.client
mput *
bye _FTP

Quelques détails :

La commande ligne 3 permet de conserver une sauvegarde de l&#8217;application tel qu&#8217;elle est sur le serveur web.
Il faut répéter la [...]]]></description>
			<content:encoded><![CDATA[<p>Voici un script que j&#8217;utilise pour uploader une application GWT en cours de développement sur un serveur web :</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#! /bin/sh</span>
.<span style="color: #000000; font-weight: bold;">/</span>Project-compile
<span style="color: #c20cb9; font-weight: bold;">tar</span> <span style="color: #660033;">-cf</span> project.tar www<span style="color: #000000; font-weight: bold;">/</span><span style="color: #666666; font-style: italic;">#packageProject.client/*</span>
<span style="color: #c20cb9; font-weight: bold;">ftp</span> <span style="color: #660033;">-n</span> <span style="color: #666666; font-style: italic;">#ftp_address&lt;&lt;_FTP</span>
quote USER <span style="color: #666666; font-style: italic;">#username</span>
quote PASS <span style="color: #666666; font-style: italic;">#passwd</span>
prompt
<span style="color: #7a0874; font-weight: bold;">cd</span> dirProject
lcd www<span style="color: #000000; font-weight: bold;">/</span><span style="color: #666666; font-style: italic;">#packageProject.client</span>
mput <span style="color: #000000; font-weight: bold;">*</span>
bye _FTP</pre></td></tr></table></div>

<p>Quelques détails :</p>
<ul>
<li>La commande ligne 3 permet de conserver une sauvegarde de l&#8217;application tel qu&#8217;elle est sur le serveur web.</li>
<li>Il faut répéter la ligne 8 autant de fois qu&#8217;il le faut pour se placer dans le bon répertoire. En effet, on ne peut pas utiliser la commande cd dir1/dir2/dir3.</li>
<li>l&#8217;option -n ligne 4 permet de ne pas se connecter en mode interactif, indispensable pour utiliser le protocole FTP avec un script.</li>
<li>Le changement de répertoire ligne 9 correspond à un changement de répertoire local</li>
<li>Ce script n&#8217;upload pas les sous-répertoire de votre application compilée. Je n&#8217;ai en effet pas trouvé de commande qui puisse uploader tout le contenu d&#8217;un répertoire local, récursivement&#8230; Attention donc à ne pas oublier le répertoire gwt notamment ! Cela présente quand même l&#8217;avantage de ne pas ré-uploader par exemple un dossier contenant des images&#8230;</li>
<li>Ce script est à placer à la racine de votre projet bien sûr <img src='http://blog.jeremyp.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.jeremyp.info/2009/03/scripter-son-upload-ftp/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Why GWT&#8230; ?</title>
		<link>http://blog.jeremyp.info/2009/03/why-gwt/</link>
		<comments>http://blog.jeremyp.info/2009/03/why-gwt/#comments</comments>
		<pubDate>Sat, 21 Mar 2009 09:34:26 +0000</pubDate>
		<dc:creator>jeremy</dc:creator>
		
		<category><![CDATA[GWT]]></category>

		<category><![CDATA[articles]]></category>

		<category><![CDATA[why gwt]]></category>

		<guid isPermaLink="false">http://blog.jeremyp.info/?p=24</guid>
		<description><![CDATA[Si vous n&#8217;êtes toujours pas convaincu par GWT, ou si vous ne comprenez pas exactement de quoi il s&#8217;agit, voici une petite sélection d&#8217;articles qui reprennent le même thème : pourquoi GWT ?

Why GWT is here to stay qui date de décembre 2007.
Why choose GWT qui est un peu plus récent, mars 2009.

]]></description>
			<content:encoded><![CDATA[<p>Si vous n&#8217;êtes toujours pas convaincu par GWT, ou si vous ne comprenez pas exactement de quoi il s&#8217;agit, voici une petite sélection d&#8217;articles qui reprennent le même thème : pourquoi GWT ?</p>
<ul>
<li><a href="http://lemnik.wordpress.com/2007/12/04/why-gwt-is-here-to-stay/">Why GWT is here to stay</a> qui date de décembre 2007.</li>
<li><a href="http://www.keylimetie.com/Blog/2009/3/11/why-choose-gwt/">Why choose GWT</a> qui est un peu plus récent, mars 2009.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.jeremyp.info/2009/03/why-gwt/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Hello world</title>
		<link>http://blog.jeremyp.info/2009/03/hello-world-2/</link>
		<comments>http://blog.jeremyp.info/2009/03/hello-world-2/#comments</comments>
		<pubDate>Thu, 12 Mar 2009 10:54:11 +0000</pubDate>
		<dc:creator>jeremy</dc:creator>
		
		<category><![CDATA[GWT]]></category>

		<category><![CDATA[Mac OS]]></category>

		<category><![CDATA[Misc]]></category>

		<category><![CDATA[Perso]]></category>

		<category><![CDATA[java]]></category>

		<category><![CDATA[Javascript]]></category>

		<category><![CDATA[Safari]]></category>

		<category><![CDATA[thème]]></category>

		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://blog.jeremyp.info/?p=18</guid>
		<description><![CDATA[Ce thème a été réalisé par Miguel Santirso. Il est disponible en vert, bleu et rose, mais comme cela ne me plaisait pas vraiment, j&#8217;ai réalisé une nouvelle feuille de style perso, avec quelques changements de forme par ci par là. Je n&#8217;ai pas de grande qualité en tant que designer mais je voulais tout [...]]]></description>
			<content:encoded><![CDATA[<p>Ce thème a été réalisé par Miguel Santirso. Il est disponible en vert, bleu et rose, mais comme cela ne me plaisait pas vraiment, j&#8217;ai réalisé une nouvelle feuille de style perso, avec quelques changements de forme par ci par là. Je n&#8217;ai pas de grande qualité en tant que designer mais je voulais tout de même un thème qui soit unique.</p>
<p>Il reste encore quelques petits problèmes d&#8217;affichages notamment avec les titres des posts sur Safari. Je vais essayer de corriger cela dans les jours à venir.</p>
<p>En tout cas, cela illustre bien la difficulté de réaliser un ensemble PHP/HTML/CSS qui, déjà, soit opérationnel sur tous les navigateurs, et ensuite qui soit interprété de la même manière. La résolution de ces problèmes est un aspect du développement web qui m&#8217;a toujours enervé. Cela me confortait dans l&#8217;idée de vouloir faire du développement logiciel , du vrai, avec un compilateur ou une machine virtuelle <img src='http://blog.jeremyp.info/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>J&#8217;ai pourtant découvert (un peu par hasard) en ce début d&#8217;année 2009 le framework Google Web Toolkit (GWT). J&#8217;ai tout de suite été séduit par le fait de pouvoir produire, avec du code Java, du contenu interprétable par n&#8217;importe quel serveur web. Je classe les qualités de GWT dans 3 catégories :</p>
<ul>
<li>Java : intégration de GWT dans Eclipse, possibilité d&#8217;utiliser mes acquis en Java. Avec un serveur capable de gérer les servlets (Tomcat par exemple), on peut réaliser de véritable application web, sur le modèle de Gmail par exemple. Et même sans, on peut interagir avec tout type de serveur.</li>
</ul>
<ul>
<li> Google : cela a sûrement des inconvénients, mais aussi des avantages. L&#8217;image de Google sur le produit permet de penser que le produit a toutes les chances de continuer d&#8217;évoluer dans le futur. Cela permet aussi de s&#8217;approcher des services Google (Maps, Visualization etc&#8230;) omniprésent sur le web.</li>
</ul>
<ul>
<li>Javascript : Web 2.0, AJAX&#8230; avec GWT on est en plein dans la nouvelle (?) mode du web. Je sais que d&#8217;autres frameworks AJAX existent, mais je ne les ai pas testé donc je ne dirai rien :). Quoiqu&#8217;il en soit, avec GWT, on a l&#8217;assurance que le code généré fonctionnera sur tous les navigateurs et l&#8217;on a tous les outils pour construire un client robuste.</li>
</ul>
<p>Tout ceci me pousse donc à m&#8217;étendre sur le sujet, découvrir, approfondir.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jeremyp.info/2009/03/hello-world-2/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
