<?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:dc="http://purl.org/dc/elements/1.1/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
<channel>
  <title>The Coder's Breakfast</title>
  <link>http://thecodersbreakfast.net/index.php?</link>
  
  <description />
  <language>fr</language>
  <pubDate>Thu, 06 Jun 2013 16:32:47 +0200</pubDate>
  <copyright>Copyright Olivier Croisier, all rights reserved</copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/TheCodersBreakfast" /><feedburner:info uri="thecodersbreakfast" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><media:copyright>Copyright Olivier Croisier, all rights reserved</media:copyright><media:keywords>java,articles,quiz,conference</media:keywords><media:category scheme="http://www.itunes.com/dtds/podcast-1.0.dtd">Technology</media:category><itunes:author>Olivier Croisier</itunes:author><itunes:explicit>no</itunes:explicit><itunes:keywords>java,articles,quiz,conference</itunes:keywords><itunes:subtitle>Java techincal articles and quizzes, by Olivier Croisier</itunes:subtitle><itunes:summary>Java techincal articles and quizzes, by Olivier Croisier</itunes:summary><itunes:category text="Technology" /><image><link>http://thecodersbreakfast.net</link><url>http://feeds.feedburner.com/~fc/TheCodersBreakfast?bg=FF4400&amp;amp;fg=000000&amp;amp;anim=0&amp;amp;label=listeners</url></image><feedburner:emailServiceId>TheCodersBreakfast</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
    <title>Devoxx 2013 : 3 jours exceptionnels !</title>
    <link>http://feedproxy.google.com/~r/TheCodersBreakfast/~3/Zx1cS7Zastc/index.php</link>
    <guid isPermaLink="false">urn:md5:789b4efbab38a8b75ff977fa1a722346</guid>
    <pubDate>Wed, 03 Apr 2013 07:00:00 +0200</pubDate>
    <dc:creator>Olivier Croisier</dc:creator>
        <category>Communauté</category>
        <category>communauté</category><category>java</category><category>javafx</category>    
    <description>&lt;p&gt;&lt;img src="http://thecodersbreakfast.net/public/344/DevoxxFR-2012-skyscraper02-160-600.png" alt="DevoxxFR-2012-skyscraper02-160-600.png" style="float:right; margin: 0 0 1em 1em;" /&gt;La semaine dernière se tenait &lt;a href="http://www.devoxx.com/display/FR13/Accueil"&gt;l'édition 2013 de la conférence DevoxxFR&lt;/a&gt;, hébergée comme l'année passée dans les salons de l'hôtel Mariott, dont les motifs psychédéliques de la moquette ont marqué les esprits.&lt;/p&gt;


&lt;p&gt;Pour faire court, DevoxxFR c'est 3 jours de conférences en tous genres, plus de 1400 personnes, une trentaine d'exposants et de sponsors (dont Oracle et Google), et une équipe d'une vingtaine de personnes en polo rouge dopées à la caféine pour organiser tout ça (sacré boulot !). L'occasion d'en prendre plein les yeux, de remettre le cerveau en route, et de renforcer son réseau professionnel.&lt;/p&gt;


&lt;p&gt;Et comme j'ai toujours des bêtises à raconter, et que la programmation fonctionnelle revient à la mode, j'ai proposé une conférence sur la notion de Fold&amp;nbsp;: "WTF - What's The Fold ?", qui a eu l'immense honneur d'être sélectionnée (seules ~12% des soumissions sont acceptées, pour des raisons évidentes de temps et de place !). Je vous en reparlerai dans un prochain billet.&lt;/p&gt;


&lt;p&gt;En tant que spectateur, on a intérêt à être bien organisé&amp;nbsp;: il se passe plein de choses en même temps, et il suffit que le sujet ou le speaker soient un peu à la mode pour que les places s'évaporent en quelques minutes. J'avais donc prévu, pour chaque tranche horaire, un plan A et un plan B, voire même un plan C au cas où, et mon agenda était rempli à ras bord. &lt;br /&gt;
Précaution inutile, car lors de la keynote, Stephen Jansen a annoncé que toutes les conférences seraient disponibles gratuitement sur la plateforme Parleys, dotée pour l'occasion d'une toute nouvelle interface en HTML5. Il sera donc possible de revoir tout ça tranquillement &lt;del&gt;vautrés&lt;/del&gt; installés dans le canapé du salon. Merci Parleys&amp;nbsp;!&lt;/p&gt;    &lt;p&gt;Mon programme


