<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Web.java</title>
	<atom:link href="http://hadf.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://hadf.wordpress.com</link>
	<description>le web, cette bulle de savon</description>
	<lastBuildDate>Wed, 09 Sep 2009 11:00:16 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>fr</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='hadf.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/b41321b772ca9a2fa85479cecde3775f?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Web.java</title>
		<link>http://hadf.wordpress.com</link>
	</image>
			<item>
		<title>Responsabilité et atomicité des fonctions</title>
		<link>http://hadf.wordpress.com/2009/09/08/responsabilite-et-atomicite-des-fonctions/</link>
		<comments>http://hadf.wordpress.com/2009/09/08/responsabilite-et-atomicite-des-fonctions/#comments</comments>
		<pubDate>Tue, 08 Sep 2009 21:46:38 +0000</pubDate>
		<dc:creator>hadf</dc:creator>
				<category><![CDATA[developpement]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://hadf.wordpress.com/?p=249</guid>
		<description><![CDATA[Le projet sur lequel je travaille comporte des problèmes d&#8217;architecture que j&#8217;ai déjà évoqué dans mon billet précédent. Aujourd&#8217;hui, je souhaite aborder un autre problème de conception, qui concerne la répartition des responsabilités dans une classe.
Craig Larman nous conseille de respecter le principe de forte cohésion lorsqu&#8217;on défini les responsabilités que doit implémenter une classe. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hadf.wordpress.com&blog=1346238&post=249&subd=hadf&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Le projet sur lequel je travaille comporte des problèmes d&#8217;architecture que j&#8217;ai déjà évoqué dans mon billet précédent. Aujourd&#8217;hui, je souhaite aborder un autre problème de conception, qui concerne la répartition des responsabilités dans une classe.</p>
<p>Craig Larman nous conseille de respecter le principe de forte cohésion lorsqu&#8217;on défini les responsabilités que doit implémenter une classe. A une échelle inférieure, une méthode doit également respecter une certaine cohésion.</p>
<p>Pour être concret prenons l&#8217;exemple d&#8217;une méthode qui s&#8217;appellerait <em>isValide()</em> et supposons que l&#8217;implémentation de cette méthode nécessite d&#8217;effectuer une itération sur une liste. La tentation est de profiter du parcours de cette liste pour effectuer des traitements annexes &#8220;à la volée&#8221;, ce qui évite de parcourir la liste une deuxième fois. Dans notre cas, le contrat annoncé par la méthode <em>isValide()</em> consiste fournir la réponse à une question. Pour respecter la cohérence de la fonction, celle-ci doit se contenter strictement d&#8217;y répondre et rien d&#8217;autre. Tout traitement annexe vient polluer la méthode et rend son utilité moins évidente.</p>
<p>Le problème qu&#8217;on peut rencontrer est que cela peut aboutir à une duplication de code. Pour reprendre l&#8217;exemple d&#8217;une fonction qui implémente une itération sur une liste, on peut se retrouver à implémenter cette itération dans plusieurs méthodes pour respecter l&#8217;unitarité de chacune d&#8217;elle. Si cela pose des problèmes rédhibitoires de performance, la solution est de n&#8217;avoir qu&#8217;une seule itération et d&#8217;implémenter le pattern Observer pour effectuer plusieurs traitements sur les éléments de la liste.</p>
<p>La cohérence d&#8217;une fonction rend son utilité plus claire ce qui facilite la maintenance du code.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hadf.wordpress.com/249/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hadf.wordpress.com/249/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hadf.wordpress.com/249/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hadf.wordpress.com/249/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hadf.wordpress.com/249/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hadf.wordpress.com/249/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hadf.wordpress.com/249/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hadf.wordpress.com/249/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hadf.wordpress.com/249/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hadf.wordpress.com/249/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hadf.wordpress.com&blog=1346238&post=249&subd=hadf&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://hadf.wordpress.com/2009/09/08/responsabilite-et-atomicite-des-fonctions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/57d66448fa20dee6cc3e14588a0b6cfd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hadf</media:title>
		</media:content>
	</item>
		<item>
		<title>La gestion des dates en Java</title>
		<link>http://hadf.wordpress.com/2009/08/25/la-gestion-des-dates-en-java/</link>
		<comments>http://hadf.wordpress.com/2009/08/25/la-gestion-des-dates-en-java/#comments</comments>
		<pubDate>Tue, 25 Aug 2009 18:23:10 +0000</pubDate>
		<dc:creator>hadf</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[date]]></category>

		<guid isPermaLink="false">http://hadf.wordpress.com/?p=234</guid>
		<description><![CDATA[Je travaille actuellement sur un projet dans lequel nous avons besoin de manipuler des dates. Le projet est assez ancien, il date de plus de quatre ans, et à l&#8217;évidence, ceux qui ont écrit cette appli ne maîtrisaient pas très bien la programmation orientée objet. Et comme dans le même temps, très peu de documentation [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hadf.wordpress.com&blog=1346238&post=234&subd=hadf&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Je travaille actuellement sur un projet dans lequel nous avons besoin de manipuler des dates. Le projet est assez ancien, il date de plus de quatre ans, et à l&#8217;évidence, ceux qui ont écrit cette appli ne maîtrisaient pas très bien la programmation orientée objet. Et comme dans le même temps, très peu de documentation a été rédigée et que le projet a changé de domaine, je me retrouve tout seul à essayer de décrypter des lignes de code absconses et indigestes.</p>
<p>Je souhaite donc vous faire profiter d&#8217;un petit retour d&#8217;expérience afin d&#8217;améliorer la gestion des dates dans vos projets Java.</p>
<p>Petit rappel, il existe deux classes qui permettent de représenter une date dans l&#8217;api standard. Il s&#8217;agit de Calendar et Date, toutes deux dans le package java.util. Je ne traite pas ici du package java.sql.</p>
<p>Lorsque vous avez besoin de représenter une date en attribut d&#8217;une classe, je recommande l&#8217;utilisation de Date plutôt que Calendar. En effet, Date est un objet immuable (ou presque), il garanti qu&#8217;il ne sera pas modifié par mégarde et élimine les problèmes d&#8217;accès concurrent en cas de programmation multithread :</p>
<pre>public class Personne {
    public final String nom, prenom;
    <strong>public final Date dateDeNaissance;</strong>
}</pre>
<p>Faites attention lorsque vous initialisez une Date. Si vous utilisez le constructeur par défaut, la date sera initialisée avec pour valeur le nombre de milliseconde depuis le 1er janvier 1970. Le problème est que lorsque vous récupérez une deuxième Date par défaut et que vous les comparez toutes les deux, bien que ces deux dates correspondent au même jour calendaire, la comparaison échouera car la valeur en milliseconde sera différente.</p>
<p>Je recommande donc l&#8217;écriture d&#8217;une classe d&#8217;utilitaire qui permettra de manipuler les dates en adoptant une approche fonctionnelle :</p>
<pre>public class CalendarUtil {
    private static final Calendar calendar = Calendar.getInstance();

    public static Date getDate(int jour, int mois, int année) {
    }
    public static Date getDate() {
        //retourne une date correspondant à la date courante (aujourd'hui)
    }
    public static Date incrementer(Date date, int jours) {
    }
    public static boolean equals(Date date1, Date date2) {
        //indique si deux dates correspondent au même jour calendaire
        //sans tenir compte des heures, minutes, secondes
    }
    public static int difference(Date date1, Date date2) {
        //retourne la différence en nombre de jours
    }
    public static boolean isEcheanceEchue(Date date, Periodicite period) {
    }
    public static String format(Date date, String pattern) {
    }
    [...]
}</pre>
<p>Comme vous l&#8217;aurez constaté, cette classe d&#8217;utilitaire ne prend que des Date en paramètre. C&#8217;est en effet ma troisième recommandation et sans doute la plus importante. L&#8217;usage de Calendar doit être réservé aux calculs sur les dates, et donc être circonscrit à la classe CalendarUtil.</p>
<p>Je ne traite pas de la question des fuseaux et des locales, mais je recommande là encore une approche fonctionnelle</p>
<p>Par ailleurs, les plus perspicaces d&#8217;entre vous aurons remarqué que la méthode incrémenter() de CalendarUtil peut entrainer une conflit de signature. C&#8217;est le cas si l&#8217;on a besoin d&#8217;ajouter des mois ou des années à une date.</p>
<p>Dans ce cas, je recommande de suivre les préconisations de <a href="http://codemonkeyism.com/generation-java-programming-style/">Stephan Schmidt</a> :</p>
<pre>public static Date incrementer(Date date, NbJours jours) {
}
public static Date incrementer(Date date, NbMois mois) {
}
public static Date incrementer(Date date, NbAnnees annees) {
}
public class NbJours {
    public final int value;
    public Jour(int value) {
        this.value = value;
    }
}
[...]</pre>
<p>Ces recommandations, si elles sont suivies à la lettre, vous éviterons bien des soucis tel que je peux en rencontrer actuellement avec mon vieux projet. Dernier conseil qui va de soit, vous devrez évidemment tester unitairement chaque méthode de CalendarUtil.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hadf.wordpress.com/234/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hadf.wordpress.com/234/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hadf.wordpress.com/234/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hadf.wordpress.com/234/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hadf.wordpress.com/234/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hadf.wordpress.com/234/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hadf.wordpress.com/234/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hadf.wordpress.com/234/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hadf.wordpress.com/234/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hadf.wordpress.com/234/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hadf.wordpress.com&blog=1346238&post=234&subd=hadf&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://hadf.wordpress.com/2009/08/25/la-gestion-des-dates-en-java/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/57d66448fa20dee6cc3e14588a0b6cfd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hadf</media:title>
		</media:content>
	</item>
		<item>
		<title>Lancement du projet CodeLang</title>
		<link>http://hadf.wordpress.com/2009/07/29/lancement-du-projet-codelang/</link>
		<comments>http://hadf.wordpress.com/2009/07/29/lancement-du-projet-codelang/#comments</comments>
		<pubDate>Wed, 29 Jul 2009 19:37:17 +0000</pubDate>
		<dc:creator>hadf</dc:creator>
				<category><![CDATA[codelang]]></category>
		<category><![CDATA[i18n]]></category>
		<category><![CDATA[traduction]]></category>

		<guid isPermaLink="false">http://hadf.wordpress.com/?p=229</guid>
		<description><![CDATA[Je vous annonce le lancement du projet CodeLang.
Il s&#8217;agit d&#8217;un projet extrêmement ambitieux qui vise à créer un metalangage permettant de retranscrire un document texte dans n&#8217;importe quel langage naturel, pourvu que ce langage soit supporté.
J&#8217;ai ce projet en tête depuis un certain nombre d&#8217;années, mais ce n&#8217;est que très récemment que m&#8217;est revenue la [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hadf.wordpress.com&blog=1346238&post=229&subd=hadf&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Je vous annonce le lancement du projet CodeLang.</p>
<p>Il s&#8217;agit d&#8217;un projet extrêmement ambitieux qui vise à créer un metalangage permettant de retranscrire un document texte dans n&#8217;importe quel langage naturel, pourvu que ce langage soit supporté.</p>
<p>J&#8217;ai ce projet en tête depuis un certain nombre d&#8217;années, mais ce n&#8217;est que très récemment que m&#8217;est revenue la volonté de le mettre en oeuvre.</p>
<p>Ce projet ce compose en plusieurs phases.</p>
<p>Tout d&#8217;abord la rédaction d&#8217;une spécification détaillée du metalangage. En parallèle, un Modèle Conceptuel des Données précisera la structure de la base de données.</p>
<p>Puis lorsque les spécifications auront été rédigées, viendra la constitution des données elles-même. Ce travail sera le plus laborieux. J&#8217;envisage de le réaliser sur un mode collaboratif à l&#8217;instar de l&#8217;encyclopédie Wikipedia.</p>
<p>L&#8217;annonce de ce lancement se fait à un stade très embryonnaire du projet. Je dois dire que, compte tenu de l&#8217;ambition du projet, je ne peut pas affirmer avec certitude qu&#8217;il aboutira avec succès. Néanmoins, je pense avoir suffisamment muri le problème pour être convaincu de la pertinence de l&#8217;approche.</p>
<ul>
<li><a href="http://code.google.com/p/codelang/">http://code.google.com/p/codelang/</a></li>
</ul>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hadf.wordpress.com/229/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hadf.wordpress.com/229/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hadf.wordpress.com/229/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hadf.wordpress.com/229/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hadf.wordpress.com/229/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hadf.wordpress.com/229/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hadf.wordpress.com/229/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hadf.wordpress.com/229/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hadf.wordpress.com/229/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hadf.wordpress.com/229/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hadf.wordpress.com&blog=1346238&post=229&subd=hadf&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://hadf.wordpress.com/2009/07/29/lancement-du-projet-codelang/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/57d66448fa20dee6cc3e14588a0b6cfd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hadf</media:title>
		</media:content>
	</item>
		<item>
		<title>Google Chrome OS</title>
		<link>http://hadf.wordpress.com/2009/07/08/google-chrome-os/</link>
		<comments>http://hadf.wordpress.com/2009/07/08/google-chrome-os/#comments</comments>
		<pubDate>Wed, 08 Jul 2009 18:34:15 +0000</pubDate>
		<dc:creator>hadf</dc:creator>
				<category><![CDATA[google]]></category>

		<guid isPermaLink="false">http://hadf.wordpress.com/?p=224</guid>
		<description><![CDATA[Google lance une véritable bombe thermonucléaire sur le monopole bien gardé de Microsoft. Les rumeurs couraient bon train depuis quelques mois, et même quelques années. Personnellement je n&#8217;y croyais pas car il me semble que Google s&#8217;éloigne de son coeur de métier, mais il faut avouer que je ne suis pas insensible à l&#8217;idée de [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hadf.wordpress.com&blog=1346238&post=224&subd=hadf&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Google lance une véritable bombe thermonucléaire sur le monopole bien gardé de Microsoft. Les rumeurs couraient bon train depuis quelques mois, et même quelques années. Personnellement je n&#8217;y croyais pas car il me semble que Google s&#8217;éloigne de son coeur de métier, mais il faut avouer que je ne suis pas insensible à l&#8217;idée de voir un challenger de poids proposer une alternative sérieuse à Windows.</p>
<p>J&#8217;aime beaucoup le navigateur Chrome et j&#8217;ai hâte qu&#8217;il soit disponible en version stable pour Linux. Ce qu&#8217;ils ont fait avec Chrome montre que les ingénieurs de Google ont des idées neuves et le talent pour les mettre en oeuvre. Pour Chrome OS, le défi est d&#8217;une toute autre ampleur et l&#8217;ambition clairement affichée. Créer un OS fiable, rapide et conviviable. Je suis certain que les ingénieurs de Google sauront répondre à chacun de ces critères.</p>
<p>C&#8217;est une bonne chose que Google ait décidé de développer un OS spécifique pour le marché des PC car celui-ci a des exigences différentes en matière d&#8217;ergonomie que les téléphones portables. Cela permettra d&#8217;ailleurs aux équipes d&#8217;Android de concentrer leurs développements sur le marché très prometteur des terminaux mobiles, et aux équipes de Chrome OS de travailler sur l&#8217;ergonomie propre aux PC.</p>
<p>Google a une vision de l&#8217;informatique diamétralement opposée à celle de Microsoft. Il sera donc intéressant de voir la concrétisation de cette vision car elle apportera un regard nouveau sur notre relation à la machine. Microsoft base son modèle économique sur la notion de biens et de possession alors que Google met en avant les possibilités en matière de services et de mutualisation qu&#8217;offrent les réseaux. Il y a autant de différence entre le modèle économique de Microsoft et celui de Google qu&#8217;entre la notion d&#8217;économique primaire et tertiaire.</p>
<p>Je suis ravi que Google assume sans complexe son rôle de challenger de Microsoft car cela va mettre un terme à l&#8217;économie de rente qu&#8217;est devenue le marché des systèmes d&#8217;exploitation pour favoriser au contraire l&#8217;innovation.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hadf.wordpress.com/224/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hadf.wordpress.com/224/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hadf.wordpress.com/224/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hadf.wordpress.com/224/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hadf.wordpress.com/224/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hadf.wordpress.com/224/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hadf.wordpress.com/224/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hadf.wordpress.com/224/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hadf.wordpress.com/224/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hadf.wordpress.com/224/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hadf.wordpress.com&blog=1346238&post=224&subd=hadf&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://hadf.wordpress.com/2009/07/08/google-chrome-os/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/57d66448fa20dee6cc3e14588a0b6cfd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hadf</media:title>
		</media:content>
	</item>
		<item>
		<title>Swinger 0.4.1 is released</title>
		<link>http://hadf.wordpress.com/2009/07/02/swinger-0-4-1-is-released/</link>
		<comments>http://hadf.wordpress.com/2009/07/02/swinger-0-4-1-is-released/#comments</comments>
		<pubDate>Thu, 02 Jul 2009 19:58:52 +0000</pubDate>
		<dc:creator>hadf</dc:creator>
				<category><![CDATA[swinger]]></category>

		<guid isPermaLink="false">http://hadf.wordpress.com/?p=220</guid>
		<description><![CDATA[Comme le titre l&#8217;annonce, j&#8217;ai livré une version intermédiaire qui ajoute le support des layouts managers. Il est donc possible de choisir son layout, ce qui n&#8217;était pas le cas auparavant.
Cette version corrige également un bug concernant le chargement des scripts groovy à partir d&#8217;une librairie externe.
       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hadf.wordpress.com&blog=1346238&post=220&subd=hadf&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Comme le titre l&#8217;annonce, j&#8217;ai livré une version intermédiaire qui ajoute le support des layouts managers. Il est donc possible de choisir son layout, ce qui n&#8217;était pas le cas auparavant.</p>
<p>Cette version corrige également un bug concernant le chargement des scripts groovy à partir d&#8217;une librairie externe.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hadf.wordpress.com/220/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hadf.wordpress.com/220/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hadf.wordpress.com/220/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hadf.wordpress.com/220/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hadf.wordpress.com/220/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hadf.wordpress.com/220/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hadf.wordpress.com/220/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hadf.wordpress.com/220/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hadf.wordpress.com/220/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hadf.wordpress.com/220/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hadf.wordpress.com&blog=1346238&post=220&subd=hadf&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://hadf.wordpress.com/2009/07/02/swinger-0-4-1-is-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/57d66448fa20dee6cc3e14588a0b6cfd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hadf</media:title>
		</media:content>
	</item>
		<item>
		<title>Le choix de mon parser CSS (2)</title>
		<link>http://hadf.wordpress.com/2009/06/29/le-choix-de-mon-parser-css-2/</link>
		<comments>http://hadf.wordpress.com/2009/06/29/le-choix-de-mon-parser-css-2/#comments</comments>
		<pubDate>Mon, 29 Jun 2009 18:29:34 +0000</pubDate>
		<dc:creator>hadf</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://hadf.wordpress.com/?p=215</guid>
		<description><![CDATA[Voila quelques semaines, j&#8217;avais décidé d&#8217;implémenter les CSS dans le framework Swinger. Je savais que je me lançais dans une tâche ardue. Je m&#8217;étais fixé comme objectif de livrer une version ce mois de juin.
Avec l&#8217;arrivée du mois de juillet, je dois dire que le choix du parser Batik est un échec, je ne serai [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hadf.wordpress.com&blog=1346238&post=215&subd=hadf&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Voila quelques semaines, j&#8217;avais décidé d&#8217;implémenter les CSS dans le framework Swinger. Je savais que je me lançais dans une tâche ardue. Je m&#8217;étais fixé comme objectif de livrer une version ce mois de juin.</p>
<p>Avec l&#8217;arrivée du mois de juillet, je dois dire que le choix du parser Batik est un échec, je ne serai pas en mesure de tenir les délais. La raison est que je me suis rendu compte à l&#8217;intégration que mon modèle ne collait pas avec celui de Batik. Je m&#8217;attendais à un parser plus facilement exploitable, en fait il a été développé dans une philosophie assez rigide et difficile à cerner car mal documentée.</p>
<p>Mais la vraie raison de cet échec est que je ne me suis pas donné suffisamment de temps pour étudier cette api. La conséquence est que je me retrouve confronté à une impasse. Je n&#8217;ai que deux options qui s&#8217;offrent à moi. Soit détricotter mon code pour me conformer aux attendus de Batik, soit abandonner cette api et développer mon propre parser.</p>
<p>C&#8217;est la deuxième option que je choisi. Pour plusieurs raisons. D&#8217;abord cela m&#8217;ennui de renoncer à plusieurs semaines de travail. Le code que j&#8217;ai produit est loin d&#8217;être parfait et devrait pêcher par manque de performance dans le cas de CSS très complexes. Mais il est bien à adapté à l&#8217;architecture de Swinger qui repose sur des Accessors qui attendent des chaînes de caractères pour l&#8217;initialisation des attributs.</p>
<p>L&#8217;autre raison qui me trotte dans la tête depuis deux ou trois semaines est que je souhaite que l&#8217;api Swinger puisse être intégrée comme bundle Osgi. Or dans ce cas, les librairies externes sont un handicap si elles ne sont pas elles-même livrées en tant que bundles.</p>
<p>Pour ces raisons, je n&#8217;ai pas de regret à me séparer de Batik. La conséquence est que cela va retarder sensiblement la livraison d&#8217;une version supportant les CSS. Du coup, je vais livrer dans les semaines qui viennent une version intermédiaire qui permettra de choisir son layout. C&#8217;était en effet le point de départ de ma réflexion sur la configuration des attributs apparents.</p>
<p>Je ne suis pas en mesure de fixer de date quand au support des CSS. Ce qui est certain est que ce support sera partiel et portera sur quelques attributs seulement. Les aspects les plus délicats, comme le positionnement relatif des composants, sera reporté à une version ultérieure. En tout état de cause, le support de CSS ne sera jamais complet car la philosophie de l&#8217;api swing ne permet pas par exemple de gérer le texte de la même manière qu&#8217;en html.</p>
<p>Sans fournir de date buttoir en raison des beaux jours dont je profite autant que possible, j&#8217;espère néanmoins finir mon parser avant la fin du mois de juillet.</p>
<p>Je vous tiendrai au courant de l&#8217;arrivée de la prochaine release dans les semaines à venir qui supportera la personnalisation des layouts.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hadf.wordpress.com/215/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hadf.wordpress.com/215/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hadf.wordpress.com/215/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hadf.wordpress.com/215/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hadf.wordpress.com/215/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hadf.wordpress.com/215/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hadf.wordpress.com/215/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hadf.wordpress.com/215/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hadf.wordpress.com/215/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hadf.wordpress.com/215/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hadf.wordpress.com&blog=1346238&post=215&subd=hadf&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://hadf.wordpress.com/2009/06/29/le-choix-de-mon-parser-css-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/57d66448fa20dee6cc3e14588a0b6cfd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hadf</media:title>
		</media:content>
	</item>
		<item>
		<title>Refactoring de Swinger</title>
		<link>http://hadf.wordpress.com/2009/06/21/refactoring-de-swinger/</link>
		<comments>http://hadf.wordpress.com/2009/06/21/refactoring-de-swinger/#comments</comments>
		<pubDate>Sun, 21 Jun 2009 17:16:53 +0000</pubDate>
		<dc:creator>hadf</dc:creator>
				<category><![CDATA[swinger]]></category>

		<guid isPermaLink="false">http://hadf.wordpress.com/?p=213</guid>
		<description><![CDATA[Je n&#8217;ai pas encore pu commencer les tests d&#8217;intégrations car j&#8217;ai rencontré quelques soucis d&#8217;architecture. Je me suis rendu compte que l&#8217;ajout d&#8217;un attribut au modèle m&#8217;obligeait à reporter cette modification à chaque classe de composant, ce qui est évidemment aberrant. J&#8217;ai donc réécrit une partie de mon api en utilisant un Decorator ce qui [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hadf.wordpress.com&blog=1346238&post=213&subd=hadf&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Je n&#8217;ai pas encore pu commencer les tests d&#8217;intégrations car j&#8217;ai rencontré quelques soucis d&#8217;architecture. Je me suis rendu compte que l&#8217;ajout d&#8217;un attribut au modèle m&#8217;obligeait à reporter cette modification à chaque classe de composant, ce qui est évidemment aberrant. J&#8217;ai donc réécrit une partie de mon api en utilisant un Decorator ce qui rend l&#8217;architecture beaucoup plus saine. Cela va m&#8217;obliger à mener des tests de non-régression car ce refactoring n&#8217;est pas sans risque vu qu&#8217;il touche au coeur de l&#8217;api. J&#8217;espère néanmoins tenir les délais que je me suis fixé et livrer la version 0.5 avant la fin de ce mois de juin.</p>
<p>Cette livraison portera sur une implémentation basique de CSS avec le support de quelques attributs seulement. Je n&#8217;ai pas encore pris de décision définitive pour la configuration du layout. Ce qui est certain est qu&#8217;il sera finalement possible de le configurer dans le fichier xml, mais je ne suis pas sûr de vouloir ajouter une propriété non standard à CSS.</p>
<p>J&#8217;avais un temps envisagé d&#8217;ajouter une balise &lt;layout&gt;, mais à bien y réfléchir cela me poserai un problème. J&#8217;ai en effet l&#8217;intention d&#8217;implémenter XPath pour permettre d&#8217;explorer le modèle. Or permettre de récupérer des valeurs de type différent apporterai un niveau de complexité supplémentaire. Je réserve donc cette possibilité à une future release.</p>
<p>Après l&#8217;implémentation des CSS, la prochaine étape est la possibilité de définir le modèle des composants complexes comme JTree ou JTable. Là encore, je n&#8217;utiliserai pas de balise comme cela se fait avec les tableaux HTML. La définition du modèle se fera dans un premier temps avec un format de fichier texte du type CSV, puis avec un format XML dans une release ultérieure.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hadf.wordpress.com/213/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hadf.wordpress.com/213/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hadf.wordpress.com/213/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hadf.wordpress.com/213/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hadf.wordpress.com/213/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hadf.wordpress.com/213/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hadf.wordpress.com/213/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hadf.wordpress.com/213/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hadf.wordpress.com/213/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hadf.wordpress.com/213/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hadf.wordpress.com&blog=1346238&post=213&subd=hadf&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://hadf.wordpress.com/2009/06/21/refactoring-de-swinger/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/57d66448fa20dee6cc3e14588a0b6cfd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hadf</media:title>
		</media:content>
	</item>
		<item>
		<title>Implémentation du pattern IoC</title>
		<link>http://hadf.wordpress.com/2009/05/29/implementation-du-pattern-io/</link>
		<comments>http://hadf.wordpress.com/2009/05/29/implementation-du-pattern-io/#comments</comments>
		<pubDate>Fri, 29 May 2009 20:47:16 +0000</pubDate>
		<dc:creator>hadf</dc:creator>
				<category><![CDATA[designpattern]]></category>
		<category><![CDATA[swinger]]></category>

		<guid isPermaLink="false">http://hadf.wordpress.com/?p=206</guid>
		<description><![CDATA[J&#8217;ai eu le temps dans le train de réfléchir à quelques problèmes qui s&#8217;annoncent dans l&#8217;évolution à venir de Swinger. Jusqu&#8217;à présent, j&#8217;ai laissé de côté les composants complexes de Swing tels que les JTree ou encore les JTable. La raison est que cela nécessite de pouvoir spécifier des valeurs à insérer dans le model [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hadf.wordpress.com&blog=1346238&post=206&subd=hadf&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>J&#8217;ai eu le temps dans le train de réfléchir à quelques problèmes qui s&#8217;annoncent dans l&#8217;évolution à venir de Swinger. Jusqu&#8217;à présent, j&#8217;ai laissé de côté les composants complexes de Swing tels que les JTree ou encore les JTable. La raison est que cela nécessite de pouvoir spécifier des valeurs à insérer dans le model comme dans le cas des tables en HTML. J&#8217;avais commencé à introduire une balise &lt;item&gt; qui était utilisée pour les JList, mais je suis finalement revenu en arrière car l&#8217;approche n&#8217;était pas la bonne. Les items ne font pas partie de la couche Vue mais de la couche Model. Il n&#8217;était donc pas judicieux de traiter communément ces deux types d&#8217;élément.</p>
<p>La solution que j&#8217;adopterai du point de vue du langage sera l&#8217;introduction des namespaces. Ils permettront d&#8217;identifier les différentes couches de l&#8217;api Swing. Du point de vue de l&#8217;implémentation, je suis toujours confronté à la nécessité de différencier les traitements associés à ces couches. Pour cela, j&#8217;adopterai une implémentation simplifiée du pattern Inversion of Control.</p>
<p>Prenons comme hypothèse de départ que vous êtes en présence d&#8217;une architecture dans laquelle l&#8217;<em>implémentation d&#8217;une responsabilité varie selon le type de composant passé en paramètre</em>.</p>
<p>Plutôt que d&#8217;implémenter la responsabilité dans une seule méthode avec des vérifications de casting, je dispatch la responsabilité dans des méthodes différentes selon le type d&#8217;objet à traiter, et je délègue l&#8217;appel de la méthode idoine au niveau des composants subalternes.</p>
<p>Typiquement, l&#8217;implémentation sera celle-ci :</p>
<pre>public class Child1 implements IoC {
    @Override
    public void delegate(Parent parent) {
        parent.method1();
    }
}

public class Child2 implements IoC {
    @Override
    public void delegate(Parent parent) {
        parent.method2();
    }
}</pre>
<p>Cette approche me permettra de conserver le caractère modulaire de Swinger. Tout type de composant pourra être ajouté à un parent, ça sera le composant fils qui déterminera de quel manière il sera ajouté à son parent. Actuellement, seule la méthode Container.add() est utilisée. Avec cette nouvelle architecture, il sera même possible d&#8217;ajouter un layout à un conteneur grâce à une balise. Je rappelle que c&#8217;est ce problème qui m&#8217;avait amené à l&#8217;origine à implémenter CSS. Je n&#8217;ai pas pour autant l&#8217;intention d&#8217;abandonner CSS car je pense que cela apportera une plus grande simplicité dans la création d&#8217;IHM.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hadf.wordpress.com/206/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hadf.wordpress.com/206/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hadf.wordpress.com/206/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hadf.wordpress.com/206/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hadf.wordpress.com/206/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hadf.wordpress.com/206/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hadf.wordpress.com/206/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hadf.wordpress.com/206/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hadf.wordpress.com/206/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hadf.wordpress.com/206/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hadf.wordpress.com&blog=1346238&post=206&subd=hadf&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://hadf.wordpress.com/2009/05/29/implementation-du-pattern-io/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/57d66448fa20dee6cc3e14588a0b6cfd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hadf</media:title>
		</media:content>
	</item>
		<item>
		<title>Implémentation d&#8217;un modèle CSS</title>
		<link>http://hadf.wordpress.com/2009/05/24/implementation-dun-modele-css/</link>
		<comments>http://hadf.wordpress.com/2009/05/24/implementation-dun-modele-css/#comments</comments>
		<pubDate>Sun, 24 May 2009 16:20:27 +0000</pubDate>
		<dc:creator>hadf</dc:creator>
				<category><![CDATA[css]]></category>
		<category><![CDATA[swinger]]></category>

		<guid isPermaLink="false">http://hadf.wordpress.com/?p=200</guid>
		<description><![CDATA[J&#8217;ai presque terminé de développer mon modèle CSS. Il me manque néanmoins deux parties importantes, la distinction entre les différents type de valeurs : valeurs spécifiées, calculées et réelles, ainsi que le traitement des différents type de sélecteurs.
En revanche, l&#8217;héritage et la cascade sont entièrement implémentées, il ne me reste plus qu&#8217;à terminer quelques tests [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hadf.wordpress.com&blog=1346238&post=200&subd=hadf&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>J&#8217;ai presque terminé de développer mon modèle CSS. Il me manque néanmoins deux parties importantes, la distinction entre les différents type de valeurs : valeurs spécifiées, calculées et réelles, ainsi que le traitement des différents type de sélecteurs.</p>
<p>En revanche, l&#8217;héritage et la cascade sont entièrement implémentées, il ne me reste plus qu&#8217;à terminer quelques tests unitaires. C&#8217;est la classe CSS2EngineImpl qui a la responsabilité de la cascade et de l&#8217;héritage. Elle collabore avec les classes StyleRule.SelectorMessenger et Value pour le calcul de la spécificité des sélecteurs et de la prévalence des valeurs dans l&#8217;ordre de la cascade.</p>
<p>La réalisation des tests d&#8217;intégration prendra plus de temps car il me faut encore raccorder le parser CSS avec le modèle CSS. Je pense que je me contenterai d&#8217;une implémentation élémentaire du DOM en ne définissant que les méthodes qui sont effectivement appellées.</p>
<p>Enfin, la partie qui s&#8217;annonce la plus longue est la plus rébarbative est le support des divers propriétés CSS. Je me contenterai dans un premier temps des propriétés basiques comme la couleur, les dimensions et la position des composants. J&#8217;ajouterai une propriété non standard : layout, puisque c&#8217;est pour cette raison que j&#8217;ai implémenté le support de CSS.</p>
<p>Lorsque j&#8217;aurai terminé ces différents points, je publierai la version 0.5, si tout se déroule bien dans le courant du mois de juin.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hadf.wordpress.com/200/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hadf.wordpress.com/200/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hadf.wordpress.com/200/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hadf.wordpress.com/200/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hadf.wordpress.com/200/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hadf.wordpress.com/200/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hadf.wordpress.com/200/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hadf.wordpress.com/200/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hadf.wordpress.com/200/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hadf.wordpress.com/200/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hadf.wordpress.com&blog=1346238&post=200&subd=hadf&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://hadf.wordpress.com/2009/05/24/implementation-dun-modele-css/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/57d66448fa20dee6cc3e14588a0b6cfd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hadf</media:title>
		</media:content>
	</item>
		<item>
		<title>Internet est-il cassé ?</title>
		<link>http://hadf.wordpress.com/2009/05/24/internet-est-il-casse/</link>
		<comments>http://hadf.wordpress.com/2009/05/24/internet-est-il-casse/#comments</comments>
		<pubDate>Sun, 24 May 2009 15:51:07 +0000</pubDate>
		<dc:creator>hadf</dc:creator>
				<category><![CDATA[internet]]></category>
		<category><![CDATA[securite]]></category>

		<guid isPermaLink="false">http://hadf.wordpress.com/?p=194</guid>
		<description><![CDATA[C&#8217;est devenu la grande question du jour. La constatation de base est qu&#8217;Internet n&#8217;a pas été prévu pour supporter toutes les applications qu&#8217;il accueille actuellement. Les problèmes soulevés sont en grande partie liée à la sécurité des divers protocoles applicatifs, qu&#8217;il s&#8217;agisse de dns, https, etc&#8230;mais aussi des protocoles bas niveau sur lesquelles sont basés [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hadf.wordpress.com&blog=1346238&post=194&subd=hadf&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>C&#8217;est devenu la grande question du jour. La constatation de base est qu&#8217;Internet n&#8217;a pas été prévu pour supporter toutes les applications qu&#8217;il accueille actuellement. Les problèmes soulevés sont en grande partie liée à la sécurité des divers protocoles applicatifs, qu&#8217;il s&#8217;agisse de dns, https, etc&#8230;mais aussi des protocoles bas niveau sur lesquelles sont basés toute l&#8217;architecture des réseaux modernes comme tcp/ip.</p>
<p>Nous pouvons distinger deux catégories de protocoles. Ceux qui n&#8217;ont pas pris en compte les questions de sécurité, on pense en particulier à dns et http entre autre. Parmis les protocoles qui remontent au-delà des orgines du Web, tcp/ip non plus n&#8217;a pas été conçu dans le but de garantir l&#8217;identité de ses usagers mais de garantir la robustesse des canaux de communication. Puis il y a ceux qui sont venus se juxtaposer aux protocoles existants dans le but de pallier à leurs défaillances en terme de sécurité, je pense en particulier à https, mais aussi à des protocoles plus sensibles comme ssh, utilisé dans le monde professionnel.</p>
<p>Le problème est que ces protocoles additionnels sont tous des protocoles applicatifs qui se placent au-dessus des protocoles réseau comme tcp/ip. Ils ne résovent que partiellement les failles inhérantes à l&#8217;architecture du réseau. D&#8217;autant plus partiellement que la sécurité des protocoles modernes utilisent des systèmes de cryptage assymétrique dont le fondement repose sur la faiblesse supposée des moyens de calcul de l&#8217;attaquant. Ce fondement n&#8217;est justifié que si le protocole de cryptage est parfaitement robuste, ce qui n&#8217;est jamais le cas dans la réalité. Autre problème, l&#8217;authentification par mot de passe présente une limite humaine quant à la longueur et la complexité des mots de passe, tandis que les moyens de calcul des attaquants augmentent régulièrement selon la loi de Moore.</p>
<p>Alors, Internet est-il cassé ?</p>
<p>Tout d&#8217;abord, nous devons bien distinguer les usages d&#8217;Internet, parmis lesquels le Web ou la messagerie, d&#8217;Internet lui-même. Le changement d&#8217;architecture d&#8217;Internet ne devrait théoriquement pas impacter les usages qui en sont fait.</p>
<p>Maintenant que cette distinction est posée, il faut bien admettre que les problèmes de sécurité sont de plus en plus préoccupant ou du moins brident les usages d&#8217;internet. Malheureusement, aucun système ne peut garantir une fiabilité à 100%. Cette loi est bien connue des informaticiens, elle a été énoncée et prouvée par Alan Turing dans les années 30. Plus précisément, cette loi énonce qu&#8217;il est impossible de prévoir si et quand un algorithme complexe s&#8217;arrêtera. En clair, il est impossible de savoir si un problème posé sera un jour résolu.</p>
<p>Il est intéressant de noter l&#8217;approche révolutionnaire, pour ne pas dire nihiliste des américains qui tend à ignorer l&#8217;énoncé de Turing, et l&#8217;approche progressiste des européens qui considère que conserver l&#8217;architecture existante présente l&#8217;avantage de déjà en connaître les principales failles (sans savoir néanmoins si nous pourrons les colmater).</p>
<ul>
<li><a href="//pisani.blog.lemonde.fr/2009/05/24/internet-%c2%ab-pas-besoin-de-revolution-%c2%bb-disent-les-europeens/">http://pisani.blog.lemonde.fr/2009/05/24/internet-%c2%ab-pas-besoin-de-revolution-%c2%bb-disent-les-europeens/</a></li>
</ul>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hadf.wordpress.com/194/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hadf.wordpress.com/194/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hadf.wordpress.com/194/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hadf.wordpress.com/194/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hadf.wordpress.com/194/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hadf.wordpress.com/194/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hadf.wordpress.com/194/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hadf.wordpress.com/194/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hadf.wordpress.com/194/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hadf.wordpress.com/194/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hadf.wordpress.com&blog=1346238&post=194&subd=hadf&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://hadf.wordpress.com/2009/05/24/internet-est-il-casse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/57d66448fa20dee6cc3e14588a0b6cfd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hadf</media:title>
		</media:content>
	</item>
	</channel>
</rss>