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

<channel>
	<title>Anthony Dahanne's blog</title>
	<atom:link href="http://blog.dahanne.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.dahanne.net</link>
	<description>Open Source Software, Java, Ruby, Agility</description>
	<lastBuildDate>Wed, 23 Dec 2009 23:52:17 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>G2Android v. 1.4.2 : now it is really stable !</title>
		<link>http://blog.dahanne.net/2009/12/23/g2android-v-1-4-2-now-it-is-really-stable/</link>
		<comments>http://blog.dahanne.net/2009/12/23/g2android-v-1-4-2-now-it-is-really-stable/#comments</comments>
		<pubDate>Wed, 23 Dec 2009 23:46:54 +0000</pubDate>
		<dc:creator>anthony.dahanne</dc:creator>
				<category><![CDATA[android]]></category>
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://blog.dahanne.net/?p=337</guid>
		<description><![CDATA[<p>Sorry, no new features in this release 
But a lot of bug fixes 
These bugs specially appeared in CyanogenMod running Android phones, because, for some reason, CyanogenMod kills really rapidly applications loosing focus.
For example, when trying to upload a photo, Android, under Cyanogenmod, would kill G2Android, as it lost focus, for letting the user choose [...]]]></description>
			<content:encoded><![CDATA[<p>Sorry, no new features in this release <img src='http://blog.dahanne.net/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /><br />
But a lot of bug fixes <img src='http://blog.dahanne.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /><br />
These bugs specially appeared in CyanogenMod running Android phones, because, for some reason, CyanogenMod kills really rapidly applications loosing focus.<br />
For example, when trying to upload a photo, Android, under Cyanogenmod, would kill G2Android, as it lost focus, for letting the user choose his photo; or if you received a phone call while browsing a gallery, Android would also kill G2Android.<br />
That&#8217;s ok, it&#8217;s part of the Android lifecycle : this robot knows how to get his RAM back  !!!<br />
The thing is, until version 1.4.2, G2Android would not &laquo;&nbsp;remember&nbsp;&raquo; the Gallery cookies, the albums hierarchy, its position in the gallery, etc&#8230; so it forced close.<br />
Now, it uses a SQLite database, to save its context, so before leaving an activity, G2Android saves its context (onPause) and when entering an activity (onResume) it gets the context back.<br />
Next year, some new features will appear, like using the camera directly to send photo, or maybe analyse EXIF metadata ?<br />
If you have some ideas, or if you encounter bugs, <a href="http://code.google.com/p/g2android/issues/list">please feel free to submit an issue in G2Android bugtracker</a> !<br />
And, as we say in such periods, merry Xmas and happy new year ! Using G2Android <img src='http://blog.dahanne.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<h3><a href="http://code.google.com/p/g2android/">Go to G2Android project page</a></h3>
]]></content:encoded>
			<wfw:commentRss>http://blog.dahanne.net/2009/12/23/g2android-v-1-4-2-now-it-is-really-stable/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Comment convertir une mailbox Outlook en mailbox IMAP</title>
		<link>http://blog.dahanne.net/2009/12/23/comment-convertir-une-mailbox-outlook-en-mailbox-imap/</link>
		<comments>http://blog.dahanne.net/2009/12/23/comment-convertir-une-mailbox-outlook-en-mailbox-imap/#comments</comments>
		<pubDate>Wed, 23 Dec 2009 23:21:54 +0000</pubDate>
		<dc:creator>anthony.dahanne</dc:creator>
				<category><![CDATA[open source]]></category>
		<category><![CDATA[outils]]></category>

		<guid isPermaLink="false">http://blog.dahanne.net/?p=328</guid>
		<description><![CDATA[<p>Si chez moi j&#8217;ai tout le loisir d&#8217;utiliser, pour la messagerie par email, des logiciels libres implémentant des standards; dans le cadre du travail, je me suis souvent retrouvé à utiliser un compte Outlook&#8230; (ou pire, Lotus Notes, mais là c&#8217;est un autre sujet&#8230;)
Sauf que le jour où on quitte la société ou la mission [...]]]></description>
			<content:encoded><![CDATA[<p>Si chez moi j&#8217;ai tout le loisir d&#8217;utiliser, pour la messagerie par email, des logiciels libres implémentant des standards; dans le cadre du travail, je me suis souvent retrouvé à utiliser un compte Outlook&#8230; (ou pire, Lotus Notes, mais là c&#8217;est un autre sujet&#8230;)<br />
Sauf que le jour où on quitte la société ou la mission (qui vous a équipé d&#8217;Outlook donc), on aimerait bien récupérer ses messages préférés&#8230;<br />
Vous imaginez bien que le format de sauvegarde d&#8217;Outlook est propriétaire, ainsi, il faut ruser pour convertir votre boite aux lettres Outlook au format standard unix &laquo;&nbsp;mailbox&nbsp;&raquo; (format documenté et convertible et exploitable par pléthore d&#8217;outils)<br />
Pour ce faire, il suffit de suivre ces 2 étapes (il faut aussi un compte IMAP tierce) :</p>
<h3>1°)Configurer un compte IMAP dans Outlook</h3>
<p>j&#8217;ai simplement ajouté un compte IMAP existant dans Outlook (Outils-&gt;Comptes de messagerie)<br />
J&#8217;ai ensuite choisi &laquo;&nbsp;Ajouter compte de messagerie&nbsp;&raquo;</p>
<p><a href="http://blog.dahanne.net/wp-content/uploads/comptes_de_messagerie.png"><img class="alignnone size-medium wp-image-332" title="comptes_de_messagerie" src="http://blog.dahanne.net/wp-content/uploads/comptes_de_messagerie-300x228.png" alt="" width="300" height="228" /></a></p>
<p>Puis j&#8217;ai sélectionné IMAP<br />
<a href="http://blog.dahanne.net/wp-content/uploads/imap.png"><img class="alignnone size-medium wp-image-333" title="imap" src="http://blog.dahanne.net/wp-content/uploads/imap-300x229.png" alt="" width="300" height="229" /></a><br />
J&#8217;ai renseigné mon compte IMAP</p>
<p><a href="http://blog.dahanne.net/wp-content/uploads/compte_saisi.png"><img class="alignnone size-medium wp-image-331" title="compte_saisi" src="http://blog.dahanne.net/wp-content/uploads/compte_saisi-300x227.png" alt="" width="300" height="227" /></a></p>
<p>Terminé !</p>
<h3>2°)Déplacez ses messages et répertoires de Outlook vers votre compte IMAP</h3>
<p>Rien de plus simple, il suffit de glisser/déplacer vos messages et répertoires de votre compte Outlook, vers votre compte IMAP !<br />
Par contre, votre serveur IMAP n&#8217;est peut être pas paramétré pour gérer les sous répertoires, dans ce cas là, vous devez modifier la configuration, dans le cas de Dovecot, veuillez faire attention à ce que l&#8217;option namespace_private comporte une définition des séparateurs :</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">namespace private <span style="color: #7a0874; font-weight: bold;">&#123;</span>
   <span style="color: #666666; font-style: italic;"># Hierarchy separator to use. You should use the same separator for all</span>
   <span style="color: #666666; font-style: italic;"># namespaces or some clients get confused. '/' is usually a good one.</span>
   <span style="color: #666666; font-style: italic;"># The default however depends on the underlying mail storage format.</span>
  separator = <span style="color: #000000; font-weight: bold;">/</span> 
&nbsp;
   <span style="color: #666666; font-style: italic;"># Prefix required to access this namespace. This needs to be different for</span>
   <span style="color: #666666; font-style: italic;"># all namespaces. For example &quot;Public/&quot;.</span>
   prefix = <span style="color: #ff0000;">&quot;&quot;</span>
&nbsp;
   <span style="color: #666666; font-style: italic;"># Physical location of the mailbox. This is in same format as</span>
   <span style="color: #666666; font-style: italic;"># mail_location, which is also the default for it.</span>
   <span style="color: #666666; font-style: italic;">#location =</span>
&nbsp;
   <span style="color: #666666; font-style: italic;"># There can be only one INBOX, and this setting defines which namespace</span>
   <span style="color: #666666; font-style: italic;"># has it.</span>
   inbox = <span style="color: #c20cb9; font-weight: bold;">yes</span>
&nbsp;
   <span style="color: #666666; font-style: italic;"># If namespace is hidden, it's not advertised to clients via NAMESPACE</span>
   <span style="color: #666666; font-style: italic;"># extension or shown in LIST replies. This is mostly useful when converting</span>
   <span style="color: #666666; font-style: italic;"># from another server with different namespaces which you want to depricate</span>
   <span style="color: #666666; font-style: italic;"># but still keep working. For example you can create hidden namespaces with</span>
   <span style="color: #666666; font-style: italic;"># prefixes &quot;~/mail/&quot;, &quot;~%u/mail/&quot; and &quot;mail/&quot;.</span>
   <span style="color: #666666; font-style: italic;">#hidden = yes</span>
<span style="color: #7a0874; font-weight: bold;">&#125;</span></pre></div></div>

<p>C&#8217;est fini, vous venez de migrer vos données Outlook vers mailbox, le standard de courrier *nix ! (vos emails doivent être sur le votre machine hébergeant le serveur IMAP dans /home/user/mail/votre_sous_rep)</p>
<h3>Références</h3>
<p><a href="http://www.faqs.org/docs/Linux-mini/Outlook-to-Unix-Mailbox.html#s3" target="_blank">http://www.faqs.org/docs/Linux-mini/Outlook-to-Unix-Mailbox.html#s3</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dahanne.net/2009/12/23/comment-convertir-une-mailbox-outlook-en-mailbox-imap/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Installer PHP 5.3.1 sur Ubuntu Karmic koala 9.10</title>
		<link>http://blog.dahanne.net/2009/11/21/installer-php-5-3-1-sur-ubuntu-karmic-koala-9-10/</link>
		<comments>http://blog.dahanne.net/2009/11/21/installer-php-5-3-1-sur-ubuntu-karmic-koala-9-10/#comments</comments>
		<pubDate>Sat, 21 Nov 2009 15:37:38 +0000</pubDate>
		<dc:creator>anthony.dahanne</dc:creator>
				<category><![CDATA[apache2]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://blog.dahanne.net/?p=274</guid>
		<description><![CDATA[<p>J&#8217;ai récemment voulu installer sur mon serveur web le (tout nouveau) agrégateur de flux RSS (avec API distante REST) OpenWebReader.
L&#8217;auteur, pour avoir un développement plus aisé et moderne, a choisi la dernière version de PHP, 5.3
Sauf que sur Ubuntu 9.10, la version de PHP packagée est la 5.2.6
En général, dans ces cas, on a plutôt [...]]]></description>
			<content:encoded><![CDATA[<p>J&#8217;ai récemment voulu installer sur mon serveur web le <a href="http://trac.openwebreader.org/">(tout nouveau) agrégateur de flux RSS (avec API distante REST) OpenWebReader</a>.<br />
L&#8217;auteur, pour avoir un développement plus aisé et moderne, a choisi la dernière version de PHP, 5.3<br />
Sauf que sur Ubuntu 9.10, la version de PHP packagée est la 5.2.6<br />
En général, dans ces cas, on a plutôt le réflexe de mettre à jour ses dépôts, dans /etc/apt/sources.list et de rajouter le dépôt qui va bien, qui rajoute en l&#8217;occurrence php 5.3.<br />
C&#8217;est bien ce que j&#8217;avais commencé à faire, <a href="http://www.dotdeb.org/2009/07/03/php-5-3-0-final-preview-packages-available-for-debian-lenny/">en suivant ce billet</a>.<br />
Mais malheureusement, plein de dépendances ont sauté : phpmyadmin, apache2-mod-php5, etc&#8230; du coup, machine arrière vers PHP 5.2.6 <img src='http://blog.dahanne.net/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /><br />
Retour aux sources, j&#8217;ai téléchargé sur php.net la version 5.3.1 de PHP</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>us3.php.net<span style="color: #000000; font-weight: bold;">/</span>get<span style="color: #000000; font-weight: bold;">/</span>php-5.3.1.tar.gz<span style="color: #000000; font-weight: bold;">/</span>from<span style="color: #000000; font-weight: bold;">/</span>this<span style="color: #000000; font-weight: bold;">/</span>mirror</pre></div></div>

<p>, je l&#8217;ai détarré dans mon home directory :</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">tar</span> xvfz php-5.3.1.tar.gz</pre></div></div>

<p>et avant de le compiler, je suis allé chercher tout plein de librairies :</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> apache2 apache2-mpm-prefork apache2-prefork-dev apache2-utils apache2.2-common mysql-client mysql-client-<span style="color: #000000;">5.1</span> mysql-common mysql-server mysql-server-<span style="color: #000000;">5.1</span> mysql-server-core-<span style="color: #000000;">5.1</span> libtidy-dev curl libcurl4-openssl-dev libcurl3 libcurl3-gnutls zlib1g zlib1g-dev libxslt1-dev libzip-dev libzip1 libxml2 libsnmp-base libsnmp15 libxml2-dev libsnmp-dev libjpeg62 libjpeg62-dev libpng12-<span style="color: #000000;">0</span> libpng12-dev zlib1g zlib1g-dev libfreetype6 libfreetype6-dev libbz2-dev libxpm4-dev libmcrypt-dev libmcrypt4 libicu-dev</pre></div></div>

<p>et là, dans mon répertoire de php 5.3.1 , j&#8217;ai pu compiler :</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #7a0874; font-weight: bold;">cd</span>  php-5.3.1
$ .<span style="color: #000000; font-weight: bold;">/</span>configure <span style="color: #660033;">--with-apxs2</span>=<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>apxs2 <span style="color: #660033;">--with-mysql</span>=<span style="color: #000000; font-weight: bold;">/</span>usr <span style="color: #660033;">--with-mysqli</span>=<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>mysql_config <span style="color: #660033;">--with-tidy</span>=<span style="color: #000000; font-weight: bold;">/</span>usr <span style="color: #660033;">--with-curl</span>=<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>bin <span style="color: #660033;">--with-curlwrappers</span> <span style="color: #660033;">--with-openssl-dir</span>=<span style="color: #000000; font-weight: bold;">/</span>usr <span style="color: #660033;">--with-zlib-dir</span>=<span style="color: #000000; font-weight: bold;">/</span>usr <span style="color: #660033;">--enable-mbstring</span> <span style="color: #660033;">--with-pdo-pgsql</span>=<span style="color: #000000; font-weight: bold;">/</span>usr <span style="color: #660033;">--with-pdo-mysql</span>=<span style="color: #000000; font-weight: bold;">/</span>usr <span style="color: #660033;">--with-xsl</span>=<span style="color: #000000; font-weight: bold;">/</span>usr <span style="color: #660033;">--with-ldap</span> <span style="color: #660033;">--with-xmlrpc</span> <span style="color: #660033;">--with-iconv-dir</span>=<span style="color: #000000; font-weight: bold;">/</span>usr <span style="color: #660033;">--with-snmp</span>=<span style="color: #000000; font-weight: bold;">/</span>usr <span style="color: #660033;">--enable-exif</span> <span style="color: #660033;">--enable-calendar</span> <span style="color: #660033;">--with-bz2</span>=<span style="color: #000000; font-weight: bold;">/</span>usr <span style="color: #660033;">--with-mcrypt</span>=<span style="color: #000000; font-weight: bold;">/</span>usr <span style="color: #660033;">--with-gd</span> <span style="color: #660033;">--with-jpeg-dir</span>=<span style="color: #000000; font-weight: bold;">/</span>usr <span style="color: #660033;">--with-png-dir</span>=<span style="color: #000000; font-weight: bold;">/</span>usr <span style="color: #660033;">--with-zlib-dir</span>=<span style="color: #000000; font-weight: bold;">/</span>usr <span style="color: #660033;">--with-freetype-dir</span>=<span style="color: #000000; font-weight: bold;">/</span>usr <span style="color: #660033;">--enable-mbstring</span> <span style="color: #660033;">--enable-zip</span> <span style="color: #660033;">--with-pear</span> <span style="color: #660033;">--enable-intl</span> <span style="color: #660033;">--with-gettext</span>=<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">gettext</span>
$ <span style="color: #c20cb9; font-weight: bold;">make</span></pre></div></div>

<p>Si vous avez un problème lors du configure c&#8217;est qu&#8217;il vous manque une librairie&#8230;<br />
Ensuite, maintenant que l&#8217;on a une version de Php 5.3.1 compilé, il faut la référencer à Apache2, et pour ne rien casser aux dépendances, on trafique juste une petit peu /etc/apache2/mods-available/php5.load :</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">LoadModule php5_module <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>anthony<span style="color: #000000; font-weight: bold;">/</span>php-5.3.1<span style="color: #000000; font-weight: bold;">/</span>libs<span style="color: #000000; font-weight: bold;">/</span>libphp5.so</pre></div></div>

<p>et là, le tour est joué, il suffit de redémarrer Apache2 pour que Php 5.3.1 soit chargé.<br />
En fait, je me suis beaucoup inspiré de<a href="http://www.brandonsavage.net/installing-php-5-3-on-ubuntu/"> ce billet</a>, sauf qu&#8217;à la fin, je vous conseille de ne pas faire le make install, car votre système risque de ne plus être en cohérence avec les dépots</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dahanne.net/2009/11/21/installer-php-5-3-1-sur-ubuntu-karmic-koala-9-10/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>G2Android version 1.3.0 : cache and full screen navigation</title>
		<link>http://blog.dahanne.net/2009/10/27/g2android-version-1-3-0-cache-and-full-screen-navigatio/</link>
		<comments>http://blog.dahanne.net/2009/10/27/g2android-version-1-3-0-cache-and-full-screen-navigatio/#comments</comments>
		<pubDate>Tue, 27 Oct 2009 15:22:35 +0000</pubDate>
		<dc:creator>anthony.dahanne</dc:creator>
				<category><![CDATA[android]]></category>
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://blog.dahanne.net/?p=267</guid>
		<description><![CDATA[<p>Here is the new stable release of G2Android, your favorite Gallery2 application for Android, and great new features are now available :</p>

new cache feature 
fullscreen navigation with gestures 
download full res. picture to sdcard

<p>As always, you can get more info going to the project web page : http://code.google.com/p/g2android/, and even download the new version
So what&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>Here is the new stable release of<a href="http://code.google.com/p/g2android/"> G2Android, your favorite Gallery2 application for Android</a>, and great new features are now available :</p>
<ul>
<li>new cache feature </li>
<li>fullscreen navigation with gestures </li>
<li>download full res. picture to sdcard</li>
</ul>
<p>As always, you can get more info going to the project web page : <a href="http://code.google.com/p/g2android/">http://code.google.com/p/g2android/</a>, and <a href="http://code.google.com/p/g2android/downloads/list">even download the new version</a><br />
So what&#8217;s next ? tweeting and sending email with photo url, shortcuts for full screen navigation, synchronization between views&#8230; well, expect a new version by the end of November !</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dahanne.net/2009/10/27/g2android-version-1-3-0-cache-and-full-screen-navigatio/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>G2Android version 1.2.1 : bug fixes</title>
		<link>http://blog.dahanne.net/2009/10/15/g2android-version-1-2-1-bug-fixes/</link>
		<comments>http://blog.dahanne.net/2009/10/15/g2android-version-1-2-1-bug-fixes/#comments</comments>
		<pubDate>Thu, 15 Oct 2009 20:51:09 +0000</pubDate>
		<dc:creator>anthony.dahanne</dc:creator>
				<category><![CDATA[android]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://blog.dahanne.net/?p=262</guid>
		<description><![CDATA[<p>You can now download the last G2Android update, version 1.2.1.
What&#8217;s new ?</p>

 No more automatic connection at startup, the user has to push a button to connect to the gallery


 Galleries with port different than 80 now work


 I18n : the app now provide new languages, today only english and french are supported, I&#8217;m expecting [...]]]></description>
			<content:encoded><![CDATA[<p>You can now download the last <a title="G2Android download page" href="http://code.google.com/p/g2android/downloads/list">G2Android update, version 1.2.1</a>.<br />
What&#8217;s new ?</p>
<ul>
<li> No more automatic connection at startup, the user has to push a button to connect to the gallery</li>
</ul>
<ul>
<li> Galleries with port different than 80 now work</li>
</ul>
<ul>
<li> I18n : the app now provide new languages, today only <a title="G2Android english strings file" href="http://code.google.com/p/g2android/source/browse/trunk/g2android/res/values/strings.xml">english</a> and <a title="G2Android french strings file" href="http://code.google.com/p/g2android/source/browse/trunk/g2android/res/values-fr/strings.xml">french</a> are supported, I&#8217;m expecting the community to provide new translations</li>
</ul>
<p>That&#8217;s all folks, expect better UIs and possibility to download pictures from the gallery to the phone soon.<br />
Have fun browsing your galleries !</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dahanne.net/2009/10/15/g2android-version-1-2-1-bug-fixes/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Effacer de manière sécurisée les données d&#8217;un disque dur</title>
		<link>http://blog.dahanne.net/2009/10/14/effacer-de-maniere-securisee-les-donnees-dun-disque-dur/</link>
		<comments>http://blog.dahanne.net/2009/10/14/effacer-de-maniere-securisee-les-donnees-dun-disque-dur/#comments</comments>
		<pubDate>Wed, 14 Oct 2009 20:06:03 +0000</pubDate>
		<dc:creator>anthony.dahanne</dc:creator>
				<category><![CDATA[open source]]></category>
		<category><![CDATA[outils]]></category>

		<guid isPermaLink="false">http://blog.dahanne.net/?p=256</guid>
		<description><![CDATA[<p>Envie d&#8217;effacer toutes les données d&#8217;un disque dur avant de le revendre ?
Envie d&#8217;effacer toutes vos données personnelles qui se situe dans un répertoire en particulier (sous windows), sans formater tout le disque ?
Suivez le guide !</p>
Effacer de manière sécurisée toutes les partitions d&#8217;un volume
<p>Vous vous apprétez à vendre ou à donner votre vieil ordinateur, [...]]]></description>
			<content:encoded><![CDATA[<p>Envie d&#8217;effacer toutes les données d&#8217;un disque dur avant de le revendre ?<br />
Envie d&#8217;effacer toutes vos données personnelles qui se situe dans un répertoire en particulier (sous windows), sans formater tout le disque ?<br />
Suivez le guide !</p>
<h3>Effacer de manière sécurisée toutes les partitions d&#8217;un volume</h3>
<p>Vous vous apprétez à vendre ou à donner votre vieil ordinateur, et vous ne voulez pas que l&#8217;ensemble de vos documents privés se retrouvent sur internet ?</p>
<p>Dans ce cas, il ne suffit pas d&#8217;effacer vos fichiers via l&#8217;OS (ce qui ne les efface que de la table de registres du disque), ni de formater la partition (un logiciel de &laquo;&nbsp;recovery&nbsp;&raquo; serait capable de la reconstituer); ce qu&#8217;il vous faut, c&#8217;est réécrire plusieurs fois, avec des algorithmes éprouvés, des données aléatoires sur l&#8217;ensemble du disque.</p>
<p>Il existe pour cela pléthores d&#8217;outils payants (et qui n&#8217;ont pas l&#8217;air d&#8217;avoir la côte), et il existe <a title="dban" href="http://www.dban.org/">DBAN</a>, outil GPL de choix.</p>
<p><a title="dban" href="http://www.dban.org/">DBAN (Darik&#8217;s boot and Nuke)</a> est un logiciel libre, redoutablement efficace, qui, même s&#8217;il n&#8217;est plus maintenu depuis 2007, vous propose plusieurs algos pour effacer votre disque de manière sécurisée (réécrire 1 fois dessus -&gt; +rapide; 3 passes avec algo conforme au Department Of Defense américain -&gt; +long)</p>
<p>Ce logiciel s&#8217;installe sur une clef USB, ou un CD-R, ou une disquette; bootez dessus (branchez auparavant sur votre ordinateur les périphériques que vous souhaitez effacer), tapez &laquo;&nbsp;autonuke&nbsp;&raquo; à l&#8217;invite de commandes, patientez, et c&#8217;est réglé !</p>
<p>Vous voulez en avoir le coeur net ? être sûr que DBAN a bien fait son travail ?</p>
<p>On peut faire une vérification sommaire, en tentant de retrouver des partitions sur le disque avec l&#8217;outil <a title="TestDisk" href="http://www.cgsecurity.org/wiki/TestDisk">Testdisk</a>, en GPL sous Linux/Windows/MacOs (etc..); le résultat est sans appel : après analyse complète du disque à la recherche de la moindre partition :</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">TestDisk <span style="color: #000000;">6.10</span>, Data Recovery Utility, July <span style="color: #000000;">2008</span>
Christophe GRENIER <span style="color: #000000; font-weight: bold;">&amp;</span>lt;grenier<span style="color: #000000; font-weight: bold;">@</span>cgsecurity.org<span style="color: #000000; font-weight: bold;">&amp;</span>gt;
http:<span style="color: #000000; font-weight: bold;">//</span>www.cgsecurity.org
&nbsp;
Disk <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>sdc - <span style="color: #000000;">81</span> GB <span style="color: #000000; font-weight: bold;">/</span> <span style="color: #000000;">76</span> GiB - CHS <span style="color: #000000;">9965</span> <span style="color: #000000;">255</span> <span style="color: #000000;">63</span>
&nbsp;
Partition                  Start        End    Size <span style="color: #000000; font-weight: bold;">in</span> sectors
&nbsp;
No partition found or selected <span style="color: #000000; font-weight: bold;">for</span> recovery</pre></div></div>

<h3>Effacer vos données personnelles d&#8217;un répertoire</h3>
<p>Vous utilisez régulièrement un ordinateur au bureau, vous y avez stocké des documents confidentiels, et vous vous apprétez à ne plus utiliser ce poste de travail ?</p>
<p>Vous pouvez alors utiliser <a title="Eraser" href="http://eraser.heidi.ie/">Eraser</a>, encore un logiciel libre sous GPL (mais malheureusement que pour Windows), qui appliquera les mêmes algorithmes de suppression que DBAN, mais dans des répertoires au choix, et non pas un volume entier; Eraser est facile à utiliser (version portable, pas besoin d&#8217;être admin pour s&#8217;en servir), et est encore maintenu à ce jour</p>
<h3>Références :</h3>
<p><a href="http://www.webopedia.com/DidYouKnow/Computer_Science/2007/completely_erase_harddrive.asp">http://www.webopedia.com/DidYouKnow/Computer_Science/2007/completely_erase_harddrive.asp</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dahanne.net/2009/10/14/effacer-de-maniere-securisee-les-donnees-dun-disque-dur/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Citcon Europe 2009 @ Paris</title>
		<link>http://blog.dahanne.net/2009/09/18/citcon-europe-2009-paris/</link>
		<comments>http://blog.dahanne.net/2009/09/18/citcon-europe-2009-paris/#comments</comments>
		<pubDate>Fri, 18 Sep 2009 19:48:30 +0000</pubDate>
		<dc:creator>anthony.dahanne</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[meeting]]></category>

		<guid isPermaLink="false">http://blog.dahanne.net/?p=244</guid>
		<description><![CDATA[<p>During 2 days, Friday the 18th of September and Saturday the 19th, I attended for the first time the Citcon Europe Conference, about Continuous Integration, in Paris.</p>
Friday
<p>When I arrived, at 6:20PM, I was received by 2 Jean Michel I know (Garnier and Bea) who gave me a tag on which I wrote my name on it, [...]]]></description>
			<content:encoded><![CDATA[<p>During 2 days, Friday the 18th of September and Saturday the 19th, I attended for the first time the <a href="http://citconf.com/paris2009/">Citcon Europe Conference</a>, about Continuous Integration, in Paris.</p>
<h2>Friday</h2>
<p>When I arrived, at 6:20PM, I was received by 2 Jean Michel I know (Garnier and Bea) who gave me a tag on which I wrote my name on it, a T-shirt, a wifi logon for the conference, and a bag loaded with sponsors  material.</p>
<p>When I got into the room, I found many colleagues from Valtech, and people I usually meet at the Paris Jug and other conferences in Europe.The room is nearly crowded, we&#8217;re about 120.</p>
<p>PJ(Paul Julius) and Jeff presented how the conference would occur : the sessions, divided in 8 rooms, the Saturday lunch, the Saturday breakfast, the after conference events (most probably in a bar), the sponsors, the volunteers, and their association.</p>
<p>Then, the presenters let every one in the room introduce him/herself : most of the audience was there to talk about CI, User Acceptance Testing and agility.</p>
<p>After the presentations were made, both presenters explained how the open spaces work : an interesting point is that if you think that you&#8217;re wasting your time in an open space, just don&#8217;t hesitate to leave: to participate actively in another open space!The audience is responsible for making the conference great, so everyone should feel free to join and leave any open space during the day.</p>
<p>The sessions proposed by people attending the conference, will occur in the rooms chosen by the audience : if the audience thinks it&#8217;s a popular  topic, the session will use a bigger room.</p>
<p>The presenters also encouraged the audience to blog, take photos, promote the event<br />
Before letting attendees propose sessions, Jeff added : &laquo;&nbsp;Whether the conference will be successful or not depend on you&nbsp;&raquo;</p>
<p>Finally, some attendees proposed some topics, and after this was done (a think that more than 50 topics were proposed, a lot of them about Scrum, mock objects, how to write tests and user acceptance tests, etc..), all these topics were refactored around a nice buffet and a drink !</p>
<p>The organization for this citcon starter was really great, and when you think that the entrance is free, you even better appreciate all the efforts made by the volunteers to make this conference so professional and nice !</p>
<p>Tomorrow, the sessions will begin, I can&#8217;t wait !</p>
<h2>Saturday</h2>
<p>Following are transcripts of the sessions I followed (I mostly wrote about things that seemed important to me)</p>
<h3>Definition of Done &#038; Testing</h3>
<p>Who makes the decision ? the project manager? the product owner ?<br />
We should make all requirements measurable and stable in order to define done software<br />
Done can be declared when we customer accepts the feature, and &laquo;&nbsp;done done&nbsp;&raquo; when the feature is in production;provided that the team meets metrics criteria when developing, providing a sustainable pace.<br />
Do tests provide business value after all? Of course they can, depending on how you wrote your tests, whether you include the business in your development cycle or not.<br />
Done can also be when &laquo;&nbsp;it feels right&nbsp;&raquo; : when the customer AND the team agrees on the fact it is done; if a member does not think the quality is met, he should say it, and not agree to say it feels right.<br />
Maybe frequent builds is the solution :  providing more and more functionalities builds after builds, intead of shipping o huge piece of software not testes enough</p>
<h3>Mock objects</h3>
<p>You can use Mocking (making expectations about how and how frequent it is called) when it changes the outside world, elsewhere you should stub; by outside world I mean any third object in the chain<br />
It&#8217;s usually better to initialize once your mock object (even making it final in Java), to only focus on the expectations.<br />
Some people in the room proposed not to use interfaces anymore, because some mock frameworks don&#8217;t need interfaces anymore, but it seems complicated refactoring because you don&#8217;t explicit the interactions between your classes.</p>
<h3>Faster tests</h3>
<p>How long is a too long to run test ?<br />
How long is a too long to run a build ?<br />
The aim of making tests faster is too shorten feedback.<br />
You can categorize tour tests between the fasts and slower ones (the fastest run first (Unit Tests), the slowest runs last and only once each day(Selenium Tests on all browsers) )<br />
Running unit tests concurrently on a 8 core developer machine ? That means investing in hardware to speed up the tests<br />
You can use in memory databases instead of using real databases on the network; but how can you be sure that your tests will work on the target database ?<br />
You can also use private builds, like Teamcity does : you commit a private build which runs a the CI computer, and if the build went fine, your code is automatically committed to the branch of your choice.<br />
You can write better tests : more rapid, using lighter structures in your code.</p>
<h3>Conclusion</h3>
<p>It was y first citcon conference participation, and I was quite impressed by the quality of the organization, and also of the audience, lots of smart people coming from all around the world (mainly europe and france though).<br />
The food was good, the rooms and facilities (like wifi) were also good, one ting that disturbed me was the fact that post-its on the agenda kept on moving: I missed sessions because I did not notice that the schedule had changed&#8230; but that&#8217;s the way it is !<br />
The open space format is a bit difficult to follow, many ideas are popping out from all other the room, and the hard part is to catch them and analyse them; but the effort is worth it !<br />
If you want to <a href="http://citconf.com/wiki/index.php?title=CITCONEurope2009Sessions">know more about the sessions given at citconf europe 2009, follow the link !</a></p>
<h3>Books mentioned</h3>
<p>x unit tests pattern (by mezaros)<br />
Object-Design-Roles-Responsibilities-Collaborations (by Rebecca Wirfs)<br />
<a href="http://www.mockobjects.com/">Mock Objects by Steeve Freeman</a></p>
<h3>Tools</h3>
<p>crap4J : complexity and coverage<br />
gridgain : run a single build on a farm of servers<br />
dbunit : to inject test data in a test db<br />
testng : like JUnit, but provides the ability to run tests in different threads<br />
selenium : to automate user accepting test<br />
webdriver : to run selenium, should merge with selenium eventually<br />
cucumber : writing and running User Acceptance Test in a DSL<br />
html unit : when you don&#8217;t need selenium to check every page/css/javascript details</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dahanne.net/2009/09/18/citcon-europe-2009-paris/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>G2Android version 1.2.0 : photos upload and albums creation !</title>
		<link>http://blog.dahanne.net/2009/08/29/g2android-version-1-2-0-photos-upload-and-albums-creation/</link>
		<comments>http://blog.dahanne.net/2009/08/29/g2android-version-1-2-0-photos-upload-and-albums-creation/#comments</comments>
		<pubDate>Sat, 29 Aug 2009 01:33:12 +0000</pubDate>
		<dc:creator>anthony.dahanne</dc:creator>
				<category><![CDATA[android]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://blog.dahanne.net/?p=241</guid>
		<description><![CDATA[<p>I&#8217;m writing this small post just to indicate that the new version of the open source Gallery2 client for the android platform, G2Android, is out !</p>
<p>Now, you can still see your albums and pictures, but you can also :</p>

upload photos
create new albums

<p>The ergonomy is not yet perfect, as you may have already noticed, even though [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m writing this small post just to indicate that the new version of the open source <a href="http://gallery2.menalto.com">Gallery2</a> client for the android platform, <a href="http://code.google.com/p/g2android/">G2Android</a>, is out !</p>
<p>Now, you can still see your albums and pictures, but you can also :</p>
<ul>
<li>upload photos</li>
<li>create new albums</li>
</ul>
<p>The ergonomy is not yet perfect, as you may have already noticed, even though almost everything is multi threaded (using AsyncTask), meaning the ui won&#8217;t freeze anymore; the next features will probably will allow the user to insert a photo to his gallery from every picture context on the android platform (declaring a &laquo;&nbsp;share image&nbsp;&raquo; intent)</p>
<p>Stay tuned !</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dahanne.net/2009/08/29/g2android-version-1-2-0-photos-upload-and-albums-creation/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>G2Android : a gallery2 client for the android platform</title>
		<link>http://blog.dahanne.net/2009/08/16/g2android-a-gallery2-client-for-the-android-platform/</link>
		<comments>http://blog.dahanne.net/2009/08/16/g2android-a-gallery2-client-for-the-android-platform/#comments</comments>
		<pubDate>Sun, 16 Aug 2009 14:58:31 +0000</pubDate>
		<dc:creator>anthony.dahanne</dc:creator>
				<category><![CDATA[android]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://blog.dahanne.net/?p=225</guid>
		<description><![CDATA[<p>I recently started a new open source project : G2Android, for the android platform, and mainly for 3 reasons :</p>

The main reason I Started this project was because there isn&#8217;t yet any gallery2 clients for the android platform and I needed one to access my galleries where I share photos with my family and friends

<p>Gallery2 [...]]]></description>
			<content:encoded><![CDATA[<p>I recently started a new open source project : <a title="G2android : a gallery2 client for Android" href="http://code.google.com/p/g2android">G2Android</a>, for the android platform, and mainly for 3 reasons :</p>
<ul>
<li>The main reason I Started this project was because there isn&#8217;t yet any <a title="Gallery2 project page" href="http://gallery2.menalto.com" target="_blank">gallery2</a> clients for the android platform and I needed one to access my galleries where I share photos with my family and friends</li>
</ul>
<p>Gallery2 is an open source project to easily share your photos with your friends and family : you can install it on Php/MySql enabled server : be it a shared server or dedicates server; Gallery2 is maybe the most popular project in this category ! (I know, Picasa and FlickR exist but&#8230; I&#8217;m not the kind of guy to upload 7 Gb of photos to companies I don&#8217;t know and I don&#8217;t trust&#8230;)</p>
<p>Well, there&#8217;s a client for uploading photos to a gallery2, picpush, but it&#8217;s not open source and it&#8217;s loaded with ads&#8230; And you can&#8217;t browse photos&#8230;</p>
<ul>
<li>I wanted to start a new Android project, to know better this platform !</li>
<li>Iwanted to compete on the <a title="ADC" href="http://code.google.com/android/adc/" target="_blank">ADC (Android Developer Challenge) 2009</a> : given the current features, I&#8217;m not sure I have a chance to win the competition, but, hey, the important is to particpate as we isay !</li>
</ul>
<p>As of version 1.0, G2Android can browse albums and pictures, for more details, you can check out the <a title="G2Android Features" href="http://code.google.com/p/g2android/wiki/SupportedFeatures" target="_blank">Features page of G2Android</a></p>
<p>Version 1.1, which will be out soon, will allow you to browse private galleries, ie gallery2 installations which need a password.</p>
<p>The project is open source, GPL v.2, so you want to join in, feel free to contact me !</p>
<p>Finally, you can download G2Android from the Android Market : just type &laquo;&nbsp;G2Android&nbsp;&raquo; in your search or <a title="G2Android on the Android market" href="market://search?q=pname:net.dahanne.android.g2android">simply click on this link if you&#8217;re browsing this page with an Android device</a> .</p>
<p>You can also <a title="Download G2Android" href="http://code.google.com/p/g2android/downloads/list" target="_blank">download it directly from the G2Android Google code site.</a></p>
<p>Have fun with it, and feel free to <a title="G2Android bug tracker" href="http://code.google.com/p/g2android/issues/list" target="_blank">submit new issues on the bugtracker</a> if you encounter a bug !</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dahanne.net/2009/08/16/g2android-a-gallery2-client-for-the-android-platform/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Different ways to access HTTP resources from Android</title>
		<link>http://blog.dahanne.net/2009/08/16/how-to-access-http-resources-from-android/</link>
		<comments>http://blog.dahanne.net/2009/08/16/how-to-access-http-resources-from-android/#comments</comments>
		<pubDate>Sun, 16 Aug 2009 14:35:05 +0000</pubDate>
		<dc:creator>anthony.dahanne</dc:creator>
				<category><![CDATA[android]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://blog.dahanne.net/?p=227</guid>
		<description><![CDATA[<p>In this article, I invite the reader to discover the different methods to access http resources from the Android platform.
These methods can be adapted to access web services (using REST) or simply to download files !</p>
First Method : getting an input stream given a simple url from Android using HttpURLConnection
<p>This method is the most basic [...]]]></description>
			<content:encoded><![CDATA[<p>In this article, I invite the reader to discover the different methods to access http resources from the Android platform.<br />
These methods can be adapted to access web services (using REST) or simply to download files !</p>
<h3>First Method : getting an input stream given a simple url from Android using HttpURLConnection</h3>
<p>This method is the most basic one : it allows you, using the basic HttpUrlConnection, ( contained in java.net) to get an InputStream from an Url :</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">private</span> <span style="color: #003399;">InputStream</span> downloadUrl<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> url<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #003399;">HttpURLConnection</span> con <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #339933;">;</span>
		<span style="color: #003399;">URL</span> url<span style="color: #339933;">;</span>
		<span style="color: #003399;">InputStream</span> is<span style="color: #339933;">=</span><span style="color: #000066; font-weight: bold;">null</span><span style="color: #339933;">;</span>
		<span style="color: #000000; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span>
			url <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">URL</span><span style="color: #009900;">&#40;</span>url<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			con <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #003399;">HttpURLConnection</span><span style="color: #009900;">&#41;</span> url.<span style="color: #006633;">openConnection</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			con.<span style="color: #006633;">setReadTimeout</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">10000</span> <span style="color: #666666; font-style: italic;">/* milliseconds */</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			con.<span style="color: #006633;">setConnectTimeout</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">15000</span> <span style="color: #666666; font-style: italic;">/* milliseconds */</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			con.<span style="color: #006633;">setRequestMethod</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;GET&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			con.<span style="color: #006633;">setDoInput</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			con.<span style="color: #006633;">addRequestProperty</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Referer&quot;</span>, <span style="color: #0000ff;">&quot;http://blog.dahanne.net&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #666666; font-style: italic;">// Start the query</span>
			con.<span style="color: #006633;">connect</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			is <span style="color: #339933;">=</span> con.<span style="color: #006633;">getInputStream</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span><span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #009900;">&#40;</span><span style="color: #003399;">IOException</span> e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                        <span style="color: #666666; font-style: italic;">//handle the exception !</span>
			e.<span style="color: #006633;">printStackTrace</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
		<span style="color: #000000; font-weight: bold;">return</span> is<span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #009900;">&#125;</span></pre></div></div>

<p>You can also use the Post method, sending data in the HTTP POST payload :</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">private</span> <span style="color: #003399;">InputStream</span> downloadUrl<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> url<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                <span style="color: #003399;">InputStream</span> myInputStream <span style="color: #339933;">=</span><span style="color: #000066; font-weight: bold;">null</span><span style="color: #339933;">;</span>
		StringBuilder sb <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> StringBuilder<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                <span style="color: #666666; font-style: italic;">//adding some data to send along with the request to the server</span>
		sb.<span style="color: #006633;">append</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;name=Anthony&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #003399;">URL</span> url<span style="color: #339933;">;</span>
		<span style="color: #000000; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span>
			url <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">URL</span><span style="color: #009900;">&#40;</span>url<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #003399;">HttpURLConnection</span> conn <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #003399;">HttpURLConnection</span><span style="color: #009900;">&#41;</span> url.<span style="color: #006633;">openConnection</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			conn.<span style="color: #006633;">setDoOutput</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			conn.<span style="color: #006633;">setRequestMethod</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;POST&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #003399;">OutputStreamWriter</span> wr <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">OutputStreamWriter</span><span style="color: #009900;">&#40;</span>conn
					.<span style="color: #006633;">getOutputStream</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                        <span style="color: #666666; font-style: italic;">// this is were we're adding post data to the request</span>
                        wr.<span style="color: #006633;">write</span><span style="color: #009900;">&#40;</span>sb.<span style="color: #006633;">toString</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			wr.<span style="color: #006633;">flush</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			myInputStream <span style="color: #339933;">=</span> conn.<span style="color: #006633;">getInputStream</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			wr.<span style="color: #006633;">close</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #009900;">&#40;</span><span style="color: #003399;">Exception</span> e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                        <span style="color: #666666; font-style: italic;">//handle the exception !</span>
			Log.<span style="color: #006633;">d</span><span style="color: #009900;">&#40;</span>TAG,e.<span style="color: #006633;">getMessage</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
                <span style="color: #000000; font-weight: bold;">return</span> myInputStream<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>But there are better ways to achieve that, using Apache HttpClient, included in android.jar (no need to add another jar, it&#8217;s included in android core)</p>
<h3>Second Method : getting an input stream given a simple url from Android using HttpClient</h3>
<p>Why is it a better to do it ? because the simpler, the better ! See by yourself :</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #003399;">InputStream</span> getInputStreamFromUrl<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> url<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #003399;">InputStream</span> content <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #339933;">;</span>
		<span style="color: #000000; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span>
			HttpGet httpGet <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> HttpGet<span style="color: #009900;">&#40;</span>url<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			HttpClient httpclient <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> DefaultHttpClient<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #666666; font-style: italic;">// Execute HTTP Get Request</span>
			HttpResponse response <span style="color: #339933;">=</span> httpclient.<span style="color: #006633;">execute</span><span style="color: #009900;">&#40;</span>httpGet<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			content <span style="color: #339933;">=</span> response.<span style="color: #006633;">getEntity</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">getContent</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                <span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #009900;">&#40;</span><span style="color: #003399;">Exception</span> e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #666666; font-style: italic;">//handle the exception !</span>
		<span style="color: #009900;">&#125;</span>
		<span style="color: #000000; font-weight: bold;">return</span> content<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>But you maybe wondering if it&#8217;s still easy with HTTP Post method ? You won&#8217;t be deceived !</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #003399;">InputStream</span> getInputStreamFromUrl<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> url<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #003399;">InputStream</span> content <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #339933;">;</span>
		<span style="color: #000000; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span>
          		HttpClient httpclient <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> DefaultHttpClient<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			HttpPost httpPost <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> HttpPost<span style="color: #009900;">&#40;</span>url<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #003399;">List</span> nameValuePairs <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">ArrayList</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                        <span style="color: #666666; font-style: italic;">//this is where you add your data to the post method</span>
                        nameValuePairs.<span style="color: #006633;">add</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> BasicNameValuePair<span style="color: #009900;">&#40;</span>
			<span style="color: #0000ff;">&quot;name&quot;</span>, <span style="color: #0000ff;">&quot;anthony&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			httpPost.<span style="color: #006633;">setEntity</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> UrlEncodedFormEntity<span style="color: #009900;">&#40;</span>nameValuePairs<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #666666; font-style: italic;">// Execute HTTP Post Request</span>
			HttpResponse response <span style="color: #339933;">=</span> httpclient.<span style="color: #006633;">execute</span><span style="color: #009900;">&#40;</span>httpPost<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			content <span style="color: #339933;">=</span> response.<span style="color: #006633;">getEntity</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">getContent</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		        <span style="color: #000000; font-weight: bold;">return</span> content<span style="color: #339933;">;</span>
	        <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>But what if you want to read a cookie from the response ? And how can you send a cookie back to the server for the next request ?</p>
<h3>Reading / Sending a cookie along with the requests</h3>
<p>Using Apache HttpClient, it&#8217;s easy to retrieve cookies ! Everything is in the headers after all !</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #009900;">&#91;</span>...<span style="color: #009900;">&#93;</span>
Cookie sessionCookie <span style="color: #339933;">=</span><span style="color: #000066; font-weight: bold;">null</span><span style="color: #339933;">;</span>
HttpResponse response <span style="color: #339933;">=</span> httpclient.<span style="color: #006633;">execute</span><span style="color: #009900;">&#40;</span>httpPost<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
Header<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> allHeaders <span style="color: #339933;">=</span> response.<span style="color: #006633;">getAllHeaders</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
CookieOrigin origin <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> CookieOrigin<span style="color: #009900;">&#40;</span>host, port,path, <span style="color: #000066; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span>Header header <span style="color: #339933;">:</span> allHeaders<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #003399;">List</span> parse <span style="color: #339933;">=</span> cookieSpecBase.<span style="color: #006633;">parse</span><span style="color: #009900;">&#40;</span>header, origin<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span>Cookie cookie <span style="color: #339933;">:</span> parse<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
				<span style="color: #666666; font-style: italic;">// THE cookie</span>
				<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>cookie.<span style="color: #006633;">getName</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">equals</span><span style="color: #009900;">&#40;</span>COOKIE_I_WAS_LOOKING_FOR<span style="color: #009900;">&#41;</span>
						<span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;&amp;</span>amp<span style="color: #339933;">;</span> cookie.<span style="color: #006633;">getValue</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">!=</span> <span style="color: #000066; font-weight: bold;">null</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;&amp;</span>amp<span style="color: #339933;">;</span> cookie.<span style="color: #006633;">getValue</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">!=</span> <span style="color: #0000ff;">&quot;&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
					sessionCookie <span style="color: #339933;">=</span> cookie<span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span>
			<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>To send a cookie along with your request, keep it simple :</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">HttpPost httpPost <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> HttpPost<span style="color: #009900;">&#40;</span>url<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
CookieSpecBase cookieSpecBase <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> BrowserCompatSpec<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #003399;">List</span> cookies <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">ArrayList</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
cookies.<span style="color: #006633;">add</span><span style="color: #009900;">&#40;</span>sessionCookie<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #003399;">List</span> cookieHeader <span style="color: #339933;">=</span> cookieSpecBase.<span style="color: #006633;">formatCookies</span><span style="color: #009900;">&#40;</span>cookies<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">// Setting the cookie</span>
httpPost.<span style="color: #006633;">setHeader</span><span style="color: #009900;">&#40;</span>cookieHeader.<span style="color: #006633;">get</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>What about the resulting InputStream ? You definitely want to transform it into a String or an Drawable (to set it to an ImageView for example !) don&#8217;t you ?</p>
<h3>Converting the InputStream into a Drawable in Android</h3>
<p>The Drawable class already handles that for you :</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">Drawable d <span style="color: #339933;">=</span> Drawable.<span style="color: #006633;">createFromStream</span><span style="color: #009900;">&#40;</span>myInputStream, <span style="color: #0000ff;">&quot;nameOfMyResource&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h3>Converting the InputStream into a String in Android</h3>
<p>This is some classic java stuff (don&#8217;t tell about how easier it is in Ruby.. I know <img src='http://blog.dahanne.net/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' />  &#8230; but hey ! Java SE7 at the rescue with NIO !!! maybe one day in 2010 ! )</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #003399;">BufferedReader</span> rd <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">BufferedReader</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">InputStreamReader</span><span style="color: #009900;">&#40;</span>myInputStreamToReadIntoAString<span style="color: #009900;">&#41;</span>, <span style="color: #cc66cc;">4096</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #003399;">String</span> line<span style="color: #339933;">;</span>
StringBuilder sb <span style="color: #339933;">=</span>  <span style="color: #000000; font-weight: bold;">new</span> StringBuilder<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>line <span style="color: #339933;">=</span> rd.<span style="color: #006633;">readLine</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">!=</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		sb.<span style="color: #006633;">append</span><span style="color: #009900;">&#40;</span>line<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
rd.<span style="color: #006633;">close</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #003399;">String</span> contentOfMyInputStream <span style="color: #339933;">=</span> sb.<span style="color: #006633;">toString</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
&nbsp;
That<span style="color: #0000ff;">'s it folks ! If you have any other methods to achieve these goals, feel free to share them sending a comment !</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://blog.dahanne.net/2009/08/16/how-to-access-http-resources-from-android/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Jboss and java.lang.OutOfMemoryError: PermGen space</title>
		<link>http://blog.dahanne.net/2009/08/12/jboss-and-java-lang-outofmemoryerror-permgen-space/</link>
		<comments>http://blog.dahanne.net/2009/08/12/jboss-and-java-lang-outofmemoryerror-permgen-space/#comments</comments>
		<pubDate>Wed, 12 Aug 2009 15:14:50 +0000</pubDate>
		<dc:creator>anthony.dahanne</dc:creator>
				<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://blog.dahanne.net/?p=212</guid>
		<description><![CDATA[<p>Once again, this infamous exception blew at my face when starting JBoss 4.2.3.GA today !
In fact, JBoss had to deploy 2 wars, one of them being a Web Service deploying war.
This exception occurred for one simple reason : the permgenspace is where class properties, such as methods, fields, annotations, and also static variables, etc. are [...]]]></description>
			<content:encoded><![CDATA[<p>Once again, this infamous exception blew at my face when starting JBoss 4.2.3.GA today !<br />
In fact, JBoss had to deploy 2 wars, one of them being a Web Service deploying war.<br />
This exception occurred for one simple reason : the permgenspace is where class properties, such as methods, fields, annotations, and also static variables, etc. are stored in the Java VM, but this space has the particularity to not being cleaned by the garbage collector.<br />
So if your webapp uses or creates a lot of classes (I&#8217;m thinking dynamic generations of classes), chances are you met this problem.<br />
Here are some solutions that helped me get rid of this exception :</p>
<ul>
<li>-XX:+CMSPermGenSweepingEnabled : this setting enables garbage collection in the permgenspace</li>
<li>-XX:+CMSClassUnloadingEnabled : allows the garbage collector to remove even classes from the memory</li>
<li><span style="font-size: x-small;">-XX:PermSize=64M<span> </span> -XX:MaxPermSize=128M : raises the amount of memory allocated to the permgenspace</span></li>
</ul>
<p>These options must be included in the JAVA_OPTS part of your Jboss run.bat or run.sh startup file.</p>
<p>Thank you <a href="http://www.linkedin.com/pub/stephane-malbequi/1/512/538" target="_blank">Stephane</a> for giving me the solution !</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dahanne.net/2009/08/12/jboss-and-java-lang-outofmemoryerror-permgen-space/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Eclipse Galileo 3.5 : problèmes de connexion à travers un proxy&#8230;</title>
		<link>http://blog.dahanne.net/2009/07/01/eclipse-galileo-3-5-problemes_proxy/</link>
		<comments>http://blog.dahanne.net/2009/07/01/eclipse-galileo-3-5-problemes_proxy/#comments</comments>
		<pubDate>Wed, 01 Jul 2009 09:10:17 +0000</pubDate>
		<dc:creator>anthony.dahanne</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://blog.dahanne.net/?p=175</guid>
		<description><![CDATA[<p>En installant Eclipse Galileo, sur un poste de travail en entreprise (donc utilisant derrière un proxy pour l&#8217;accès à internet) j&#8217;ai rencontré quelques problèmes pour me connecter aux update sites (via Help -&#62; install new software&#8230;).
En fait, même en ayant bien régler les coordonnées du proxy dans Window -&#62; Preferences -&#62; general-&#62;network connections , dès [...]]]></description>
			<content:encoded><![CDATA[<p>En installant Eclipse Galileo, sur un poste de travail en entreprise (donc utilisant derrière un proxy pour l&#8217;accès à internet) j&#8217;ai rencontré quelques problèmes pour me connecter aux update sites (via Help -&gt; install new software&#8230;).<br />
En fait, même en ayant bien régler les coordonnées du proxy dans Window -&gt; Preferences -&gt; general-&gt;network connections , dès que j&#8217;essayais d&#8217;installer des plugins via l&#8217;update manager, j&#8217;avais l&#8217;erreur suivante : (à peu près) :<br />
<code>!ENTRY org.eclipse.core.net 1 0 2009-04-16 18:12:18.427<br />
!MESSAGE System property socksProxyPort is not set but should be .<br />
</code><br />
Pas génial&#8230;<br />
EN fait, le bug est référencé sur cette page :</p>
<p>https://bugs.eclipse.org/bugs/show_bug.cgi?id=281472#c7</p>
<p>et en particulier, le moyen de contournement, à savoir ne pas utiliser Apache HTTPClient pour se connecter au réseau se trouve sur cette page :</p>
<p>http://wiki.eclipse.org/ECF_Filetransfer_Support_for_NTLMv2_Proxies</p>
<p>Il suffit de modifier son eclipse.ini et rajouter les valeurs suivantes :</p>

<div class="wp_syntax"><div class="code"><pre class="ini" style="font-family:monospace;">-Dorg.eclipse.ecf.provider.filetransfer.excludeContributors<span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">org.eclipse.ecf.provider.filetransfer.httpclient</span>
-Dhttp.proxyPort<span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">8080</span>
-Dhttp.proxyHost<span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">myproxy</span>
-Dhttp.proxyUser<span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">mydomain\myusername</span>
-Dhttp.proxyPassword<span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">mypassword</span>
-Dhttp.nonProxyHosts<span style="color: #000066; font-weight:bold;">=</span><span style="color: #000066; font-weight:bold;"><span style="color: #660066;">localhost|127.0.0.1</span></span></pre></div></div>

<p>Vous n&#8217;etes pas obligés de rajouter un utilisateur/mot de passe si votre proxy n&#8217;en a pas besoin.<br />
<strong>Attention ! bien placer ces propriétés juste en dessous de -vmargs !</strong><br />
Ainsi, au prochain redémarrage, vous aurez accès aux update sites eclipse à travers votre proxy (malgré 1 message d&#8217;erreur la première fois !)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dahanne.net/2009/07/01/eclipse-galileo-3-5-problemes_proxy/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Jazoon 09 : third and last day, Thursday 25th of June</title>
		<link>http://blog.dahanne.net/2009/06/25/jazoon-09-third-and-last-day-thursday-25th-of-june/</link>
		<comments>http://blog.dahanne.net/2009/06/25/jazoon-09-third-and-last-day-thursday-25th-of-june/#comments</comments>
		<pubDate>Thu, 25 Jun 2009 20:35:15 +0000</pubDate>
		<dc:creator>anthony.dahanne</dc:creator>
				<category><![CDATA[android]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jazoon 09]]></category>
		<category><![CDATA[meeting]]></category>

		<guid isPermaLink="false">http://blog.dahanne.net/?p=170</guid>
		<description><![CDATA[<p>Vous pouvez lire cet article en français sur le blog de valtech.</p>
The Changing Nature of Enterprise Java Application Development, 9:00 &#8211; 9:45 by Adrian Colyer
<p>During his talk, the speaker described the audience the future of a Java platform, because it is actually going to be there for a long time now.
He mentioned the dynamic languages [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.valtech.fr/wordpress/2009/06/25/jazoon-3eme-et-dernier-jour-jeudi-25-juin/">Vous pouvez lire cet article en français sur le blog de valtech.</a></p>
<h3>The Changing Nature of Enterprise Java Application Development, 9:00 &#8211; 9:45 by Adrian Colyer</h3>
<p>During his talk, the speaker described the audience the future of a Java platform, because it is actually going to be there for a long time now.<br />
He mentioned the dynamic languages compatible with the JVM : Groovy, JRuby, Scala, and Clojure.<br />
He mainly focused on Groovy (which belongs to SpringSource by the way), even if he was not sure if whether JRuby or Groovy would win the &laquo;&nbsp;war of dynamic languages&nbsp;&raquo;.<br />
For the web platform, he mentioned Grails, built on top of Groovy, Rails running on top of Ruby, and Lift built on top of Scala.<br />
He finished his talk introducing OSGi and Spring DM; the future of enterpise is application may be in the cloud : easily to deploy and scale applications are to come.</p>
<h3>The android runtime environment, 10:30 &#8211; 11:20, by Joerg Pleumann</h3>
<p>The speaker first made an introduction to the Android system, as a platform competing windows mobile and palm.<br />
More technically speaking, it is based on a Linux kernel (along with necessary drivers : display, camera, sound, etc&#8230;).<br />
On top of it come the Android Runtime and libraries; the talk is about the Android Runtime and its Dalvik VM.<br />
Dalvik VM : CPU between 250 and 500 MHz, RAM >=64 (equivalent to a 1999 PC), but low power consumption is critical.<br />
The Dalvik VM is really efficient, using explicit registers to keep temporary values: the immediate benefit is the number of lines of the bytecode resulting from the DalvikVM compilation : nearly 30% less than a standard VM compilation.<br />
A dex file (Dalvik Executable) contains several files, and is not compressed.<br />
JNI is ready, a sdk for using JNI is about to come out in the next days; also an Android Debug Bridge is available from the beginning.<br />
The core libraries<br />
dalvik vm specific libraries : dalvik.*<br />
java compatibility libraries : java.* and javax.*<br />
and some apache libraries(mainly for http) : org.apache.*<br />
The core libraries are partly taken from Apache Harmony (a JDK implementation by Apache), partly written from scratch; and some of them have been optimized (using JNI)<br />
The core libraries are mostly compatible to a subset of J2SE 5.0.<br />
JDBC 2.0 is supported, but the SQLite driver is limited., but one can use the alternative in android.database.sqlite which are better integrated.<br />
To conclude with, with Android you can reuse your java knowledge and tools.</p>
<h3>Android Application Model, 11:30 &#8211; 12:20, by Dominik Gruntz</h3>
<p>4 main components :activities, services, content providers and broadcast receivers.<br />
A single class, uses intents to communicate with the other activities; when you launch an activity, you can (or not) expect a result; if this is the case, the method onIntentResult will be called.<br />
You can also define intent filters to describe the intents an activity can handle.<br />
An intent specification is on its way : http://www.openintents.org<br />
An application is packaged using an APK (Android package).<br />
Every activity has a lifecycle containing 4 steps : new, running, paused,  stopped, killed and the corresponding methods (onCreate, onStop etc..)<br />
For each activity a new process (with a single thread) is created.<br />
The Looper.loop() dispathes the actions to a queue.<br />
If an activity does not conume events in 5sec, the system issue a warning message.<br />
A service is running background and can communicate with an activity (in process if it&#8217;s the same application (APK)) or via AIDL.<br />
Finally, a content provider is the only way to share date between  Android applications; it can using SQLite, a file, or a remote storage. </p>
<h3>Scalable Agile Web Development: REST meets JCR meets OSGI, by Michael Marth</h3>
<p>JCR : JSR 270 for accessing content repository : located on a file or database; can be versioned; node ahave read/write group properties, etc&#8230;<br />
Apache Sling is a web framework, on top of REST/Scripting (Ruby, Groovy, etc&#8230;)/OSGi(in this case Apache Felix Container, to switch on/off part of the frameework live)/JCR.<br />
So basically Apache Sling allows the user to create/edit/read/update content in a restful manner (http methods), the data being created is then stored on the JCR repository, organized in a very similar WebUrlFriendly way (and then you can manipulate the data through rest or webdav and so on, thanks to JCR)<br />
The demo was really smooth and interesting !</p>
<h3>The charm of Mockito: Test Spies in action, 14:30 &#8211; 15:20, by Szczepan Faber</h3>
<p>The speaker begins asking who uses JMock : 2 or 3 people among an audience of 60 people, half of the audience using EasyMock.<br />
So let&#8217;s start with EasyMock : coding in TDD a dictionnary, (and its history) depending on a translator : the translator is mocked.<br />
With easymock the speaker keeps it old fadhioned : createMock/expect/replay/assert/verify , (his test extends Assert) and then refactor a bit in the @Before and @After test methods, nothing special here.<br />
Then Mockito : mock/when/assert/verify : it&#8217;s a lighter syntax indeeed!<br />
Szczepan insisted on the fact that usually developers using easymock create replayAll and verifyAll methods called in the @After method; which make Easymok fail when many behaviours are attached.<br />
The speaker uses BDD style template (given/when/then) in eclipse, when creating a test.<br />
Mockito eases the use of a given/when/then syntax when writing a test.<br />
Has good point of failure ?<br />
The failure trace in mockito is linked to the source code and more explicit about the error, it does not whow internal classes exceptions<br />
Mockito or mockito-like for python, flex, javascript, C++; there are mockito extensions<br />
He concluded with : &laquo;&nbsp;Do TDD and write great tests with whatever tools that work for you&nbsp;&raquo;<br />
May the force be with you !</p>
<h3>Eclipse Galileo and JBoss Tools, 16:30 &#8211; 16:50, by Max Andersen</h3>
<p>Galileo (3.5) is a huge release.<br />
Must-sees : Eclipse Memory Analyser (to see which plugin consumes all the memory for example), using jmap<br />
XML and XSL editor is really better.<br />
P2 (eclipse update manager) works for real; you shouldn&#8217;t use dropins anymore (single zip files to unpackage in /plugins and /features), for offline installation plugins providers should suggest copies of the update site, then you may use P2 to explore these files, as if you were online).</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dahanne.net/2009/06/25/jazoon-09-third-and-last-day-thursday-25th-of-june/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jazoon 09, second day : 24th of June 2009</title>
		<link>http://blog.dahanne.net/2009/06/24/jazoon-09-second-day-24th-of-june-2009/</link>
		<comments>http://blog.dahanne.net/2009/06/24/jazoon-09-second-day-24th-of-june-2009/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 16:34:57 +0000</pubDate>
		<dc:creator>anthony.dahanne</dc:creator>
				<category><![CDATA[android]]></category>
		<category><![CDATA[jazoon 09]]></category>
		<category><![CDATA[meeting]]></category>

		<guid isPermaLink="false">http://blog.dahanne.net/?p=167</guid>
		<description><![CDATA[<p>The following sessions were given during Jazoon 09, on Wednesdaythe 24th of Ju ne 2009, vous pouvez lire la traduction en français sur le blog de Valtech</p>
Danny Coward Keynote, 9:00 &#8211; 10:00
Java 7
<p>Description of the new features in Java SE 7  : modularity, ?. operator, new API for java.io (Path, Asynchronous FileVisitor), http://openjdk.java.net/projects/jdk7</p>
Java FX
<p>The [...]]]></description>
			<content:encoded><![CDATA[<p>The following sessions were given during Jazoon 09, on Wednesdaythe 24th of Ju ne 2009, <a href="http://blog.valtech.fr/wordpress/2009/06/24/jazoon-09-sessions-du-mercredi-24-juin/">vous pouvez lire la traduction en français sur le blog de Valtech</a></p>
<h3>Danny Coward Keynote, 9:00 &#8211; 10:00</h3>
<h4>Java 7</h4>
<p>Description of the new features in Java SE 7  : modularity, ?. operator, new API for java.io (Path, Asynchronous FileVisitor), http://openjdk.java.net/projects/jdk7</p>
<h4>Java FX</h4>
<p>The new version is 1.2, running on all OSes (even Linux and Solaris, a TV, some phones to come out), more UI components (skinnable with CSS) , new layouts, better performance; then Danny showed the audience some JavaFX applications : a pacman application, a video player, with some nice visual effects &#8230; </p>
<h3>OSGi and Java Modularity, 10:30 &#8211; 11:20, by Peter Kriens</h3>
<p>If you think your application is modular only by using the VM, well, think again&#8230;<br />
You can&#8217;t hide interfaces in the classsloader, and if there are no enforcements of rules at runtime, it&#8217;s uselesse to try to make these interfaces secrets&#8230;<br />
In OSGi, you can set secret interfaces (not exported) and also use MANIFESTs to explicitely specify exports.<br />
With an OSGi bundle (a jar actually, with its MANIFEST), you can dynamically specify which others bundles it can depend on, if one of the bundle you depend on is no more available, OSGi will remove the dependency; then it will put it back when the bundle is available again.<br />
The problem is : many implementations of modularity exist and JSR 294 do not specify a particular one &#8230; From a programmer point of view, you will have to choose between OSGi, Jigsaw, guice, the modularity implementation you want to use &#8230; </p>
<h3>Next generation Wikis: Mixing Content-Oriented Applications with Wikis, 11:30 &#8211; 12:20, by Vincent Massol</h3>
<p>Wiki 1.0 : just used for text<br />
Wiki 2.0 : you can add everything : images, videos, comments, notes, etc.., the datas can be structured, unstructured or mashups (datas coming from everywhere) the wiki 2.0 is the excell&#8230; of the web !<br />
After presenting a demo showing us the possibility in Xwiki to define in 10 minutes (knowing velocity or groovy syntax) an application hosted on the wiki, Vincent listed the Xwiki features and the new features to come : real time collaboration, mobile skin, social features and &#8230; merge of CMS and wikis.</p>
<h3>JavaFX Rich Internet Applications connected to GlassFish Java EE 5 services, 16:00-16:20, by Ludovic Champenois – Sun Microsystems</h3>
<p>First of all, Ludovic showed us the GlassFish v3 admin console (looks good !) and reminded us with REST (standard HTTP methods, resources, etc&#8230;), and the REST annotations in Java EE6.<br />
Why ? because the example given during his demonstration is communicating with a JAX-RS Java EE6 application, hosted by Glassfish V3.<br />
To test the REST application, you can simply use  : curl -HAccept:application/xml http://localhost/domain, or use your browser or use Glassfish v3 Admin Backend Tester.<br />
And then, down to the JavaFx application code, using Netbeans, only 15 lines of code are necessary to consume the REST service.<br />
TO finish with, Ludovic showed us some other JavaFX demo applications.</p>
<h3>JavaFX / Android: Competing technologies or the ideal partnership? , 16:30 &#8211; 16:50 by Mike Mannion and Andreas Hölzl</h3>
<p>Presented as a theater play : 2 guys talking about phone technologies around a coffee : one is a JavaFX supporter, the other is an Android supporter.<br />
They then compared a similar application (using Flickr, Lastfm, youtube web services): developed both for JavaFx and the Android Platform.<br />
*UI : JavaFX needs UI designed by designers, Android defines it in an extermal layout XML file<br />
*UI (2) : Android provides a richer API, providing a photo gallery for example, JavaFX does not&#8230;<br />
*language : you have to learn JavaFX script for JavaFX, Android uses Java 5 API (with some restrictions&#8230;, for example it does not use AWT or Swing for graphics)<br />
They also told us that Sun is not clearly decided about supporting Android  : they said that they were thinking about it&#8230; but since then (a year ago) nothing came out !</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dahanne.net/2009/06/24/jazoon-09-second-day-24th-of-june-2009/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Jazoon 09 : First day, first sessions</title>
		<link>http://blog.dahanne.net/2009/06/23/jazoon-09-first-day-first-sessions/</link>
		<comments>http://blog.dahanne.net/2009/06/23/jazoon-09-first-day-first-sessions/#comments</comments>
		<pubDate>Tue, 23 Jun 2009 08:55:08 +0000</pubDate>
		<dc:creator>anthony.dahanne</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[jazoon 09]]></category>
		<category><![CDATA[meeting]]></category>

		<guid isPermaLink="false">http://blog.dahanne.net/?p=157</guid>
		<description><![CDATA[<p>The following sessions were given during Jazoon 09, on Tuesday the 23rd of June 2009, vous pouvez lire la traduction en français sur le blog de Valtech</p>
James Gosling keynote : 9:50 to 10:45
<p>First a nice little video from Java One, introducing the history of Java ! Very funny how Java conquered the world !
Then James [...]]]></description>
			<content:encoded><![CDATA[<p>The following sessions were given during <a href="http://jazoon.com/en/conference/tuesday.html">Jazoon 09, on Tuesday the 23rd of June 2009</a>, <a href="http://blog.valtech.fr/wordpress/2009/06/23/jazoon-09-sessions-du-mardi-23-juin/">vous pouvez lire la traduction en français sur le blog de Valtech</a></p>
<h3>James Gosling keynote : 9:50 to 10:45</h3>
<p>First a nice little video from Java One, introducing the history of Java ! Very funny how Java conquered the world !<br />
Then James Gosling begins his speech.<br />
Today there are more JREs installed than people on earth ! It can be be smart cards, desktops, phones&#8230; 6M Java developers today in the world &#8230; 15M JRE downloads / week.<br />
You can now view Java as &laquo;&nbsp;Learn One, Work everywhere&nbsp;&raquo; because it&#8217;s really spread everywhere now !<br />
James Gosling then describes the brazilian healthcare, where every piece of paper is now on the network : prescriptions, x rays, everything is now on the network (thanks to Java !), ebay, metropolitan networks cards, web apps, games&#8230; Java is everywhere !<br />
But the main thing is not java as the language, but the JVM that now hosts Ruby, Scala, JavaScript, etc&#8230;<br />
James then showed us a bit of java code : a servlet for Java EE6 running on GlashFish v3, changed, saved and instantly shown just refreshing the browser ! No more deployment bottleneck !<br />
He also introduced Netbeans, as the best IDE ! version 6.7 now integrates with project kenai, a sourceforge like (you can check in/out merge your files, etc&#8230; from Netbeans to kenai), also some better maven support.<br />
Java is also used in the real time world, even in a car that James turns into electric : a lincoln (lincvolt.org) which is hybrid, connected to the internet, running java code for measurement and control.<br />
Now down to the performance part :  Java is highly optimized, genrally beats C/C++, GC is a lot faster than malloc/free !<br />
Multithreading is the future of software designing : because the processors speed is not evolving anymore, we&#8217;ve got to think multicore !<br />
Java is also running on cellphones, JSR 248, Mobile Service Architecture aggregates all Java mobile specs.<br />
JDK7 will be modular (see Mark Reinhold&#8217;s blog), dynamic language support will be available too (JSR 292?); waiting for Java 7, there are still Java SE 6 updates : better browser and desktop integration are on their way !<br />
Of course, we got a few slides about JavaFX, which can run on desktops, mobile phones, set top boxes, etc&#8230;<br />
To finish his speech, James reminded us with all the java communities : netbeans.org, java.net, glassfish.org, etc&#8230;</p>
<h3>Java EE 6 11:00 &#8211; 11:50 by Roberto Chinnici from Sun</h3>
<p>Java EE6 was too complicated, so they decided to make it more easy to use, more powerful, and more flexible.<br />
That&#8217;s why they created the profiles, letting the users choose the features they need.<br />
For example the web profile includes everything for the web development, including the EJB 3.1 lite, and bean validation.</p>
<h4>Servlet 3.0</h4>
<p>New annotations @WebServlet, @WebFilter, @WebListener, the possibility to register new web components just adding them to WEB-INF/lib directory, a new async mode using just a single thread for many requests</p>
<h4>JAX-RS 1.1 : RestFul webservices</h4>
<p>This API is there to abstract low level HTTP details : using @GET and @POST (etc..) you can define your retrieval and creation REST operations, JAX-RS translates the XML to the java entities (and back) automatically for you (you can also use JSON)</p>
<h4>Bean Validation 1.0 (JSR-303)</h4>
<p>This API is here to validate fields (text inputs for example)<br />
Seems to be really verbose just to define constraints&#8230; We&#8217;ll see&#8230;</p>
<h4>EJB 3.1</h4>
<p>No intefaces anymore ! One source file per bean.<br />
New timer annotation @Schedule allowing some cron-like scheduling in the container : a great example provided is the case of a cache refreshing ! No more Mbeans called externally with crons, everything can be integrated in the application code !<br />
EJB 3.1 lite can run on Java SE, great for testing and also in a war file !<br />
Oups, we&#8217;re running out of time, the speaker skipped JPA 2.0</p>
<h3>&laquo;&nbsp;Design Patterns&nbsp;&raquo; in Dynamic Languages 12:00 &#8211; 12:50 by <a href="http://www.nealford.com">Neal Ford from ThoughtWorks</a> (nealford.com)</h3>
<p>After comparing mixing dynamic languages with whisky blending, Neal Ford reminded us about the history of Design Patterns : basically for &laquo;&nbsp;making C++ code suck less&nbsp;&raquo; !<br />
But the point is : the design pattern designed in 1994 are not always useful today : for example the iterator is quite complicated, whereas today in dynamic languages, like Ruby a collection.each{[x| puts x} is so much more&#8230; efficient !<br />
Command design pattern is already built in closures !<br />
The same for strategy, template, interpreter (the example showed how easy it is to implement a DSL in Groovy, defining new behaviors in the Integer class), decorator, recorder, adapter<br />
Then Neal described some other desgn pattern for dynamic languages : the null pattern (?. in groovy) and the aridifier pattern.<br />
To conclude with, Neal suggest that we should try the tools provided with the languages we&#8217;re using instead of blindly trying to copy the patterns designed for older, other languages !</p>
<h3>Gradle : A build system for Java 14:00 &#8211; 14:50, by Hans Dockter</h3>
<p>First the speaker reminds us of Ant and Maven.<br />
With Ant, it&#8217;s always been repetitive, with a lot of copy and paste when a new project starts, due to Ant limited domain model (resources, target, properties,)<br />
There is no place for listener in an Ant build&#8230;<br />
A gradle script can import old ant build scripts.<br />
With Gradle, you can call ant tasks, and even implement listeners on your ant task&#8230; An ant task called in a gradle scrip can even be aware of the next task that will be called !<br />
Maven, on its side is a build by convention framework, which has introduced dependency management.<br />
But Maven uses XML, and 25 lines of XML are required to launch a simple build !<br />
Maven uses transitive dependency whereas Gradle is able to skip tasks (which can be handy when a Maven dependency is broken&#8230;)<br />
Gradle aims to be a build language rather than a build framework; because when a framework does not implement a functionality, you spend your time fighting against the framework to make him do something it was not intended to do.<br />
You can define your maven build with a groovy script using gradle.<br />
With gradle, it becomes easy to define usually manual and entreprise specific tasks like release management or deployment.<br />
Grandle can use Apache Ivy or Maven dependencies, it can even deploy a build to a maven repository.<br />
There is also a Gradle Wrapper to start using Gradle without installing it : the Continuous integration machine will download Gradle for you and execute the gradle script (which is a shell script downloading gradle) !<br />
What&#8217;s next? Gradle 1.0 will be out in Autumn.<br />
Q&#038;A :<br />
What open source projects are already using Gradle ?<br />
Grails, but others are to come.</p>
<h3>Next Generation Enterprise Builds: Maven, Mercury, and Tycho (for OSGi builds) by Jason van Zyl from Sonatype</h3>
<h4>Maven 3.0 </h4>
<p>Better integration in IDEs, faster, rewritten artifact resolution system, etc&#8230;<br />
Maven 3.0 is more focused on integration tests, provides a new version of the plugin manager, a queryable lifecycle to make the tools able to predict what&#8217;s going to be done and also able to ask to execute a particular step.<br />
Maven 3.0 uses Mercury : a new repository and transport layer, that can be used with others systems (Ruby gems, Eclipse P2 dependency management)</p>
<h4>M2eclipse</h4>
<p>M2eclipse has also been improved, now m2eclipse won&#8217;t call every maven tasks on a a save action, it will only call the appropriate ones.<br />
The m2eclipse team would like the users to be able to resolve every maven operations from Eclipse,<br />
M2eclipse is now compatible with Flex (out by october 2009).</p>
<h4>Nexus</h4>
<p>Only 5% of the maven users use a repository manager.<br />
Nexus is also for binary sharing inside the enterprise, it a repository manager, it&#8217;s like a source control management, but for binaries !<br />
Nexus main advantage is also the caching system it provides.<br />
Nexus can be queryed through m2eclipse, Nexus API can be used through REST, which makes it very easy to use.</p>
<h4>Hudson</h4>
<p>For its next version, hudson will integrate :d rools workflow integration (with a workflow editor), a rest layer to query hudson, unifying hudson m2eclipse, nexus better maven integration</p>
<h3>Testing Zen 16:00 &#8211; 16:20 by Thomas Mueller, Day</h3>
<p>In this session Thomas gave us the reasons why we should test our code.<br />
Then he continued giving us an example of fuzz testing (data generation to test)<br />
Code coverage (with Emma) to find untested and dead code.<br />
Database testing is often hard : a pain to install&#8230; so you can use a Java SQL Database like HSQL (a good one), H2 (the best, and also the one the speaker is working on ! <img src='http://blog.dahanne.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  ) or Derby (the worse).</p>
<h3>Creating Performance Test Data with benerator, by Volker Bergmann</h3>
<p>Usually performance testers prefer testing with production data, but sometimes it is not possible (for privacy reasons or if the system is new).<br />
In those cases, you have to use a data generator, like Benerator that can create and anonymize data, to DB, file, LDAP,  JCR, etc&#8230;</p>
<p>To finish the day, we had a really nice speech from Neal Ford, about technology predictability, that was real fun !</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dahanne.net/2009/06/23/jazoon-09-first-day-first-sessions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Certified Scrum Master Session in La Defense on June 17th and 18th</title>
		<link>http://blog.dahanne.net/2009/05/28/certified-scrum-master-session-in-la-defense-on-june-17th-and-18th/</link>
		<comments>http://blog.dahanne.net/2009/05/28/certified-scrum-master-session-in-la-defense-on-june-17th-and-18th/#comments</comments>
		<pubDate>Thu, 28 May 2009 07:48:50 +0000</pubDate>
		<dc:creator>anthony.dahanne</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[meeting]]></category>

		<guid isPermaLink="false">http://blog.dahanne.net/?p=151</guid>
		<description><![CDATA[<p>On Wednesday the 17th and Thursday the 18th of June (in less than a month) I&#8217;m gonna attend a Certified Scrum Master training session @ Valtech Training France in La Defense, by Jeff Mc Kenna.
I&#8217;m pretty excited about this training as Scrum becoms more and more popular and it&#8217;s going to the occasion to chat [...]]]></description>
			<content:encoded><![CDATA[<p>On Wednesday the 17th and Thursday the 18th of June (in less than a month) I&#8217;m gonna attend a Certified Scrum Master training session @<a href="http://www.valtech-training.fr"> Valtech Training France </a>in La Defense, by Jeff Mc Kenna.<br />
I&#8217;m pretty excited about this training as Scrum becoms more and more popular and it&#8217;s going to the occasion to chat with an experienced Scrum Master.<br />
<a href="http://blog.valtech.fr/wordpress/2009/04/15/certification-scrum-master-avec-valtech/">Eric from Valtech published an interesting post about this event, mentioning a video with Jeff Mc Kenna</a><br />
Some seats are still available, you should have more information at this page : <a href="http://www.valtech-training.fr/fr/index/training/formations/methodes_pratiques_agiles/CSM.html">Certified Scrum Master Training at La Defense 17th and 18th of June 2009.</a><br />
See you there !</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dahanne.net/2009/05/28/certified-scrum-master-session-in-la-defense-on-june-17th-and-18th/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XP Day France 09 : compte rendu de sessions suivies</title>
		<link>http://blog.dahanne.net/2009/05/25/xp-day-france-09-compte-rendu-de-sessions-suivies-12/</link>
		<comments>http://blog.dahanne.net/2009/05/25/xp-day-france-09-compte-rendu-de-sessions-suivies-12/#comments</comments>
		<pubDate>Mon, 25 May 2009 11:05:50 +0000</pubDate>
		<dc:creator>anthony.dahanne</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[meeting]]></category>

		<guid isPermaLink="false">http://blog.dahanne.net/?p=144</guid>
		<description><![CDATA[<p>Cette année encore, j&#8217;ai encore eu la chance de me rendre à XPDay France (merci Valtech Technology, mon employeur !), LA réunion agile française, qui se déroule sur 2 jours (je ne suis que le Lundi)
Cette année, je présente avec 2 collègues, Yannick Ameur et Stpéhane Malbéqui la session &#171;&#160;TDD avec ou sans mocks&#160;&#187; à [...]]]></description>
			<content:encoded><![CDATA[<p>Cette année encore, j&#8217;ai encore eu la chance de me rendre à<a href="http://xpday.fr/programme"> XPDay France</a> (merci <a href="http://blog.valtech.fr">Valtech Technology</a>, mon employeur !), LA réunion agile française, qui se déroule sur 2 jours (je ne suis que le Lundi)<br />
Cette année, je présente avec 2 collègues, Yannick Ameur et Stpéhane Malbéqui la session <a href="http://blog.valtech.fr/wordpress/2009/05/20/prets-pour-les-valtech-days/">&laquo;&nbsp;TDD avec ou sans mocks&nbsp;&raquo;</a> à 15:00 , mais en attendant, j&#8217;ai pu assister aux sessions suivantes :</p>
<h3>Modelisation agile</h1>
<p>par Pascal Roques ancien consultant Valtech/ Valtech Training, aujourd&#8217;hui  chez A2 consultants,  expert en UML,  présente comment modéliser en mode Agile, 45 min de présentation, 45 minutes de Travaux pratiques<br />
En introduction, Pascal nous rappelle que les spécifications nes ont pas désuètes, même à l&#8217;heure de l&#8217;agilité : c&#8217;est pas forcément lourd, cher, et encore moins inutiles, il s&#8217;appuie d&#8217;ailleurs sur les dires de &laquo;&nbsp;gurus&nbsp;&raquo; agiles comme A. Cokburn, M. Fowler et C. Larman, auteurs qui pronent la modélisation agile, la référence  étant http://www.agilemodeling.com par Scott Ambler.<br />
Il faut trouver le juste milieu entre pas de modélisation, et trop de modélisation (génération de tout le code, etc..)<br />
Pascal nous a ensuite présenté les valeurs de la modélisation agile : communication, simplicité, feedback, courage humilité !</p>
<h4>Pratiques de la modélisation agile : </h4>
<ul>
<li>au fur et à mesure, au moment où en a besoin, pas tout d&#8217;un coup !</li>
<li>modéliser ensemble : sur un grand tableau blanc par exemple</li>
<li>simplicité : il n&#8217;est pas nécessaire d&#8217;avoir des énormes outils, des outils simples suffisent, voire meme juste 1 paperboard qu&#8217;on prend en photo !</li>
<li>validation : ne pas oublier de valider le modèle ne le codant !</li>
</ul>
<p>Quand doit on modéliser ? plutot en début d&#8217;itération, ou au sprint 0 en Scrum, la première itération de cadrage<br />
Pascal nous présente ensuite un exemple : librairie en ligne</p>
<ul>
<li>1er diagramme : use cases (consultation, achat d&#8217;ouvrages, etc&#8230;</li>
<li>2eme diagramme : diagramme de séquances : représentation des intéractions dynamiques entre acteurs (internaute et librairie en ligne)</li>
<li>Diagramme de classes : juste ce dont on besoin : le livre et l&#8217;auteur dans un premier temps, le panier et les lignes panier dans un second temps</li>
</ul>
<h4>Travaux pratiques : </h4>
<p>Jeu du démineurs : écrire de diagramme de cas et de séquence et de classe faits par groupe de 8 sur le paper board.<br />
En conclusion, l&#8217;important n&#8217;est pas le modèle obtenu, mais le fait d&#8217;avoir réfléchi ensemble !<br />
Pascal a terminé sa conclusion en présentant des outils de modélisation agile :<br />
, entre autres http://www.yuml.me (creation de diagrammes UML en ligne, publication sur wiki ou blog), http://www.websequencediagrams.com</p>
<h3>Ceintures et bretelles : Test d&#8217;applications Web par Arnaud Bailly</h3>
<p>Beaucoup de bugs dans les applis web, interfaces graphiques de plus en plus riches, on veut enregistrer et rejouer des scénarios de manière automatisée.<br />
On s&#8217;intéresse uniquement du côté client.<br />
Exemple en Java / Scala :utilisation de maven 2, selenium, web driver, JqUnit (tests unitaires JQuery) pour l&#8217;exécution des tests en &laquo;&nbsp;mvn clean install&nbsp;&raquo;<br />
2eme démo : avec le framework Spec, cas de test écrit en BDD (Behaviour Driven Development)<br />
C&#8217;est bien, mais un peu long (27 sec. pour 3 tests) !<br />
Intégration des tests dans un serveur d&#8217;intégration continue, et utilisation de Virtual FrameBuffer pour que les tests puissent lancer le navigateur sans serveur X.<br />
Mais çà devient de plus en plus complexe ! On peut penser à utiliser HTMLUnit pour remplacer le navigateur, mais çà restera long&#8230;<br />
Puisque le code JavaScript est de qualité, testé, avec domaine métier, pourquoi utiliser un navigateur finalement ?<br />
En exécutant les tests sans passer par un navigateur, on gagne du temps (on en est au 18 sec.)<br />
En conclusion, Arnaud se pose la question si les tests d&#8217;IHM apportent vraiment de la valeur, car après tout, les tests sont trop long à exécuter (un projet avec 50 tests peut mettre 1 nuit à passer); même s&#8217;il est important de tester le côté fonctionnel, mais question ergonomi, placement des zones les testeurs humains ont toujours leur plus value !</p>
<h3>XP 2.0 : améliorer l’amélioration continue avec Lean, par Régis Medina et Antoine Contal</h3>
<p>Après XP, découverte de Lean<br />
A travers du vécu lors de la mise en place de Orange Web TV, Antoine explique sa démarche Scrum dans son équipe et Régis y confronte Lean.<br />
Régis essaie de cibler la volonté du client, la performance obtenue : mais en observant les indicateurs, on observe un décalage entre la performance attendue et la performance atteinte : un problème apparaît.<br />
Des concepts Lean comme le QRQC (Quick Response Quality Control), les checklists ont été évoqués et mis en oeuvre sur le projet d&#8217;Antoine.<br />
Antoine a apprécié lors de sa mise en oeuvre Lean :</p>
<ul>
<li>Les indicateurs de performance</li>
<li>Les standard de travail</li>
<li>l&#8217;amélioration continue (tous les jours du just do it)</li>
</ul>
<p>Il a aussi trouvé dur à appliquer ces règles : par exemple : le processus est sans fin<br />
Après la pause déjeuner, passée avec d&#8217;anciens et d&#8217;actuels Valtech (!) nous avons répété la session </p>
<h3>TDD avec ou sans Mock</h3>
<p>session donnée à 15h15 (un peu de retard, sur le planning) par moi même, <a href="http://twitter.com/smalbequi">Stéphane Malbéqui</a> et <a href="http://twitter.com/yannickameur">Yannick Ameur</a> d&#8217;ailleurs si vous avez aimé la présentation, et bien déjà n&#8217;hésitez pas à poster un commentaire, et ensuite rendez vous sur l&#8217;hébergement de la présentation:</p>
<p>http://code.google.com/p/tddavecousansmock/</p>
<p>La session a un peu dérapé (mais pas trop) l&#8217;affichage des slides sur le video projecteur était pas super, mais en tout cas je pense que le sujet a éveillé les consciences : mocker n&#8217;est pas automatique et d&#8217;un autre côté les tests unitaires ne suffisent pas !<br />
Ensuite, direction </p>
<h3>Mon JavaScript est agile</h3>
<p>Toujours donnée par Arnaud Bailly, très intéressante (et très technique aussi), prouvait qu&#8217;il est possible de faire du TDD avec des DSL en JavaScript !</p>
<p>Ensuite le mot des sponsors, au nombre de 5 je crois, l&#8217;apéro Agile et le repas Agile, d&#8217;excellente qualité,  des bons moments pour échanger avec les agilistes francophones (on a beaucoup parlé de la comparaison iPhone/Android quand même <img src='http://blog.dahanne.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  vivent les système ouverts!)<br />
Dommage, je n&#8217;y reviendrai pas demain, bonne journée pour ceux qui auront la chance d&#8217;y être !</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dahanne.net/2009/05/25/xp-day-france-09-compte-rendu-de-sessions-suivies-12/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Scripting with Ruby : be careful with File.open</title>
		<link>http://blog.dahanne.net/2009/05/21/scripting-with-ruby-be-careful-with-file-open/</link>
		<comments>http://blog.dahanne.net/2009/05/21/scripting-with-ruby-be-careful-with-file-open/#comments</comments>
		<pubDate>Thu, 21 May 2009 21:34:51 +0000</pubDate>
		<dc:creator>anthony.dahanne</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://blog.dahanne.net/?p=141</guid>
		<description><![CDATA[<p>Once again, I spend a long time debugging something which was quite obvious (well, at least when I discovered the solution&#8230;)
Trying to copy all the files from a .m3u playlist file (in each line there is a file path), I used ruby (well bash and zsh are not as funny as ruby), and especially the [...]]]></description>
			<content:encoded><![CDATA[<p>Once again, I spend a long time debugging something which was quite obvious (well, at least when I discovered the solution&#8230;)<br />
Trying to copy all the files from a .m3u playlist file (in each line there is a file path), I used ruby (well bash and zsh are not as funny as ruby), and especially the FileUtils.cp function.<br />
The code is as follow :</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
</pre></td><td class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'fileutils'</span>
count=<span style="color:#006666;">0</span>
<span style="color:#CC0066; font-weight:bold;">string</span> = <span style="color:#CC0066; font-weight:bold;">String</span>.<span style="color:#9900CC;">new</span>
<span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#CC0066; font-weight:bold;">open</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;/home/anthony/Documents/playlist_ok.m3u&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">each</span> <span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#006600; font-weight:bold;">|</span>line<span style="color:#006600; font-weight:bold;">|</span>
<span style="color:#9966CC; font-weight:bold;">if</span><span style="color:#006600; font-weight:bold;">&#40;</span>count!=<span style="color:#006666;">0</span><span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#9966CC; font-weight:bold;">if</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#40;</span>!line.<span style="color:#9966CC; font-weight:bold;">include</span>?<span style="color:#996600;">&quot;#&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#CC0066; font-weight:bold;">string</span> = line.<span style="color:#CC0066; font-weight:bold;">chomp</span>
<span style="color:#CC00FF; font-weight:bold;">FileUtils</span>.<span style="color:#9900CC;">cp</span> <span style="color:#CC0066; font-weight:bold;">string</span>,<span style="color:#996600;">'./'</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
count =  count<span style="color:#006600; font-weight:bold;">+</span><span style="color:#006666;">1</span>
<span style="color:#006600; font-weight:bold;">&#125;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Nombre lignes traitées : &quot;</span> <span style="color:#006600; font-weight:bold;">+</span> count.<span style="color:#9900CC;">to_s</span></pre></td></tr></table></div>

<p>Well, my mistake was to forget to add the line :<br />
<code>string = line.chomp</code><br />
because when you don&#8217;t, Ruby add the extra &laquo;&nbsp;\n&nbsp;&raquo; at the end of every line, and then FileUtils returns to you this very explicit message :<br />
<code><br />
/usr/lib/ruby/1.8/fileutils.rb:1200:in `stat': No such file or directory -  (Errno::ENOENT)<br />
from /usr/lib/ruby/1.8/fileutils.rb:1200:in `lstat'<br />
from /usr/lib/ruby/1.8/fileutils.rb:1178:in `stat'<br />
from /usr/lib/ruby/1.8/fileutils.rb:1260:in `copy_file'<br />
from /usr/lib/ruby/1.8/fileutils.rb:463:in `copy_file'<br />
from /usr/lib/ruby/1.8/fileutils.rb:383:in `cp'<br />
from /usr/lib/ruby/1.8/fileutils.rb:1395:in `fu_each_src_dest'<br />
from /usr/lib/ruby/1.8/fileutils.rb:1409:in `fu_each_src_dest0'<br />
from /usr/lib/ruby/1.8/fileutils.rb:1393:in `fu_each_src_dest'<br />
from /usr/lib/ruby/1.8/fileutils.rb:382:in `cp'<br />
from /serveur/anthony/ruby/export_playlist_to_files.rb:12<br />
from /serveur/anthony/ruby/export_playlist_to_files.rb:5:in `each'<br />
from /serveur/anthony/ruby/export_playlist_to_files.rb:5<br />
</code><br />
And believe me, it takes a while to debug&#8230; (irb was helful to solve this bug by the way !)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dahanne.net/2009/05/21/scripting-with-ruby-be-careful-with-file-open/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Soumission du projet WikiPlacesAndroid pour le concours SFR JTD</title>
		<link>http://blog.dahanne.net/2009/04/26/soumission-du-projet-wikiplacesandroid-pour-le-concours-sfr-jtd/</link>
		<comments>http://blog.dahanne.net/2009/04/26/soumission-du-projet-wikiplacesandroid-pour-le-concours-sfr-jtd/#comments</comments>
		<pubDate>Sun, 26 Apr 2009 21:52:59 +0000</pubDate>
		<dc:creator>anthony.dahanne</dc:creator>
				<category><![CDATA[android]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://blog.dahanne.net/?p=137</guid>
		<description><![CDATA[<p>Cà y est, aujourd&#8217;hui, comme le veut la tradition des deadlines, tout s&#8217;est mis à planter, à ne plus marcher dans l&#8217;application que j&#8217;ai développé conjointement avec Romain, pour le concours SFR JTD, WikiPlacesAndroid.
Faut dire que j&#8217;ai voulu rajouter plein de fonctionnalités (upload d&#8217;images, redimensionnement d&#8217;images sur le téléphone) et là, des catastrophes à répétition [...]]]></description>
			<content:encoded><![CDATA[<p>Cà y est, aujourd&#8217;hui, comme le veut la tradition des deadlines, tout s&#8217;est mis à planter, à ne plus marcher dans l&#8217;application que j&#8217;ai développé conjointement avec Romain, pour le concours <a href="http://www.sfrjtd.fr/content/wikiplacesandroid">SFR JTD, WikiPlacesAndroid</a>.<br />
Faut dire que j&#8217;ai voulu rajouter plein de fonctionnalités (upload d&#8217;images, redimensionnement d&#8217;images sur le téléphone) et là, des catastrophes à répétition : memory leaks sur le téléphone android qui vit très mal le redimensionnement d&#8217;images de 2MegaPixels, l&#8217;appli serveur Rails qui elle vit très mal la lecture des blobs en base de données MySQL, bref, un %*$ de Dimanche, comme on s&#8217;en passerait bien.<br />
Enfin, j&#8217;ai posté l&#8217;application pour le concours, avec du coup moins de fonctionnalités que prévu, en tout cas elle fonctionne et bug (presque) plus.<br />
Vous avez un téléphone Android ? Essayez donc notre application, ci jointe à ce billet !<br />
\!/ le serveur de l&#8217;application correspondant étant offline, vous ne pourrez pas&#8230; faire grand chose avec l&#8217;appli <img src='http://blog.dahanne.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  !<br />
<a href="http://blog.dahanne.net/wp-content/uploads/wikiplacesandroid.apk">Télécharger WikiPlacesAndroid</a> (développée avec le SDK 1.1)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dahanne.net/2009/04/26/soumission-du-projet-wikiplacesandroid-pour-le-concours-sfr-jtd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jazoon 09 : le programme officiel de la conférence</title>
		<link>http://blog.dahanne.net/2009/04/05/jazoon-09-le-programme-officiel-de-la-conference/</link>
		<comments>http://blog.dahanne.net/2009/04/05/jazoon-09-le-programme-officiel-de-la-conference/#comments</comments>
		<pubDate>Sun, 05 Apr 2009 13:25:28 +0000</pubDate>
		<dc:creator>anthony.dahanne</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jazoon 09]]></category>
		<category><![CDATA[meeting]]></category>

		<guid isPermaLink="false">http://blog.dahanne.net/?p=127</guid>
		<description><![CDATA[<p>çà y est, il est en ligne !
Vous pouvez jeter un coup d&#8217;oeil au programme de Jazoon 2009 (qui aura lieu fin Juin) en cliquant sur ce lien :
http://jazoon.com/en/conference/schedule.html
Je commence à élaborer mon planning pour cette semaine (bien que j&#8217;ai énormément de mal à faire mon choix, beaucoup de sujets sont très intéressants)</p>

Lundi (si j&#8217;y [...]]]></description>
			<content:encoded><![CDATA[<p>çà y est, il est en ligne !<br />
Vous pouvez jeter un coup d&#8217;oeil au programme de Jazoon 2009 (qui aura lieu fin Juin) en cliquant sur ce lien :<br />
<a href="http://jazoon.com/en/conference/schedule.html">http://jazoon.com/en/conference/schedule.html</a><br />
Je commence à élaborer mon planning pour cette semaine (bien que j&#8217;ai énormément de mal à faire mon choix, beaucoup de sujets sont très intéressants)</p>
<ul>
<li>Lundi (si j&#8217;y suis):  Glassfish</li>
<li>Mardi : Java EE6, groovy, Spring 3.0, GWT, iphone, maven , mobile java</li>
<li>Mercredi : hudson, securing ajax,jsf 2,mule, android</li>
<li>Jeudi : android, rest, mockito, openjdk</li>
</ul>
<p>çà va être épuisant je sens !<br />
Trop hâte d&#8217;y être !</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dahanne.net/2009/04/05/jazoon-09-le-programme-officiel-de-la-conference/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