Martin Thompson, "Memory systems"


Première conférence, première claque. Martin, pour rappel, est fondateur de LMAX, et prône la "mechanical sympathy", c'est-à-dire le fait de s'appuyer sur les particularités du matériel sur lequel le code est exécuté afin d'en tirer les meilleures performances.


Fonctionnement des caches du... &lt;a href="http://thecodersbreakfast.net/index.php?post/2013/04/02/Devoxx-2013-3-jours-exceptionnels"&gt;&lt;em&gt;Lire&lt;/em&gt; Devoxx 2013 : 3 jours exceptionnels !&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheCodersBreakfast?a=Zx1cS7Zastc:rszffRdUf6s:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheCodersBreakfast?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheCodersBreakfast?a=Zx1cS7Zastc:rszffRdUf6s:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheCodersBreakfast?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheCodersBreakfast/~4/Zx1cS7Zastc" height="1" width="1"/&gt;</description>
    
    
    
          <comments>http://thecodersbreakfast.net/index.php?post/2013/04/02/Devoxx-2013-3-jours-exceptionnels#comment-form</comments>
      <wfw:comment>http://thecodersbreakfast.net/index.php?post/2013/04/02/Devoxx-2013-3-jours-exceptionnels#comment-form</wfw:comment>
      <wfw:commentRss>http://thecodersbreakfast.net/index.php?feed/atom/comments/337</wfw:commentRss>
      <feedburner:origLink>http://thecodersbreakfast.net/index.php?post/2013/04/02/Devoxx-2013-3-jours-exceptionnels</feedburner:origLink></item>
    
  <item>
    <title>Astuce : itération inverse</title>
    <link>http://feedproxy.google.com/~r/TheCodersBreakfast/~3/GdtPPnQatqk/index.php</link>
    <guid isPermaLink="false">urn:md5:72e5fe0e751a283ad7bb80c2ae3b2853</guid>
    <pubDate>Thu, 21 Mar 2013 07:00:00 +0100</pubDate>
    <dc:creator>Olivier Croisier</dc:creator>
        <category>Articles</category>
            
    <description>&lt;p&gt;Une petite astuce en passant : comment parcourir une liste en sens inverse, à l'aide d'un itérateur ?
En utilisant un ListIterator, qui dispose de méthodes hasPrevious() et previous() :

