<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>NooCodeCommit</title>
	
	<link>http://www.noocodecommit.com/blog/nicogiard</link>
	<description>le petit monde de Play! framework (et de Wicket)...</description>
	<lastBuildDate>Tue, 06 Sep 2011 07:11:56 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/noocodecommit" /><feedburner:info uri="noocodecommit" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Play! Framework Tips : Circular reference avec renderJSON</title>
		<link>http://feedproxy.google.com/~r/noocodecommit/~3/j5lPXb80wOQ/play-framework-tips-circular-reference-avec-renderjson</link>
		<comments>http://www.noocodecommit.com/blog/nicogiard/tips/play-framework-tips-circular-reference-avec-renderjson#comments</comments>
		<pubDate>Tue, 06 Sep 2011 07:11:35 +0000</pubDate>
		<dc:creator>nicogiard</dc:creator>
				<category><![CDATA[Play]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.noocodecommit.com/blog/nicogiard/?p=1070</guid>
		<description><![CDATA[Imaginez le Diagramme UML suivant : Qui pourrait parfaitement représenter les Objets d&#8217;un Blog, mais pas que. Imaginez que vous souhaitiez réaliser un API, compatible REST, qui vous permette de récupérer vos Posts et Comments au format JSon. Nos Objets Métiers Commençons tout d&#8217;abord par écrire nos objets Model : app/models/Post.java 1 2 3 4 <a href='http://www.noocodecommit.com/blog/nicogiard/tips/play-framework-tips-circular-reference-avec-renderjson' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Imaginez le Diagramme UML suivant :<br />
<img alt="" src="http://yuml.me/diagram/scruffy/class/[Post]+1-*%3E[Comment]" title="[Post]+1-*&gt;[Comment]" class="aligncenter" width="336" height="69" /></p>
<p>Qui pourrait parfaitement représenter les Objets d&#8217;un Blog, mais pas que.</p>
<p>Imaginez que vous souhaitiez réaliser un API, compatible REST, qui vous permette de récupérer vos <code>Posts</code> et <code>Comments</code> au format <a href="http://fr.wikipedia.org/wiki/JavaScript_Object_Notation">JSon</a>.</p>
<h2>Nos Objets Métiers</h2>
<p>Commençons tout d&#8217;abord par écrire nos objets <code>Model</code> :<br />
<code>app/models/Post.java</code></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
</pre></td><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">models</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.util.List</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javax.persistence.CascadeType</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javax.persistence.Entity</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javax.persistence.OneToMany</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">play.data.validation.Required</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">play.db.jpa.Model</span><span style="color: #339933;">;</span>
&nbsp;
@<span style="color: #003399;">Entity</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Post <span style="color: #000000; font-weight: bold;">extends</span> Model <span style="color: #009900;">&#123;</span>
    @Required
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #003399;">String</span> author<span style="color: #339933;">;</span>
&nbsp;
    @Required
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #003399;">String</span> title<span style="color: #339933;">;</span>
&nbsp;
    @OneToMany<span style="color: #009900;">&#40;</span>mappedBy <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;post&quot;</span>, cascade <span style="color: #339933;">=</span> CascadeType.<span style="color: #006633;">ALL</span><span style="color: #009900;">&#41;</span>
    <span style="color: #000000; font-weight: bold;">public</span> List<span style="color: #339933;">&lt;</span>Comment<span style="color: #339933;">&gt;</span> comments<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p><code>app/models/Comment.java</code></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
</pre></td><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">models</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javax.persistence.Entity</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javax.persistence.Lob</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javax.persistence.ManyToOne</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">play.data.validation.MaxSize</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">play.data.validation.Required</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">play.db.jpa.Model</span><span style="color: #339933;">;</span>
&nbsp;
@<span style="color: #003399;">Entity</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Comment <span style="color: #000000; font-weight: bold;">extends</span> Model <span style="color: #009900;">&#123;</span>
    @Required
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #003399;">String</span> author<span style="color: #339933;">;</span>
&nbsp;
    @Lob
    @Required
    @MaxSize<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">10000</span><span style="color: #009900;">&#41;</span>
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #003399;">String</span> content<span style="color: #339933;">;</span>
&nbsp;
    @ManyToOne
    @Required
    <span style="color: #000000; font-weight: bold;">public</span> Post post<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<h2>Données de référence &#038; Configuration</h2>
<p>Pour nous simplifier la vie, Play! prévoit un mécanisme très pratique d&#8217;import de données, basé sur l&#8217;utilisation d&#8217;un fichier au format <a href="http://fr.wikipedia.org/wiki/YAML">YAML</a><br />
<code>conf/initial-data.yml</code></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</pre></td><td class="code"><pre class="" style="font-family:monospace;">Post<span class="br0">&#40;</span>post1<span class="br0">&#41;</span>:
  author: moi
  title: Post <span style="">1</span>
&nbsp;
Post<span class="br0">&#40;</span>post2<span class="br0">&#41;</span>:
  author: moi
  title: Post <span style="">2</span>
&nbsp;
Comment<span class="br0">&#40;</span>c1<span class="br0">&#41;</span>:
  author: moi
  content: du Contenu
  post: post1
&nbsp;
Comment<span class="br0">&#40;</span>c2<span class="br0">&#41;</span>:
  author: moi
  content: du Contenu
  post: post1
&nbsp;
Comment<span class="br0">&#40;</span>c3<span class="br0">&#41;</span>:
  author: moi
  content: du Contenu
  post: post2</pre></td></tr></table></div>

<p><code>conf/application.conf</code></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="" style="font-family:monospace;">...
db=mem
...</pre></td></tr></table></div>

<h2>Bootstrap Job &#038; Controller</h2>
<p>Le <code>Bootstrap Job</code> va nous permettre d&#8217;importer nos données de référence sans effort, et notre contrôleur devra réaliser notre besoin initial, à savoir nous retourner la liste des <code>Posts</code><br />
<code>app/controllers/Bootstrap.java</code></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
</pre></td><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">controllers</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">models.Post</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">play.jobs.Job</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">play.jobs.OnApplicationStart</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">play.test.Fixtures</span><span style="color: #339933;">;</span>
&nbsp;
@OnApplicationStart
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Bootstrap <span style="color: #000000; font-weight: bold;">extends</span> Job <span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> doJob<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>Post.<span style="color: #006633;">count</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            Fixtures.<span style="color: #006633;">loadModels</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;initial-data.yml&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p><code>app/controllers/Application.java</code></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
</pre></td><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">controllers</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.util.List</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">models.Post</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">play.mvc.Controller</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Application <span style="color: #000000; font-weight: bold;">extends</span> Controller <span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">void</span> index<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        List<span style="color: #339933;">&lt;</span>Post<span style="color: #339933;">&gt;</span> posts <span style="color: #339933;">=</span> Post.<span style="color: #006633;">findAll</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        renderJSON<span style="color: #009900;">&#40;</span>posts<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<h2>Premier résultat</h2>
<p>Après avoir accédé via votre navigateur à l&#8217;adresse <a href="http://localhost:9000">http://localhost:9000</a>, vous devriez avoir l&#8217;erreur suivante&nbsp;:<br />
<a href="http://www.noocodecommit.com/blog/nicogiard/wp-content/uploads/2011/09/error-json.png"><img src="http://www.noocodecommit.com/blog/nicogiard/wp-content/uploads/2011/09/error-json-1024x351.png" alt="" title="error-json" width="695" height="238" class="aligncenter size-large wp-image-1074" /></a></p>
<p>Et dans votre console :
<pre>
@67jf5njpa
Internal Server Error (500) for request GET /

Execution exception (In /app/controllers/Application.java around line 12)
IllegalStateException occured : circular reference error   Offending field: post    Offending object: preserveType: false, type: class models.Post, obj: Post[1]
</pre>
<h2>Corrections</h2>
<p>La méthode <code>renderJSON</code> prévoit l&#8217;utilisation de vos propre <code>JSonSerializer</code>. Ce que nous allons faire pour nos Objets <code>Post</code> et <code>Comment</code>.</p>
<p><code>app/models/serializer/PostJSonSerializer.java</code></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
</pre></td><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">models.serializer</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.lang.reflect.Type</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">models.Post</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.google.gson.JsonElement</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.google.gson.JsonObject</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.google.gson.JsonSerializationContext</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.google.gson.JsonSerializer</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> PostJSonSerializer <span style="color: #000000; font-weight: bold;">implements</span> JsonSerializer<span style="color: #339933;">&lt;</span>Post<span style="color: #339933;">&gt;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> PostJSonSerializer instance<span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">private</span> PostJSonSerializer<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> PostJSonSerializer get<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>instance <span style="color: #339933;">==</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            instance <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> PostJSonSerializer<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
        <span style="color: #000000; font-weight: bold;">return</span> instance<span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> JsonElement serialize<span style="color: #009900;">&#40;</span>Post post, Type type, JsonSerializationContext jsonSerializationContext<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        JsonObject obj <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> JsonObject<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        obj.<span style="color: #006633;">addProperty</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;author&quot;</span>, post.<span style="color: #006633;">author</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        obj.<span style="color: #006633;">addProperty</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;title&quot;</span>, post.<span style="color: #006633;">title</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        obj.<span style="color: #006633;">add</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;comments&quot;</span>, jsonSerializationContext.<span style="color: #006633;">serialize</span><span style="color: #009900;">&#40;</span>post.<span style="color: #006633;">comments</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000000; font-weight: bold;">return</span> obj<span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p><code>app/models/serializer/CommentJSonSerializer.java</code></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
</pre></td><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">models.serializer</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.lang.reflect.Type</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">models.Comment</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.google.gson.JsonElement</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.google.gson.JsonObject</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.google.gson.JsonSerializationContext</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.google.gson.JsonSerializer</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> CommentJSonSerializer <span style="color: #000000; font-weight: bold;">implements</span> JsonSerializer<span style="color: #339933;">&lt;</span>Comment<span style="color: #339933;">&gt;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> CommentJSonSerializer instance<span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">private</span> CommentJSonSerializer<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> CommentJSonSerializer get<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>instance <span style="color: #339933;">==</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            instance <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> CommentJSonSerializer<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
        <span style="color: #000000; font-weight: bold;">return</span> instance<span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> JsonElement serialize<span style="color: #009900;">&#40;</span>Comment comment, Type type, JsonSerializationContext jsonSerializationContext<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        JsonObject obj <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> JsonObject<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        obj.<span style="color: #006633;">addProperty</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;author&quot;</span>, comment.<span style="color: #006633;">author</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        obj.<span style="color: #006633;">addProperty</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;content&quot;</span>, comment.<span style="color: #006633;">content</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000000; font-weight: bold;">return</span> obj<span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>On modifie par la suite l&#8217;appel à la méthode <code>renderJSon</code> dans le fichier <code>app/controllers/Application.java</code>:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code"><pre class="java" style="font-family:monospace;">...
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">void</span> index<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        List<span style="color: #339933;">&lt;</span>Post<span style="color: #339933;">&gt;</span> posts <span style="color: #339933;">=</span> Post.<span style="color: #006633;">findAll</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        renderJSON<span style="color: #009900;">&#40;</span>posts, PostJSonSerializer.<span style="color: #006633;">get</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>, CommentJSonSerializer.<span style="color: #006633;">get</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
...</pre></td></tr></table></div>

<h2>Résultat final</h2>
<p>Rafraîchissez l&#8217;adresse <a href="http://localhost:9000">http://localhost:9000</a> pour obtenir le résultat suivant :</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
</pre></td><td class="code"><pre class="json" style="font-family:monospace;">[
   {
      &quot;author&quot;:&quot;moi&quot;,
      &quot;title&quot;:&quot;Post 1&quot;,
      &quot;comments&quot;:[
         {
            &quot;author&quot;:&quot;moi&quot;,
            &quot;content&quot;:&quot;du Contenu&quot;
         },
         {
            &quot;author&quot;:&quot;moi&quot;,
            &quot;content&quot;:&quot;du Contenu&quot;
         }
      ]
   },
   {
      &quot;author&quot;:&quot;moi&quot;,
      &quot;title&quot;:&quot;Post 2&quot;,
      &quot;comments&quot;:[
         {
            &quot;author&quot;:&quot;moi&quot;,
            &quot;content&quot;:&quot;du Contenu&quot;
         }
      ]
   }
]</pre></td></tr></table></div>

<p>ps: Je vous livre ici mes observations sur le fonctionnement des <code>JSonSerializer</code>. Si vous voyez une façon de mieux les écrire, ou de mieux faire n&#8217;hésitez pas à commenter ce billet.</p>
<hr />
<p><small>© nicogiard pour <a href="http://www.noocodecommit.com/blog/nicogiard">NooCodeCommit</a>, 2011. |
<a href="http://www.noocodecommit.com/blog/nicogiard/tips/play-framework-tips-circular-reference-avec-renderjson">Permalink</a> |
<a href="http://www.noocodecommit.com/blog/nicogiard/tips/play-framework-tips-circular-reference-avec-renderjson#comments">3 commentaires</a> 
<br/>
Tags: <a href="http://www.noocodecommit.com/blog/nicogiard/tag/play" rel="tag">Play</a>, <a href="http://www.noocodecommit.com/blog/nicogiard/tag/tips" rel="tag">Tips</a><br/>
</small></p><img src="http://feeds.feedburner.com/~r/noocodecommit/~4/j5lPXb80wOQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.noocodecommit.com/blog/nicogiard/tips/play-framework-tips-circular-reference-avec-renderjson/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://www.noocodecommit.com/blog/nicogiard/tips/play-framework-tips-circular-reference-avec-renderjson</feedburner:origLink></item>
		<item>
		<title>Play! Framework Tips : un renderArgs.put dans un @After sert t’il à quelque chose</title>
		<link>http://feedproxy.google.com/~r/noocodecommit/~3/nfyXOYKHjVM/play-framework-tips-un-renderargs-put-dans-un-after-sert-til-a-quelque-chose</link>
		<comments>http://www.noocodecommit.com/blog/nicogiard/tips/play-framework-tips-un-renderargs-put-dans-un-after-sert-til-a-quelque-chose#comments</comments>
		<pubDate>Mon, 05 Sep 2011 14:36:33 +0000</pubDate>
		<dc:creator>nicogiard</dc:creator>
				<category><![CDATA[Play]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.noocodecommit.com/blog/nicogiard/?p=1055</guid>
		<description><![CDATA[Considérons le contrôleur suivant : app/controllers/Application.java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 package controllers; &#160; import play.mvc.After; import play.mvc.Before; import play.mvc.Controller; &#160; public class Application extends Controller &#123; &#160; @Before static <a href='http://www.noocodecommit.com/blog/nicogiard/tips/play-framework-tips-un-renderargs-put-dans-un-after-sert-til-a-quelque-chose' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Considérons le contrôleur suivant :</p>
<p><code>app/controllers/Application.java</code></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
</pre></td><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">controllers</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">play.mvc.After</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">play.mvc.Before</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">play.mvc.Controller</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Application <span style="color: #000000; font-weight: bold;">extends</span> Controller <span style="color: #009900;">&#123;</span>
&nbsp;
    @Before
    <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">void</span> before<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;before&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        renderArgs.<span style="color: #006633;">put</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;nom&quot;</span>, <span style="color: #0000ff;">&quot;Michel&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    @After
    <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">void</span> after<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;after&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        renderArgs.<span style="color: #006633;">put</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;nom&quot;</span>, <span style="color: #0000ff;">&quot;Serge&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">void</span> index<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;index&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        redirect<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">void</span> redirect<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;redirect&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        renderArgs.<span style="color: #006633;">put</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;nom&quot;</span>, <span style="color: #0000ff;">&quot;Robert&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        render<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Ainsi que le template associé :<br />
<code>app/views/Application/redirect.html</code></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="" style="font-family:monospace;">#<span class="br0">&#123;</span>extends 'main.html' /<span class="br0">&#125;</span>
#<span class="br0">&#123;</span>set title:'Home' /<span class="br0">&#125;</span>
&nbsp;
$<span class="br0">&#123;</span>nom<span class="br0">&#125;</span></pre></td></tr></table></div>

<p>Lequel des trois prénoms suivants, <em>Michel</em>, <em>Serge</em> et <em>Robert</em>, va t&#8217;il s&#8217;afficher dans votre navigateur à l&#8217;adresse <a href="http://localhost:9000">http://localhost:9000</a> ?</p>
<p>La réponse est <code><strong>Robert</strong></code>. </p>
<p><strong>Conclusion</strong> : Un <code>renderArgs.put</code> dans un <code>@After</code> ne sert à rien!</p>
<hr />
<p><small>© nicogiard pour <a href="http://www.noocodecommit.com/blog/nicogiard">NooCodeCommit</a>, 2011. |
<a href="http://www.noocodecommit.com/blog/nicogiard/tips/play-framework-tips-un-renderargs-put-dans-un-after-sert-til-a-quelque-chose">Permalink</a> |
<a href="http://www.noocodecommit.com/blog/nicogiard/tips/play-framework-tips-un-renderargs-put-dans-un-after-sert-til-a-quelque-chose#comments">4 commentaires</a> 
<br/>
Tags: <a href="http://www.noocodecommit.com/blog/nicogiard/tag/play" rel="tag">Play</a>, <a href="http://www.noocodecommit.com/blog/nicogiard/tag/tips" rel="tag">Tips</a><br/>
</small></p><img src="http://feeds.feedburner.com/~r/noocodecommit/~4/nfyXOYKHjVM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.noocodecommit.com/blog/nicogiard/tips/play-framework-tips-un-renderargs-put-dans-un-after-sert-til-a-quelque-chose/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://www.noocodecommit.com/blog/nicogiard/tips/play-framework-tips-un-renderargs-put-dans-un-after-sert-til-a-quelque-chose</feedburner:origLink></item>
		<item>
		<title>Play! Framework Tips : Attention au Controller nommé “Tags”</title>
		<link>http://feedproxy.google.com/~r/noocodecommit/~3/zZefqruwVqY/play-framework-tips-attention-au-controller-nomme-tags</link>
		<comments>http://www.noocodecommit.com/blog/nicogiard/tips/play-framework-tips-attention-au-controller-nomme-tags#comments</comments>
		<pubDate>Mon, 05 Sep 2011 12:32:51 +0000</pubDate>
		<dc:creator>nicogiard</dc:creator>
				<category><![CDATA[Play]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.noocodecommit.com/blog/nicogiard/?p=1050</guid>
		<description><![CDATA[Imaginez que vous ayez un objet Model Tag, et que vous souhaitiez avoir un contrôleur dédié à la gestion de ces objets. Vous le nommeriez tout naturellement controllers.Tags. Ce qui implique que vous ayez un répertoire app/view/Tags pour vos templates. Ensuite imaginez que vous ayez besoin pour vos templates de créer des tags Play! personnalisés. <a href='http://www.noocodecommit.com/blog/nicogiard/tips/play-framework-tips-attention-au-controller-nomme-tags' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Imaginez que vous ayez un objet Model <code>Tag</code>, et que vous souhaitiez avoir un contrôleur dédié à la gestion de ces objets. Vous le nommeriez tout naturellement <code>controllers.Tags</code>.</p>
<p>Ce qui implique que vous ayez un répertoire <code>app/view/Tags</code> pour vos templates.</p>
<p>Ensuite imaginez que vous ayez besoin pour vos templates de créer des tags Play! personnalisés. Le framework s&#8217;attend à les avoir dans un répertoire nommé <code>app/view/tags</code>.</p>
<p>Vous commencez à voir où il pourrait y avoir un problème ?</p>
<p>Et oui, Play! sur Windows (qui est un système que je conchie) hérite du &#8220;case insensitive&#8221; de l&#8217;OS. Ce qui fait que pour lui, il n&#8217;y a pas de différence entre <code>app/view/Tags</code> et <code>app/view/tags</code>.<br />
Play! sur Linux, qui lui est case sensitive, voit une différence, et donc ne trouve pas vos templates de tags placés dans le répertoire <code>app/view/Tags</code>.</p>
<p>En conclusion il faut donc faire attention à ne pas nommer un de vos contrôleurs <code>Tags</code> pour éviter tout problème avec les mécanismes internes du framework.</p>
<hr />
<p><small>© nicogiard pour <a href="http://www.noocodecommit.com/blog/nicogiard">NooCodeCommit</a>, 2011. |
<a href="http://www.noocodecommit.com/blog/nicogiard/tips/play-framework-tips-attention-au-controller-nomme-tags">Permalink</a> |
<a href="http://www.noocodecommit.com/blog/nicogiard/tips/play-framework-tips-attention-au-controller-nomme-tags#comments">2 commentaires</a> 
<br/>
Tags: <a href="http://www.noocodecommit.com/blog/nicogiard/tag/play" rel="tag">Play</a>, <a href="http://www.noocodecommit.com/blog/nicogiard/tag/tips" rel="tag">Tips</a><br/>
</small></p><img src="http://feeds.feedburner.com/~r/noocodecommit/~4/zZefqruwVqY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.noocodecommit.com/blog/nicogiard/tips/play-framework-tips-attention-au-controller-nomme-tags/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.noocodecommit.com/blog/nicogiard/tips/play-framework-tips-attention-au-controller-nomme-tags</feedburner:origLink></item>
		<item>
		<title>Play! Framework Snippet : Basic Authentication</title>
		<link>http://feedproxy.google.com/~r/noocodecommit/~3/z2aZcnmZzW8/play-framework-snippet-basic-authentication</link>
		<comments>http://www.noocodecommit.com/blog/nicogiard/play/play-framework-snippet-basic-authentication#comments</comments>
		<pubDate>Mon, 05 Sep 2011 09:23:39 +0000</pubDate>
		<dc:creator>nicogiard</dc:creator>
				<category><![CDATA[Play]]></category>
		<category><![CDATA[Snippet]]></category>

		<guid isPermaLink="false">http://www.noocodecommit.com/blog/nicogiard/?p=1037</guid>
		<description><![CDATA[Je commence cette série de snippet pour Play! Framework par une méthode très simple pour gérer une authentification &#8220;Basic&#8221; : Ajouter à votre contrôleur la méthode @Before suivante : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 public class MyController extends Controller &#123; @Before static void <a href='http://www.noocodecommit.com/blog/nicogiard/play/play-framework-snippet-basic-authentication' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Je commence cette série de snippet pour Play! Framework par une méthode très simple pour gérer une authentification &#8220;Basic&#8221; :</p>
<p>Ajouter à votre contrôleur la méthode @Before suivante :</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
</pre></td><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> MyController <span style="color: #000000; font-weight: bold;">extends</span> Controller <span style="color: #009900;">&#123;</span>
    @Before
    <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">void</span> basicAuth<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>StringUtils.<span style="color: #006633;">isBlank</span><span style="color: #009900;">&#40;</span>request.<span style="color: #006633;">user</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> StringUtils.<span style="color: #006633;">isBlank</span><span style="color: #009900;">&#40;</span>request.<span style="color: #006633;">password</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            unauthorized<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Veuillez saisir vos identifiants&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
            User user <span style="color: #339933;">=</span> User.<span style="color: #006633;">find</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;login=? and password=?&quot;</span>, request.<span style="color: #006633;">user</span>, request.<span style="color: #006633;">password</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">first</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>user <span style="color: #339933;">==</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                unauthorized<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Identifiants inconnus&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">void</span> index<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        render<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Ainsi, toutes les actions que vous appellerez dans ce contrôleur devront être authentifiées pour aboutir.</p>
<hr />
<p><small>© nicogiard pour <a href="http://www.noocodecommit.com/blog/nicogiard">NooCodeCommit</a>, 2011. |
<a href="http://www.noocodecommit.com/blog/nicogiard/play/play-framework-snippet-basic-authentication">Permalink</a> |
<a href="http://www.noocodecommit.com/blog/nicogiard/play/play-framework-snippet-basic-authentication#comments">Pas de commentaire</a> 
<br/>
Tags: <a href="http://www.noocodecommit.com/blog/nicogiard/tag/play" rel="tag">Play</a>, <a href="http://www.noocodecommit.com/blog/nicogiard/tag/snippet" rel="tag">Snippet</a><br/>
</small></p><img src="http://feeds.feedburner.com/~r/noocodecommit/~4/z2aZcnmZzW8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.noocodecommit.com/blog/nicogiard/play/play-framework-snippet-basic-authentication/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.noocodecommit.com/blog/nicogiard/play/play-framework-snippet-basic-authentication</feedburner:origLink></item>
		<item>
		<title>HTML5 &amp; GIT au NormandyJUG</title>
		<link>http://feedproxy.google.com/~r/noocodecommit/~3/NS6ha-Lb90Q/html5-git-au-normandyjug</link>
		<comments>http://www.noocodecommit.com/blog/nicogiard/news/html5-git-au-normandyjug#comments</comments>
		<pubDate>Thu, 25 Nov 2010 19:04:21 +0000</pubDate>
		<dc:creator>nicogiard</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[NormandyJUG]]></category>

		<guid isPermaLink="false">http://www.noocodecommit.com/blog/nicogiard/?p=1021</guid>
		<description><![CDATA[Soirée de fin d&#8217;année 2010 exceptionnelle ! Venez nombreux le mardi 14 décembre à partir de 19h00 à l&#8217;eXia/CESI de Rouen/Mont Saint Aignan Avec deux sujets phare du moment, le Normandy JUG termine l&#8217;année en beauté ! HTML5 &#38; GIT Inscriptions Obligatoire sur JugEvents.org (...)Lire la suite (244 mots) © nicogiard pour NooCodeCommit, 2010. &#124; <a href='http://www.noocodecommit.com/blog/nicogiard/news/html5-git-au-normandyjug' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<h2>Soirée de fin d&#8217;année 2010 exceptionnelle !</h2>
<p>Venez nombreux<strong> le mardi 14 décembre à partir de 19h00</strong> à <a href="http://maps.google.fr/maps?oe=utf-8&#038;rls=com.ubuntu:en-US:official&#038;client=firefox-a&#038;um=1&#038;ie=UTF-8&#038;q=eXia+CESI+Rouen&#038;fb=1&#038;gl=fr&#038;hq=eXia+CESI&#038;hnear=Rouen&#038;cid=0,0,14303900307713815448&#038;ei=VLLMSrNth5OMB4j5_YIH&#038;sa=X&#038;oi=local_result&#038;ct=image&#038;resnum=1">l&#8217;eXia/CESI de Rouen/Mont Saint Aignan</a><br />
Avec deux sujets phare du moment, le Normandy JUG termine l&#8217;année en beauté !</p>
<h3>HTML5 &amp; GIT</h3>
<p><center>Inscriptions Obligatoire sur <a href="http://jugevents.org/jugevents/event/32001">JugEvents.org</a></center></p>
<p>(...)<br/><a href="http://www.noocodecommit.com/blog/nicogiard/news/html5-git-au-normandyjug">Lire la suite</a> <em>(244 mots)</em></p>
<hr />
<p><small>© nicogiard pour <a href="http://www.noocodecommit.com/blog/nicogiard">NooCodeCommit</a>, 2010. |
<a href="http://www.noocodecommit.com/blog/nicogiard/news/html5-git-au-normandyjug">Permalink</a> |
<a href="http://www.noocodecommit.com/blog/nicogiard/news/html5-git-au-normandyjug#comments">Pas de commentaire</a> 
<br/>
Tags: <a href="http://www.noocodecommit.com/blog/nicogiard/tag/news" rel="tag">News</a>, <a href="http://www.noocodecommit.com/blog/nicogiard/tag/normandyjug" rel="tag">NormandyJUG</a><br/>
</small></p><img src="http://feeds.feedburner.com/~r/noocodecommit/~4/NS6ha-Lb90Q" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.noocodecommit.com/blog/nicogiard/news/html5-git-au-normandyjug/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.noocodecommit.com/blog/nicogiard/news/html5-git-au-normandyjug</feedburner:origLink></item>
		<item>
		<title>Le code d’honneur du développeur</title>
		<link>http://feedproxy.google.com/~r/noocodecommit/~3/7ugS5Yt6caM/le-code-dhonneur-du-developpeur</link>
		<comments>http://www.noocodecommit.com/blog/nicogiard/theorie-du-developpeur/le-code-dhonneur-du-developpeur#comments</comments>
		<pubDate>Mon, 22 Mar 2010 15:28:02 +0000</pubDate>
		<dc:creator>nicogiard</dc:creator>
				<category><![CDATA[Agilité]]></category>
		<category><![CDATA[Théorie du Développeur]]></category>

		<guid isPermaLink="false">http://www.noocodecommit.com/blog/nicogiard/?p=1001</guid>
		<description><![CDATA[Après un bon accueil du premier article orienté code, voilà un second article sur la Théorie du Développeur, cette fois ci orienté Principes Fondamentaux dont voici le sommaire : 1. Priorité au Client 2. Qualité du code 3. Responsabilisation 4. Intégration Continue 5. Itérations 6. Tests automatiques 7. Refactoring 8. Architecture informelle 9. Communication 10. <a href='http://www.noocodecommit.com/blog/nicogiard/theorie-du-developpeur/le-code-dhonneur-du-developpeur' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Après un bon accueil du <a href="http://www.noocodecommit.com/blog/nicogiard/theorie-du-developpeur/les-10-commandements-du-developpeur">premier article orienté code</a>, voilà un second article sur la Théorie du Développeur, cette fois ci orienté Principes Fondamentaux dont voici le sommaire :</p>
<ul>
<li>1. Priorité au Client</li>
<li>2. Qualité du code</li>
<li>3. Responsabilisation</li>
<li>4. Intégration Continue</li>
<li>5. Itérations</li>
<li>6. Tests automatiques </li>
<li>7. Refactoring</li>
<li>8. Architecture informelle</li>
<li>9. Communication</li>
<li>10. Éviter le gaspillage</li>
</ul>
<p>Les plus avertis auront remarqué que j&#8217;ai repris les différents points énoncés par <a href="http://www.makinggoodsoftware.com/2010/03/13/my-ten-development-principles/">cet article</a> de l&#8217;excellent blog <a href="http://www.makinggoodsoftware.com">making good software</a> et que j&#8217;ai librement interprétés.</p>
<p>Même si parfois, on retrouve des sujets communs avec le premier article, ils sont exprimés d&#8217;une autre façon ici. </p>
<p>A vous de juger!</p>
<p>(...)<br/><a href="http://www.noocodecommit.com/blog/nicogiard/theorie-du-developpeur/le-code-dhonneur-du-developpeur">Lire la suite</a> <em>(928 mots)</em></p>
<hr />
<p><small>© nicogiard pour <a href="http://www.noocodecommit.com/blog/nicogiard">NooCodeCommit</a>, 2010. |
<a href="http://www.noocodecommit.com/blog/nicogiard/theorie-du-developpeur/le-code-dhonneur-du-developpeur">Permalink</a> |
<a href="http://www.noocodecommit.com/blog/nicogiard/theorie-du-developpeur/le-code-dhonneur-du-developpeur#comments">3 commentaires</a> 
<br/>
Tags: <a href="http://www.noocodecommit.com/blog/nicogiard/tag/agilite" rel="tag">Agilité</a>, <a href="http://www.noocodecommit.com/blog/nicogiard/tag/theorie-du-developpeur" rel="tag">Théorie du Développeur</a><br/>
</small></p><img src="http://feeds.feedburner.com/~r/noocodecommit/~4/7ugS5Yt6caM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.noocodecommit.com/blog/nicogiard/theorie-du-developpeur/le-code-dhonneur-du-developpeur/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://www.noocodecommit.com/blog/nicogiard/theorie-du-developpeur/le-code-dhonneur-du-developpeur</feedburner:origLink></item>
		<item>
		<title>Les 10 Commandements du Développeur</title>
		<link>http://feedproxy.google.com/~r/noocodecommit/~3/jn4CEdK2OC0/les-10-commandements-du-developpeur</link>
		<comments>http://www.noocodecommit.com/blog/nicogiard/theorie-du-developpeur/les-10-commandements-du-developpeur#comments</comments>
		<pubDate>Fri, 19 Mar 2010 13:11:29 +0000</pubDate>
		<dc:creator>nicogiard</dc:creator>
				<category><![CDATA[Agilité]]></category>
		<category><![CDATA[Théorie du Développeur]]></category>

		<guid isPermaLink="false">http://www.noocodecommit.com/blog/nicogiard/?p=984</guid>
		<description><![CDATA[Cela fait maintenant quelques années que je développe, et j&#8217;ai toujours l&#8217;espoir qu&#8217;un jour cette activité (le développement) soit reconnu comme une fin en soi (tout le monde n&#8217;a pas envie de devenir chef de projet!!!). Dans ma recherche d&#8217;amélioration continue de cette activité, j&#8217;ai compilé ici plusieurs bonnes pratiques que je considère comme indispendables <a href='http://www.noocodecommit.com/blog/nicogiard/theorie-du-developpeur/les-10-commandements-du-developpeur' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Cela fait maintenant quelques années que je développe, et j&#8217;ai toujours l&#8217;espoir qu&#8217;un jour cette activité (le développement) soit reconnu comme une fin en soi (tout le monde n&#8217;a pas envie de devenir chef de projet!!!).</p>
<p>Dans ma recherche d&#8217;amélioration continue de cette activité, j&#8217;ai compilé ici plusieurs bonnes pratiques que je considère comme indispendables pour bien faire mon travail.</p>
<p><strong>Amis développeurs, n&#8217;ayez plus peur de dire que vous aimez ce que vous faites, et que vous avez envie de bien le faire !</strong></p>
<p>Les plus avertis auront remarqué que j&#8217;ai repris les différents points énoncés par <a href="http://www.makinggoodsoftware.com/2009/06/04/10-commandments-for-creating-good-code/">cet article</a> de l&#8217;excellent blog <a href="http://www.makinggoodsoftware.com">making good software</a> et que j&#8217;ai librement interprétés.</p>
<p>(...)<br/><a href="http://www.noocodecommit.com/blog/nicogiard/theorie-du-developpeur/les-10-commandements-du-developpeur">Lire la suite</a> <em>(738 mots)</em></p>
<hr />
<p><small>© nicogiard pour <a href="http://www.noocodecommit.com/blog/nicogiard">NooCodeCommit</a>, 2010. |
<a href="http://www.noocodecommit.com/blog/nicogiard/theorie-du-developpeur/les-10-commandements-du-developpeur">Permalink</a> |
<a href="http://www.noocodecommit.com/blog/nicogiard/theorie-du-developpeur/les-10-commandements-du-developpeur#comments">3 commentaires</a> 
<br/>
Tags: <a href="http://www.noocodecommit.com/blog/nicogiard/tag/agilite" rel="tag">Agilité</a>, <a href="http://www.noocodecommit.com/blog/nicogiard/tag/theorie-du-developpeur" rel="tag">Théorie du Développeur</a><br/>
</small></p><img src="http://feeds.feedburner.com/~r/noocodecommit/~4/jn4CEdK2OC0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.noocodecommit.com/blog/nicogiard/theorie-du-developpeur/les-10-commandements-du-developpeur/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://www.noocodecommit.com/blog/nicogiard/theorie-du-developpeur/les-10-commandements-du-developpeur</feedburner:origLink></item>
		<item>
		<title>Septième Réunion du Normandy JUG – Play!</title>
		<link>http://feedproxy.google.com/~r/noocodecommit/~3/C83wUIgyx5s/septieme-reunion-du-normandy-jug-play</link>
		<comments>http://www.noocodecommit.com/blog/nicogiard/news/septieme-reunion-du-normandy-jug-play#comments</comments>
		<pubDate>Tue, 16 Mar 2010 22:07:46 +0000</pubDate>
		<dc:creator>nicogiard</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[NormandyJUG]]></category>

		<guid isPermaLink="false">http://www.noocodecommit.com/blog/nicogiard/?p=974</guid>
		<description><![CDATA[La septième réunion de l&#8217;association NormandyJUG aura lieu le Mardi 23 Mars 2010 à partir de 19h00, dans les locaux de l&#8217;eXia / CESI (à Mont Saint Aignan). Le thème de la soirée est le framework Play!, qui sera présenté par Guillaume Bort, qui est lead developper du projet Play! framework et co-fondateur et CTO <a href='http://www.noocodecommit.com/blog/nicogiard/news/septieme-reunion-du-normandy-jug-play' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>La septième réunion de l&#8217;association <a href="http://normandyjug.org/">NormandyJUG</a> aura lieu le <strong>Mardi 23 Mars 2010</strong> à partir de 19h00, dans les locaux de l&#8217;<a href="http://www.exia.cesi.fr/">eXia / CESI</a> (à Mont Saint Aignan).</p>
<p>Le thème de la soirée est le framework <strong>Play!</strong>, qui sera présenté par <strong>Guillaume Bort</strong>, qui est lead developper du projet Play! framework et co-fondateur et CTO du cabinet de conseil <strong>Zenexity</strong> spécialisé dans les architectures pure Web.</p>
<p><strong>Play!</strong> est un framework Java Web nouvelle génération et sans compromis :<br />
Il apporte toute l’agilité et la productivité des frameworks basés sur les langages dynamiques dont Java n’avais jamais pu profiter. Contrairement a de nombreux frameworks Java qui ne sont que des tentatives de masquer des technologies trop complexes telles que JSF ou EJB, Play! s’attaque aux problèmes du développement Web avec Java de manière totalement novatrice et rompt définitivement avec les pratiques avérées non viables du monde JEE.</p>
<p><a href="http://www.playframework.org/">http://www.playframework.org/</a></p>
<p>Et encore une fois, grâce à nos amis de chez <a href="http://www.jetbrains.com/">JetBrains</a>, Des T-Shirts et des Licences TeamCity et/ou IntelliJ IDea à Gagner !!!</p>
<p>Merci aussi à <a href="http://www.exoplatform.org/">eXo Platform</a> (via <a href="http://twitter.com/dbaeli">Dimitri Baeli</a>) pour les goodies surprise!</p>
<p>Et enfin, merci aux <a href="http://www.pearson.fr/">Editions Pearson</a> pour l&#8217;exemplaire de <a href="http://www.pearson.fr/livre/?GCOI=27440100730370">Apache Maven</a> qu&#8217;ils m&#8217;ont autorisé à vous faire gagner!</p>
<p>Le buffet de cette soirée est de nouveau sponsorisé par enovea.<br />
<a href="http://www.enovea.net"><img src="http://www.normandyjug.org/wp-content/uploads/2009/12/logo_enovea.jpg" alt="enovea" title="enovea"/></a><br />
Merci à eux pour leur soutien!</p>
<p>L’équipe SOA de Logica Management Consulting sponsorise aussi la soirée pour son recrutement 2010 (envoyez votre CV à <a href="mailto:youen.chene@logica.com">youen.chene@logica.com</a>) :<br />
<img src="http://www.normandyjug.org/wp-content/uploads/2010/02/Logo_LMC_petit-300x109.jpg" alt="logica" title="logica"/></p>
<p>Vous devez vous inscrire <a href="http://jugevents.org/jugevents/event/show.html?id=25463">via notre page sur le site jugevent.com</a>.</p>
<p>Un petit plan histoire de ne pas vous perdre :<br />
<iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.fr/maps?ie=UTF8&amp;q=exia+cesi+rouen&amp;fb=1&amp;gl=fr&amp;hq=exia+cesi&amp;hnear=rouen&amp;cid=0,0,14303900307713815448&amp;ei=0hTcSueKGtK24QaUzsD1Bg&amp;ved=0CAsQnwIwAA&amp;t=h&amp;iwloc=A&amp;ll=49.476671,1.092023&amp;spn=0.006295,0.006295&amp;output=embed"></iframe><br /><small><a href="http://maps.google.fr/maps?ie=UTF8&amp;q=exia+cesi+rouen&amp;fb=1&amp;gl=fr&amp;hq=exia+cesi&amp;hnear=rouen&amp;cid=0,0,14303900307713815448&amp;ei=0hTcSueKGtK24QaUzsD1Bg&amp;ved=0CAsQnwIwAA&amp;t=h&amp;iwloc=A&amp;ll=49.476671,1.092023&amp;spn=0.006295,0.006295&amp;source=embed" style="color:#0000FF;text-align:left">Agrandir le plan</a></small></p>
<hr />
<p><small>© nicogiard pour <a href="http://www.noocodecommit.com/blog/nicogiard">NooCodeCommit</a>, 2010. |
<a href="http://www.noocodecommit.com/blog/nicogiard/news/septieme-reunion-du-normandy-jug-play">Permalink</a> |
<a href="http://www.noocodecommit.com/blog/nicogiard/news/septieme-reunion-du-normandy-jug-play#comments">Pas de commentaire</a> 
<br/>
Tags: <a href="http://www.noocodecommit.com/blog/nicogiard/tag/news" rel="tag">News</a>, <a href="http://www.noocodecommit.com/blog/nicogiard/tag/normandyjug" rel="tag">NormandyJUG</a><br/>
</small></p><img src="http://feeds.feedburner.com/~r/noocodecommit/~4/C83wUIgyx5s" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.noocodecommit.com/blog/nicogiard/news/septieme-reunion-du-normandy-jug-play/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.noocodecommit.com/blog/nicogiard/news/septieme-reunion-du-normandy-jug-play</feedburner:origLink></item>
		<item>
		<title>Critique du livre Scrum par Claude Aubry</title>
		<link>http://feedproxy.google.com/~r/noocodecommit/~3/quuh43DN9fk/critique-du-livre-scrum-par-claude-aubry</link>
		<comments>http://www.noocodecommit.com/blog/nicogiard/lecture/critique-du-livre-scrum-par-claude-aubry#comments</comments>
		<pubDate>Thu, 18 Feb 2010 16:07:32 +0000</pubDate>
		<dc:creator>nicogiard</dc:creator>
				<category><![CDATA[Lecture]]></category>

		<guid isPermaLink="false">http://www.noocodecommit.com/blog/nicogiard/?p=958</guid>
		<description><![CDATA[&#160; Scrum Le guide pratique de la méthode agile la plus populaire par Claude Aubry aux Editions Dunod (...)Lire la suite (728 mots) © nicogiard pour NooCodeCommit, 2010. &#124; Permalink &#124; 1 Commentaire Tags: Lecture]]></description>
			<content:encoded><![CDATA[<p align="center"><img src="http://www.noocodecommit.com/blog/nicogiard/wp-content/uploads/2010/02/scrum_claude_aubry.jpg" title="Scrum par Claude Aubry"></img></p>
<p>&nbsp;</p>
<p align="center" style="font-size: 200%; font-weight: bold;">Scrum</p>
<p align="center"style="font-size: 150%; font-weight: bold;">Le guide pratique de la méthode agile la plus populaire</p>
<p align="center">par <a href="http://www.aubryconseil.com/">Claude Aubry</a></p>
<p align="center">aux <a href="http://www.dunod.com/livre-dunod-9782100540181-scrum-le-guide-pratique-de-la-methode-agile-la-plus-populaire.html">Editions Dunod</a></p>
<p>(...)<br/><a href="http://www.noocodecommit.com/blog/nicogiard/lecture/critique-du-livre-scrum-par-claude-aubry">Lire la suite</a> <em>(728 mots)</em></p>
<hr />
<p><small>© nicogiard pour <a href="http://www.noocodecommit.com/blog/nicogiard">NooCodeCommit</a>, 2010. |
<a href="http://www.noocodecommit.com/blog/nicogiard/lecture/critique-du-livre-scrum-par-claude-aubry">Permalink</a> |
<a href="http://www.noocodecommit.com/blog/nicogiard/lecture/critique-du-livre-scrum-par-claude-aubry#comments">1 Commentaire</a> 
<br/>
Tags: <a href="http://www.noocodecommit.com/blog/nicogiard/tag/lecture" rel="tag">Lecture</a><br/>
</small></p><img src="http://feeds.feedburner.com/~r/noocodecommit/~4/quuh43DN9fk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.noocodecommit.com/blog/nicogiard/lecture/critique-du-livre-scrum-par-claude-aubry/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.noocodecommit.com/blog/nicogiard/lecture/critique-du-livre-scrum-par-claude-aubry</feedburner:origLink></item>
		<item>
		<title>Sixième Réunion du Normandy JUG – Scrum</title>
		<link>http://feedproxy.google.com/~r/noocodecommit/~3/CLHiAb6kJx8/sixieme-reunion-du-normandy-jug-scrum</link>
		<comments>http://www.noocodecommit.com/blog/nicogiard/news/sixieme-reunion-du-normandy-jug-scrum#comments</comments>
		<pubDate>Wed, 17 Feb 2010 16:16:31 +0000</pubDate>
		<dc:creator>nicogiard</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[NormandyJUG]]></category>

		<guid isPermaLink="false">http://www.noocodecommit.com/blog/nicogiard/?p=951</guid>
		<description><![CDATA[La sixième réunion de l&#8217;association NormandyJUG aura lieu le Mardi 23 Février 2010 à partir de 19h00, dans les locaux de l&#8217;eXia / CESI (à Mont Saint Aignan). Les thèmes de la soirée sont les suivants : Scrum et l’agilité des équipes de développement 1. Scrum en 5min 2. Revue pratique : review, retro, planning, <a href='http://www.noocodecommit.com/blog/nicogiard/news/sixieme-reunion-du-normandy-jug-scrum' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>La sixième réunion de l&#8217;association <a href="http://normandyjug.org/">NormandyJUG</a> aura lieu le <strong>Mardi 23 Février 2010</strong> à partir de 19h00, dans les locaux de l&#8217;<a href="http://www.exia.cesi.fr/">eXia / CESI</a> (à Mont Saint Aignan).</p>
<p>Les thèmes de la soirée sont les suivants :<br />
<strong>Scrum et l’agilité des équipes de développement</strong></p>
<ul>
<li>1. Scrum en 5min</li>
<li>2. Revue pratique : review, retro, planning, daily, impediment.</li>
<li>3. Les outils : du papier à l’iphone</li>
<li>4. L’esprit derrière tout ça [Agile Manifesto, Lean, Scrum, ...]</li>
<li>5. Retours d’expérience (petites équipes, grandes équipes)</li>
<li>6. Débat : comment commencer ?</li>
</ul>
<p>Et encore une fois, grâce à nos amis de chez <a href="http://www.jetbrains.com/">JetBrains</a>, Des T-Shirts et des Licences TeamCity et/ou IntelliJ IDea à Gagner !!!</p>
<p>Merci aussi à <a href="http://www.exoplatform.org/">eXo Platform</a> (via <a href="http://twitter.com/dbaeli">Dimitri Baeli</a>) pour les goodies surprise!</p>
<p>Et enfin, merci aux <a href="http://www.pearson.fr/">Editions Pearson</a> pour l&#8217;exemplaire de <a href="http://www.pearson.fr/livre/?GCOI=27440100730370">Apache Maven</a> qu&#8217;ils m&#8217;ont autorisé à vous faire gagner!</p>
<p>Le buffet de cette soirée est de nouveau sponsorisé par enovea. Merci à eux pour leur soutien!</p>
<p>Vous devez vous inscrire <a href="http://jugevents.org/jugevents/event/24453">via notre page sur le site jugevent.com</a>.</p>
<p>Un petit plan histoire de ne pas vous perdre :<br />
<iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.fr/maps?ie=UTF8&amp;q=exia+cesi+rouen&amp;fb=1&amp;gl=fr&amp;hq=exia+cesi&amp;hnear=rouen&amp;cid=0,0,14303900307713815448&amp;ei=0hTcSueKGtK24QaUzsD1Bg&amp;ved=0CAsQnwIwAA&amp;t=h&amp;iwloc=A&amp;ll=49.476671,1.092023&amp;spn=0.006295,0.006295&amp;output=embed"></iframe><br /><small><a href="http://maps.google.fr/maps?ie=UTF8&amp;q=exia+cesi+rouen&amp;fb=1&amp;gl=fr&amp;hq=exia+cesi&amp;hnear=rouen&amp;cid=0,0,14303900307713815448&amp;ei=0hTcSueKGtK24QaUzsD1Bg&amp;ved=0CAsQnwIwAA&amp;t=h&amp;iwloc=A&amp;ll=49.476671,1.092023&amp;spn=0.006295,0.006295&amp;source=embed" style="color:#0000FF;text-align:left">Agrandir le plan</a></small></p>
<p><a href='http://www.noocodecommit.com/blog/nicogiard/wp-content/uploads/2010/02/Affiche_JUG_20100223_Scrum.pdf'>Affiche_JUG_20100223_Scrum</a></p>
<hr />
<p><small>© nicogiard pour <a href="http://www.noocodecommit.com/blog/nicogiard">NooCodeCommit</a>, 2010. |
<a href="http://www.noocodecommit.com/blog/nicogiard/news/sixieme-reunion-du-normandy-jug-scrum">Permalink</a> |
<a href="http://www.noocodecommit.com/blog/nicogiard/news/sixieme-reunion-du-normandy-jug-scrum#comments">Pas de commentaire</a> 
<br/>
Tags: <a href="http://www.noocodecommit.com/blog/nicogiard/tag/news" rel="tag">News</a>, <a href="http://www.noocodecommit.com/blog/nicogiard/tag/normandyjug" rel="tag">NormandyJUG</a><br/>
</small></p><img src="http://feeds.feedburner.com/~r/noocodecommit/~4/CLHiAb6kJx8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.noocodecommit.com/blog/nicogiard/news/sixieme-reunion-du-normandy-jug-scrum/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.noocodecommit.com/blog/nicogiard/news/sixieme-reunion-du-normandy-jug-scrum</feedburner:origLink></item>
	</channel>
</rss>

