<?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&#039;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, Android, Continuous Integration</description>
	<lastBuildDate>Fri, 20 Jan 2012 02:32:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Creating and applying a patch for an Eclipse project with Git, part 2 : using github</title>
		<link>http://blog.dahanne.net/2012/01/19/creating-and-applying-a-patch-for-an-eclipse-project-with-git-part-2-using-github/</link>
		<comments>http://blog.dahanne.net/2012/01/19/creating-and-applying-a-patch-for-an-eclipse-project-with-git-part-2-using-github/#comments</comments>
		<pubDate>Fri, 20 Jan 2012 00:18:11 +0000</pubDate>
		<dc:creator>anthony.dahanne</dc:creator>
				<category><![CDATA[eclipse]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[tycho]]></category>

		<guid isPermaLink="false">http://blog.dahanne.net/?p=580</guid>
		<description><![CDATA[<p>In a recent post, I described how to contribute a patch to an eclipse project using git as its version control system.</p> <p>Patches are OK, but you lack all the social aspect that is enabled with git and its tooling (be it pure git + gerrit or github with the comments on commits and pull [...]]]></description>
			<content:encoded><![CDATA[<p>In a recent post, <a href="http://blog.dahanne.net/2011/10/05/creating-and-applying-a-patch-for-an-eclipse-project-with-git/" title="Creating and applying a patch for an Eclipse project with Git">I described how to contribute a patch to an eclipse project using git as its version control system</a>.</p>
<p>Patches are OK, but you lack all the social aspect that is enabled with git and its tooling (be it pure git + <a href="https://code.google.com/p/gerrit/" title="Gerrit">gerrit </a>or github with the comments on commits and <a href="http://help.github.com/send-pull-requests/" title="Github pull requests">pull requests</a>)</p>
<p>As of today, pull requests are not accepted by Eclipse committers since they lack IP (Intellectual Property) information, and <a href="https://git.eclipse.org/c/" title="Eclipse git repositories">the official git repositories at eclipse are hosted by the foundation</a> not on github (github repositories of Eclipse projects exist for mirroring only).</p>
<p>Recently talking with a committer on the <a href="http://www.eclipse.org/tycho/" title="Eclipse Tycho">Eclipse Tycho project</a> (Tobias Oberlies not to name him), he suggested to me to share my contributions via github, instead of attaching patches,  <a href="http://wiki.eclipse.org/Development_Resources/Handling_Git_Contributions" title="Handling Git contributions at Eclipse">as long as the git contribution scenario is followed</a></p>
<p>To comply with this suggestion, </p>
<h4>1. I would clone the official repository at git.eclipse.org</h4>
<pre class="bash">git clone http://git.eclipse.org/gitroot/tycho/org.eclipse.tycho.git</pre>
<h4>2. work on my changes, test them, add them, and commit them for each functional change</h4>
<pre class="bash">git add myfile1 myfile2</pre>
<pre class="bash">git commit -m "BZ xxxxxx : comment"</pre>
<h4>3. <a href="http://help.github.com/create-a-repo/" title="Create a  new repository on Github">create a new repository on my github account</a></h4>
<p><a href="http://blog.dahanne.net/wp-content/uploads/Create-a-New-Repository-GitHub-Mozilla-Firefox_2012-01-19_13-10-05.png"><img src="http://blog.dahanne.net/wp-content/uploads/Create-a-New-Repository-GitHub-Mozilla-Firefox_2012-01-19_13-10-05-300x211.png" alt="" title="Create a New Repository - GitHub" width="300" height="211" class="alignnone size-medium wp-image-584" /></a></p>
<h4>4. synchronize my new github repo with the official tycho repository</h4>
<pre class="bash">git remote add origin.github git@github.com:anthonydahanne/org.eclipse.tycho.git</pre>
<p>&laquo;&nbsp;behind proxy&nbsp;&raquo; users can use https access instead, </p>
<pre class="bash">git remote add origin.github  https://anthonydahanne@github.com/anthonydahanne/org.eclipse.tycho.git</pre>
<h4>5. push my committed changes to my github repository</h4>
<pre class="bash">git push -u origin.github master</pre>
<h4>6. <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=351487#c30" title="Add a comment to a bugzilla entry to share the github commit ids">add a comment to the bugzilla entry describing the fix or new feature I worked on, giving the github commit id</a></h4>
<h4>7. <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=357503#c9" title="Accept IP terms of the eclipse foundation">accept the IP conditions of the Eclipse foundation</a></h4>
<p>That&#8217;s it ! you just contributed some code to a cool Eclipse project !<br />
OK, it seems more complicated than just submitting a patch or a pull request, but once your local repo is set up,<br />
you should have something like :</p>
<pre class="bash">git remote -v
origin  http://git.eclipse.org/gitroot/tycho/org.eclipse.tycho.git (fetch)
origin  http://git.eclipse.org/gitroot/tycho/org.eclipse.tycho.git (push)
origin.github   https://anthonydahanne@github.com/anthonydahanne/org.eclipse.tycho.git (fetch)
origin.github   https://anthonydahanne@github.com/anthonydahanne/org.eclipse.tycho.git (push)</pre>
<p> and it is just a matter of juggling between the original repo, synchronizing the latest changes</p>
<pre class="bash">git pull origin master</pre>
<p> and the github repo (pushing the latest changes)</p>
<pre class="bash">git push origin.github master</pre>
<p>and copying/pasting the commit ids to the bugzilla entry.</p>
<p>I&#8217;m still relatively new to Git, so if you think there are better ways to sync the repositories, then please add a comment to this post !</p>
<h3>To go deeper on that topic :</h3>
<ul>
<li><a href="http://wiki.eclipse.org/EGit/Git_For_Eclipse_Users">http://wiki.eclipse.org/EGit/Git_For_Eclipse_Users</a></li>
<li>
<a href="http://wiki.eclipse.org/Development_Resources/Handling_Git_Contributions">http://wiki.eclipse.org/Development_Resources/Handling_Git_Contributions</a></li>
<li>
<a href="http://wiki.eclipse.org/Tycho/Contributor_Guide#Contributing_the_Patch">http://wiki.eclipse.org/Tycho/Contributor_Guide#Contributing_the_Patch</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.dahanne.net/2012/01/19/creating-and-applying-a-patch-for-an-eclipse-project-with-git-part-2-using-github/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sécuriser son serveur dédié : quelques conseils</title>
		<link>http://blog.dahanne.net/2011/11/19/securiser-son-serveur-dedie-quelques-conseils/</link>
		<comments>http://blog.dahanne.net/2011/11/19/securiser-son-serveur-dedie-quelques-conseils/#comments</comments>
		<pubDate>Sat, 19 Nov 2011 16:03:35 +0000</pubDate>
		<dc:creator>anthony.dahanne</dc:creator>
				<category><![CDATA[apache2]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[outils]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://blog.dahanne.net/?p=571</guid>
		<description><![CDATA[<p>Assomption avant de commencer : Bien entendu, vous êtes à jour des derniers correctifs de sécurité de l&#8217;ensemble de vos services&#8230;</p> <p>En lisant un article faisant référence à un serveur mal sécurisé ; j&#8217;ai été pris de quelques doutes : et si mon serveur dédié était lui aussi mal sécurisé ? Étant développeur et adepte [...]]]></description>
			<content:encoded><![CDATA[<p><em>Assomption avant de commencer</em> : Bien entendu, <strong>vous êtes à jour des derniers correctifs de sécurité de l&#8217;ensemble de vos services&#8230;</strong></p>
<p>En lisant un article <a href="http://reflets.info/doxump-ca-sent-mauvais/">faisant référence à un serveur mal sécurisé</a> ; j&#8217;ai été pris de quelques doutes : et si mon serveur dédié était lui aussi mal sécurisé ?<br />
Étant développeur et adepte de l&#8217;auto hébergement (oui je ne suis pas un grand fan des services hébergés chez les géants du net avec leurs clauses de confidentialité obscures&#8230;) je fais évoluer mon serveur dédié (services qui tournent dessus) au rythme de mes besoins&#8230; ce qui fait que la sécurité passe souvent au second plan&#8230;<br />
Et rien de tel que de jeter un coup d’œil à la sécurisation de ces services de temps en temps&#8230;</p>
<h3>Audit rapide et efficace</h3>
<p>On commence avec nmap, avec les options qui vont bien :</p>
<pre class="bash">sudo nmap -A mon.serveurdedie.fr</pre>
<p>On peut alors commencer à l&#8217;analyse du résultat, et à remédier aux problèmes.</p>
<h3>DNS et Bind</h3>
<p>Dans le rapport obtenu par nmap, si vous voyez :</p>
<pre>| dns-zone-transfer:</pre>
<p>et ensuite la liste de vos sous domaines; méfiance, cela veut dire que quiconque peut lister vos sous domaines; pas forcément une bonne idée si certains d&#8217;entre eux sont là pour des tests ou pour des services non publics&#8230;</p>
<h4>Les solutions</h4>
<pre>Rendez vous dans votre fichier de configuration de bind, /etc/bind/named.conf.options, et ajouter les options suivantes :
 allow-transfer { x.x.x.x; }; --&gt; uniquement donner accès aux informations détaillées des zones à cette IP (votre dns secondaire)
 version "Ma version"; --&gt; pourrait derouter certaines attaques en offuscant la version de Bind; mais comme disent certains, l'obfuscation est rarement une bonne méthode de sécurisation...
 fetch-glue no; --&gt; défendre votre serveur dns aux attaques de type déni de service
 recursion no; --&gt; défendre votre serveur dns aux attaques de type déni de service</pre>
<p>Ces informations sont issues d&#8217;un <a href="http://www.techrepublic.com/article/secure-bind-with-these-tips/5716787">article de TechRepublic</a> , et n&#8217;hésitez pas à vérifier votre configuration avec <a href="http://www.zonecheck.fr/">zonecheck</a></p>
<h3>HTTP et Apache</h3>
<p>Dans le rapport obtenu par nmap, si vous voyez :</p>
<pre>80/tcp  open     http         Apache httpd 2.2.9 ((Debian) DAV/2 SVN/1.5.1 PHP/5.2.6-1+lenny13 with Suhosin-Patch mod_wsgi/2.5 Python/2.5.2)</pre>
<p>Et bien cela signifie que votre serveur est très bavard&#8230;</p>
<h4>La solution</h4>
<p>Sur Ubuntu, dirigez vous vers /etc/apache2/conf.d/security et éditez :</p>
<pre>ServerTokens Prod</pre>
<pre>ServerSignature Off</pre>
<pre>TraceEnable Off</pre>
<p>Si vous utilisez PHP, faites aussi un tour du côté de  /etc/php5/apache2/php.ini</p>
<pre>expose_php = Off</pre>
<p>Encore une fois, l’offuscation n&#8217;est pas une méthode de sécurisation en soit, mais moins les potentiels attaquants en savent, mieux c&#8217;est&#8230;<br />
Ces informations sont issues de <a href="http://www.debianadmin.com/apache-tipshide-apache-information-php-software-version.html">DebianAdmin</a></p>
<h3>SSH et OpenSSH</h3>
<p>Pour l&#8217;instant je ne peux que conseiller de lire cet article : <a href="http://www.cyberciti.biz/tips/linux-unix-bsd-openssh-server-best-practices.html">http://www.cyberciti.biz/tips/linux-unix-bsd-openssh-server-best-practices.html </a></p>
<p>à suivre&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dahanne.net/2011/11/19/securiser-son-serveur-dedie-quelques-conseils/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Creating and applying a patch for an Eclipse project with Git</title>
		<link>http://blog.dahanne.net/2011/10/05/creating-and-applying-a-patch-for-an-eclipse-project-with-git/</link>
		<comments>http://blog.dahanne.net/2011/10/05/creating-and-applying-a-patch-for-an-eclipse-project-with-git/#comments</comments>
		<pubDate>Wed, 05 Oct 2011 03:23:35 +0000</pubDate>
		<dc:creator>anthony.dahanne</dc:creator>
				<category><![CDATA[eclipse]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://blog.dahanne.net/?p=546</guid>
		<description><![CDATA[<p>Since its move to git, contributing to the Eclipse foundation projects is a bit different.</p> <p>Nothing terrible actually, let&#8217;s take the example of a contribution to the p2 project (part of the equinox umbrella at the Eclipse foundation)</p> Checkout the project git clone http://git.eclipse.org/gitroot/equinox/rt.equinox.p2.git do the changes and then commit them to your local repo [...]]]></description>
			<content:encoded><![CDATA[<p>Since its move to git, contributing to the Eclipse foundation projects is a bit different.</p>
<p>Nothing terrible actually, let&#8217;s take the example of a contribution to the p2 project (part of the equinox umbrella at the Eclipse foundation)</p>
<ul>
<li>Checkout the project</li>
</ul>
<pre class="bash">git clone http://git.eclipse.org/gitroot/equinox/rt.equinox.p2.git</pre>
<ul>
<li>do the changes and then commit them to your local repo (you can perform this step several times)</li>
</ul>
<pre class="bash">git commit</pre>
<ul>
<li>create the patch against the master branch</li>
</ul>
<pre class="bash">git format-patch origin</pre>
<p>You  will get a file for each commit you submitted, so one commit =  one patch file.</p>
<p>You can attach your patch(es) to a bugzilla entry, for example , <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=304594">make p2 buildable with tycho (click on one of the patches)</a></p>
<ul>
<li>what an eclipse committer will do then , is apply your patch to its local repo to test everything is ok</li>
</ul>
<pre class="bash">git apply 0001-my-patch.patch</pre>
<p>That&#8217;s pretty much it ! A bit more tedious than a Github pull request, but it does the job !</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dahanne.net/2011/10/05/creating-and-applying-a-patch-for-an-eclipse-project-with-git/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Run UI tests on a headless Jenkins / Hudson Continuous Integration server running Ubuntu</title>
		<link>http://blog.dahanne.net/2011/07/18/run-ui-tests-on-a-headless-jenkins-hudson-continuous-integration-server-running-ubuntu/</link>
		<comments>http://blog.dahanne.net/2011/07/18/run-ui-tests-on-a-headless-jenkins-hudson-continuous-integration-server-running-ubuntu/#comments</comments>
		<pubDate>Mon, 18 Jul 2011 03:43:59 +0000</pubDate>
		<dc:creator>anthony.dahanne</dc:creator>
				<category><![CDATA[continuous integration hudson jenkins]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[tycho]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://blog.dahanne.net/?p=535</guid>
		<description><![CDATA[<p>If you want to set up a ci build, running ui tests, on a box without any windowing system, you need to pay attention to a few details, here are some of  them :</p> Set up your ubuntu box and Jenkins/Hudson <p>On your ubuntu box :</p> <p># apt-get install vnc4server fluxbox</p> <p>Vnc4server is a free [...]]]></description>
			<content:encoded><![CDATA[<p>If you want to set up a ci build, running ui tests, on a box without any windowing system, you need to pay attention to a few details, here are some of  them :</p>
<h3>Set up your ubuntu box and Jenkins/Hudson</h3>
<p>On your ubuntu box :</p>
<p><code># apt-get install vnc4server fluxbox</code></p>
<p>Vnc4server is a free vnc server, that will act as your X environment, and fluxbox is a tiny window manager; more than enough for UI testing.</p>
<p>In Jenkins / Hudson, Manage Jenkins -&gt; Plugins -&gt; Install new plugins, choose the <a href="https://wiki.jenkins-ci.org/display/JENKINS/Xvnc+Plugin">xvnc plugin </a></p>
<p><a href="http://blog.dahanne.net/wp-content/uploads/S%C3%A9lection_001.png"><img class="alignnone size-medium wp-image-542" title="xvnc plugin" src="http://blog.dahanne.net/wp-content/uploads/S%C3%A9lection_001-300x38.png" alt="" width="300" height="38" /></a></p>
<div>In your job that launches UI tests (in my case it was Eclipse Equinox UI tests launched by a tycho build), tick the box &laquo;&nbsp;Run xvnc during build&nbsp;&raquo;</div>
<div>Now launch your job, you will run into this problem :</div>
<pre class="bash">Starting xvnc [workspace] $ vncserver :10 You will require a password to access your desktops. getpassword error: Invalid argument Password:Starting xvnc [workspace]</pre>
<div>etc&#8230; until vncserver :13</div>
<div>It is because you need to launch vncserver interactively, at least once, to setup a password; connect to your ubuntu box and:</div>
<pre class="bash"># su jenkins
$ vncserver :10You will require a password to access your desktops.

Password:
Verify:
Password too long - only the first 8 characters will be used
xauth:  creating new authority file /var/lib/jenkins/.Xauthority

New 'host:10 (jenkins)' desktop is host:10

Creating default startup script /var/lib/jenkins/.vnc/xstartup
Starting applications specified in /var/lib/jenkins/.vnc/xstartup
Log file is /var/lib/jenkins/.vnc/host:10.log</pre>
<div>
<div>Once this is done, re launch your job :</div>
<pre class="bash">[workspace] $ vncserver :14

New 'host:14 (jenkins)' desktop is host:14 Starting applications specified in /var/lib/jenkins/.vnc/xstartup Log file is /var/lib/jenkins/.vnc/host:14.log</pre>
<div>and your build goes on, able to create a UI during the tests !</div>
</div>
<h3>Have a look at the tested UI while the tests are running</h3>
<p>This can be very useful whenever your UI gets stuck (waiting on a dialog to be closed &#8230;, in my case I run into the issue of launching an eclipse runtime, and a plugin, Google ADT, was asking to confirm whether or not I wanted to upload usage data&#8211; hopefully only the first time) during the tests.</p>
<div>To do so, you first have to know what is the port xvnc is listening to :</div>
<pre class="bash"># ps aux |grep "vnc"
jenkins  29591  0.0  0.7  33192 14104 ?        S    21:10   0:00 Xvnc4 :14 -desktop host:14 (jenkins) -auth /var/lib/jenkins/.Xauthority -geometry 1024x768 -depth 16 -rfbwait 30000 -rfbauth /var/lib/jenkins/.vnc/passwd -rfbport 5914 -pn -fp /usr/X11R6/lib/X11/fonts/Type1/,/usr/X11R6/lib/X11/fonts/Speedo/,/usr/X11R6/lib/X11/fonts/misc/,/usr/X11R6/lib/X11/fonts/75dpi/,/usr/X11R6/lib/X11/fonts/100dpi/,/usr/share/fonts/X11/misc/,/usr/share/fonts/X11/Type1/,/usr/share/fonts/X11/75dpi/,/usr/share/fonts/X11/100dpi/ -co /etc/X11/rgb</pre>
<p>OK, looks like xvnc is listening on port 5914 in this case.<br />
You can then use a vnc viewer (on ubuntu, vinagre is a good choice) of your choice to connect to your ubuntu box on port 5914.<br />
If the ubuntu box has firewall rules impeding you to connect to 5914, then set up a ssh tunnel :</p>
<p><code>$ ssh -L 5914:localhost:5914 anthony@ubuntubox</code><br />
then connect your vnc viewer to localhost:5914 , and the magic begins !</p>
<p><a href="http://blog.dahanne.net/wp-content/uploads/S%C3%A9lection_002.png"><img class="alignnone size-medium wp-image-543" title="Seeing the UI tested in Hudson /  Jenkins through vnc" src="http://blog.dahanne.net/wp-content/uploads/S%C3%A9lection_002-215x300.png" alt="" width="215" height="300" /></a></p>
<p>&nbsp;</p>
<h3>A concrete example :  m2eclipse-android-integration in Jenkins</h3>
<p>I actually set up this configuration for the m2eclipse-android-integration project; this project is an eclipse plugin, that extends the capability of m2eclipse to android projects, here is the link to the<a href="http://ci.dahanne.net/"> Jenkins hosting this job</a></p>
<p>The author, <a href="http://rgladwell.wordpress.com/">Ricardo Gladwell</a>, designed exclusively integration tests on the UI, since most of the functionality of this eclipse plugin is UI contribution.</p>
<p>Here are the specific problems I met while setting up this job in Jenkins :</p>
<ul>
<li>as I previously mentioned, the first time I launched the job against this project, once all the tests passed, the tycho surefire plugin step would not stop&#8230; actually the Google ADT plugin in Eclipse, was asking to confirm whether or not I wanted to upload usage data, so I connected to the UI and clicked &laquo;&nbsp;ok&nbsp;&raquo;;  vnc saved the day&#8230;</li>
<li>the tests were relying on android projects, requiring to have among the latest Android libraries; to be up to date (so that the tests would not fail), I had to run the command :</li>
</ul>
<p><code>$ android update sdk --no-ui --obsolete --force</code></p>
<p>Overall, that was a good exercise to practice CI on a UI project.</p>
<p>Links :</p>
<div>
<ul>
<li><a href="https://wiki.jenkins-ci.org/display/JENKINS/Xvnc+Plugin">The Hudson / Jenkins xVNC plugin</a>\</li>
<li><a href="http://code.google.com/a/eclipselabs.org/p/m2eclipse-android-integration/">m2eclipse-android-integration on google code</a> and now <a href="http://rgladwell.github.com/m2e-android/">m2e-android on github</a></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.dahanne.net/2011/07/18/run-ui-tests-on-a-headless-jenkins-hudson-continuous-integration-server-running-ubuntu/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>NAS Synology : pour les sauvegardes et pour diffuser les médias</title>
		<link>http://blog.dahanne.net/2011/07/11/nas-synology-pour-les-sauvegardes-et-pour-diffuser-les-medias/</link>
		<comments>http://blog.dahanne.net/2011/07/11/nas-synology-pour-les-sauvegardes-et-pour-diffuser-les-medias/#comments</comments>
		<pubDate>Mon, 11 Jul 2011 23:58:27 +0000</pubDate>
		<dc:creator>anthony.dahanne</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[outils]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://blog.dahanne.net/?p=526</guid>
		<description><![CDATA[<p>Séduit par l&#8217;idée d&#8217;un boîtier pour effectuer mes sauvegardes à faible coût, faible consommation énergétique, faible encombrement, en ligne 24h/24, j&#8217;ai récemment fait l&#8217;acquisition d&#8217;un NAS (Network Attached Storage); et c&#8217;est assez naturellement que je me suis tourné vers Synology, un des (sinon le) incontournables du marché (l&#8217;utilisation de Linux BusyBox et d&#8217;une multitude de [...]]]></description>
			<content:encoded><![CDATA[<p>Séduit par l&#8217;idée d&#8217;un boîtier pour effectuer mes sauvegardes à faible coût, faible consommation énergétique, faible encombrement, en ligne 24h/24, j&#8217;ai récemment fait l&#8217;acquisition d&#8217;un <a href="http://fr.wikipedia.org/wiki/Stockage_en_r%C3%A9seau_NAS">NAS (Network Attached Storage)</a>; et c&#8217;est assez naturellement que je me suis tourné vers <a href="http://www.synology.com/index.php?lang=fre">Synology</a>, un des (sinon le) incontournables du marché (l&#8217;utilisation de Linux BusyBox et d&#8217;une multitude de logiciels libres n&#8217;y est sans doute pas pour rien !); j&#8217;ai opté pour le DS211J, qui dispose de 2 baies à disque SATA; pour l&#8217;instant je n&#8217;y aie inséré qu&#8217;un disque de 1.5 To.</p>
<p>Mon objectif premier est de réaliser des sauvegardes robustes, la cerise sur le gâteau (ou sundae) est le fait de pouvoir consulter mes fichiers multimédias sur mon téléviseur (via une vieille XBOX avec <a href="http://xbmc.org/">XBMC</a> et/ou une PS3)</p>
<h3>Architecture de sauvegarde robuste</h3>
<p>On réalise des sauvegardes, car on ne veut pas perdre des années de photo, de travail sur documents multimédia (montages vidéos) ses documents personnels (impôts, etc..).</p>
<p>La majorité des utilisateurs sauvegarde leurs fichiers vers un disque dur externe, quand ils y pensent&#8230;</p>
<p>Cette approche là est résolument insatisfaisante : il faut automatiser (fréquence) le processus de sauvegarde (donc avoir du matériel toujours disponible pour effectuer la sauvegarde) et aussi diversifier ses lieux de sauvegarde (tout sauvegarder sur des supports qui se trouvent au même endroit que les originaux ouvre la porte à une perte de donnés en cas d&#8217;inondation, incendie, cambriolage, etc&#8230;)</p>
<p>Je vais décrire ici comment utiliser un NAS Synology pour :</p>
<ul>
<li>y sauvegarder ses documents (les machines du réseau local, dans notre cas sous Ubuntu, vont sauvegarder vers le NAS)</li>
<li>synchroniser ces sauvegardes vers une machine distante (le NAS va synchroniser les sauvegardes vers une machine dans un data center)</li>
<li>y sauvegarder des sites internet et boîtes courriels hébergés sur un serveur distant (une machine dans un data center va sauvegarder ses données vers le NAS)</li>
</ul>
<p>Enfin, je décrirai quelques astuces pour profiter de son NAS en serveur multimédia.</p>
<h3>Sauvegarde entre les ordinateurs locaux et le NAS</h3>
<p>Il existe un excellent article qui introduit ce propos <a href="http://forum.synology.com/wiki/index.php/Backup_Linux_desktop_data_using_rsync">sur le wiki de Synology</a>; ceci dit la technique est la même que celle que <a href="http://blog.dahanne.net/2008/02/16/solution-de-sauvegarde-locale-et-distante-avec-rsync/">j&#8217;avais décrit pour des sauvegardes distantes</a>.</p>
<p>Mon objectif est ici de sauvegarder mon home directory (/home/anthony en excluant tous les .*) et rien d&#8217;autre<br />
Voici mes remarques et ajouts :</p>
<ul>
<li>Depuis l&#8217;interface graphique de votre NAS, rendez vous dans Panneau de configuration&gt;Utilisateur, sélectionnez votre utilisateur et appuyez et cocher &laquo;&nbsp;Accueil Utilisateur&nbsp;&raquo; (une traduction sympathique de Home directory :-p) , vous disposez maintenant d&#8217;un répertoire personnel dans /volume1/homes/votre_utilisateur</li>
<li>la première étape est la création d&#8217;une clef (DSA, c&#8217;est important, RSA n&#8217;a pas marché chez moi&#8230;) sans mot de passe; utilisez la série de commande standard suivantes, dans mon cas :</li>
</ul>
<p><code>ssh-keygen -t dsa -b 1024 -f ~/.ssh/diskstation</code></p>
<p>(pas de mot de passe, il serait difficile de gérer des sauvegardes non interactives avec un mot de passe, vérifiez quand même que votre clef .ssh/diskstation est en 600)</p>
<ul>
<li>Maintenant envoyer la clef publique à votre NAS :</li>
</ul>
<p><code>ssh-copy-id -i .ssh/diskstation.pub anthony@diskstation</code></p>
<ul>
<li>Tester la connexion à votre NAS en utilisant la clef : (attention, il est fort possible que votre utilisateur n&#8217;aie pas de shell utilisable par défaut; connectez vous alors via SSH en tant que root (même mot de passe que admin) à votre NAS et éditez /etc/passwd, sur la ligne correspondant à votre utilisateur, remplacez /sbin/login par /bin/ash ; l’interpréteur de commandes par défaut)</li>
</ul>
<p><code>ssh -i .ssh/diskstation diskstation</code></p>
<p>vous devriez arriver, sans mot de passe, dans le répertoire /volume1/homes/votre_utilisateur de votre NAS.</p>
<ul>
<li>rsync pour sauvegarder, la commande est assez simple :</li>
</ul>
<p><code>rsync -avz --delete /home/anthony/ --exclude=.* diskstation:/volume1/homes/anthony/sauvegarde</code></p>
<ul>
<li>sauf que le vrai défi avec les sauvegardes, c&#8217;est qu&#8217;il faut qu&#8217;elles soient automatiques, et lancées périodiquement ! ce bon vieux cron est encore une fois notre ami :</li>
</ul>
<p><code>vim sauvegarde.ssh</code></p>
<p>on y écrit :</p>
<pre class="bash">#!/bin/sh
rsync -avz --delete --exclude=.*  -e "ssh -i /home/anthony/.ssh/diskstation"   /home/anthony/  diskstation:/volume1/homes/anthony/x60s</pre>
<p><code>chmod +x</code></p>
<p>on peut tester :</p>
<p><code> ./sauvegarde.sh</code></p>
<p>et enfin le rajouter à la crontab :</p>
<p><code>sudo vim /etc/crontab</code></p>
<p>et rajouter la ligne (pour lancer la sauvegarde tous les Dimanche à 2h00) :</p>
<pre class="bash"># m h dom mon dow user  command
0 2    * * 7   anthony      /home/anthony/sauvegarde.sh</pre>
<ul>
<li>Répétez cette opération pour tous les postes du réseau local.</li>
</ul>
<p>Tout devrait bien se passer quotidiennement, à surveiller que tout est bien en place quand le disque dur de l&#8217;hôte commence à faire des bruits étranges ou avant de partir en congés&#8230;</p>
<h3>Sauvegarde entre le NAS et un serveur distant</h3>
<p>Le logiciel d&#8217;administration web des NAS Synology, Disk Station Manager (DSM 3.1 au moment où j&#8217;écris) dispose d&#8217;une efficace interface d’administration, qui comporte un volet &laquo;&nbsp;Restaurer et sauvegarder&nbsp;&raquo;; nous pourrions très bien faire comme précédemment pour sauvegarder le NAS vers un serveur distant, mais autant profiter de l&#8217;interface graphique et des notifications de DSM !</p>
<p>Pour commencer, vous devez préparer votre serveur distant à recevoir les sauvegardes, dans mon cas, nous avons un utilisateur backup, avec son répertoire personnel /home/backup</p>
<p>Dans ce même répertoire personnel, nous allons y créer un fichier rsyncd.conf avec le contenu suivant :</p>
<pre class="bash">[diskstation]
comment = diskstation
path = /home/backup/diskstation
use chroot = no
read only = no
list = yes
uid = sauvegarde
gid = sauvegarde
strict modes = yes
ignore errors = no
ignore nonreadable = yes
transfer logging = no
timeout = 600
refuse options = checksum dry-run
dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz</pre>
<p>Grâce à ce fichier, lorsque votre NAS fera ses sauvegardes, il trouvera la configuration rsync.</p>
<p>Côté client, donc le NAS, dirigez vous vers l&#8217;interface graphique &laquo;&nbsp;Restaurer et sauvegarder&nbsp;&raquo; et créez une nouvelle sauvegarde</p>
<ul>
<li>choisissez sauvegarde réseau (compatible rsync)</li>
<li>sélectionnez toutes les options SAUF l&#8217;avant dernière (réserver les fichiers; si vous la cochez, lorsque vous supprimerez un fichier/répertoire de la source il sera gardé sur le serveur)</li>
<li>choisissez le nom de module rsync que vous avez configuré sur votre serveur distant (dans notre cas diskstation) et saisissez l&#8217;utilisateur (dans notre cas backup) ainsi que son mot de passe</li>
<li>Testez la connexion, paramétrez la fréquence</li>
</ul>
<p>Et c&#8217;est fini !</p>
<h3>Sauvegarde entre un serveur distant et le NAS</h3>
<p>Dans ce cas ci, vous devez au préalable avoir un moyen d&#8217;identifier sur internet votre nas, par exemple, DSM vient avec un client DynDNS.</p>
<p>Dans la suite du paragraphe j&#8217;assume que vous avez un nom d&#8217;hôte fixe (ou une IP fixe) pour votre NAS, et que vous pouvez y accéder par internet (pour ceci vous devrez configurer aussi les bons port forwarding [seul ssh nous intéresse dans le cas présent] depuis votre routeur ou &laquo;&nbsp;box&nbsp;&raquo;)</p>
<p>Pour le reste, c&#8217;est la même chose que ce que j&#8217;ai décrit au chapitre &laquo;&nbsp;Sauvegarde entre les ordinateurs locaux et le NAS&nbsp;&raquo; &#8230;</p>
<p>La particularité que vous pourrez rencontrer, au cas où vous sauvegarder des répertoires qui appartiennent à plusieurs utilisateurs sur le serveur distant à sauvegarder vers le NAS, est de travailler avec l&#8217;utilisateur root : c&#8217;est le seul utilisateur à pouvoir accéder à tous le système de fichiers.</p>
<p>Donc</p>
<ul>
<li>côté NAS, créez un utilisateur backup, donnez lui un répertoire personnel et l&#8217;accès via SSH;</li>
<li>côté serveur distant à sauvegarder, créez un couple de clefs pour se connecter sans mot de passe au NAS, en tant que utilisateur backup, créez un script sauvegarde.sh, qui vous rentrerez dans la crontab, à lancer par root (il pourra donc travailler sur tout le système de fichiers)</li>
</ul>
<p>procéder de cette manière vous permet de pouvoir sauvegarder tout le système de fichiers, sans jamais compromettre l&#8217;utilisateur root (pas de connexion en tant que root, ni par SSH ni par sudo, etc&#8230;)</p>
<p>&nbsp;</p>
<h3>Astuces pour la performance de votre NAS Synology</h3>
<p>Si vous avez beaucoup de photos dans le partage &laquo;&nbsp;photo&nbsp;&raquo;, vous risquez de voir un process appelé &laquo;&nbsp;convert&nbsp;&raquo; (en fait c&#8217;est imagemagick) prendre tout la mémoire vive et une bonne partie du CPU de votre Synology.</p>
<p>Ce process est lancé par le démon suivant :</p>
<p><code>/usr/syno/etc/rc.d/S77synomkthumbd.sh</code></p>
<p>donc il vous suffit, une fois connecté par ssh en root (même mot de passe que admin une fois que l&#8217;accès ssh est configuré) de lancer :</p>
<p><code>/usr/syno/etc/rc.d/S77synomkthumbd.sh stop</code></p>
<p>Si vous voulez définitivement arrêter ce service, éditez le avec vim et rajouter exit à la 2ème ligne (<a href="http://forum.synology.com/wiki/index.php/How_to_disable_the_Synology_Multimedia_Indexing_Engine">cette astuce est publiée dans le wiki de synology</a>; attention à ne pas comme eux désactiver postgresql, toutes les applications multimédia : photo, son, video, téléchargements nécessitent cette base de donnée); attention quand vous remettrez votre NAS à jour, il faudra ré effectuer l&#8217;opération (sigh!)</p>
<p>&nbsp;</p>
<h3>Diffuser des fichiers vidéos hébergés par le NAS Synology</h3>
<p>Le plus simple, si vous disposez d&#8217;un lecteur branché à la TV qui peut naviguer sur des partages Samba/CIFS (comme la vieille XBOX avec XBMC), c&#8217;est alors de configurer un dossier partagé (par défaut, un dossier partagé est un partage SMB/CIFS) contenant vos vidéos.</p>
<p>Si vous utilisez une PS3, l&#8217;approche est différente, il faut utiliser le partage médias par DLNA (car la PS3 ne peut pas monter un partage SMB/CIFS)</p>
<p>Si vous configurez votre NAS comme étant un serveur DLNA, il vous suffit d&#8217;avoir vos videos dans le partage video pour que la PS3 puisse les lire&#8230;enfin çà va bien pour les formats (container, codes audio et video) que la PS3 reconnaît nativement&#8230;</p>
<p>Pour les autres formats de video, comme par exemple container MKV encapsulant du h264, votre PS3 vous dira &laquo;&nbsp;format de fichier non compatible&nbsp;&raquo;.</p>
<p>Deux options se présentent à vous :</p>
<ul>
<li>votre PS3 utilise un firmware &laquo;&nbsp;non officiel&nbsp;&raquo;comme le CFW 3.55 kmeaw, dans ce cas vous pouvez installer le logiciel de lecture<a href="https://www.lonelycoder.com/hts/showtime_overview.html"> Showtime sur votre PS3</a>, qui non seulement lit les partages DLNA, mais est capable aussi d&#8217;ouvrir à peu près tous les containeurs vidéo et recense un bon nombre de codecs..(il repose sur libav)</li>
<li>Une autre approche, est de convertir à la volée vos fichiers vidéos dans un format que la PS3 peut ouvrir, le logiciel <a href="http://forum.synology.com/enu/viewtopic.php?f=37&amp;t=13014">PS3 Media Player semble pouvoir être installable sur un NAS Synology</a>, ceci dit je n&#8217;ai pas essayé&#8230;</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.dahanne.net/2011/07/11/nas-synology-pour-les-sauvegardes-et-pour-diffuser-les-medias/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>EclipseCon 2011 blog posts : talks I attended</title>
		<link>http://blog.dahanne.net/2011/04/13/eclipsecon-2011-blog-posts-talks-i-attended/</link>
		<comments>http://blog.dahanne.net/2011/04/13/eclipsecon-2011-blog-posts-talks-i-attended/#comments</comments>
		<pubDate>Wed, 13 Apr 2011 03:09:52 +0000</pubDate>
		<dc:creator>anthony.dahanne</dc:creator>
				<category><![CDATA[conferences]]></category>
		<category><![CDATA[eclipsecon2011]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://blog.dahanne.net/?p=521</guid>
		<description><![CDATA[<p>From the 21st to the 24th of March, 2011, I was a lucky attendee of EclipseCon 2011.</p> <p>Lucky because it was my first time at EclipseCon, my first major conference in North America (it was located in Santa Clara, in the Californian Silicon Valley) and also because my employer, Compuware, agreed to let me go [...]]]></description>
			<content:encoded><![CDATA[<p>From the 21st to the 24th of March, 2011, I was a lucky attendee of <a href="http://www.eclipsecon.org/2011/">EclipseCon 2011</a>.</p>
<p>Lucky because it was my first time at EclipseCon, my first major conference in North America (it was located in Santa Clara, in the Californian Silicon Valley) and also because my employer,<a href="http://www.compuware.com/"> Compuware</a>, agreed to let me go there, along with 2 of my colleagues.</p>
<p>EclipseCon 2011 was great, because</p>
<ul>
<li>the main actors of the Eclipse community were there : people I may follow on twitter or ask questions to on several mailing lists; the committers of the projects I use everyday at work; being able to chat with them and ask them questions (even harass them ! no I&#8217;m kidding, I did not harass Jeff during 2 days! )</li>
<li>the talks were diversified and most of them were really interesting, you have below links to some of the talks I attended while there.</li>
</ul>
<p>Attending this conference made me also realize, maybe once more, that meeting with other developers working on the same technologies, is really inspiring, motivating, and it makes you grow technically.</p>
<p>Ok, you got the picture, I enjoyed the conf !</p>
<p>Here are some of the talks I attended:</p>
<ul>
<li>Under the provisioning (p2) and release engineering themes,</li>
</ul>
<ol>
<li><a title="Permanent Link to p2, your savior or your achilles heel? Everything an Eclipse team needs to know about p2 at EclipseCon 2011" rel="bookmark" href="http://blog.dahanne.net/2011/03/22/p2-your-savior-or-your-achilles-heel-everything-an-eclipse-team-needs-to-know-about-p2-at-eclipsecon-2011/">p2, your savior or your Achilles heel? Everything an Eclipse team needs to know about p2 at EclipseCon 2011</a></li>
<li><a title="Permanent Link to Discovering the P2 APIs at EclipseCon 2011" rel="bookmark" href="http://blog.dahanne.net/2011/03/22/discovering-the-p2-apis-at-eclipsecon-2011/">Discovering the P2 APIs at EclipseCon 2011</a></li>
<li><a title="Permanent Link to Tycho presentation and tutorial at EclipseCon 2011" rel="bookmark" href="http://blog.dahanne.net/2011/03/21/tycho-presentation-and-tutorial-at-eclipsecon-2011/">Tycho presentation and tutorial at EclipseCon 2011</a></li>
<li><a title="Permanent Link to Next Generation Development Infrastructure: Maven, m2eclipse, Nexus &amp; Hudson at EclipseCon 2011" rel="bookmark" href="http://blog.dahanne.net/2011/03/22/next-generation-development-infrastructure-maven-m2eclipse-nexus-hudson-at-eclipsecon-2011/">Next Generation Development Infrastructure: Maven, m2eclipse, Nexus &amp; Hudson at EclipseCon 2011</a></li>
<li><a title="Permanent Link to Growing an open source project one bugday at a time at EclipseCon 2011" rel="bookmark" href="../2011/03/22/growing-an-open-source-project-one-bugday-at-a-time-at-eclipsecon-2011/">Growing an open source project one bugday at a time at EclipseCon 2011</a></li>
</ol>
<ul>
<li>Under the architecture ,  performance and OSGI themes,</li>
</ul>
<ol>
<li><a title="Permanent Link to Stop the Architecture Erosion of Eclipse And Open Source Projects at EclipseCon 2011" rel="bookmark" href="http://blog.dahanne.net/2011/03/24/stop-the-architecture-erosion-of-eclipse-and-open-source-projects-at-eclipsecon-2011/">Stop the Architecture Erosion of Eclipse And Open Source Projects at EclipseCon 2011</a></li>
<li><a title="Permanent Link to Using and Extending Memory Analyzer into Uncharted Waters at EclipseCon 2011" rel="bookmark" href="http://blog.dahanne.net/2011/03/23/using-and-extending-memory-analyzer-into-uncharted-waters-at-eclipsecon-2011/">Using and Extending Memory Analyzer into Uncharted Waters at EclipseCon 2011</a></li>
<li><a title="Permanent Link to OSGi introduction and OSGi 4.3 at EclipseCon2011" rel="bookmark" href="http://blog.dahanne.net/2011/03/21/osgi-introduction-and-osgi4-3-at-eclipsecon2011/">OSGi introduction and OSGi 4.3 at EclipseCon2011</a></li>
<li><a title="Permanent Link to 10 signs you’re doing OSGi wrong at EclipseCon 2011" rel="bookmark" href="http://blog.dahanne.net/2011/03/22/10-signs-youre-doing-osgi-wrong-at-eclipsecon-2011/">10 signs you&#8217;re doing OSGi wrong at EclipseCon 2011</a></li>
</ol>
<ul>
<li>Under the Eclipse tooling theme,</li>
</ul>
<ol>
<li><a title="Permanent Link to Android Development with Eclipse at EclipseCon 2011" rel="bookmark" href="http://blog.dahanne.net/2011/03/22/android-development-with-eclipse-at-eclipsecon-2011/">Android Development with Eclipse at EclipseCon 2011</a></li>
<li><a title="Permanent Link to Getting Eclipse Preferences Under Control in Teams at EclipseCon 2011" rel="bookmark" href="http://blog.dahanne.net/2011/03/24/eclipse-preferences-under-control-in-teams-at-eclipsecon-2011/">Getting Eclipse Preferences Under Control in Teams at EclipseCon 2011</a></li>
</ol>
<ul>
<li>Other really cool talks</li>
</ul>
<ol>
<li><a title="Permanent Link to Keynote on Apache Hadoop at EclipseCon 2011" rel="bookmark" href="http://blog.dahanne.net/2011/03/24/keynote-on-apache-hadoop-at-eclipsecon-2011/">Keynote on Apache Hadoop at EclipseCon 2011</a></li>
<li><a title="Permanent Link to Virgo and RT playing together at EclipseCon 2011" rel="bookmark" href="http://blog.dahanne.net/2011/03/23/virgo-and-rt-playing-together-at-eclipsecon-2011/">Virgo and RT playing together at EclipseCon 2011</a></li>
<li><a title="Permanent Link to Effective Git tutorial at EclipseCon 2011" rel="bookmark" href="http://blog.dahanne.net/2011/03/21/effective-git-tutorial-at-eclipsecon-2011/">Effective Git Tutorial</a></li>
</ol>
<p>If you want my opinion, well, I&#8217;d say that Tycho, p2, Virgo, git along with gerrit, and Eclipse Memory Analyzer were predominant topics; you could definitely not ignore them.. and not like them neither !</p>
<p>If you did not, you&#8217;ll hear from these great technologies in the next few months !</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dahanne.net/2011/04/13/eclipsecon-2011-blog-posts-talks-i-attended/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Keynote on Apache Hadoop at EclipseCon 2011</title>
		<link>http://blog.dahanne.net/2011/03/24/keynote-on-apache-hadoop-at-eclipsecon-2011/</link>
		<comments>http://blog.dahanne.net/2011/03/24/keynote-on-apache-hadoop-at-eclipsecon-2011/#comments</comments>
		<pubDate>Fri, 25 Mar 2011 00:33:14 +0000</pubDate>
		<dc:creator>anthony.dahanne</dc:creator>
				<category><![CDATA[conferences]]></category>
		<category><![CDATA[eclipsecon2011]]></category>
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://blog.dahanne.net/?p=486</guid>
		<description><![CDATA[<p>Todd introduces the audience to the world of huge datasets, what you can do with it, profiling users and customers for example.</p> <p>False assumptions learned in the last 10 years (that Hadoop has been building with this in mind)</p> Machines are reliable, Hadoop separates fault tolerance logic from code logic Machines deserve identities, I put [...]]]></description>
			<content:encoded><![CDATA[<p>Todd introduces the audience to the world of huge datasets, what you can do with it, profiling users and customers for example.</p>
<p>False assumptions learned in the last 10 years (that Hadoop has been building with this in mind)</p>
<ol>
<li>Machines are reliable, Hadoop separates fault tolerance logic from code logic</li>
<li>Machines deserve identities, I put data in a cluster, I don&#8217;t care which particular machine hosts the data; Hadoop can swap in and swap out machines across the cluster</li>
<li>Your analysis fits on one machine, Hadoop scales linearly with data size or analysis complexity</li>
</ol>
<p>A typical Hadoop installation : 5 to 4000 commodity servers (8 cores, 24 GB RAM, 4 to 12 TB hard drive; 2 levels network architecture, 20 to 40 nodes per rack)</p>
<p>The cluster nodes are composed of m</p>
<ul>
<li>master nodes : 1 NameNode  (metadata) and 1 jobtracker</li>
<li>slaves nodes  (1 to 4000 each) data nodes and tasktrackers</li>
</ul>
<p>To access the file system, you would not mount it (even if you could, with fuse), you can use an API, HDFS API (in Java)</p>
<p>Hadoop will write on chunks of 64 MB, which will get replicated across the nodes.</p>
<p>Using HDFS, you will use 2 functions : map() and reduce(); they are run on the node containing the data, so no network overhead to get the info, but HDFS can interpret bytes as key; then reduce is used to aggregate the value.</p>
<p>Hadoop is not only map/reduce, with Hive, you can also use SQL; but there are other tools on top of Hadoop, Pig (DataFlow) or Sqoop (RDBMS compatibilty)</p>
<p>Who uses Hadoop : Yahoo (&gt;82 PB, &gt;40 k machines); FaceBook, 15 TB data/day, 1200 machines; Twitter, etc&#8230;</p>
<p>Mozilla uses Hadoop to analyze crash data (FF crashes, you send a report, and they get and analyze the data)</p>
<p>Hadoop Java brings some good tooling (along with integration tools such as Apache, Ivy, etc..) but some bad things such as JVM bugs, JNI libraries to add for non standard features (specific to the OS)</p>
<p><a href="http://www.eclipsecon.org/2011/sessions/?page=sessions&amp;id=2370">http://www.eclipsecon.org/2011/sessions/?page=sessions&amp;id=2370</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dahanne.net/2011/03/24/keynote-on-apache-hadoop-at-eclipsecon-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Getting Eclipse Preferences Under Control in Teams at EclipseCon 2011</title>
		<link>http://blog.dahanne.net/2011/03/24/eclipse-preferences-under-control-in-teams-at-eclipsecon-2011/</link>
		<comments>http://blog.dahanne.net/2011/03/24/eclipse-preferences-under-control-in-teams-at-eclipsecon-2011/#comments</comments>
		<pubDate>Fri, 25 Mar 2011 00:07:42 +0000</pubDate>
		<dc:creator>anthony.dahanne</dc:creator>
				<category><![CDATA[conferences]]></category>
		<category><![CDATA[eclipsecon2011]]></category>

		<guid isPermaLink="false">http://blog.dahanne.net/?p=477</guid>
		<description><![CDATA[<p>Michael began his talk remainding us that Eclipse configuration lies everywhere :</p> eclipse.ini configuration/eclipse.ini /home/.eclipse .metadata/ $project/.settings/ runtime option -vmargs &#8230; <p>Michael recommends the audience to try to configure as much as possible preferences on project level.</p> <p>You can manage team preferences documenting them in a wiki , but it is boring for the user, [...]]]></description>
			<content:encoded><![CDATA[<p>Michael began his talk remainding us that Eclipse configuration lies everywhere :</p>
<ul>
<li>eclipse.ini</li>
<li>configuration/eclipse.ini</li>
<li>/home/.eclipse</li>
<li>.metadata/</li>
<li>$project/.settings/</li>
<li>runtime option -vmargs &#8230;</li>
</ul>
<p>Michael recommends the audience to try to configure as much as possible preferences on project level.</p>
<p>You can manage team preferences documenting them in a wiki , but it is boring for the user, and also very hard to maintain.</p>
<p>Or you can use Eclipse EPF files (Eclipse Preference File), that you can import manually using the import wizard, but same drawback as wiki documentation, people forget about it.</p>
<p>Better than that, you can manage EPF files with one of those 3 tools :</p>
<ul>
<li>Eclipse Team etceteras, is a plugin that can do automatic and manual EPF import over HTTP ,set preference between workspace, and tells the user if he has not imported the EPF, suggesting him to download it</li>
</ul>
<ul>
<li>Another tool, workspace mechanic, it is a task oriented configuration engine(using Groovy, Java, or other); thing it is file system based, no possibility to transfer preferences through HTTP</li>
</ul>
<ul>
<li>Bug 334016 (Common preferences), it is an automatic EPF import over HTTP, without asking the user if he wants it</li>
</ul>
<p>Which one to choose ?</p>
<ul>
<li>just importing through HTTP, use ETE,</li>
<li>if EPF are not enough for you, use Workspace Mechanic</li>
<li>need enforcement ? use Common preferences</li>
</ul>
<p>Then we had a demo of ETE, starting eclipse in a new workspace, a dialog appeared to suggest the user to import the preferences; then changing workspace, there was a dialog to copy settings and preferences.</p>
<p><a href="http://www.eclipsecon.org/2011/sessions/?page=sessions&amp;id=2057">http://www.eclipsecon.org/2011/sessions/?page=sessions&amp;id=2057</a></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dahanne.net/2011/03/24/eclipse-preferences-under-control-in-teams-at-eclipsecon-2011/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Stop the Architecture Erosion of Eclipse And Open Source Projects at EclipseCon 2011</title>
		<link>http://blog.dahanne.net/2011/03/24/stop-the-architecture-erosion-of-eclipse-and-open-source-projects-at-eclipsecon-2011/</link>
		<comments>http://blog.dahanne.net/2011/03/24/stop-the-architecture-erosion-of-eclipse-and-open-source-projects-at-eclipsecon-2011/#comments</comments>
		<pubDate>Thu, 24 Mar 2011 23:49:26 +0000</pubDate>
		<dc:creator>anthony.dahanne</dc:creator>
				<category><![CDATA[conferences]]></category>
		<category><![CDATA[eclipsecon2011]]></category>

		<guid isPermaLink="false">http://blog.dahanne.net/?p=460</guid>
		<description><![CDATA[<p>Bernhard and Frederic began their talk defining software architecture and architectural erosion, which means that your system becomes deprecated and overloaded</p> <p>Then, Bernhard evoked Findbugs, saying that</p> back in March 2004, only 4 packages for version 0.7.2, very simple new features added for annotations for example, few months later, still looking good in May 2005, [...]]]></description>
			<content:encoded><![CDATA[<p>Bernhard and Frederic began their talk defining software architecture and architectural erosion, which means that your system becomes deprecated and overloaded</p>
<p>Then, Bernhard evoked Findbugs, saying that</p>
<ul>
<li>back in March 2004, only 4 packages for version 0.7.2, very simple</li>
<li>new features added for annotations for example, few months later, still looking good</li>
<li>in May 2005, a first cyclic dependency appeared, in the svn log, &laquo;&nbsp;temporary hack&nbsp;&raquo;appears</li>
<li>June 2006, version 1.0.0 many packages,   new cyclic dependency,</li>
<li>2009 : many, many tangles</li>
</ul>
<p>Can you still maintain easily this project ?</p>
<p>He followed his explanation with a tool called Sotoarc to show the dependency between classes and packages; he also mentioned <a href="http://www.eclipse.org/pde/incubator/dependency-visualization/">PDE dependency visualization</a></p>
<p>To check your dependency, you can perform architectural inspection with some architectural tools.</p>
<p>Then Frederic explained to the audience the critical aspect of the architectural quality of an open source project: it is used by many many consumers.</p>
<p>He then enumerated the risks of Erosion in FOSS :</p>
<ul>
<li>contributors from several organizations (different processes)</li>
<li>lower pressure from management</li>
<li>hazardous funding</li>
</ul>
<p>What about Eclipse project then ? Bernhard analyzed the architecture of JDT, and found out that the org.eclipse.ant.ui plugin uses JDT, and this dependency could have be avoided.</p>
<p>Also, duplication of code can cause problems of maintenance; he demonstrated this problem with a DialogField class in Eclipse, duplicated since 2.0</p>
<p>Frederic introduced to us the recommendations of the <a href="http://wiki.eclipse.org/Architecture_Council">Architecture Council</a>.</p>
<p>Also, some new eclipse projects, such as Orion, the web based ide, introduce new architectures.</p>
<p>To migrate your plugins from Eclipse 3.x to e4 , you have to go through an architectural modernization process which consists in auditing, testing, etc&#8230;</p>
<p>To do that, he suggests to use models to represent and manipulate artifacts of existing projects, using <a href="http://www.eclipse.org/MoDisco/">MoDisco</a>; so that you can get in EMF the model of  a plugin (sources folder, plugin.xml, etc..</p>
<p>Once you have the model represented, you can proceed to the migration of this model to the model of e4 for example.</p>
<p>You need to analyze and proceed to modernization of your tools.</p>
<p><a href="http://www.eclipsecon.org/2011/sessions/?page=sessions&amp;id=2001">http://www.eclipsecon.org/2011/sessions/?page=sessions&amp;id=2001</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dahanne.net/2011/03/24/stop-the-architecture-erosion-of-eclipse-and-open-source-projects-at-eclipsecon-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using and Extending Memory Analyzer into Uncharted Waters at EclipseCon 2011</title>
		<link>http://blog.dahanne.net/2011/03/23/using-and-extending-memory-analyzer-into-uncharted-waters-at-eclipsecon-2011/</link>
		<comments>http://blog.dahanne.net/2011/03/23/using-and-extending-memory-analyzer-into-uncharted-waters-at-eclipsecon-2011/#comments</comments>
		<pubDate>Wed, 23 Mar 2011 22:39:11 +0000</pubDate>
		<dc:creator>anthony.dahanne</dc:creator>
				<category><![CDATA[conferences]]></category>
		<category><![CDATA[eclipsecon2011]]></category>

		<guid isPermaLink="false">http://blog.dahanne.net/?p=482</guid>
		<description><![CDATA[<p>Vladimir first introduced to the audience problems such as:</p> Tracking memory leaks : hard to debug and leading to OutOfMemory errors Thread issues : deadlocks, exhausted threads, waiting for external resources, such as DB connection <p>To solve those problems, you can use Eclipse Memory Analyzer, which is :</p> a Java Heap Analyzer it helps find [...]]]></description>
			<content:encoded><![CDATA[<p>Vladimir first introduced to the audience problems such as:</p>
<ul>
<li>Tracking memory leaks : hard to debug and leading to OutOfMemory errors</li>
<li>Thread issues : deadlocks, exhausted threads, waiting for external resources, such as DB connection</li>
</ul>
<p>To solve those problems, you can use Eclipse Memory Analyzer, which is :</p>
<ul>
<li>a Java Heap Analyzer</li>
<li>it helps find memory leaks and reduce memory consumption</li>
<li>UI and programmatic access to data in the heap dumps</li>
<li>faster then competitors, such as JHat</li>
<li>not that intrusive (in terms of memory overhead)</li>
<li>supporting a lot of JVM (Sun, SAP, 1.4.2 and above)</li>
<li>providing an automatic problem recognition</li>
</ul>
<p>Then, on to the demo ! Dimitar,</p>
<ul>
<li>loaded a thread dump (very fast to startup)</li>
<li>showed to us some problems found by the application, such as leak suspects</li>
<li>and some views such as memory consumed by objects, the states of the threads, etc&#8230;</li>
</ul>
<p>Back to the presentation, Vladimir explained how you can extend the tool (you can extend it to save time doing the same thing repeatedly, to share view configurations, etc&#8230;)</p>
<p>There are several ways to access a snapshot</p>
<ul>
<li>through the API : ISnapshot, Iclass, IObject, IArray</li>
<li>extensions points : NameResolver (descriptions of objects) ; Query, for exploring dumps or detailed analysis, in a form of table, tree, histogram ; RequestResolver, to provide the details of what a thread is doing; Vladimir also told us about the presence of 6 other extension points</li>
</ul>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><a href="http://www.eclipsecon.org/2011/sessions/?page=sessions&amp;id=2184">http://www.eclipsecon.org/2011/sessions/?page=sessions&amp;id=2184</a></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dahanne.net/2011/03/23/using-and-extending-memory-analyzer-into-uncharted-waters-at-eclipsecon-2011/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Virgo and RT playing together at EclipseCon 2011</title>
		<link>http://blog.dahanne.net/2011/03/23/virgo-and-rt-playing-together-at-eclipsecon-2011/</link>
		<comments>http://blog.dahanne.net/2011/03/23/virgo-and-rt-playing-together-at-eclipsecon-2011/#comments</comments>
		<pubDate>Wed, 23 Mar 2011 19:04:00 +0000</pubDate>
		<dc:creator>anthony.dahanne</dc:creator>
				<category><![CDATA[conferences]]></category>
		<category><![CDATA[eclipsecon2011]]></category>

		<guid isPermaLink="false">http://blog.dahanne.net/?p=471</guid>
		<description><![CDATA[<p>During this talk, Christopher presented the audience Virgo, part of the RT umbrella of the Eclipse Foundation</p> The virgo packages Equinox, then Virgo Kernel, then Virgo Tomcat Server or Virgo Jetty Server The Gemini project blueprint : DI Web : support for WABs and WARs JPA : persistence in OSGi DBAccess : modular JDBC drivers [...]]]></description>
			<content:encoded><![CDATA[<p>During this talk, Christopher presented the audience Virgo, part of the RT umbrella of the Eclipse Foundation</p>
<h2>The virgo packages</h2>
<ul>
<li>Equinox,</li>
<li>then Virgo Kernel,</li>
<li>then Virgo Tomcat Server or Virgo Jetty Server</li>
</ul>
<h2>The Gemini project</h2>
<ul>
<li>blueprint : DI</li>
<li>Web : support for WABs and WARs</li>
<li>JPA : persistence in OSGi</li>
<li>DBAccess : modular JDBC drivers</li>
<li>Management : JMX management (start /stop)</li>
<li>JNDI : JNDI naming in OSGi</li>
</ul>
<h2>Demo :</h2>
<p>How to extend virgo to get your own custom server</p>
<ol>
<li>Download virgo kernel and unzip it (and configure your osgi console port)</li>
<li>starts it, it looks for new applications to install; you can open an osgi console through telnet</li>
<li>add equinox.http to the ext repo, and the same for equinox servlet API bundle (2.5)</li>
<li>Configure http port , in properties, define : org.osgi.service.http.port=5555 for example</li>
<li>add the HttpService to the initial artifacts (a configuration similar to a config.ini osgi.bundles list)</li>
<li>start it, check everything is ok in the osgi console</li>
<li>You can then deploy a jar (osgi bundle) containing a servlet, configured using Spring (osgi:reference on osgi.http service); just copying it to the virgo kernel : it just works</li>
</ol>
<p>In the works :</p>
<ol>
<li>P2 integration</li>
<li>integration with Gemini projects</li>
<li>better tooling from libra project</li>
</ol>
<p>Talking to Christopher and Glynn, I also learned that : (I&#8217;m totally a virgo n00b)</p>
<ul>
<li>Virgo is like having Equinox + Spring OSGi + Jetty; BUT it also provides a unified mechanism system, using logback (and so slf4j logging APIs)</li>
<li>Virgo also solved problems such as Emphatic loading mechanism : take hibernate for example, a bundle using it would normally not be able to see the other bundles providing Hibernate based classes; that&#8217;s why they came up with this idea of dynamic bundle creation at runtime, that solves this visibility problem (c<a href="http://underlap.blogspot.com/2011/02/thread-context-class-loading-in-virgo.html">heck Glynn blog entry to know more about this problem</a>)</li>
<li>Not P2 enabled : Virgo just recently joined the Eclipse world, and since uses its own dependency and update mechanism; P2 support is high on the priority list</li>
</ul>
<p>&nbsp;</p>
<p><a href="http://www.eclipsecon.org/2011/sessions/?page=sessions&amp;id=2086">http://www.eclipsecon.org/2011/sessions/?page=sessions&amp;id=2086</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dahanne.net/2011/03/23/virgo-and-rt-playing-together-at-eclipsecon-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Growing an open source project one bugday at a time at EclipseCon 2011</title>
		<link>http://blog.dahanne.net/2011/03/22/growing-an-open-source-project-one-bugday-at-a-time-at-eclipsecon-2011/</link>
		<comments>http://blog.dahanne.net/2011/03/22/growing-an-open-source-project-one-bugday-at-a-time-at-eclipsecon-2011/#comments</comments>
		<pubDate>Wed, 23 Mar 2011 00:54:05 +0000</pubDate>
		<dc:creator>anthony.dahanne</dc:creator>
				<category><![CDATA[conferences]]></category>
		<category><![CDATA[eclipsecon2011]]></category>

		<guid isPermaLink="false">http://blog.dahanne.net/?p=452</guid>
		<description><![CDATA[<p>Ian bull presented a tool (available for free for open project), Yoxos, that eases the  integration of new comers on a project, who often ask themselves such questions :</p> What is the version of Eclipse I have to use ? What is the SCM URL ? what version ? trunk ? a branch ? if [...]]]></description>
			<content:encoded><![CDATA[<p>Ian bull presented a tool (available for free for open project), Yoxos, that eases the  integration of new comers on a project, who often ask themselves such questions :</p>
<ul>
<li>What is the version of Eclipse I have to use ?</li>
<li>What is the SCM URL ?</li>
<li>what version ? trunk ? a branch ? if there is PSF file where is it ?</li>
<li>what are the plugins I will need ?</li>
</ul>
<p>Yoxos is about defining an Eclipse IDE profile, so that when new comers join the team, they just doucle click on a file to see an Eclipse IDE generated and ready to use with all the plugins, configurations they need to work on the project</p>
<p>Ian showed us a demo of Yoxos</p>
<ul>
<li>configuring a new profile : you can configure your update strategy : do you want your IDE to get the latest updates, the same for the plugins ?(slicing options); there is also a list of components already included to choose from (mylin, checkstyle, etc..) : the components are fetched the first time from the internet (amazon cloud + original repo), but you do not need to access the internet everytime you launch your built IDE (by the way, at startup, it can update itself); and you can share your SCM settings, project sets, workspace preferences, mylin checkstyle, findbugs configurations into the profile</li>
<li>using the generated profile : from the previous step, a single file of 52 bytes contains the whole profile configuration, you launch it, and then (the first time) it is going to fetch them for you, no need to provide your dependencies and their versions, everything is resolved ; first time we launch the ide, all the projects are checked out, and all the plugins and rules are there.</li>
</ul>
<p>&nbsp;</p>
<p><a href="http://www.eclipsecon.org/2011/sessions/?page=sessions&amp;id=2074">http://www.eclipsecon.org/2011/sessions/?page=sessions&amp;id=2074</a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dahanne.net/2011/03/22/growing-an-open-source-project-one-bugday-at-a-time-at-eclipsecon-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>p2, your savior or your achilles heel? Everything an Eclipse team needs to know about p2 at EclipseCon 2011</title>
		<link>http://blog.dahanne.net/2011/03/22/p2-your-savior-or-your-achilles-heel-everything-an-eclipse-team-needs-to-know-about-p2-at-eclipsecon-2011/</link>
		<comments>http://blog.dahanne.net/2011/03/22/p2-your-savior-or-your-achilles-heel-everything-an-eclipse-team-needs-to-know-about-p2-at-eclipsecon-2011/#comments</comments>
		<pubDate>Tue, 22 Mar 2011 23:33:07 +0000</pubDate>
		<dc:creator>anthony.dahanne</dc:creator>
				<category><![CDATA[conferences]]></category>
		<category><![CDATA[eclipsecon2011]]></category>

		<guid isPermaLink="false">http://blog.dahanne.net/?p=457</guid>
		<description><![CDATA[<p>slides available !!!</p> <p>http://www.slideshare.net/irbull/p2talk</p> <p>Pascal and Ian created this presentation to explain what are the things developers should not do with p2.</p> Move / remove files on disk : for examples jars i the plugins folder; better than this : let p2 manage your install, so that when you remove a plugin, p2 will remove [...]]]></description>
			<content:encoded><![CDATA[<p>slides available !!!</p>
<p><a href="http://www.slideshare.net/irbull/p2talk">http://www.slideshare.net/irbull/p2talk</a></p>
<p>Pascal and Ian created this presentation to explain what are the things developers <strong>should not do</strong> with p2.</p>
<ol>
<li>Move / remove files on disk : for examples jars i the plugins folder; better than this : let p2 manage your install, so that when you remove a plugin, p2 will remove the now un-needed dependencies</li>
<li>unzip your plugins  over Eclipse; instead provide a p2 repository, that could be downloaded as a zip; by the way do not use the dropins folder; because the scan of plugins inside is so slow !</li>
<li>Replace published content, when you republish the exact same version of the same bundle (1.0.0.HEAD); p2 will not be able to distinguish it and do the updates (p2 works with bundle name + version); you have to provide version/id pairs immutable</li>
<li>Alter a released repository : people are consuming your content, so do their headless builds; a released repository SHOULD NEVER change; you can use composite repos to change content</li>
<li>Don&#8217;t categorize things; better than this, you should always categorize your repositories with a meaningful name: if you don&#8217;t like the category, during build, you can change it</li>
<li>Ignore your version ranges : for example do not specify too strict versions, if it works with 3.6.1 , it should work with 3.6.2 too ! Think about versioning your packages, bundles and features, with ranges such as : [3.6.0,3.7.0]</li>
<li>Don&#8217;t use API : be mindful of what you use, do not use the internal packages, ask on the p2-dev mailing list</li>
<li>Use the metadata generator ; instead use the publisher (p2.publisher.UpdateSitePublisher), tycho and PDE already use it.</li>
<li>Use legacy update sites : they do not include complete metadata, so P2 will download every feature to regenerate the complete metadata</li>
<li>Spell it P2, the name is <strong>p2</strong></li>
</ol>
<p>Great presentation ! very lively and insightful !</p>
<p><a href="http://www.eclipsecon.org/2011/sessions/?page=sessions&amp;id=2313">http://www.eclipsecon.org/2011/sessions/?page=sessions&amp;id=2313</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dahanne.net/2011/03/22/p2-your-savior-or-your-achilles-heel-everything-an-eclipse-team-needs-to-know-about-p2-at-eclipsecon-2011/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Android Development with Eclipse at EclipseCon 2011</title>
		<link>http://blog.dahanne.net/2011/03/22/android-development-with-eclipse-at-eclipsecon-2011/</link>
		<comments>http://blog.dahanne.net/2011/03/22/android-development-with-eclipse-at-eclipsecon-2011/#comments</comments>
		<pubDate>Tue, 22 Mar 2011 22:20:04 +0000</pubDate>
		<dc:creator>anthony.dahanne</dc:creator>
				<category><![CDATA[android]]></category>
		<category><![CDATA[conferences]]></category>
		<category><![CDATA[eclipsecon2011]]></category>

		<guid isPermaLink="false">http://blog.dahanne.net/?p=454</guid>
		<description><![CDATA[<p>Torn and Xavier first presented to us an overview about the eclipse tooling provided</p> Java edition : based on JDT Debugging : using ADB, that is running as an host on your desktop, and also on your phone or emulator; for the users, just click on the usual debug button, and the magic happens (connection [...]]]></description>
			<content:encoded><![CDATA[<p>Torn and Xavier first presented to us an overview about the eclipse tooling provided</p>
<ul>
<li>Java edition : based on JDT</li>
<li>Debugging : using ADB, that is running as an host on your desktop, and also on your phone or emulator; for the users, just click on the usual debug button, and the magic happens (connection between host and client adb); everything is supported, except hot code replacement.</li>
<li>Logcat is the view that enables you to see all the text outputs</li>
</ul>
<ul>
<li>Heap view : to see the the state of the memory, when profiling, results can be exported to be opened with Eclipse Memory Analyzer</li>
<li>Integration testing is also made available, by deploying the  integration tests package to the phone, to run it against the test app;  the results will be sent back to Eclipse.</li>
<li>signing your applications, using other dialogs to access your keystore.</li>
</ul>
<ul>
<li>Text editors (XML editors) : many guis are provided : the manifest editor where you can define your your activities, versions, permissions through many tabs,</li>
<li>the UI editor , where you can drag and drop widgets, all shown in a convenient drop down menu : no need anymore to go to the xml view, everything is there; moreover, you can also use the graphical editor to load a layout written in Java; there is the ability to edit nested layouts; to set the the screen size (convenient if you want to see what it will look like on a tablet compared to a phone) and also to change from portrait to landscape</li>
<li>Animation editor : same thing, based on XML with a graphical editor to handle all the cases</li>
</ul>
<p>They ended the presentation giving some links where you can find the online resources such as the source code, project site (android tooling), bugs, mailing lists, etc..</p>
<h2>Questions :</h2>
<ul>
<li>what about the integration of Maven, using the already existing Maven tooling for Android ? it is open source, so if they want to contribute to the Android tooling project, they could.</li>
<li>Is there a CI website showing the build results ? Not a public one.</li>
</ul>
<p><a href="http://www.eclipsecon.org/2011/sessions/?page=sessions&amp;id=2293">http://www.eclipsecon.org/2011/sessions/?page=sessions&amp;id=2293</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dahanne.net/2011/03/22/android-development-with-eclipse-at-eclipsecon-2011/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Discovering the P2 APIs at EclipseCon 2011</title>
		<link>http://blog.dahanne.net/2011/03/22/discovering-the-p2-apis-at-eclipsecon-2011/</link>
		<comments>http://blog.dahanne.net/2011/03/22/discovering-the-p2-apis-at-eclipsecon-2011/#comments</comments>
		<pubDate>Tue, 22 Mar 2011 19:36:38 +0000</pubDate>
		<dc:creator>anthony.dahanne</dc:creator>
				<category><![CDATA[conferences]]></category>
		<category><![CDATA[eclipsecon2011]]></category>

		<guid isPermaLink="false">http://blog.dahanne.net/?p=442</guid>
		<description><![CDATA[<p>When I entered, I got handed over a nice &#171;&#160;I love P2&#8243; and a &#171;&#160;I Love Tycho shirt&#160;&#187; along with a Maven book by Sonatype staff ! pretty warm welcome !</p> <p>Pascal started his presentation giving the history of P2, that he described as the only provisioning system for Equinox</p> 3.4/3.5 provisional api 3.6 (Helios) [...]]]></description>
			<content:encoded><![CDATA[<p>When I entered, I got handed over a nice &laquo;&nbsp;I love P2&#8243; and a &laquo;&nbsp;I Love Tycho shirt&nbsp;&raquo; along with a Maven book by Sonatype staff ! pretty warm welcome !</p>
<p>Pascal started his presentation giving the history of P2, that he described as the only provisioning system for Equinox</p>
<ul>
<li>3.4/3.5 provisional api</li>
<li>3.6 (Helios) first official release</li>
<li>3.7 (Indigo) full backward release</li>
</ul>
<p>What&#8217;s  new in 3.7 ?</p>
<ul>
<li>API : new features to use the consumption, simplification for RCP use case, simpler headless API for simple cases (Even simple things were complex !)</li>
<li>SPI : pluggable transport (SAP needs, they target a P2 runtime less than a 1MB)</li>
<li>Memory code improvement, inter process locking of local repositories</li>
</ul>
<p>3 level of APIs :</p>
<ul>
<li>graphical API : SWT based, designed to be used in RCP applications (few dialogs and wizards that you can found in Eclipse update dialogs) ;<a href="http://mcaffer.com/2011/03/p2-in-rcp-applications/"> use org.eclipse.equinox.p2.rcp.feature</a> : you include that in your product and you&#8217;re done (it will include org.eclipse.equinox.p2.ui.sdk bundle) this approach was chosen because it was too complicated to the user to build his UI from &laquo;&nbsp;toothpicks&nbsp;&raquo;; tweaking the API is also made available ; and there is also an extension/ discovery UI (org.eclipse.equinox.p2.discovery, Pascal is proud of the icons work <img src='http://blog.dahanne.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  ) but API is not provided for this one</li>
<li>headless operations : minimal headless P2 , via p2.core.feature enough to install/update/uninstall , you can find it from 3.7 M6 (you can still do smaller for specific use cases); headless operations : org.eclipse.equinox.p2.operations; Pascal then presented a demo plugin that uses this operation API : 4 lines of code to install a new plugin ! (compared to more that 20 before)</li>
<li>core APIs and SPIs : Installable Unit, Profile, ProvisiongAgent&#8230; you do not need to know everything anymore, since the high level operations encapsulate the P2 complexity; what is not API ? the p2 folder and the repository serialized format : don&#8217;t mess with those !</li>
</ul>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dahanne.net/2011/03/22/discovering-the-p2-apis-at-eclipsecon-2011/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>10 signs you&#8217;re doing OSGi wrong at EclipseCon 2011</title>
		<link>http://blog.dahanne.net/2011/03/22/10-signs-youre-doing-osgi-wrong-at-eclipsecon-2011/</link>
		<comments>http://blog.dahanne.net/2011/03/22/10-signs-youre-doing-osgi-wrong-at-eclipsecon-2011/#comments</comments>
		<pubDate>Tue, 22 Mar 2011 19:29:18 +0000</pubDate>
		<dc:creator>anthony.dahanne</dc:creator>
				<category><![CDATA[conferences]]></category>
		<category><![CDATA[eclipsecon2011]]></category>

		<guid isPermaLink="false">http://blog.dahanne.net/?p=444</guid>
		<description><![CDATA[<p>Jeff Mc Affer and Paul VanderLei , in a relaxed chat, presented the audience some funny slides  to emphasize on things we&#8217;re doing wrong when using OSGi.</p> <p></p> distracted by infrastructure : the time you spend on it is a time you could have used focusing on your business It&#8217;s bad mojo to pollute the [...]]]></description>
			<content:encoded><![CDATA[<p>Jeff Mc Affer and Paul VanderLei , in a relaxed chat, presented the audience some funny slides  to emphasize on things we&#8217;re doing wrong when using OSGi.</p>
<p><a href="http://blog.dahanne.net/wp-content/uploads/IMG_9610.jpg"><img class="alignnone size-medium wp-image-445" title="10 signs you're doing OSGi wrong at EclipseCon 2011" src="http://blog.dahanne.net/wp-content/uploads/IMG_9610-300x225.jpg" alt="" width="300" height="225" /></a></p>
<ol>
<li>distracted by infrastructure : the time you spend on it is a time you could have used focusing on your business</li>
<li>It&#8217;s bad mojo to pollute the POJO (Austin Powers anyone ?) : why are those developers always obsessed at getting their BundleContext ? to register services ? did you read the declarative services spec ?</li>
<li>Using Services in a risky way : Jeff gave an example with previous P2 code, using helper method to getService (find the registry, get the reference, and the service from that reference) why risky ? to use the serviceTracker safely, you need a fat amount of lines of code, there are 5 synchronized blocks, etc.. The solution ? use Declarative Services</li>
<li>Being too fine-grained : just because you can declare a lot of services, does not mean you should; think twice about your use case;</li>
<li>Putting too much in your bundle : does this class needs to be duplicated or should I create a huge bundle to contain all my utility classes ? classes have to be together for a good reason</li>
<li>Low packages cohesion : do finer grained package, to be able to evolute easily</li>
<li>Failure to refactor : don&#8217;t forget to refactor ! It&#8217;s  agile development !</li>
<li>Failure to define (good) API : with good fences and good gate it protects you from having people using this private method you clearly do not want to support, as a producer you have to make clear how to consume your API.</li>
<li>Failure to follow API : related to point 9. , follow the restrictions, if you do not, migrating to the next version will become an head ache.</li>
<li>Clinging to old ideas : it will cost you time, modularity, money if you stick on old ideas that do not take into account OSGi at all.</li>
</ol>
<p>Stop trying to guess your start levels, think dynamic !</p>
<p>In a nutshell :</p>
<ul>
<li>Get your granularity right</li>
<li>plan for refactoring</li>
<li>don&#8217;t pollute your POJOs, for that,</li>
<li>Use declarative services</li>
<li>Manage your APIs</li>
<li>Respect other people&#8217;s API</li>
</ul>
<p>There&#8217;s a last sign you do OSGi wrong : you did not read the book <a href="http://www.amazon.com/OSGi-Equinox-Creating-Modular-Systems/dp/0321585712">OSGi and Equinox , Creating Modular Java Systems</a> <img src='http://blog.dahanne.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Very interesting and entertaining presentation !</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dahanne.net/2011/03/22/10-signs-youre-doing-osgi-wrong-at-eclipsecon-2011/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Next Generation Development Infrastructure: Maven, m2eclipse, Nexus &amp; Hudson at EclipseCon 2011</title>
		<link>http://blog.dahanne.net/2011/03/22/next-generation-development-infrastructure-maven-m2eclipse-nexus-hudson-at-eclipsecon-2011/</link>
		<comments>http://blog.dahanne.net/2011/03/22/next-generation-development-infrastructure-maven-m2eclipse-nexus-hudson-at-eclipsecon-2011/#comments</comments>
		<pubDate>Tue, 22 Mar 2011 17:59:34 +0000</pubDate>
		<dc:creator>anthony.dahanne</dc:creator>
				<category><![CDATA[conferences]]></category>
		<category><![CDATA[eclipsecon2011]]></category>

		<guid isPermaLink="false">http://blog.dahanne.net/?p=439</guid>
		<description><![CDATA[<p>Jason Van Zyl(CTO and founder of Sonatype) made an introduction about Sonatype; the money they got funded recently, 11.6 $M.</p> <p>Then he introduced to us what&#8217;s new at Sonatype in terms of products : Tycho in the eclipse foundation, m2eclipse 0.14 in progress, nexus, and aether (that allows your application to communicate with Maven repositories [...]]]></description>
			<content:encoded><![CDATA[<p>Jason Van Zyl(CTO and founder of Sonatype) made an introduction about Sonatype; the money they got funded recently, 11.6 $M.</p>
<p>Then  he introduced to us what&#8217;s new at Sonatype in terms of products : Tycho  in the eclipse foundation, m2eclipse 0.14 in progress, nexus, and aether  (that allows your application to communicate with Maven repositories  with a clean API ) which is coming to the foundation; and also Hudson,  where they&#8217;re spending much effort right now, to complete their build  infrastructure stack.</p>
<p>Jason mentioned that Atlassian, like  Sonatype, chose the path of OSGi, to provide modularity and ease the  plugins contributions; he also said that the tooling is poor in the OSGi  world.</p>
<p>He talked about the maven shell : running P2, it is  able to update itself and the version of your current Maven  installation, getting it from Nexus.</p>
<p>Sonatype wants to link  all of its products with the same component model, using JSR 330 (the  dependency injection for java), Guice and Sisu (extensions to Guice for JSR 330+); they also dropped Plexus container for Guice instead.</p>
<p>For Hudson, they added a JAX RS API for interacting with external tools.</p>
<p>For the transport, they used the Async HTTP client (JF Arcand); to make their HTTP client &laquo;&nbsp;indestructible&nbsp;&raquo;.</p>
<p>They  also want to clean the maven central repository; for that the only  process to upload any new maven artifacts is now through Nexus, to make sure  the metadatas are correctly set (no more submission of new artifacts  via Jira)</p>
<p>They leverage P2 capabilities in Hudson, maven shell and maven  to update their tools, it is also made available to the public the  possibility to publish P2 metadata at the end of a maven build so that  your project can be self updatable using P2 and those metadatas.</p>
<h2>Questions :</h2>
<p>What parts of Nexus is commercial ? the P2 repository part</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dahanne.net/2011/03/22/next-generation-development-infrastructure-maven-m2eclipse-nexus-hudson-at-eclipsecon-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Effective Git tutorial at EclipseCon 2011</title>
		<link>http://blog.dahanne.net/2011/03/21/effective-git-tutorial-at-eclipsecon-2011/</link>
		<comments>http://blog.dahanne.net/2011/03/21/effective-git-tutorial-at-eclipsecon-2011/#comments</comments>
		<pubDate>Tue, 22 Mar 2011 00:45:08 +0000</pubDate>
		<dc:creator>anthony.dahanne</dc:creator>
				<category><![CDATA[conferences]]></category>
		<category><![CDATA[eclipsecon2011]]></category>
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://blog.dahanne.net/?p=430</guid>
		<description><![CDATA[<p>First of all, we had to prepare our desktop, using those instructions, which I did, one day ahead of the conference, using the official Egit repo (Egit 0.11.3) and eclipse 3.6.2.</p> <p>Four presenters were present : Stefan Lay, Shawn Pearce, Matthias Sohn and Chris Aniszczyk.</p> Presentation <p>They began with a very quick  presentation of Git, [...]]]></description>
			<content:encoded><![CDATA[<p>First of all, we had to prepare our desktop, using <a href="https://docs.google.com/document/d/1Uxq59vCcWqK-hPb5CHQcR97AmJehj6Rn0ScTnih2tyU/edit?hl=en#">those instructions</a>, which I did, one day ahead of the conference, using the official Egit repo (Egit 0.11.3) and eclipse 3.6.2.</p>
<p>Four presenters were present : Stefan Lay, Shawn Pearce, Matthias Sohn and Chris Aniszczyk.</p>
<h2>Presentation</h2>
<p>They began with a very quick  presentation of Git, that they defined as a tool to facilitate code review, and then Git at Eclipse</p>
<ul>
<li>a roadmap has been defined to move to git</li>
<li>CVS is being deprecated</li>
</ul>
<p>They defined what is a modern code review and its benefits</p>
<ul>
<li>when a developer writes code, another checks it</li>
<li>4 eyes catch more bugs</li>
<li>mentoring of new developers</li>
<li>establish trust relationships</li>
<li>good alternative to pair programming</li>
<li>coding standards</li>
</ul>
<p>Git sits between the developer desktop and the CI machine : as a tool to review code and accept changes</p>
<p><a href="http://blog.dahanne.net/wp-content/uploads/IMG_9608.jpg"><img class="alignnone size-medium wp-image-432" title="Effective Git tutorial at EclipseCon 2011" src="http://blog.dahanne.net/wp-content/uploads/IMG_9608-300x225.jpg" alt="" width="300" height="225" /></a></p>
<h2>Tutorial</h2>
<p>For the tutorial, I chose the HTTP protocol rather than SSH, to make sure I would not suffer from any eventual proxies.</p>
<p>When cloning the sample git repository, I noticed that you can specify another destination folder than your current workspace directory, Stefan mentioned it is to allow you to have your git repo not deleted when you delete your workspace&#8230; (anyway, you can also clone to your workspace, just as with Subversion)</p>
<ul>
<li>First connection test</li>
</ul>
<p>right click : team-&gt;remote-&gt;configure push to upstream&#8230;, and then add refs/for/master in the ref spec (or else it will try to push to the master repo); the magic Ref refs/for/master represents the Gerrit code review queue for the master branch on the server.</p>
<p><a href="http://blog.dahanne.net/wp-content/uploads/Capture-Configure-push-.png"><img class="alignnone size-medium wp-image-433" title="Capture-Configure push" src="http://blog.dahanne.net/wp-content/uploads/Capture-Configure-push--300x261.png" alt="" width="300" height="261" /></a></p>
<p>Then click save and push, it will fail because there were no changes; but you just had the opportunity to check your settings are ok.</p>
<h2>Exercises :</h2>
<p><a href="https://docs.google.com/?tab=mo&amp;authuser=0#folders/folder.0.0B4F_gjXVrHZVMzE5MWNmNjktMDcxMS00NDM3LWI4NDQtYmE1YzZkM2RkY2Rl">All the exercises are described here.</a></p>
<p>During those exercises, we created a local change, then submit it for a review in gerrit.</p>
<p>Just after sending my changes, Hudson was triggered to launch a build against my local branch that I just committed.</p>
<p>Then, the build passed (alright !) and it was really fun since people in the room would review my changes with comments; finally someone approved my changes and my changes were merged into the master branch.</p>
<p>Other exercises implied more advanced workflow such a submitting other change sets and registering projects to monitor, but I did not have time to do them all; actually I strongly advise anyone wanting to try gerrit out to complete those exercises. (you will have to do them with a friend, since someone will have to accept your changes <img src='http://blog.dahanne.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Actually, I was really impressed with this tool : it really changed the perception I had of code review (with patches sent via email + code review on the desktop of the co worker); just letting the developer do all the changes he want, then see Hudson builds his changes, ask a reviewer (or a reviewer adds himself to the bug), see the file to file comparison, the comments in the gerrit web interface&#8230; I&#8217;m totally convinced !!! Social coding for real !</p>
<p>I had a chat during this session with Shawn Pearce, from Google, the actual author and main contributor of Gerrit; he explained to me how people and organizations (including Google developers) were hooking Gerrit with Mylin, IRC, Hudson; for now using SSH and the web UI, but he told me a web service interface (based on REST) was on his mind; to ease integration with external tools; as for the authentication, he told me that Gerrit could be linked with Bugzilla and being part of a SSO scheme , using your enterprise LDAP for example</p>
<p>I did not expect so much from this git and gerrit tooling, you got to see it to believe its awesomeness !!!</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dahanne.net/2011/03/21/effective-git-tutorial-at-eclipsecon-2011/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>OSGi introduction and OSGi 4.3 at EclipseCon2011</title>
		<link>http://blog.dahanne.net/2011/03/21/osgi-introduction-and-osgi4-3-at-eclipsecon2011/</link>
		<comments>http://blog.dahanne.net/2011/03/21/osgi-introduction-and-osgi4-3-at-eclipsecon2011/#comments</comments>
		<pubDate>Mon, 21 Mar 2011 21:18:37 +0000</pubDate>
		<dc:creator>anthony.dahanne</dc:creator>
				<category><![CDATA[conferences]]></category>
		<category><![CDATA[eclipsecon2011]]></category>

		<guid isPermaLink="false">http://blog.dahanne.net/?p=427</guid>
		<description><![CDATA[Introduction to OSGi by Peter Kriens <p>Peter first reminded us the history of computing : we started working with bits (10011100), then octal, hexadecimal, assembler, functions, classes, packages; we kept on encapsulating the code.</p> <p>Then came the jars; but they did not define a namespace; and as such, they&#8217;re not modules and there is no [...]]]></description>
			<content:encoded><![CDATA[<h2>Introduction to OSGi by Peter Kriens</h2>
<p>Peter first reminded us the history of computing : we started working with bits (10011100), then octal, hexadecimal, assembler, functions, classes, packages; we kept on encapsulating the code.</p>
<p>Then came the jars; but they did not define a namespace; and as such, they&#8217;re not modules and there is no encapsulation.</p>
<p>This problem got solved using bundles (in OSGi); defining extra information on the jars : some packages are private(if you don&#8217;t know something, you can not do anything wrong with it <img src='http://blog.dahanne.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  ); some others are exported</p>
<p>To add with modularity, OSGi introduced the opportunity to expose API (though interfaces) and not expose your implementations; because you don&#8217;t want to share it.</p>
<p>Also services were introduced : a provider provides a service; and each consumer can register it. (Peter showed a slide with an annotated component : @Activate @Component, etc.. to show how trivial it can be to consume a service)</p>
<p>Some services are being part of the specifications (JPA, JNDI, etc..)</p>
<h2>OSGi 4.3 Technical update : what&#8217;s new ?, by BJ Hargrave</h2>
<p><em>The draft will be available end of week, release in a few months</em></p>
<p>In this release :</p>
<ul>
<li>generics : are not available yet since, the embedded world is still not using it widely; there is a compilator option, -target jsr14, that allows to compile java 5 code for 1.4 JRE.</li>
<li>The framework and Service Tracker got generified, for example ServiceTracker&lt;S,T&gt; (with S for the service  and T for the type implementing it); we now type safe use of services.</li>
<li>A new manifest header : Provide-Capability , to provide info such as : &laquo;&nbsp;resolve this bundle only if it provides this capability&nbsp;&raquo;; and the symmetry is complete with the Require-Capability ; for example, a bundle may provide the SWT API for linux; and another bundle may define : &laquo;&nbsp;I want to only resolve if a bundle provides SWT API for linux&nbsp;&raquo;</li>
<li>Bundle-RequiredExecutionEnvironment got deprecated; instead we could use : Provide-Capability: osgi.ee=&nbsp;&raquo;JavaSE&nbsp;&raquo;; version:List&lt;Version&gt;=&nbsp;&raquo;1.5,1.6&#8243; and the other bundle defining : Require-Capability: osgi.ee; filter:=(&amp;(osgi.ee=JavaSe)(version&gt;=1.6))</li>
<li>Bundle.adapt , to &laquo;&nbsp;cast&nbsp;&raquo;a bundle; BundleStartLevel bsl =  bundle.adapt(BundleStartLevel.class) to have the current StartLevel of the bundle (the same for BundleWiring too) the introduction of BundleRevision relying on adapt, makes you able to know (through API) which revisions of a bundle is deployed in the system (for example if you have a bundle present in the system in different versions)</li>
<li>Bytecode weaving : you can now give a bundle some new import directives, live, while it is deployed and started into the system</li>
<li>ResolverHook : to narrow down the list of bundles considered when importing packages (the hook will get the list of all bundles available, and then provide a short list of bundles exporting this package)</li>
<li>in 4.2, you could have only one bundle alive in the system with the same symbolic name and version (implicit singleton); the property &laquo;&nbsp;multiple&nbsp;&raquo; has been introduced, so that in the framework, you can use twice the same bundle in different wiring schemes.</li>
</ul>
<p><em>Compendium 4.3 will be out fall 2011, with new compendium services, enterprise 4.3 in 2012 introducing subsystems and OBR (OSGi Bundle Repository)</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dahanne.net/2011/03/21/osgi-introduction-and-osgi4-3-at-eclipsecon2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tycho presentation and tutorial at EclipseCon 2011</title>
		<link>http://blog.dahanne.net/2011/03/21/tycho-presentation-and-tutorial-at-eclipsecon-2011/</link>
		<comments>http://blog.dahanne.net/2011/03/21/tycho-presentation-and-tutorial-at-eclipsecon-2011/#comments</comments>
		<pubDate>Mon, 21 Mar 2011 19:23:44 +0000</pubDate>
		<dc:creator>anthony.dahanne</dc:creator>
				<category><![CDATA[conferences]]></category>
		<category><![CDATA[eclipsecon2011]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://blog.dahanne.net/?p=422</guid>
		<description><![CDATA[Building plugins with Tycho <p>When I entered the room, I got handed over a usb stick with an archive named theinternet.zip (we&#8217;ll see what&#8217;s inside during the tutorial); the room is packed, the session is beginning in few minutes.</p> Presentation of Tycho; Jan first defined the audience what is Tycho about : a way to [...]]]></description>
			<content:encoded><![CDATA[<h3>Building plugins with Tycho</h3>
<p>When I entered the room, I got handed over a usb stick with an archive named theinternet.zip (we&#8217;ll see what&#8217;s inside during the tutorial); the room is packed, the session is beginning in few minutes.</p>
<h4>Presentation of Tycho;</h4>
<ul>
<li>Jan first defined the audience what is Tycho about : a way to build Eclipse/OSGi artifacts with Maven,</li>
<li>then who are the nowadays contributors : SAP, Sonatype and Intalio</li>
<li>who is using it : the contributors, for sure; and EGit, P2, JBoss tools, Eclipse Memory Analyzer, JRebel, etc&#8230;</li>
<li>the relation between Maven and Tycho : Tycho is solving dependencies from Manifest.MF, features.xml; and is working in a Manifest first approach compared to a pom.xml first.(but it can also be used in a pom first approach)</li>
<li>the relation between P2 and Tycho : Tycho produces P2 repositories; Tycho consumes P2 repositories and its metadata</li>
<li>the relation between PDE and Tycho : tycho uses the same artifacts (Manifest.mf, build.properties, feature.xml, site.xml) and is actually complementary to PDE UI; but is a competitor to PDE headless mode.</li>
<li>where is tycho : open source, incubating in Eclipse foundation, code base on github</li>
</ul>
<p>After those good words, Pascal demoed tycho</p>
<ul>
<li>Pascal showed some p2 projects being built with Tycho (all p2 projects contained their pom.xml, defining the name of the plugin, and the type : eclipse-plugin or eclipse-feature actually) ; he had also to add a parent pom to be able to build all at once : he cd&#8217;ed to to the p2 agregator project and a simple &laquo;&nbsp;mvn clean install&nbsp;&raquo;; later; tycho began the magic; during the compilation, Pascal talked about is PDE doing compared to tycho (for example the steps order is different) after 1min  and a half later; the crowd applauded Pascal : the p2 projects were built; pretty fast.</li>
<li>Then Pascal cd&#8217;ed to another project : eclipse webtools xml; he located the parent project and launched a pom.xml : to show how easy it is for a newcomer (since he did not know this project) to build a tycho based project : just run &laquo;&nbsp;mvn clean install&nbsp;&raquo; and you&#8217;re done : perfect for getting new contributors to join (no more &laquo;&nbsp;it does not work on my desktop&nbsp;&raquo; whining anymore.)</li>
<li>Adding more steps to the build; Pascal was able to demo Tycho executing the maven findbugs plugin during his build; just adding the maven plugin configuration step in the pom.xml</li>
<li>Moving on, Pascal showed us the integration of the Egit Tycho build in Hudson, with findbugs report</li>
</ul>
<h2>Questions :</h2>
<ul>
<li>is it using JDT compiler ? yes</li>
<li>can i exclude plugins or features from a build ? tycho does not checkout your sources; you can use hudson for that (no maps to define what is getting downloaded)</li>
<li>no possibility to build against different JDT versions; code coverage is not provided yet : Igor, Jan and Pascal answered that the API is opened and even though tycho is production ready; some aspects are not yet covered; but anybody can contribute to it to cover more particular aspects.</li>
<li>Releasing the p2 repository built by Tycho to Nexus is not available now : to publish p2 repos to Nexus Pro, Sonatype sends a zip file to Nexus that explodes and exposes it; during the year, some hooks will be added to do a better integration between p2 repos built with tycho and Nexus Pro.</li>
</ul>
<p>Coffee break : Pascal is announcing a book about tycho is coming soon (Yai!).<a href="http://blog.dahanne.net/wp-content/uploads/IMG_9605.jpg"><img class="alignnone size-medium wp-image-423" title="Pacal, Jan and Igor on Tycho at EclipseCon 2011" src="http://blog.dahanne.net/wp-content/uploads/IMG_9605-300x225.jpg" alt="" width="300" height="225" /></a></p>
<h4>The tutorial</h4>
<ul>
<li>Unzip the archive, backup your current .m2 settings folder; and create a new one with the given settings.xml present : the idea of those steps is to do everything offline, using settings that only consider local artifacts</li>
<li>Start the provided nexus : /var/tmp/eclipsecon2011/nexus/bin/jsw/linux-x86-64/nexus start</li>
<li>Access nexus pro (trial version) <a href="http://localhost:8081/nexus/">http://localhost:8081/nexus/</a> (admin/admin123)</li>
<li>unzip a custom built eclipse : unzip eclipsecon2011.tycho.tutorial.ide-linux.gtk.x86_64.zip</li>
<li>create a new rcp app; add to it the right pom.xml, and &laquo;&nbsp;mvn clean install &laquo;&nbsp;it from eclipse, using m2eclipse provided (and do not forget to use a good eclipse.ini because the permgenspace error popped in my face several times !); then we added a test (using a fragment), a feature, a repository and finally a product</li>
<li>Igor then added the build to Hudson : it built fast !</li>
</ul>
<h4>Lessons learned</h4>
<ul>
<li>stop using a site.xml; use a category.xml to define an eclipse-repository</li>
<li>talking to Jan and Pascal, integration testing is not totally obvious with Tycho; I could first create a product, and run those integration tests against a built product;  instead of launching integration tests during a normal build phase; anyway from their experiences, integration testing is not that mandatory for your projects; focus more on normal unit testing first</li>
<li>before defining a product, launch it a first time, and base your product definition on this launch configuration</li>
<li>in a UI based  product, add org.eclipse.rcp feature; so that you will be able to build your product for multiple platforms (this whole native library stuff, swt; actually on linux x64 I did not need to add this feature to make my product work)</li>
<li>Define aggregator : instead of putting all your modules in the parent pom, you can create an aggregator pom which will define your modules; so that your parent is free of modules dependencies (can be built alone); speaking with Igor, there is no &laquo;&nbsp;truth&nbsp;&raquo;about maven tycho layouts; actually m2eclipse supports nested projects in</li>
<li>Tycho 0.11 will be out when it is ready; ie the product is P2 updatable without hooks</li>
<li>Igor clearly recommends not using the -tycho.targetPlatfrom option; it just loads the jars in a basic way; if anything bad happens, impossible to debug</li>
<li>Nexus professional will add support for hosting custom P2 repos (containing your stuff; it will allow you tycho build to publish the built p2 repo to nexus) throughout the year &#8211;&gt; I can&#8217;t wait for this killer feature!</li>
</ul>
<p>Great presentation &amp; tutorial ! Kudos to Pascal, Jan, and Igor for sharing their knowledge and their patience during the tutorial !</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dahanne.net/2011/03/21/tycho-presentation-and-tutorial-at-eclipsecon-2011/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic

Served from: blog.dahanne.net @ 2012-02-04 15:35:38 -->