List&lt;Integer&gt; nums = Arrays.asList(1, 2, 3, 4, 5);
ListIterator&lt;Integer&gt; it = nums.listIterator(nums.size());
while(it.hasPrevious()) {
    Integer num =... &lt;a href="http://thecodersbreakfast.net/index.php?post/2013/03/20/Astuce-%3A-it%C3%A9ration-inverse"&gt;&lt;em&gt;Lire&lt;/em&gt; Astuce : itération inverse&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheCodersBreakfast?a=GdtPPnQatqk:CnDRl0965gI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheCodersBreakfast?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheCodersBreakfast?a=GdtPPnQatqk:CnDRl0965gI:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheCodersBreakfast?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheCodersBreakfast/~4/GdtPPnQatqk" height="1" width="1"/&gt;</description>
    
    
    
          <comments>http://thecodersbreakfast.net/index.php?post/2013/03/20/Astuce-%3A-it%C3%A9ration-inverse#comment-form</comments>
      <wfw:comment>http://thecodersbreakfast.net/index.php?post/2013/03/20/Astuce-%3A-it%C3%A9ration-inverse#comment-form</wfw:comment>
      <wfw:commentRss>http://thecodersbreakfast.net/index.php?feed/atom/comments/336</wfw:commentRss>
      <feedburner:origLink>http://thecodersbreakfast.net/index.php?post/2013/03/20/Astuce-%3A-it%C3%A9ration-inverse</feedburner:origLink></item>
    
  <item>
    <title>The Coder's Breakfast à DevoxxFR !</title>
    <link>http://feedproxy.google.com/~r/TheCodersBreakfast/~3/ysvXFPGdoMM/index.php</link>
    <guid isPermaLink="false">urn:md5:aeae329979057000101c74c75d4971bd</guid>
    <pubDate>Mon, 18 Mar 2013 07:00:00 +0100</pubDate>
    <dc:creator>Olivier Croisier</dc:creator>
        <category>Communauté</category>
        <category>java</category>    
    <description>&lt;p&gt;Chers lecteurs,


Comme l'année dernière, je suis speaker à DevoxxFR !


J'aurai l'honneur de présenter une conférence sur le thème des Folds, un concept important hérité de la programmation fonctionnelle. Si le nom peut faire peur, le principe est en réalité très simple - mais très puissant également. Haskell (naturellement), mais aussi Groovy et... &lt;a href="http://thecodersbreakfast.net/index.php?post/2013/03/17/The-Coders-Breakfast-a-DevoxxFR"&gt;&lt;em&gt;Lire&lt;/em&gt; The Coder's Breakfast à DevoxxFR !&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheCodersBreakfast?a=ysvXFPGdoMM:jI0PKkIHAr0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheCodersBreakfast?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheCodersBreakfast?a=ysvXFPGdoMM:jI0PKkIHAr0:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheCodersBreakfast?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheCodersBreakfast/~4/ysvXFPGdoMM" height="1" width="1"/&gt;</description>
    
    
    
          <comments>http://thecodersbreakfast.net/index.php?post/2013/03/17/The-Coders-Breakfast-a-DevoxxFR#comment-form</comments>
      <wfw:comment>http://thecodersbreakfast.net/index.php?post/2013/03/17/The-Coders-Breakfast-a-DevoxxFR#comment-form</wfw:comment>
      <wfw:commentRss>http://thecodersbreakfast.net/index.php?feed/atom/comments/335</wfw:commentRss>
      <feedburner:origLink>http://thecodersbreakfast.net/index.php?post/2013/03/17/The-Coders-Breakfast-a-DevoxxFR</feedburner:origLink></item>
    
  <item>
    <title>Critique de livre : AndEngine for Android Game Development cookbook</title>
    <link>http://feedproxy.google.com/~r/TheCodersBreakfast/~3/495oWkV7luo/index.php</link>
    <guid isPermaLink="false">urn:md5:6f602c990c677b65368b418ea3efb9e1</guid>
    <pubDate>Wed, 06 Mar 2013 07:00:00 +0100</pubDate>
    <dc:creator>Olivier Croisier</dc:creator>
        <category>Communauté</category>
        <category>android</category><category>communauté</category><category>java</category>    
    <description>&lt;p&gt;&lt;img src="http://thecodersbreakfast.net/public/334/.andEngine_cookbook_front_t.jpg" alt="Book cover" style="float:right; margin: 0 0 1em 1em;" title="Book cover" /&gt;
[ &lt;strong&gt;Préambule&lt;/strong&gt; Mes chers amis et lecteurs, une fois n'est pas coutume, j'ouvre mes colonnes à un collègue. Hadrien Pierart, qui travaille pas mal sur Android, va vous entretenir ci-dessous d'un livre sur AndEngine, qui a suscité son enthousiasme. Je n'ai plus qu'à vous souhaiter une bonne lecture !]&lt;/p&gt;


&lt;p&gt;Il y a quelques semaines, Olivier m'a annoncé qu'il avait &lt;a href="http://thecodersbreakfast.net/index.php?post/2010/08/16/Critique-Livre-GlassFish-Security"&gt;à nouveau&lt;/a&gt; eu vent d'une recherche de reviewers par &lt;a href="http://www.packtpub.com/"&gt;Packt Publishing&lt;/a&gt; pour faire la revue de leur dernier livre &lt;a href="http://www.packtpub.com/andengine-for-android-game-development-cookbook/book"&gt;AndEngine for Android Game Development cookbook&lt;/a&gt; par Jayme Schroeder et Brian Broyles.&lt;/p&gt;


&lt;p&gt;Heureusement pour moi, j'avais récemment parlé à Olivier de mon projet de jeu Android, et il me recommanda de recontacter Packtpub. &lt;br /&gt;
Après quelques emails échangés et quelques heures d'attente, me voilà l'heureux propriétaire de cet ouvrage (en version ebook, comme ca, pas besoin d'attendre la poste)&amp;nbsp;!&lt;/p&gt;    &lt;p&gt;Ayant été un peu déçu par ma dernière lecture sur le sujet dont j'attendais beaucoup (je débutais alors tout juste avec AndEngine), j'espérais vraiment que celui-ci allait être à la hauteur de mes attentes. Je précise que ce livre se concentre sur la branche GLES 2 Anchor Center d'AndEngine donc pour ceux qui travailleraient en GLES 1, ce cookbook... &lt;a href="http://thecodersbreakfast.net/index.php?post/2013/03/03/Critique-de-livre-%3A-AndEngine-for-Android-Game-Development-cookbook"&gt;&lt;em&gt;Lire&lt;/em&gt; Critique de livre : AndEngine for Android Game Development cookbook&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheCodersBreakfast?a=495oWkV7luo:QsmVu8PxLg4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheCodersBreakfast?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheCodersBreakfast?a=495oWkV7luo:QsmVu8PxLg4:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheCodersBreakfast?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheCodersBreakfast/~4/495oWkV7luo" height="1" width="1"/&gt;</description>
    
    
    
          <comments>http://thecodersbreakfast.net/index.php?post/2013/03/03/Critique-de-livre-%3A-AndEngine-for-Android-Game-Development-cookbook#comment-form</comments>
      <wfw:comment>http://thecodersbreakfast.net/index.php?post/2013/03/03/Critique-de-livre-%3A-AndEngine-for-Android-Game-Development-cookbook#comment-form</wfw:comment>
      <wfw:commentRss>http://thecodersbreakfast.net/index.php?feed/atom/comments/334</wfw:commentRss>
      <feedburner:origLink>http://thecodersbreakfast.net/index.php?post/2013/03/03/Critique-de-livre-%3A-AndEngine-for-Android-Game-Development-cookbook</feedburner:origLink></item>
    
  <item>
    <title>Java Quiz in Unicorn land</title>
    <link>http://feedproxy.google.com/~r/TheCodersBreakfast/~3/Gt0JB6pDiIk/index.php</link>
    <guid isPermaLink="false">urn:md5:2970dd99930b661223d831b1c4139388</guid>
    <pubDate>Wed, 20 Feb 2013 14:36:00 +0100</pubDate>
    <dc:creator>Olivier Croisier</dc:creator>
        <category>Java Quiz</category>
            
    <description>&lt;p&gt;Some days ago, ZeroTurnaround, of JRebel fame, published a funny &lt;a href="http://zeroturnaround.com/fun/magical-java-puzzle-pat-the-unicorns/"&gt;Java Quiz&lt;/a&gt; on their website.&lt;br /&gt;
It is not very hard, and there are at least 3 different solutions that I know of.&lt;/p&gt;


&lt;p&gt;Below is my solution&amp;nbsp;; but try to find your own before taking a look&amp;nbsp;!&lt;/p&gt;    &lt;p&gt;My solution :


The whole goal of this quiz is to find a way to identify and differenciate the contexts in which the two messages are used, to avoid printing any of them multiple times. 
One major difficulty is that the Unicorn.pat() method is called a random number of times for each message, so we cannot rely on some counter to allow patting or... &lt;a href="http://thecodersbreakfast.net/index.php?post/2013/02/20/Java-Quiz-in-Unicorn-land"&gt;&lt;em&gt;Lire&lt;/em&gt; Java Quiz in Unicorn land&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheCodersBreakfast?a=Gt0JB6pDiIk:VmK8fcwPuYk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheCodersBreakfast?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheCodersBreakfast?a=Gt0JB6pDiIk:VmK8fcwPuYk:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheCodersBreakfast?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheCodersBreakfast/~4/Gt0JB6pDiIk" height="1" width="1"/&gt;</description>
    
    
    
          <comments>http://thecodersbreakfast.net/index.php?post/2013/02/20/Java-Quiz-in-Unicorn-land#comment-form</comments>
      <wfw:comment>http://thecodersbreakfast.net/index.php?post/2013/02/20/Java-Quiz-in-Unicorn-land#comment-form</wfw:comment>
      <wfw:commentRss>http://thecodersbreakfast.net/index.php?feed/atom/comments/333</wfw:commentRss>
      <feedburner:origLink>http://thecodersbreakfast.net/index.php?post/2013/02/20/Java-Quiz-in-Unicorn-land</feedburner:origLink></item>
    
  <item>
    <title>Coding challenge : maman les petits avions</title>
    <link>http://feedproxy.google.com/~r/TheCodersBreakfast/~3/dpVT1l1rLcc/index.php</link>
    <guid isPermaLink="false">urn:md5:a7521f14519443ef7fbe872e909ab52b</guid>
    <pubDate>Mon, 18 Feb 2013 13:21:00 +0100</pubDate>
    <dc:creator>Olivier Croisier</dc:creator>
        <category>Articles</category>
            
    <description>&lt;p&gt;Aujourd'hui, je vous propose de jouer aux petits avions, et de vérifier quel prototype vole le mieux.&lt;/p&gt;


&lt;p&gt;Pour les départager, nous allons nous appuyer sur la &lt;a href="http://fr.wikipedia.org/wiki/Conjecture_de_Syracuse#cite_ref-3"&gt;Suite de Syracuse&lt;/a&gt; :&lt;br /&gt;
En partant d'un nombre initial (entier positif), pour obtenir le suivant&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;s’il est pair, on le divise par 2&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;s’il est impair, on le multiplie par 3 et on ajoute 1.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;On répète l'opération jusqu'à obtenir le nombre 1 (la suite est convergente).&lt;/p&gt;


&lt;p&gt;On définit ensuite les termes suivants&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;le temps de vol total&lt;/strong&gt;&amp;nbsp;: c'est la longueur de la séquence obtenue.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;le temps de vol en altitude&lt;/strong&gt;&amp;nbsp;: c'est la période continue, à partir du décollage, pendant laquelle l'avion reste à une altitude supérieure ou égale à l'altitude initiale (voir exemple ci-dessous).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;l'altitude maximale&lt;/strong&gt;&amp;nbsp;: c'est la valeur maximale de la séquence.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Prenons l'exemple du nombre initial 15.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sa séquence est [15, 46, 23, 70, 35, 106, 53, 160, 80, 40, 20, 10, 5, 16, 8, 4, 2, 1]&lt;/li&gt;
&lt;li&gt;Son temps de vol total est de 18&lt;/li&gt;
&lt;li&gt;Son temps de vol en altitude est de 11 ([15, 46, 23, 70, 35, 106, 53, 160, 80, 40, 20] = 11 éléments)&lt;/li&gt;
&lt;li&gt;Son altitude maximale est de 160&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Voyons maintenant comment tester nos différents prototypes d'avions. &lt;br /&gt;
Chaque prototype a évidemment un nom de code top secret, comme "Enterprise" ou "FauconMillenium". En additionnant les valeurs des lettres qui composent leurs noms, nous sommes capables de déterminer leur nombre initial.&lt;br /&gt;
Ainsi&amp;nbsp;: "Enterprise" vaut 1057, et "FauconMillenium" vaut 1544.&lt;/p&gt;


&lt;p&gt;Je vous laisse calculer quel modèle vole le mieux, et inventer vos propres prototypes !&lt;br /&gt;&lt;/p&gt;


&lt;p&gt;Idéalement, il suffirait d'appeler une méthode en lui passant le nom du prototype, pour calculer (et éventuellement afficher) les trois indicateurs.&lt;br /&gt;
(Tous les langages bienvenus, utilisez Gist, Pastebin ou autre si votre code est volumineux)&lt;/p&gt;    &lt;p&gt;-... &lt;a href="http://thecodersbreakfast.net/index.php?post/2013/02/18/Coding-challenge-maman-les-petits-avions"&gt;&lt;em&gt;Lire&lt;/em&gt; Coding challenge : maman les petits avions&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheCodersBreakfast?a=dpVT1l1rLcc:LTFtmz3QX88:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheCodersBreakfast?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheCodersBreakfast?a=dpVT1l1rLcc:LTFtmz3QX88:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheCodersBreakfast?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheCodersBreakfast/~4/dpVT1l1rLcc" height="1" width="1"/&gt;</description>
    
    
    
          <comments>http://thecodersbreakfast.net/index.php?post/2013/02/18/Coding-challenge-maman-les-petits-avions#comment-form</comments>
      <wfw:comment>http://thecodersbreakfast.net/index.php?post/2013/02/18/Coding-challenge-maman-les-petits-avions#comment-form</wfw:comment>
      <wfw:commentRss>http://thecodersbreakfast.net/index.php?feed/atom/comments/332</wfw:commentRss>
      <feedburner:origLink>http://thecodersbreakfast.net/index.php?post/2013/02/18/Coding-challenge-maman-les-petits-avions</feedburner:origLink></item>
    
  <item>
    <title>Coding challenge !</title>
    <link>http://feedproxy.google.com/~r/TheCodersBreakfast/~3/Mtu5xJzNGtk/index.php</link>
    <guid isPermaLink="false">urn:md5:7b60251e02f02e5d3302654a59e1264a</guid>
    <pubDate>Thu, 14 Feb 2013 12:27:00 +0100</pubDate>
    <dc:creator>Olivier Croisier</dc:creator>
        <category>Autres langages</category>
        <category>haskell</category>    
    <description>&lt;p&gt;Je suis tombé hier sur un vieux challenge proposé par Cédric Beust sur son blog&amp;nbsp;: &lt;br /&gt;
&lt;a href="http://beust.com/weblog/2008/06/27/"&gt;http://beust.com/weblog/2008/06/27/&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;Comme je suis en train d'apprendre Haskell, et que ce genre de challenge algorithmique semble particulièrement bien adapté à ce langage, je vous livre ici ma solution.&lt;/p&gt;


&lt;p&gt;Quelle serait la vôtre&amp;nbsp;? Tous les langages sont acceptés. &lt;br /&gt;
(Si le code est trop long pour tenir dans un commentaire, ou si ce n'est pas pratique pour des raisons de formatage, postez-le sous la forme d'un Gist par exemple)&lt;/p&gt;    &lt;p&gt;import Data.List
 
-- Check for repeating digits by transforming to a string, 
-- then comparing to the same string without duplicate chars
nonRepeating x = (show x) == (nub $ show x)
 
-- Get non-repeating nums in the [1..n] range
nrNums n = filter nonRepeating [1..n]
 
-- Count the non-repeating nums
nbNRNums = length . nrNums
 
-- Calculate gaps... &lt;a href="http://thecodersbreakfast.net/index.php?post/2013/02/14/Coding-challenge"&gt;&lt;em&gt;Lire&lt;/em&gt; Coding challenge !&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheCodersBreakfast?a=Mtu5xJzNGtk:XUuCZRDck9E:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheCodersBreakfast?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheCodersBreakfast?a=Mtu5xJzNGtk:XUuCZRDck9E:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheCodersBreakfast?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheCodersBreakfast/~4/Mtu5xJzNGtk" height="1" width="1"/&gt;</description>
    
    
    
          <comments>http://thecodersbreakfast.net/index.php?post/2013/02/14/Coding-challenge#comment-form</comments>
      <wfw:comment>http://thecodersbreakfast.net/index.php?post/2013/02/14/Coding-challenge#comment-form</wfw:comment>
      <wfw:commentRss>http://thecodersbreakfast.net/index.php?feed/atom/comments/331</wfw:commentRss>
      <feedburner:origLink>http://thecodersbreakfast.net/index.php?post/2013/02/14/Coding-challenge</feedburner:origLink></item>
    
  <item>
    <title>Gagnez du temps avec Joda Time !</title>
    <link>http://feedproxy.google.com/~r/TheCodersBreakfast/~3/caN5lPmUX-I/index.php</link>
    <guid isPermaLink="false">urn:md5:0f5fd708ff09bd424dec567307328823</guid>
    <pubDate>Wed, 30 Jan 2013 07:00:00 +0100</pubDate>
    <dc:creator>Olivier Croisier</dc:creator>
        <category>Articles</category>
        <category>java</category>    
    <description>&lt;p&gt;La représentation et la manipulation des dates et heures est un point notoirement faible de Java depuis sa version 1.0 - et je ne vous parle pas des Timezones...&lt;br /&gt;
Il existe heureusement une petite librairie fort pratique pour combler ce vide sidérant&amp;nbsp;: &lt;a href="http://joda-time.sourceforge.net/index.html" title="Joda Time"&gt;Joda Time&lt;/a&gt;. Développée par &lt;a href="http://blog.joda.org/" title="Stephen Colebourne"&gt;Stephen Colebourne&lt;/a&gt;, elle est en passe d'être standardisée au sein du JDK sous la &lt;a href="http://java.net/projects/jsr-310/"&gt;JSR-310&lt;/a&gt; ("Date &amp;amp; Time API").&lt;/p&gt;


&lt;p&gt;Si vous ne la connaissez pas encore, suivez le guide&amp;nbsp;!&lt;/p&gt;    &lt;p&gt;Les classes du JDK


AUjourd'hui, les dates sont représentées grâce à 2 classes :

java.util.Date, qui représente un point fixe dans le temps, calculé sous la forme du nombre de millisecondes écoulées depuis le 01/01/1970 GMT ("Epoch").La majorité de ses constructeurs (4/6) et méthodes (18/22) sont déclarés obsolètes car buggés...... &lt;a href="http://thecodersbreakfast.net/index.php?post/2013/01/29/Gagnez-du-temps-avec-Joda-Time"&gt;&lt;em&gt;Lire&lt;/em&gt; Gagnez du temps avec Joda Time !&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheCodersBreakfast?a=caN5lPmUX-I:KXI3D-GHLus:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheCodersBreakfast?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheCodersBreakfast?a=caN5lPmUX-I:KXI3D-GHLus:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheCodersBreakfast?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheCodersBreakfast/~4/caN5lPmUX-I" height="1" width="1"/&gt;</description>
    
    
    
          <comments>http://thecodersbreakfast.net/index.php?post/2013/01/29/Gagnez-du-temps-avec-Joda-Time#comment-form</comments>
      <wfw:comment>http://thecodersbreakfast.net/index.php?post/2013/01/29/Gagnez-du-temps-avec-Joda-Time#comment-form</wfw:comment>
      <wfw:commentRss>http://thecodersbreakfast.net/index.php?feed/atom/comments/330</wfw:commentRss>
      <feedburner:origLink>http://thecodersbreakfast.net/index.php?post/2013/01/29/Gagnez-du-temps-avec-Joda-Time</feedburner:origLink></item>
    
  <item>
    <title>Changement d'hébergeur !</title>
    <link>http://feedproxy.google.com/~r/TheCodersBreakfast/~3/sgkvRdu7UX8/index.php</link>
    <guid isPermaLink="false">urn:md5:d030cd9f24f737412d188960b0ab08da</guid>
    <pubDate>Wed, 28 Nov 2012 21:26:00 +0100</pubDate>
    <dc:creator>Olivier Croisier</dc:creator>
        <category>Vie du blog</category>
            
    <description>&lt;p&gt;Je viens de migrer votre blog préféré vers un nouvel hébergeur (PlanetHoster), l'ancien ayant une fâcheuse tendance à blacklister arbitrairement les IP "suspectes" (?), vous interdisant régulièrement l'accès au blog.


J'espère que le nouveau vous donnera satisfaction. Comme il possède des serveurs en France, les temps d'accès devraient être... &lt;a href="http://thecodersbreakfast.net/index.php?post/2012/11/28/Changement-d-h%C3%A9bergeur-%21"&gt;&lt;em&gt;Lire&lt;/em&gt; Changement d'hébergeur !&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheCodersBreakfast?a=sgkvRdu7UX8:Sg9DRDso6Sg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheCodersBreakfast?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheCodersBreakfast?a=sgkvRdu7UX8:Sg9DRDso6Sg:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheCodersBreakfast?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheCodersBreakfast/~4/sgkvRdu7UX8" height="1" width="1"/&gt;</description>
    
    
    
          <comments>http://thecodersbreakfast.net/index.php?post/2012/11/28/Changement-d-h%C3%A9bergeur-%21#comment-form</comments>
      <wfw:comment>http://thecodersbreakfast.net/index.php?post/2012/11/28/Changement-d-h%C3%A9bergeur-%21#comment-form</wfw:comment>
      <wfw:commentRss>http://thecodersbreakfast.net/index.php?feed/atom/comments/329</wfw:commentRss>
      <feedburner:origLink>http://thecodersbreakfast.net/index.php?post/2012/11/28/Changement-d-h%C3%A9bergeur-%21</feedburner:origLink></item>
    
  <item>
    <title>Devs vs Threads : une comparaison pifométrique</title>
    <link>http://feedproxy.google.com/~r/TheCodersBreakfast/~3/LFbjMz-mqoc/index.php</link>
    <guid isPermaLink="false">urn:md5:54ad01e74949eaa80bbdc9b97a022f0e</guid>
    <pubDate>Wed, 31 Oct 2012 07:00:00 +0100</pubDate>
    <dc:creator>Olivier Croisier</dc:creator>
        <category>Articles</category>
        <category>scrum</category>    
    <description>&lt;p&gt;Dans la &lt;del&gt;religion&lt;/del&gt; méthodologie &lt;a href="http://fr.wikipedia.org/wiki/Scrum_(m%C3%A9thode)"&gt;Scrum&lt;/a&gt;, les spécifications du produit à développer ne sont pas rédigées dans leur intégralité au début du projet, mais au contraire fournies par le client au fur et à mesure de l'avancement du développement, afin de lui offrir une plus grande réactivité.&lt;br /&gt;
Le périmètre courant du projet est matérialisé par le "&lt;em&gt;product backlog&lt;/em&gt;", c'est-à-dire un flux priorisé de fonctionnalités à développer, alimenté en permanence par le client, et consommé en flux tendu par l'équipe de développement.&lt;/p&gt;


&lt;p&gt;Mine de rien, on est là en plein &lt;a href="http://fr.wikipedia.org/wiki/Mod%C3%A8le_producteur-consommateur"&gt;pattern producteur-consommateur&lt;/a&gt;. On pourrait même y voir une certaine similarité avec le fonctionnement d'un &lt;code&gt;ThreadPool&lt;/code&gt;, les thread (les développeurs) traitant des jobs (les fonctionnalités) dans leur ordre de soumission.&lt;/p&gt;


&lt;p&gt;Question&amp;nbsp;: les bonnes pratiques associées à la gestion des thread pools (en particulier leur dimensionnement) pourraient-elles être appliquées aux équipes de développement Scrum ?&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;Un ThreadPool sur mesure


Un point particulièrement important est le dimensionnement du pool de threads. Dans "Java Concurrency In Practice"[1], Brian Goetz nous propose la formule suivante[2] :


Nombre de threads optimal = Ncpu × Ucpu × (1 + W/C)


Petite explication des symboles :

Ncpu = nombre de processeurs
Ucpu = Utilisation souhaitée des... &lt;a href="http://thecodersbreakfast.net/index.php?post/2012/10/31/Devs-vs-Threads-comparaison-pifometrique"&gt;&lt;em&gt;Lire&lt;/em&gt; Devs vs Threads : une comparaison pifométrique&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheCodersBreakfast?a=LFbjMz-mqoc:q4HlofHzRto:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheCodersBreakfast?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheCodersBreakfast?a=LFbjMz-mqoc:q4HlofHzRto:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheCodersBreakfast?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheCodersBreakfast/~4/LFbjMz-mqoc" height="1" width="1"/&gt;</description>
    
    
    
          <comments>http://thecodersbreakfast.net/index.php?post/2012/10/31/Devs-vs-Threads-comparaison-pifometrique#comment-form</comments>
      <wfw:comment>http://thecodersbreakfast.net/index.php?post/2012/10/31/Devs-vs-Threads-comparaison-pifometrique#comment-form</wfw:comment>
      <wfw:commentRss>http://thecodersbreakfast.net/index.php?feed/atom/comments/328</wfw:commentRss>
      <feedburner:origLink>http://thecodersbreakfast.net/index.php?post/2012/10/31/Devs-vs-Threads-comparaison-pifometrique</feedburner:origLink></item>
    
<media:credit role="author">Olivier Croisier</media:credit><media:rating>nonadult</media:rating></channel>
</rss>
