<?xml version="1.0" encoding="utf-8"?>
<feed xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom">
  <title>nVentive Coach Factor</title>
  <link rel="alternate" type="text/html" href="http://www.nventive.net/Blog2/" />
  <link rel="self" href="http://www.nventive.net/Blog2/SyndicationService.asmx/GetAtom" />
  <icon>favicon.ico</icon>
  <updated>2010-07-22T10:08:42.0659697-07:00</updated>
  <author>
    <name>nVentive</name>
  </author>
  <subtitle>nVentive</subtitle>
  <id>http://www.nventive.net/Blog2/</id>
  <generator uri="http://dasblog.info/" version="2.1.8102.813">DasBlog</generator>
  <entry>
    <title>Revue du web du …</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2010/07/22/RevueDuWebDu.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,b2a12c80-302c-4ab9-8a23-bf6486382034.aspx</id>
    <published>2010-07-22T12:00:00-07:00</published>
    <updated>2010-07-22T10:08:42.0659697-07:00</updated>
    <category term=".net" label=".net" scheme="http://www.nventive.net/Blog2/CategoryView,category,net.aspx" />
    <category term="Revue du Web" label="Revue du Web" scheme="http://www.nventive.net/Blog2/CategoryView,category,RevueDuWeb.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
La revue du web pars en vacances et reviendra le 6 septembre, si vous avez des remarques,
des choses que vous aimeriez voir plus (ou d’autres moins) <a title="page de contact" href="http://www.nventive.net/dnn/ContactUs/tabid/56/language/en-US/Default.aspx">n’hésitez
pas à nous contacter</a> ou à laisser un commentaire !
</p>
        <img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=b2a12c80-302c-4ab9-8a23-bf6486382034" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Revue du web du 19 juillet</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2010/07/19/RevueDuWebDu19Juillet.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,9ef4afe5-fc79-4b03-a339-e385de0f0b52.aspx</id>
    <published>2010-07-19T12:00:00-07:00</published>
    <updated>2010-07-19T05:23:12.896494-07:00</updated>
    <category term=".net" label=".net" scheme="http://www.nventive.net/Blog2/CategoryView,category,net.aspx" />
    <category term="Revue du Web" label="Revue du Web" scheme="http://www.nventive.net/Blog2/CategoryView,category,RevueDuWeb.aspx" />
    <content type="html">&lt;h2&gt;Les tweets de la semaine
&lt;/h2&gt;
&lt;p&gt;
&lt;a href="https://twitter.com/PDCEvent/status/18358350630"&gt;https://twitter.com/PDCEvent/status/18358350630&lt;/a&gt; Finalement
il y aura une PDC … à Redmond c’est moins sexy que L.A. mais on pourra visiter la
cafétéria de Microsoft
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://twitter.com/WindowsAzure/status/18358737473"&gt;http://twitter.com/WindowsAzure/status/18358737473&lt;/a&gt; Qui
veut son petit cloud “Maison” ?
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://twitter.com/zubairdotnet/status/18507840532"&gt;http://twitter.com/zubairdotnet/status/18507840532&lt;/a&gt; SQL
CE 4 aime NHibernate et Entity Framework
&lt;/p&gt;
&lt;h2&gt;La question Stackoverflow
&lt;/h2&gt;
&lt;p&gt;
&lt;a href="http://stackoverflow.com/questions/282099/whats-the-hi-lo-algorithm"&gt;http://stackoverflow.com/questions/282099/whats-the-hi-lo-algorithm&lt;/a&gt; l’algorithme
Hi-Lo est utilisé par NHibernate pour générer des clés primaires, mais son application
est intéressante pour toute application travaillant en mode déconnecté ou asynchrone.
&lt;/p&gt;
&lt;h2&gt;Actualités Microsoft
&lt;/h2&gt;
&lt;p&gt;
On en parle beaucoup sur le Tweetosphère, la &lt;a title="billet sur le blog de l'&amp;eacute;quipe de EF" href="http://blogs.msdn.com/b/adonet/archive/2010/07/14/ctp4codefirstwalkthrough.aspx"&gt;CTP4
de Entity Framework Feature&lt;/a&gt; (une sorte d’intermédiaire entre le SP et le patch)
apporte une vraie expérience Code-First au Framework ORM de la firme de Seattle :
on peut maintenant mapper par convention, par une API Fluent ou enfin par attribut.
&lt;/p&gt;
&lt;h2&gt;Actualités “Alt.NET”
&lt;/h2&gt;
&lt;p&gt;
On a tous plus ou moins utilisé le concept d’adresse, après le Hello World c’est peut-être
l’exemple type de classe avec le ShoppingCart sur un site web. Sur le groupe de discussion
DDD est intervenue une discussion sur le concept d’Adresse (&lt;a href="http://tech.groups.yahoo.com/group/domaindrivendesign/message/18941"&gt;http://tech.groups.yahoo.com/group/domaindrivendesign/message/18941&lt;/a&gt;) 
&lt;/p&gt;
&lt;h2&gt;De l’autre côté
&lt;/h2&gt;
&lt;p&gt;
Pour la plupart nous sommes plutôt des “software guy”, on connaît un peu le hardware
soit parce qu’on a construit son PC ou parce qu’on doit réparer le réseau wifi de
papa. Mike Bailey nous &lt;a title="billet sur son blog" href="http://mike.bailey.net.au/blog/?p=39"&gt;parle&lt;/a&gt; dans
ce billet de TCP avec notamment la session de John Rauser à la conférence Velocity
2010. Il s’en passse des choses sur le résau quand on consulte une page web, et pas
seulement sur le serveur. Dans un autre billet il nous parle de la &lt;a title="latency is a killer" href="http://mike.bailey.net.au/blog/?p=38"&gt;latence&lt;/a&gt;,
mesure importante pour lui étant basé en Australie, pays en périphérie des grands
réseaux de fibres.
&lt;/p&gt;
&lt;h2&gt;Un Projet
&lt;/h2&gt;
&lt;p&gt;
Pour l’été votre revue du web passe en bas régime, pas de rubrique “Un projet” avant
la rentrée. Si vous avez des applications ou Framework préférés que vous aimeriez
voir présentés dans cette rubrique, &lt;a title="page de contact" href="http://www.nventive.net/dnn/ContactUs/tabid/56/language/en-US/Default.aspx"&gt;n’hésitez
pas à nous contacter&lt;/a&gt; !
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=9ef4afe5-fc79-4b03-a339-e385de0f0b52" /&gt;</content>
  </entry>
  <entry>
    <title>Revue du web du 12 juillet</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2010/07/12/RevueDuWebDu12Juillet.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,ada88a19-02e2-4e3e-a44c-6b782b412269.aspx</id>
    <published>2010-07-12T12:00:00-07:00</published>
    <updated>2010-07-05T05:42:25.4445753-07:00</updated>
    <category term=".net" label=".net" scheme="http://www.nventive.net/Blog2/CategoryView,category,net.aspx" />
    <category term="Revue du Web" label="Revue du Web" scheme="http://www.nventive.net/Blog2/CategoryView,category,RevueDuWeb.aspx" />
    <content type="html">&lt;h2&gt;Les tweets de la semaine
&lt;/h2&gt;
&lt;p&gt;
&lt;a href="http://twitter.com/SyntaxC4/status/17918097961"&gt;http://twitter.com/SyntaxC4/status/17918097961&lt;/a&gt; Microsoft
fait une offre d’introduction à Azure avec du temps gratuit, une base de données etc.
Mais est-ce vraiment suffisant pour séduire les développeurs ?
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://twitter.com/skillsmatter/status/17856765757"&gt;http://twitter.com/skillsmatter/status/17856765757&lt;/a&gt; une
newsletter de SkillMatters autour de DDD.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://twitter.com/scottgu/status/18055922575"&gt;http://twitter.com/scottgu/status/18055922575&lt;/a&gt; une
conférence sur ASP.NET MVC
&lt;/p&gt;
&lt;h2&gt;La question Stackoverflow
&lt;/h2&gt;
&lt;p&gt;
&lt;a href="http://stackoverflow.com/search?q=webmatrix"&gt;http://stackoverflow.com/search?q=webmatrix&lt;/a&gt; stackoverflow
est un bon outil pour apprécier une nouvelle technologie comme l’ensemble des outils
derrière WebMatrix
&lt;/p&gt;
&lt;h2&gt;Actualités Microsoft
&lt;/h2&gt;
&lt;p&gt;
Bien qu’on entend déjà quelques rumeurs sur Windows 8 (dont un AppStore, oui oui …)
on &lt;a title="un post sur Windows 7 64-bit" href="http://windowsteamblog.com/windows/b/bloggingwindows/archive/2010/07/08/64-bit-momentum-surges-with-windows-7.aspx"&gt;apprend&lt;/a&gt; que
Windows 7 est le premier des systèmes d’explotations dont la version 64-bit a presque
50% de part de marché. Vista n’était qu’à 11% et XP moins de 1 %. 
&lt;/p&gt;
&lt;h2&gt;Actualités “Alt.NET”
&lt;/h2&gt;
&lt;p&gt;
Microsoft a eu plusieurs initiatives “Open Source” ces dernières années. Miguel de
Icaza en parle de façon très factuelle dans ce &lt;a title="blog de Miguel de Icaza" href="http://tirania.org/blog/archive/2010/Jul-07.html"&gt;billet&lt;/a&gt; où
il cite les bibliothèques intégrées dans Mono qui proviennent de Microsoft. Instructif. 
&lt;/p&gt;
&lt;p&gt;
Mary-Jo Foly nous &lt;a title="billet sur zdnet.com" href="http://www.zdnet.com/blog/microsoft/microsoft-to-deliver-betas-of-vail-and-aurora-servers-next-week/6766?tag=mantle_skin;content"&gt;parle&lt;/a&gt; de
la prochaine version de Windows Home Server (codename “Vail”) et d’une nouvelle variante
destinée aux petites entreprises : Aurora. 
&lt;/p&gt;
&lt;p&gt;
Ah sinon on avait presque oublié, il paraît maintenant que votre maman ou votre papa
font pouvoir coder grâce à &lt;a href="http://www.microsoft.com/web/webmatrix/"&gt;WebMatrix&lt;/a&gt;,
le nouvel IDE .NET, attention aux questions lors des repas de famille …
&lt;/p&gt;
&lt;h2&gt;De l’autre côté
&lt;/h2&gt;
&lt;p&gt;
Dans un &lt;a title="article sur Tomcat 7" href="http://www.infoq.com/news/2010/07/tomcat_7"&gt;long
article&lt;/a&gt;, InfoQ nous introduit à la toute dernière version de Tomcat, le container
web de la fondation Apache, qui entre en beta.&amp;nbsp; On peut rappaocher Tomcat 7 d’un
serveur ASP.NET en .NET. Il a connu une grosse popularité quand les containers lourds
(i.e. web et aussi EJB) comme WebSphere, WebLogic ont croulé sous la complexité des
EJB2. Il est devenu aussi une brique de l’offre de &lt;a title="site web de l'&amp;eacute;diteur" href="http://www.springsource.org/"&gt;Spring&lt;/a&gt;.
La version 7 apporte le support de l’API Servlet 3.0 (annotations, généeriques dans
les classes de l’API) mais aussi JSP et EL (Expression language) 2.2&amp;nbsp; mais aussi
un mode “allégé” pour être incoporé dans des applications. Une fonctionnalité manquante
toutefois : la spécifications du profile web de Java 6 EE qui incorporait WeBeans
(alias Seam).
&lt;/p&gt;
&lt;h2&gt;Un Projet
&lt;/h2&gt;
&lt;p&gt;
Pour l’été votre revue du web passe en bas régime, pas de rubrique “Un projet” avant
la rentrée. Si vous avez des applications ou Framework préférés que vous aimeriez
voir présentés dans cette rubrique, &lt;a title="page de contact" href="http://www.nventive.net/dnn/ContactUs/tabid/56/language/en-US/Default.aspx"&gt;n’hésitez
pas à nous contacter&lt;/a&gt; !
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=ada88a19-02e2-4e3e-a44c-6b782b412269" /&gt;</content>
  </entry>
  <entry>
    <title>Cours d’été chez nVentive</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2010/06/30/CoursD%c3%a9t%c3%a9ChezNVentive.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,4a58a828-8d52-4a20-8d07-bd11291763bf.aspx</id>
    <published>2010-06-29T17:00:00-07:00</published>
    <updated>2010-06-30T11:05:47.0999684-07:00</updated>
    <category term="Announcement" label="Announcement" scheme="http://www.nventive.net/Blog2/CategoryView,category,Announcement.aspx" />
    <content type="html">&lt;p&gt;
Suite à l’événement du 5 juin dernier au cours duquel le développement d’une application
d’affaires a été présenté beaucoup de personnes nous ont demandés comment approfondir
les concepts évoqués.
&lt;/p&gt;
&lt;p&gt;
Profitez&amp;nbsp; maintenent de l’été pour venir participer à une des formations où vous
aurez le loisir de parfaire vos connaissances: le Test Driven Development (TDD) le
9 juillet et NHibernate, le Framework de Mapping Objet-Relationnel les 15 et 16 juillet.
&lt;/p&gt;
&lt;p&gt;
Cliquer sur les liens ci-dessous pour voir le détail des plannings :
&lt;/p&gt;
&lt;p align="center"&gt;
&lt;a href="http://nhibernate.eventbrite.com?ref=ebtn" target="_blank"&gt;&lt;img border="0" alt="Register for Le Mapping objet-relationnel (ORM) : NHibernate 3.0 dans les applications d&amp;amp;#39;affaires in Montreal, Quebec  on Eventbrite" src="http://www.eventbrite.com/registerbutton?eid=538677198"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p align="center"&gt;
&lt;a href="http://tests.eventbrite.com?ref=ebtn" target="_blank"&gt;&lt;img border="0" alt="Register for D&amp;eacute;veloppement pilot&amp;eacute; par les tests (Microsoft .NET 4.0) in Montreal, Quebec  on Eventbrite" src="http://www.eventbrite.com/registerbutton?eid=531210866"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=4a58a828-8d52-4a20-8d07-bd11291763bf" /&gt;</content>
  </entry>
  <entry>
    <title>Revue du Web du 28 juin</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2010/06/28/RevueDuWebDu28Juin.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,b64b2ad3-91d6-405c-aba2-e97013d835de.aspx</id>
    <published>2010-06-28T12:00:00-07:00</published>
    <updated>2010-06-28T05:35:08.7154686-07:00</updated>
    <category term=".net" label=".net" scheme="http://www.nventive.net/Blog2/CategoryView,category,net.aspx" />
    <category term="Revue du Web" label="Revue du Web" scheme="http://www.nventive.net/Blog2/CategoryView,category,RevueDuWeb.aspx" />
    <content type="html">&lt;h2&gt;Les tweets de la semaine 
&lt;/h2&gt;
&lt;p&gt;
&lt;a href="http://twitter.com/andreasohlund/status/16764086585"&gt;http://twitter.com/andreasohlund/status/16764086585&lt;/a&gt; NServiceBus
avec d’autres systèmes de messaging que MSMQ ? C’est possible et officiellement supporté
dans la prochaine version.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://twitter.com/fabiomaulo/status/16766319840"&gt;http://twitter.com/fabiomaulo/status/16766319840&lt;/a&gt; une
liste des fonctionnalités de NHibernate
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://twitter.com/mskkpr/status/16897746315"&gt;http://twitter.com/mskkpr/status/16897746315&lt;/a&gt; notre
premier tweet en japonais pour annoncer la 3ème preview d’Internet Explorer 9
&lt;/p&gt;
&lt;h2&gt;La question Stackoverflow 
&lt;/h2&gt;
&lt;p&gt;
&amp;nbsp;&lt;a href="http://stackoverflow.com/questions/2427015/how-to-do-pythons-zip-in-c"&gt;http://stackoverflow.com/questions/2427015/how-to-do-pythons-zip-in-c&lt;/a&gt; Un
nouvel opérateur Linq de C# 4.0 : Zip pour associer les élèments de deux listes.
&lt;/p&gt;
&lt;h2&gt;Actualités Microsoft 
&lt;/h2&gt;
&lt;p&gt;
Cette semaine cela fait 10 ans que Microsoft &lt;a href="http://www.networkworld.com/community/node/62762&amp;amp;usg=AFQjCNFi1r7n5e5Wb53906qnCjYOw5DJnw"&gt;donnait
un nom au publique&lt;/a&gt; pour son prochaine Framework de développement : .NET Framework.
Les versions beta sont arrivées pendant l'été 2000 et la première release s'est faite
en février 2002. Et 8 ans après on fêtait la &lt;a title="liste des versions du Framework" href="http://en.wikipedia.org/wiki/.NET_Framework_version_list"&gt;quatrième
version&lt;/a&gt;, que de chemin parcouru ! 
&lt;/p&gt;
&lt;h2&gt;Actualités “Alt.NET” 
&lt;/h2&gt;
&lt;p&gt;
&lt;a title="site web de la conf&amp;eacute;rence" href="http://www.ndc2010.no/"&gt;Norway Developers
Conference&lt;/a&gt; (NDC 2010) s’est tenue la semaine dernière à Oslo. Les &lt;a title="site de streaming vid&amp;eacute;o" href="http://streaming.ndc2010.no/"&gt;vidéos&lt;/a&gt; sont
disponibles. On y a parlé autant de C# avec John Skeet et Eric Lippert, ASP.NET MVC
avec Rob Conery, Domaine Driven avec EF par Julie Lerman, Mono et EC2 avec Jackson
Harper, IronRuby par Shay Friedman. Plein de choses pour alimenter les journées à
la plage au lieu de prendre dans la glacière un mauvais roman policier.
&lt;/p&gt;
&lt;h2&gt;De l’autre côté 
&lt;/h2&gt;
&lt;p&gt;
Avec l’arrivée prochaine de Windows Phone 7 qui va avoir son magasin d’applications
à l’image de ce qu’on trouve sur les autres plates-formes comme iPhone et Androïd,
les développeurs commencent à coder des prototypes pour le prochain système d’exploitation.
Dans &lt;a href="http://communities-dominate.blogs.com/brands/2010/06/full-analysis-of-iphone-economics-its-bad-news-and-then-it-gets-worse.html"&gt;ce
(long) billet&lt;/a&gt; Tomi T Ahonen, consultant dans le domaine des services mobiles et
ancien de Nokia, essaie de démystifier le hype autour du succès des applications mobiles
pour iPhone en terme financier. Depuis 2008 5 milliards d’applications ont été téléchargées
pour un revenu de 1.4 milliards de dollars et le rythme des ventes annuelles augmentent
beaucoup. 73% des applications sont payantes mais 85 % des téléchargements sont des
applications gratuites. Mais derrière ces chiffres se cache une réalité un peu moins
rose : le revenu annuel moyen par application est de 3.000 $ et la médiane se situe
à 682 $. L’analyste termine en mentionnant que malgré le succès du cornet acoustique
de El Jobso, celui-ci ne représente “que” 13% du marché des téléphones et que des
applications visant un facteur plus commun comme le SMS ont beaucoup plus de succès.
&lt;/p&gt;
&lt;p&gt;
Cela ne va pas rassurer les futurs développeurs de Windows Phone 7, car en fragmentant
le marché les applications stores (changer de téléphone aujourd’hui veut aussi dire
racheter des logiciels pour la nouvelle plateforme) n’ont pas forcément rendu service
aux entreprises. Toutefois le marché des applications mobiles étaient presque inexistants
avant l’arrivée de l’iPhone et beaucoup d’entreprises ont développées leur première
stratégie mobile autour de cet appareil. D’autres systèmes et d’autres technologies
vont sans doute apparaître pour abaisser le coût de développement multi-plateformes
(comme le fait MonoTouch ou HTML5).
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=b64b2ad3-91d6-405c-aba2-e97013d835de" /&gt;</content>
  </entry>
  <entry>
    <title>Revue du Web du 21 juin</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2010/06/21/RevueDuWebDu21Juin.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,6076fc62-0f24-4b89-99a4-2840f9f80eba.aspx</id>
    <published>2010-06-21T12:00:00-07:00</published>
    <updated>2010-06-21T05:44:29.577963-07:00</updated>
    <category term=".net" label=".net" scheme="http://www.nventive.net/Blog2/CategoryView,category,net.aspx" />
    <category term="Revue du Web" label="Revue du Web" scheme="http://www.nventive.net/Blog2/CategoryView,category,RevueDuWeb.aspx" />
    <content type="html">&lt;h2&gt;Les tweets de la semaine 
&lt;/h2&gt;
&lt;p&gt;
&lt;a href="http://twitter.com/WindowsAzure/status/16250215822"&gt;http://twitter.com/WindowsAzure/status/16250215822&lt;/a&gt; 6
mois après le lancement commercial de Windows Azure, Microsoft a présenté à la TechEd
les nouveautés
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;&lt;a href="http://twitter.com/#search?q=%23ndc2010"&gt;http://twitter.com/#search?q=%23ndc2010&lt;/a&gt; La
conférence NDC 2010 semble avoir été un succès par le nombre de tweets générés
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://twitter.com/SamVanhoutte/status/16375233855"&gt;http://twitter.com/SamVanhoutte/status/16375233855&lt;/a&gt; Workflow
dans le Cloud, la dernière tentative pour donner un peu d’amour à WF.
&lt;/p&gt;
&lt;h2&gt;La question Stackoverflow 
&lt;/h2&gt;
&lt;p&gt;
&amp;nbsp;&lt;a href="http://stackoverflow.com/questions/2349378/new-programming-jargon-you-coined"&gt;http://stackoverflow.com/questions/2349378/new-programming-jargon-you-coined&lt;/a&gt; une
série de termes inventés par des développeurs, on retrouvera sans doute des situations
de sa propre vie de codeur.
&lt;/p&gt;
&lt;h2&gt;Actualités Microsoft 
&lt;/h2&gt;
&lt;p&gt;
Office 2010 est sorti aussi pour le grand public et dans la foulée &lt;a title="le billet annon&amp;ccedil;ant la sortie" href="http://windowsteamblog.com/windows_live/b/windowslive/archive/2010/06/07/office-is-now-live-on-skydrive.aspx"&gt;la
version de Word, Excel, Power Point et OneNote en ligne&lt;/a&gt; a été publiée pour les
USA, le Canada, l’Irlande et la Grande-Bretagne. 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/RevueduWebdu17mai_7E12/WordWebApps.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="WordWebApps" border="0" alt="WordWebApps" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/RevueduWebdu17mai_7E12/WordWebApps_thumb.png" width="644" height="448"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/RevueduWebdu17mai_7E12/powetpoint.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="powetpoint" border="0" alt="powetpoint" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/RevueduWebdu17mai_7E12/powetpoint_thumb.png" width="644" height="401"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
La version mobile (par exemple avec l'iPhone ci-dessous) permet de visualiser un rendu
graphique ou textuel des documents, ainsi que la recherche à l’intérieur.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/RevueduWebdu17mai_7E12/IMG_0052.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="IMG_0052" border="0" alt="IMG_0052" align="left" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/RevueduWebdu17mai_7E12/IMG_0052_thumb.png" width="195" height="291"&gt;&lt;/a&gt;&lt;a href="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/RevueduWebdu17mai_7E12/IMG_0051.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="IMG_0051" border="0" alt="IMG_0051" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/RevueduWebdu17mai_7E12/IMG_0051_thumb.png" width="196" height="291"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/RevueduWebdu17mai_7E12/IMG_0053.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="IMG_0053" border="0" alt="IMG_0053" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/RevueduWebdu17mai_7E12/IMG_0053_thumb.png" width="195" height="290"&gt;&lt;/a&gt;&lt;a href="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/RevueduWebdu17mai_7E12/IMG_0054.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="IMG_0054" border="0" alt="IMG_0054" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/RevueduWebdu17mai_7E12/IMG_0054_thumb.png" width="195" height="290"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Les éditeurs seront intégrés dans la prochaine version Hotmail qui est en train d’être
déployée et celle-ci a de bonnes critiques, même de la part de &lt;a title="article de comparaison entre GMail et Hotmail" href="http://lifehacker.com/5564776/"&gt;lifehacker&lt;/a&gt;
&lt;/p&gt;
&lt;h2&gt;Actualités “Alt.NET” 
&lt;/h2&gt;
&lt;p&gt;
Skills Matters a encore frappé fort avec &lt;a title="lien de la conf&amp;eacute;rence" href="http://skillsmatter.com/event/design-architecture/ddd-exchange-2010"&gt;DDD
eXchange 2010&lt;/a&gt; une conférence d’une journée consacrée au thème du Domain Driven-Design
avec Eric Evans, Udi Dahan, Greg Young, Ian Copper et Gojko Adzic. Ce dernier a écrit
un &lt;a title="billets sur ddx 2010" href="http://gojko.net/tag/dddx/"&gt;compte-rendu&lt;/a&gt; intéressant
sur cette journée.
&lt;/p&gt;
&lt;h2&gt;De l’autre côté 
&lt;/h2&gt;
&lt;p&gt;
On a déjà parlé ici de Python et de son Framework star, Django, et des bases de données
non relationnelles. Il semblerait que les deux se marient bien. Django a une version
qui supportent des bases de données “NoSQL”: &lt;a title="le site internet du projet" href="http://www.allbuttonspressed.com/projects/django-nonrel"&gt;Django-nonrel&lt;/a&gt;.
Pour l’instant MongoDb est le backend le plus documenté avec AppEngine. Ceci est intéressant
car si le monde des moteurs de stockage non relationnel a fait beaucoup de bruit,
celui-ci était très lié à des systèmes très très particuliers comme Twitter, Facebook
etc. Ici Django est un framework web “comme les autres”. Le début de la popularisation
du NoSQL ?
&lt;/p&gt;
&lt;h2&gt;Un projet
&lt;/h2&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a title="billet pr&amp;eacute;sentant l'application" href="http://nhforge.org/blogs/nhibernate/archive/2010/05/19/nhibernate-workbench.aspx"&gt;Nhibernate
Workbench&lt;/a&gt; est la dernière application qui essaie d’améliorer l’outillage autour
de NHibernate, notamment le requêtage par HQL, le langage propriétaire du Framework
ORM.
&lt;/p&gt;
&lt;p&gt;
Après avoir téléchargé et décompressé l’application, il nous faut créer un nouveau
projet et y ajouter un fichier de configuration (on peut reprendre son app.config/web.config
existant) et une dll/exe contenant le mapping (sous forme de fichier hbm, Fluent NHibernate
ne semble pas supporter pour le moment).
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/RevueduWebdu17mai_7E12/assemblies_config.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="assemblies_config" border="0" alt="assemblies_config" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/RevueduWebdu17mai_7E12/assemblies_config_thumb.png" width="248" height="218"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
L’éditeur offre la complétion du code sur les types des objets persistés : 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/RevueduWebdu17mai_7E12/intellisense.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="intellisense" border="0" alt="intellisense" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/RevueduWebdu17mai_7E12/intellisense_thumb.png" width="463" height="198"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
La requête SQL générée est aussi affichés avec les résultats:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/RevueduWebdu17mai_7E12/resultat.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="resultat" border="0" alt="resultat" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/RevueduWebdu17mai_7E12/resultat_thumb.png" width="644" height="92"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
L’expérience est somme toute basique mais satisfaisante. Sachant que le HQL peut-être
parfois dur à maîtriser, cet outil peut-être pratique pour apprendre pas à pas le
langage.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=6076fc62-0f24-4b89-99a4-2840f9f80eba" /&gt;</content>
  </entry>
  <entry>
    <title>Le code et les photos de notre atelier sur le développement d’une application d’affaires avec .NET 4</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2010/06/09/LeCodeEtLesPhotosDeNotreAtelierSurLeD%c3%a9veloppementDuneApplicationDaffairesAvecNET4.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,43c6d949-3392-42b7-804a-2014c1657456.aspx</id>
    <published>2010-06-09T12:00:00-07:00</published>
    <updated>2010-06-09T13:19:46.8375905-07:00</updated>
    <category term=".net" label=".net" scheme="http://www.nventive.net/Blog2/CategoryView,category,net.aspx" />
    <category term="Announcement" label="Announcement" scheme="http://www.nventive.net/Blog2/CategoryView,category,Announcement.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Celles et ceux qui étaient inscrits par Eventbrite ont reçu par courriel les documents
de la conférence de Samedi dernier. En voici une copie :
</p>
        <p>
          <strong>Code Source</strong> : <a href="http://www.nventive.net/Demo/4HoursToBizDev5Juin/Clinic2010_SRC.ZIP">http://www.nventive.net/Demo/4HoursToBizDev5Juin/Clinic2010_SRC.ZIP</a></p>
        <p>
          <strong>Powerpoint</strong> : <a href="http://www.nventive.net/Demo/4HoursToBizDev5Juin/nventiveclinic2010.pdf">http://www.nventive.net/Demo/4HoursToBizDev5Juin/nventiveclinic2010.pdf</a></p>
        <p>
Et une petite image “souvenir”: 
</p>
        <p>
          <a href="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Lecodeetlesphotosdenotreateliersurl.NET4_E40A/Clinic2010Montage_2.jpg">
            <img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="Clinic2010Montage" border="0" alt="Clinic2010Montage" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Lecodeetlesphotosdenotreateliersurl.NET4_E40A/Clinic2010Montage_thumb.jpg" width="644" height="461" />
          </a>
        </p>
        <p>
Encore une fois merci à tous les participants (et sponsors) qui ont fait de cette
journée un franc succès ! <img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=43c6d949-3392-42b7-804a-2014c1657456" /></p>
      </div>
    </content>
  </entry>
  <entry>
    <title>Développer une application d'affaires en 4 heures avec .NET 4.0</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2010/05/18/D%c3%a9velopperUneApplicationDaffairesEn4HeuresAvecNET40.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,e02f7be8-2be5-417c-8e0a-80444da9b8db.aspx</id>
    <published>2010-05-18T16:00:00-07:00</published>
    <updated>2010-06-01T12:38:32.2834289-07:00</updated>
    <category term="Announcement" label="Announcement" scheme="http://www.nventive.net/Blog2/CategoryView,category,Announcement.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
 
</p>
        <p>
Vous cherchez des devoirs de vacances pour cet été ? Venez découvrir une mine d’informations
sur le développement des applications d’affaires avec la plate-forme .NET !
</p>
        <h3>
          <font color="#ff0000" size="4">Quoi?</font>
        </h3>
        <p>
Dans le cadre de sa collaboration avec Microsoft et l'équipe <em>Patterns &amp; Practices </em>ainsi
que le lancement de .NET 4.0 et Visual Studio 2010, l'équipe de nVentive est heureuse
de dévoiler l'ensemble de sa pratique de développement, son cadre de gestion agile
ainsi qu’une architecture cible réutilisable. 
</p>
        <h3>
          <font color="#ff0000" size="4">Pourquoi?</font>
        </h3>
        <p>
L'arrivée de Visual Studio 2010 amène un vent de changement qui permettra aux équipes
d'aujourd'hui d'être supportée par un cadre de gestion agile; de la prise initiale
des besoins avec <em>SCRUM</em>, en passant par la modélisation du domaine d'affaires
avec <em>UML</em> jusqu'à la réalisation pilotée par les tests (<em>TDD</em>) et l'intégration
continue (<em>CI</em>). 
</p>
        <h3>
          <font color="#ff0000" size="4">Qui?</font>
        </h3>
        <p>
Cette <strong>formation</strong><strong>gratuite</strong> s'adresse à tous les curieux,
architectes et développeurs qui doivent relever quotidiennement les défis du développement
logiciel sur la plateforme Microsoft; qu'il s'agisse d'une application riche Silverlight,
WPF ou les deux. 
</p>
        <h4>
          <font color="#ff0000" size="4">Comment?</font>
        </h4>
        <p>
Élaborer une architecture raisonnée sans pour autant réinventer la roue et faire vivre
aux participants, en temps réel, un cycle de développement accéléré. Les meilleures
pratiques de l'industrie en termes d'architecture seront présentées, à l'aide d'exemples
concrets qui toucheront l’ensemble des couches (<em>DAL</em>, <em>Business, Services,
Presentation, Views</em>) et mettront en valeur la puissance des outils à notre disposition. 
</p>
        <h4>
          <font color="#ff0000" size="4">Technologies?</font>
        </h4>
        <ul>
          <li>
Visual Studio 2010 
</li>
          <li>
Team Foundation Server 2010 
</li>
          <li>
Expression Blend 4 
</li>
          <li>
Silverlight 4 
</li>
          <li>
Microsoft .NET C# 4.0 
</li>
          <li>
Enterprise Library 5.0 
</li>
          <li>
Unity 2.0 
</li>
          <li>
Composite Application Library 2.0 
</li>
          <li>
Windows Communication Foundation 
</li>
          <li>
T4 Templates 
</li>
          <li>
NHibernate</li>
        </ul>
        <h4>
          <font color="#ff0000" size="4">Philosophie?</font>
        </h4>
        <p>
Permettre une architecture modulaire, simple à tester, réutilisable et extensible; 
</p>
        <p>
S'inspirer des principes déjà proposés par la communauté; 
</p>
        <p>
Fournir une plateforme unifiée qui réduit la friction due à l'intégration de multiples
outils et techniques. 
</p>
        <h4>
          <font color="#ff0000" size="4">Quand?</font>
        </h4>
        <p>
Le 5 juin, dès 9h00 dans les locaux de l'UQAM. 
</p>
        <p>
Attention nouvelle adresse ! : Salle R-M110 (Pavillon des Sciences de la Gestion)
</p>
        <p>
          <a title="Carte" href="http://maps.google.com/maps?f=q&amp;source=s_q&amp;hl=fr&amp;geocode=&amp;q=315+Rue+Sainte+Catherine+Est,+Montr%C3%A9al,+Qu%C3%A9bec,+Canada&amp;sll=34.849875,-93.339844&amp;sspn=21.388042,46.362305&amp;ie=UTF8&amp;hq=&amp;hnear=315+Rue+Sainte+Catherine+Est,+Montr%C3%A9al,+Communaut%C3%A9-Urbaine-de-Montr%C3%A9al,+Qu%C3%A9bec+H2X+1L7,+Canada&amp;z=16">315,
rue Sainte-Catherine Est</a>. (Métro Berri-UQAM)
</p>
        <h4>
          <font color="#ff0000" size="4">Combien?</font>
        </h4>
        <p>
          <strong>Gratuit</strong>. 
</p>
        <p>
Plusieurs prix de présence seront remis sur place dont <strong>3 licences pour <a title="NH Profiler" href="http://nhprof.com/">NHProfiler</a>,
1 licence des contrôles Silverlight <a title="site web" href="http://www.telerik.com/">Telerik</a>,
5 licences <a title="site web" href="https://www.codesmithtools.com/">CodeSmith</a>,
3 licences pour <a title="site web" href="http://firstfloorsoftware.com/silverlightspy">Silvelright
Spy</a>, 2 licences <a title="site web" href="http://www.balsamiq.com/">Balsamiq</a></strong> et
du matériel de plage cet été. 
</p>
        <p align="center">
          <a href="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Dvelopperuneapplicationdaffairesen4heu.0_E4D4/dotnetlogonew177x52_2.jpg">
            <img style="border-right-width: 0px; margin: 0px 10px 0px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="dotnetlogonew177x52" border="0" alt="dotnetlogonew177x52" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Dvelopperuneapplicationdaffairesen4heu.0_E4D4/dotnetlogonew177x52_thumb.jpg" width="177" height="52" />
          </a>
          <a href="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Dvelopperuneapplicationdaffairesen4heu.0_E4D4/vs2010logo_2.png">
            <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="vs2010logo" border="0" alt="vs2010logo" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Dvelopperuneapplicationdaffairesen4heu.0_E4D4/vs2010logo_thumb.png" width="240" height="94" />
          </a>
          <a href="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Dvelopperuneapplicationdaffairesen4heu.0_E4D4/silverlight_2.jpg">
            <img style="border-right-width: 0px; margin: 0px 0px 0px 15px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="silverlight" border="0" alt="silverlight" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Dvelopperuneapplicationdaffairesen4heu.0_E4D4/silverlight_thumb.jpg" width="137" height="45" />
          </a>  
</p>
        <p align="center">
 
</p>
        <p align="center">
          <a href="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Dvelopperuneapplicationdaffairesen4heu.0_E4D4/teleriklogo_4.gif">
            <img style="border-right-width: 0px; margin: 0px 10px 0px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="teleriklogo" border="0" alt="teleriklogo" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Dvelopperuneapplicationdaffairesen4heu.0_E4D4/teleriklogo_thumb_1.gif" width="139" height="48" />
          </a>
          <a href="http://www.afiformation.com/en/default.aspx">
            <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="logo-afi" border="0" alt="logo-afi" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Dvelopperuneapplicationdaffairesen4heu.0_E4D4/logo-afi_3.jpg" width="147" height="61" />
          </a>
          <a href="http://www.dotnetmontreal.com/dnn/">
            <img style="border-right-width: 0px; margin: 0px 0px 0px 15px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="cdnm_logo_blogbling" border="0" alt="cdnm_logo_blogbling" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Dvelopperuneapplicationdaffairesen4heu.0_E4D4/cdnm_logo_blogbling_3.png" width="150" height="92" />
          </a>
        </p>
        <p align="center">
          <a href="http://nhprof.com/">
            <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="NHProf" border="0" alt="NHProf" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Dvelopperuneapplicationdaffairesen4heu.0_E4D4/NHProf_3.png" width="96" height="96" />
          </a> <a title="website" href="https://www.codesmithtools.com/"><img style="border-right-width: 0px; margin: 0px 0px 0px 25px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="logo" border="0" alt="logo" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Dvelopperuneapplicationdaffairesen4heu.0_E4D4/logo_3.png" width="141" height="55" /></a><a href="http://firstfloorsoftware.com/silverlightspy"><img style="border-right-width: 0px; margin: 0px 0px 0px 25px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="SilelrightSpy" border="0" alt="SilelrightSpy" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Dvelopperuneapplicationdaffairesen4heu.0_E4D4/SilelrightSpy_1.png" width="180" height="76" /></a></p>
        <p align="center">
          <a title="site web" href="http://www.balsamiq.com/">
            <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="balsamiq_logo" border="0" alt="balsamiq_logo" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Dvelopperuneapplicationdaffairesen4heu.0_E4D4/balsamiq_logo_3.png" width="240" height="76" />
          </a>
          <a title="site web" href="http://msdn.microsoft.com/en-us/practices/default.aspx">
            <img style="border-right-width: 0px; margin: 0px 0px 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="IC368873" border="0" alt="IC368873" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Dvelopperuneapplicationdaffairesen4heu.0_E4D4/IC368873_3.png" width="240" height="68" />
          </a>
        </p>
        <img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=e02f7be8-2be5-417c-8e0a-80444da9b8db" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Revue du Web du 17 mai</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2010/05/17/RevueDuWebDu17Mai.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,e0038d35-2979-4ea2-9f5d-0dcc9e3f3f57.aspx</id>
    <published>2010-05-17T12:00:00-07:00</published>
    <updated>2010-05-17T05:46:01.1310873-07:00</updated>
    <category term=".net" label=".net" scheme="http://www.nventive.net/Blog2/CategoryView,category,net.aspx" />
    <category term="Revue du Web" label="Revue du Web" scheme="http://www.nventive.net/Blog2/CategoryView,category,RevueDuWeb.aspx" />
    <content type="html">&lt;h2&gt;Les tweets de la semaine 
&lt;/h2&gt;
&lt;p&gt;
&amp;nbsp;&lt;a href="http://twitter.com/navin_l/status/13724890104"&gt;http://twitter.com/navin_l/status/13724890104&lt;/a&gt; un
tour d’horizon rapide des outils de Build en .NET
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://twitter.com/garethky/status/13808692076"&gt;http://twitter.com/garethky/status/13808692076&lt;/a&gt; savoir
lire entre les lignes de la documentation NHibernate
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://twitter.com/TheDotNetMan/status/13870021633"&gt;http://twitter.com/TheDotNetMan/status/13870021633&lt;/a&gt; une
liste de choses à surveiller quand on utilise LinqToSql et IQueryable en général
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://twitter.com/shanselman/status/13941544036"&gt;http://twitter.com/shanselman/status/13941544036&lt;/a&gt; ah
les erreurs du passé …
&lt;/p&gt;
&lt;h2&gt;La question Stackoverflow 
&lt;/h2&gt;
&lt;p&gt;
&lt;a href="http://stackoverflow.com/questions/40090/is-overloading-the-only-way-to-have-default-function-arguments-in-c"&gt;http://stackoverflow.com/questions/40090/is-overloading-the-only-way-to-have-default-function-arguments-in-c&lt;/a&gt; la
surcharge de méthode en C# et les impacts de la version 4 du langage 
&lt;/p&gt;
&lt;h2&gt;Actualités Microsoft 
&lt;/h2&gt;
&lt;p&gt;
Microsoft doit présenter aujourd’hui d’après &lt;a title="article de VentureBeat sur Hotmail" href="http://venturebeat.com/2010/05/12/microsofts-next-target-gmail/" target="_blank"&gt;VentureBeat&lt;/a&gt; une
nouvelle version de son service en ligne de courrier électronique : Windows Live Hotmail.
Le premier service de messagerie sur Internet s’est endormi sur son succès au profit
de GMail (un peu comme Internet Explorer l’a fait avec Firefox). Microsoft a donc
pour cette nouvelle version mis les bouchées doubles : vitesse, vue conversation,
tagging, version mobile améliorée, intégration des réseaux sociaux (attention à l’effet
Buzz …) et intégration avec les applications Office 2010 Web. Ces dernières seront
disponibles avec la sortie grand publique de la suite logicielle au mois de juin mais
la sortie pour les entreprises a eu lieu la semaine dernière.
&lt;/p&gt;
&lt;h2&gt;Actualités “Alt.NET” 
&lt;/h2&gt;
&lt;p&gt;
Andreas Öhlund, un des développeurs de NServiceBus a posté une &lt;a title="lien vers la pr&amp;eacute;sentation sur slideshare" href="http://www.slideshare.net/andreasohlund/nservicebus-altnet-20100511" target="_blank"&gt;présentation&lt;/a&gt; d’introduction
au Framework de messaging. Ceci n’est qu’un survol mais il est complet : rôle dans
une architecture, configuration, utilisation basique possible, la gestion des processus
longs, etc.&amp;nbsp; 
&lt;/p&gt;
&lt;h2&gt;De l’autre côté 
&lt;/h2&gt;
&lt;p&gt;
Dans une &lt;a title="l'interview" href="http://www.reuters.com/article/idUSTRE64B5YX20100512" target="_blank"&gt;interview&lt;/a&gt; (fait
très rare pour Larry Ellison) le nouveau PDG d’Oracle-SUN parle (en bien) de la compétence
technique de l’éditeur de logiciel et en (très) mal de l’équipe dirigeante et notamment
de Jonathan Schwartz, le dernier président de SUN avant son rachat. Schwartz était
très connu et surtout très populaire auprès d’une certaine population de bloggeurs.
Les piques de Larry Ellison peuvent être vues comme une réponse aux commentaires de
Schwartz après son départ, commentaires quelques peu arrogants à la lumière des performances
de l’entreprise. On peut retrouver sur &lt;a title="extraits de l'interview" href="http://www.informationweek.com/blog/main/archives/2010/05/larry_ellison_o_1.html" target="_blank"&gt;InformationWeek&lt;/a&gt; quelques
bons extraits de l’interview.
&lt;/p&gt;
&lt;h2&gt;Un projet
&lt;/h2&gt;
&lt;p&gt;
Pas de projet cette semaine et la revue du web fait une pause de quelques semaines
le temps de préparer un évènement spécial organisé par nVentive ici à Montréal … 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=e0038d35-2979-4ea2-9f5d-0dcc9e3f3f57" /&gt;</content>
  </entry>
  <entry>
    <title>Revue du Web du 10 mai</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2010/05/10/RevueDuWebDu10Mai.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,2d681785-8061-480d-82e6-26fba2aade7d.aspx</id>
    <published>2010-05-10T12:00:00-07:00</published>
    <updated>2010-05-10T05:43:00.2259207-07:00</updated>
    <category term=".net" label=".net" scheme="http://www.nventive.net/Blog2/CategoryView,category,net.aspx" />
    <category term="Revue du Web" label="Revue du Web" scheme="http://www.nventive.net/Blog2/CategoryView,category,RevueDuWeb.aspx" />
    <content type="html">&lt;h2&gt;Les tweets de la semaine 
&lt;/h2&gt;
&lt;p&gt;
&lt;a href="http://twitter.com/WindowsAzure/status/13342352480"&gt;http://twitter.com/WindowsAzure/status/13342352480&lt;/a&gt; quand
Windows Azure rencontre CQRS
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://twitter.com/innovimax/status/13413675316"&gt;http://twitter.com/innovimax/status/13413675316&lt;/a&gt; une
librairie .NET pour manipuler des documents inDesign cherche des testeurs
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;&lt;a href="http://twitter.com/webwizo/statuses/13505951473"&gt;http://twitter.com/webwizo/statuses/13505951473&lt;/a&gt; le
meilleur et le pire dans la même phrase ?
&lt;/p&gt;
&lt;h2&gt;La question Stackoverflow 
&lt;/h2&gt;
&lt;p&gt;
&lt;a href="http://stackoverflow.com/questions/280751/what-is-the-best-practice-for-copy-local-and-with-project-references"&gt;http://stackoverflow.com/questions/280751/what-is-the-best-practice-for-copy-local-and-with-project-references&lt;/a&gt; la
gestion des références peut être ardue quand le nombre de librairies externes et&amp;nbsp;
de projets augmentent. Cette question et les réponses apportées abordent la gestion
des librairies Visual Studio.
&lt;/p&gt;
&lt;h2&gt;Actualités Microsoft 
&lt;/h2&gt;
&lt;p&gt;
Une nouvelle version alpa de &lt;a title="le site pour t&amp;eacute;charger la nouvelle version" href="http://ie.microsoft.com/testdrive/" target="_blank"&gt;Internet
Explorer 9&lt;/a&gt; est sortie, on y trouve de nouveaux tests et fonctionnalités. Brad
Abrams un des développeurs les plus connus chez Microsoft vient de &lt;a title="l'annonce sur le blog MS de Zdnet" href="http://news.cnet.com/8301-30685_3-20004222-264.html?tag=mncol;title" target="_blank"&gt;quitter&lt;/a&gt; l’éditeur
pour un autre mastodonte : Google. Son blog sur MSDN était très actif sur des sujets
variés comme la BCL, RIA Services, MEF ou encore Internet Explorer. Son &lt;a title="dernier billet de Brad Abrams" href="http://blogs.msdn.com/brada/archive/2010/04/20/my-last-day-at-microsoft.aspx" target="_blank"&gt;dernier
billet&lt;/a&gt; résume bien un parcours exceptionnel.
&lt;/p&gt;
&lt;p&gt;
Et puisque tout le monde est content de Windows 7 voici un &lt;a title="billet sur lifehacker" href="http://lifehacker.com/5532578/the-power-users-guide-to-the-windows-7-taskbar" target="_blank"&gt;guide
complet&lt;/a&gt; de lifehacker.com sur les fonctionnalités de la &lt;em&gt;TaskBar.&lt;/em&gt;
&lt;/p&gt;
&lt;h2&gt;Actualités “Alt.NET” 
&lt;/h2&gt;
&lt;p&gt;
Allez encore une fois on va parler CQRS mais on vous promets d’autres sujets pour
les prochaines revues du web. En plus aujourd’hui on aborde une mise en garde sous
la forme d’un billet de &lt;a title="billet de Udi Dahan" href="http://www.udidahan.com/2010/05/07/cqrs-isnt-the-answer-its-just-one-of-the-questions/" target="_blank"&gt;Udi
Dahan&lt;/a&gt;. On entend beaucoup parler de cette architecture au point où on pourrait
croire qu’elle va résoudre le problème de la faim dans le monde.En abordant le classique
problème de la différence de perspective entre les développeurs et les usagers d’une
solution, Udi revient sur la façon de poser les bonnes questions et cite celles que
CQRS soulève : une architecture avec une utilisation très collaborative, une vue non
exclusivement par entité et une fraîcheur des données moins pressante.
&lt;/p&gt;
&lt;h2&gt;De l’autre côté 
&lt;/h2&gt;
&lt;p&gt;
HTML5 on en parle beaucoup. Si vous êtes un développeur ASP.NET (MVC ou pas) ou si
tout simplement vous vous intéressez aux technologies web vous pouvez consulter ce
site : &lt;a title="le site" href="http://www.alistapart.com/" target="_blank"&gt;A List
Apart&lt;/a&gt;. C’est une référence dans le domaine de l’intégration web, ce secteur à
la croisée entre le design graphique, la technique (CSS, HTML, Javascript) et l’accessibilité.
C’est sur ce site par exemple qu’on trouve les premiers articles sur les techniques
que le &lt;a title="article de 2004" href="http://www.alistapart.com/articles/sprites/" target="_blank"&gt;CSS&lt;/a&gt; &lt;a title="une autre version datant de 2008" href="http://www.alistapart.com/articles/sprites2/" target="_blank"&gt;Sprite&lt;/a&gt; ou
un résumé de &lt;a title="r&amp;eacute;sum&amp;eacute; sur ALA" href="http://www.alistapart.com/articles/get-ready-for-html-5/" target="_blank"&gt;HTML
5&lt;/a&gt;
&lt;/p&gt;
&lt;h2&gt;Un projet
&lt;/h2&gt;
&lt;p&gt;
La mode des API “fluent” avec une utilisation des expressions lambda est vraiment
partout dans le monde .NET (Fluent Nhibernate, Moq). Le projet de cette semaine est
dans la même lignée : &lt;a title="le site web du projet" href="http://nbuilder.org/" target="_blank"&gt;NBuilder&lt;/a&gt;.
Il y a beaucoup de défis pour pouvoir exécuter des tests unitaires en dehors du contexte
normal de l’application. La pratique du mocking est une des solutions pour isoler
le système. NBuilder se situe dans la phase Arrange de la fameuse trilogie AAA (Arrange,
Act, Assert), il faut avoir des données de test et ce travail peut être fastidieux.
&lt;/p&gt;
&lt;p&gt;
Voici un exemple pour construire une liste de 10 objets de type Individual :
&lt;/p&gt;
&lt;div id="codeSnippetWrapper"&gt;
&lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt; 1:&lt;/span&gt; var
toCreate = Builder&amp;lt;Individual&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt; 2:&lt;/span&gt; .CreateListOfSize(10);&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt; 3:&lt;/span&gt; var
data = toCreate.Build();&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="codeSnippetWrapper"&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
les objets feront les propriétés primitives publiques valorisées avec une valeur générée.
&lt;/p&gt;
&lt;p&gt;
On peut aussi initialiser certains champs (ici les 5 individus auront une propriété
Birthday valorisée à la valeur donnée) :
&lt;/p&gt;
&lt;div id="codeSnippetWrapper"&gt;
&lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt; 1:&lt;/span&gt; var
toCreate = Builder&amp;lt;Individual&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt; 2:&lt;/span&gt; .CreateListOfSize(10)&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt; 3:&lt;/span&gt; .WhereTheFirst(5)&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt; 4:&lt;/span&gt; .Have(i
=&amp;gt; i.Birthday = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; DateTime(1978, 1, 24)); &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/RevueduWebdu3mai_BBF3/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="individual" border="0" alt="individual" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/RevueduWebdu3mai_BBF3/image_thumb.png" width="579" height="141"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Les méthodes AndTheNext() permettent de valoriser les éléments suivants dans la liste.
&lt;/p&gt;
&lt;p&gt;
On peut appliquer des méthodes sur les objets créés :
&lt;/p&gt;
&lt;div id="codeSnippetWrapper"&gt;
&lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt; 1:&lt;/span&gt; var
toCreate = Builder&amp;lt;Individual&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt; 2:&lt;/span&gt; .CreateListOfSize(10)&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt; 3:&lt;/span&gt; .WhereTheFirst(5)&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt; 4:&lt;/span&gt; .Have(i
=&amp;gt; i.Birthday = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; DateTime(1978, 1, 24))&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt; 5:&lt;/span&gt; .HaveDoneToThem(i
=&amp;gt; i.Emails.Add(Builder&amp;lt;Email&amp;gt;.CreateNew().Build()));&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt; 6:&lt;/span&gt; var
data = toCreate.Build();&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
ou choisir un élément au hasard :
&lt;/p&gt;
&lt;div id="codeSnippetWrapper"&gt;
&lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt; 1:&lt;/span&gt; HaveDoneToThem(i
=&amp;gt; i.Emails.Add(Pick&amp;lt;Email&amp;gt;.RandomItemFrom(emails)))&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
Le objets peuvent être persistés (par exemple dans le cas de test d’intégration via
la couche de persistance de l’application) :
&lt;/p&gt;
&lt;div id="codeSnippetWrapper"&gt;
&lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt; 1:&lt;/span&gt; BuilderSetup.SetCreatePersistenceMethod&amp;lt;Individual&amp;gt;(repositoryIndividual.Save);&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt; 2:&lt;/span&gt; var
data = toCreate.Persist();&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
une API spécifique aux dates existe :
&lt;/p&gt;
&lt;div id="codeSnippetWrapper"&gt;
&lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt; 1:&lt;/span&gt; var
arriveeQuebec = The.Year(2009).On.May.The1st.At(15, 00);&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt; 2:&lt;/span&gt; &lt;span style="color: #008000"&gt;//ou
par génération&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt; 3:&lt;/span&gt; .Have(i
=&amp;gt; i.Birthday = generator.Next(March.The10th,April.The17th))&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
Enfin lors de la configuration le framework nous laisse spécifier une classe de PropertyNaming&amp;nbsp;
pour un type donné ou pour l’ensemble des appels.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=2d681785-8061-480d-82e6-26fba2aade7d" /&gt;</content>
  </entry>
  <entry>
    <title>Revue du Web du 3 mai</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2010/05/04/RevueDuWebDu3Mai.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,3d5de139-bb78-4902-bc79-43676e183b3f.aspx</id>
    <published>2010-05-04T00:20:00-07:00</published>
    <updated>2010-05-03T05:25:25.2203521-07:00</updated>
    <category term=".net" label=".net" scheme="http://www.nventive.net/Blog2/CategoryView,category,net.aspx" />
    <category term="Revue du Web" label="Revue du Web" scheme="http://www.nventive.net/Blog2/CategoryView,category,RevueDuWeb.aspx" />
    <content type="html">&lt;h2&gt;Les tweets de la semaine 
&lt;/h2&gt;
&lt;p&gt;
&amp;nbsp;&lt;a href="http://twitter.com/ganshani/status/12951748647"&gt;http://twitter.com/ganshani/status/12951748647&lt;/a&gt; une
application ebay silverlight 4 
&lt;p&gt;
&lt;a href="http://twitter.com/gridshore/status/12810788065"&gt;http://twitter.com/gridshore/status/12810788065&lt;/a&gt; un
framework CQRS, java mais avec une documentation intéressante 
&lt;p&gt;
&lt;a href="http://twitter.com/escobar5/status/13131896774"&gt;http://twitter.com/escobar5/status/13131896774&lt;/a&gt; les
spécifications de C# 4.0 
&lt;h2&gt;La question Stackoverflow 
&lt;/h2&gt;
&lt;p&gt;
&lt;a href="http://stackoverflow.com/questions/2745076/what-is-the-difference-between-git-commit-and-git-push"&gt;http://stackoverflow.com/questions/2745076/what-is-the-difference-between-git-commit-and-git-push&lt;/a&gt; Git
a attiré beaucoup l’attention de la communauté. La question de la semaine nous permet
d’explorer la différence entre Commit (action locale) et Push (action remote). On
trouve aussi un diagramme expliquant les différentes commandes. Ces deux questions&amp;nbsp;
peuvent vous aider à mettre un pied dans le monde merveilleux de la gestion de configuration
distribuée : &lt;a href="http://stackoverflow.com/questions/315911/git-for-beginners-the-definitive-practical-guide"&gt;http://stackoverflow.com/questions/315911/git-for-beginners-the-definitive-practical-guide&lt;/a&gt; et &lt;a href="http://stackoverflow.com/questions/507343/using-git-with-visual-studio"&gt;http://stackoverflow.com/questions/507343/using-git-with-visual-studio&lt;/a&gt; 
&lt;h2&gt;Actualités Microsoft 
&lt;/h2&gt;
&lt;p&gt;
Steve Ballmer a présenté la &lt;a title="pr&amp;eacute;sentation de la nouvelle version" href="http://windowslivepreview.com/messenger/new" target="_blank"&gt;nouvelle
version de MSN Messenger&lt;/a&gt; qui va comporter les conversations en onglet, l’intégration
avec Facebook (status et chat), la vidéo HD et une version iPhone. En plus de MSN
Messenger, ce sont les services en ligne Live qui vont connaître aussi leur vague
numéro 4, &lt;a title="billet sur Live Wave 4" href="http://www.liveside.net/main/archive/2010/04/30/windows-live-hotmail-wave-4-to-get-exchange-activesync-support-full-session-ssl-and-more.aspx" target="_blank"&gt;Liveside.net&lt;/a&gt; revient
dessus et on apprend par exemple qu’Hotmail va supporter Exchange ActiveSync (c’est-à-dire
qu’on pourra enfin utiliser un compte Hotmail sur iPhone pour avoir ses emails, contacts
et calendriers), la vue conversation, l’édition en ligne de document et une version
mobile beaucoup plus évoluée. &lt;a title="d&amp;eacute;monstration de Windows Live sur iPhone" href="http://www.liveside.net/main/archive/2010/05/02/windows-live-on-an-iphone-video-demo.aspx" target="_blank"&gt;Cette
vidéo&lt;/a&gt; permet de voir les fonctionnalités de Windows Live pour l’íPhone.
&lt;/p&gt;
&lt;p&gt;
Côté développement le nouveau blog &lt;a title="le blog" href="http://ironruby-rocks.com/" target="_blank"&gt;IronRuby-Rocks.com&lt;/a&gt; permet
d’explorer le langage et l’intégration avec .NET ou Windows (utilisation des génériques,
intégration avec Office). 
&lt;/p&gt;
&lt;h2&gt;Actualités “Alt.NET” 
&lt;/h2&gt;
&lt;p&gt;
On a parlé au début de l’existence de cette revue de &lt;a title="le nouveau site officiel" href="http://github.com/JamesKovacs/psake" target="_blank"&gt;PSake&lt;/a&gt;,
un outil simple mais très efficace pour construire ses logiciels à partir d’un script
PowerShell. Il a lui aussi passé à la &lt;a title="billet d&amp;eacute;taillant les fonctionnalit&amp;eacute;s" href="http://codebetter.com/blogs/james.kovacs/archive/2010/04/12/psake-v4-00.aspx" target="_blank"&gt;version
4.0&lt;/a&gt; : support de .NET 4.0, x64,&amp;nbsp; . Il s’agrémente aussi d’un &lt;a title="le wiki de PSake" href="http://wiki.github.com/JamesKovacs/psake/" target="_blank"&gt;wiki&lt;/a&gt; pour
aider les développeurs à commencer avec cet outil.
&lt;/p&gt;
&lt;p&gt;
Dans un autre registre on peut visionner sur le site de Skill Matters &lt;a title="intervention vid&amp;eacute;o de Greg Young" href="http://skillsmatter.com/podcast/open-source-dot-net/greg-young-cqrs-event-sourcing-the-business-perspecive" target="_blank"&gt;l’intervention
de Greg Youn&lt;/a&gt;g à Londres sur CQRS – Event Sourcing du point de vue métier. 
&lt;/p&gt;
&lt;h2&gt;De l’autre côté 
&lt;/h2&gt;
&lt;p&gt;
&lt;a title="texte de l'article" href="http://blog.neo4j.org/2010/03/modeling-categories-in-graph-database.html" target="_blank"&gt;Cet
article&lt;/a&gt; nous introduit à une librairie Python (neo4j) utilisée en Java pour manipuler
des données en graphe (modélisation de catégories, de réseau)&amp;nbsp; plus facilement
qu’avec un modèle relationnel. L’exemple abordé est celui d’un catalogue de produits
classifiés en catégories et chaque catégorie a un ensemble d’attributs. Le concept
de noeuds corresponds aux entités (ici Catégories, Produits et Attributs), tandis
que les relations permet de typer un lien (catégorie – produit, catégorie – attributs).
L ‘intérêt de ce type d’API réside dans la capacité à traverses le graphe pour avoir
les attributs par exemple d’une catégorie et de toutes ses catégories facilement.
Le &lt;a title="le site du projet" href="http://wiki.neo4j.org/content/Main_Page" target="_blank"&gt;site&lt;/a&gt; fait
état d’une API REST associée au framework et de &lt;a title="page sur le wiki de neo4j" href="http://wiki.neo4j.org/content/Domain_Modeling_Gallery" target="_blank"&gt;modèles
exemples&lt;/a&gt;.&amp;nbsp; 
&lt;h2&gt;Un projet
&lt;/h2&gt;
&lt;p&gt;
&lt;a title="fiche wikipedia" href="http://en.wikipedia.org/wiki/JSON" target="_blank"&gt;JSON&lt;/a&gt; (JavaScript
Object Notation) est bien connu des développeurs Ajax. Ce format d’échange tiré du
monde JavaScript a su se positionner comme le standard de facto pour les API Ajax
ou REST étant aussi lisible que XML tout en étant plus simple. Dans le monde .NET
il existe quelques librairies pour parser ou générer du JSON, comme par exemple celle
intégrée à WCF via un binding spécifique (&lt;code&gt;webHttpBinding)&lt;/code&gt;et/ou en accédant
directement au sérialiseur dédié : &lt;strong&gt;&lt;a title="fiche MSDN" href="http://msdn.microsoft.com/en-us/library/bb412179.aspx" target="_blank"&gt;DataContractJsonSerializer&lt;/a&gt;.&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Mais pour des scénarios plus avancés on peut se tourner vers d’autres implémentations
comme &lt;a title="site codeplex du projet" href="http://json.codeplex.com/" target="_blank"&gt;Json.NET&lt;/a&gt; qui
en est à sa version 3.5 qui offre une liste de fonctionnalités intéressante :
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Linq to Json 
&lt;li&gt;
Conversion vers/de XML 
&lt;li&gt;
Support de Silvelight&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Voici un exemple trivial de sérialization/désérilization (Contact a une collection
d’Emails qui référence aussi le Contact, cet référence bidirectionnelle est gérée
via une des nombreuses options)
&lt;/p&gt;
&lt;div id="codeSnippetWrapper"&gt;
&lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt; 1:&lt;/span&gt; var
contact = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Individual()&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt; 2:&lt;/span&gt; {&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt; 3:&lt;/span&gt; FirstName
= &lt;span style="color: #006080"&gt;"Matthieu"&lt;/span&gt;,&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt; 4:&lt;/span&gt; LastName
= &lt;span style="color: #006080"&gt;"Duluc"&lt;/span&gt;,&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt; 5:&lt;/span&gt; Birthday
= DateTime.Now&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt; 6:&lt;/span&gt; };&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt; 7:&lt;/span&gt; contact.Emails.Add(&lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Email{
Address = &lt;span style="color: #006080"&gt;"info@nventive.net"&lt;/span&gt;});&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt; 8:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum9"&gt; 9:&lt;/span&gt; var
jsSettings = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; JsonSerializerSettings&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum10"&gt; 10:&lt;/span&gt; {&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum11"&gt; 11:&lt;/span&gt; ReferenceLoopHandling
= ReferenceLoopHandling.Ignore&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum12"&gt; 12:&lt;/span&gt; };&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum13"&gt; 13:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum14"&gt; 14:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; json
= JsonConvert.SerializeObject(contact, Formatting.Indented, jsSettings);&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum15"&gt; 15:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum16"&gt; 16:&lt;/span&gt; var
deserializedContact = JsonConvert.DeserializeObject&amp;lt;Individual&amp;gt;(json, jsSettings);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
et le json généré avec l’option pour indenter les chaînes de caractères :
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/RevueduWebdu3mai_BBF3/Json_1.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="le Json g&amp;eacute;n&amp;eacute;r&amp;eacute;" border="0" alt="le Json g&amp;eacute;n&amp;eacute;r&amp;eacute;" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/RevueduWebdu3mai_BBF3/Json_thumb_1.png" width="644" height="482"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Elle est assez flexible pour s’adapter avec du &lt;a title="question sur SO" href="http://stackoverflow.com/questions/286721/json-net-and-nhibernate-lazy-loading-of-collections" target="_blank"&gt;code
personnalisé&lt;/a&gt; par exemple avec NHibernate et ses fameuses collections lazy-loadées.
&lt;/p&gt;
&lt;p&gt;
Le fournisseur Linq peut être utilisé pour transformer du Json vers un type personnalisé
autre que celui d’origine :
&lt;/p&gt;
&lt;div id="codeSnippetWrapper"&gt;
&lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt; 1:&lt;/span&gt; &lt;span style="color: #008000"&gt;//json
est une chaîne de caractères&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt; 2:&lt;/span&gt; JObject
individuJson = JObject.Parse(json);&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt; 3:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt; 4:&lt;/span&gt; var
listEmails = from email &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; individuJson[&lt;span style="color: #006080"&gt;"Emails"&lt;/span&gt;].Children()&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt; 5:&lt;/span&gt; select
email[&lt;span style="color: #006080"&gt;"Address"&lt;/span&gt;];&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=3d5de139-bb78-4902-bc79-43676e183b3f" /&gt;</content>
  </entry>
  <entry>
    <title>Revue du web du 26 avril</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2010/04/26/RevueDuWebDu26Avril.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,9a88e3d8-162b-427d-839f-6d6f93224640.aspx</id>
    <published>2010-04-26T14:00:00-07:00</published>
    <updated>2010-04-26T08:07:25.038257-07:00</updated>
    <category term=".net" label=".net" scheme="http://www.nventive.net/Blog2/CategoryView,category,net.aspx" />
    <category term="Revue du Web" label="Revue du Web" scheme="http://www.nventive.net/Blog2/CategoryView,category,RevueDuWeb.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <h2>Les tweets de la semaine 
</h2>
        <p>
          <a href="http://twitter.com/jonguymer/status/12460353845">http://twitter.com/jonguymer/status/12460353845</a> un
article intéressant sur F# et sa place dans Visual Studio 2010 
</p>
        <p>
          <a href="http://twitter.com/jbevain/status/12421787463">http://twitter.com/jbevain/status/12421787463</a> un
billet d’humeur sur C# 4.0, les paramètres et les arguments 
</p>
        <p>
          <a href="http://twitter.com/shanselman/statuses/12542909805">http://twitter.com/shanselman/statuses/12542909805</a> un
créateur de thèmes pour Visual Studio en Javascript, il est temps de redonner un peu
d’amour à votre IDE favori 
</p>
        <h2>La question Stackoverflow 
</h2>
        <p>
          <a href="http://stackoverflow.com/questions/733809/how-did-you-sign-a-contract-to-an-agile-project-not-how-you-think-you-would-ho">http://stackoverflow.com/questions/733809/how-did-you-sign-a-contract-to-an-agile-project-not-how-you-think-you-would-ho</a> On
aime bien SCRUM ici, mais comment vendre un projet qui utilise cette méthodologie
quand on fait un développement au forfait. Une petite liste de retours d’expérience
sur cet épineux problème. 
</p>
        <h2>Actualités Microsoft et Actualités “Alt.NET” 
</h2>
        <p>
Où l’on reparle de la fondation Codeplex. Il y a deux mois  le projet <a href="http://mvccontrib.codeplex.com/">MvcContrib</a> était <a href="http://www.codeplex.org/News/tabid/88/articleType/ArticleView/articleId/10/The-CodePlex-Foundation-Accepts-MVC-Contrib-project-into-ASPNet-Open-Source-Gallery.aspx">intégré</a> dans
la fondation CodePlex et ce fut le premier projet complètement indépendant de Microsoft
à le faire. ASP.NET MVC est ainsi le Framework chez Microsoft qui reçoit beaucoup
d’attention dans la communauté de développeurs au sens large. 
</p>
        <p>
On en profite pour annoncer une conférence virtuelle autour de <a href="http://www.mvcconf.com/">ASP.NET
MVC</a> qui se déroulera au mois de juillet. 
</p>
        <h2>De l’autre côté 
</h2>
        <p>
Ce n’est pas la première fois qu’on essaie d’optimiser les machines virtuelles avec
des cartes matérielles dédiées. InfoQ a interrogé <a href="http://www.infoq.com/news/2010/04/cliff_click_gc_pauses" target="_blank">Cliff
Click de Azul Systems</a> sur leur machines avec des processeurs dédiés aux applications
JAVA avec des exigences très fortes en termes de volume de données. Java 7 verra un
nouveau Garbage Collection, <a href="http://www.infoq.com/news/2008/05/g1" target="_blank">Garbage
First</a>, un système dit « <a href="http://en.wikipedia.org/wiki/Garbage_collection_(computer_science)#Stop-the-world_vs._incremental_vs._concurrent">low-pause
garbage collector</a> ». Du côté .NET la version 4 de CLR fournit un nouveau mode
« background garbage collection » (non disponible pour la version serveur) on trouvera
des informations pertinentes sur le <a href="http://blogs.msdn.com/tess/archive/2009/05/29/background-garbage-collection-in-clr-4-0.aspx" target="_blank">blog
de Tess Ferrandez</a>.  
</p>
        <h2>Un projet
</h2>
        <p>
L’ordinateur de l’auteur de la revue du web ayant connu un  nettoyage de printemps,
il n’y aura pas de projet cette semaine. On vous laisse avec deux petites vidéos très
“eye candy” de Windows Phone 7 et Office :
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:25c68f02-bcda-4b2c-8872-56225d3b936a" class="wlWriterEditableSmartContent">
          <div id="14ddc68f-05c0-468a-8842-ba22d10cc15d" style="margin: 0px; padding: 0px; display: inline;">
            <div>
              <a href="http://www.youtube.com/watch?v=FBMBQNOHzGc&amp;feature=player_embedded" target="_new">
                <img src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Revueduwebdu26avril_920C/videod44904c3b9d4.jpg" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('14ddc68f-05c0-468a-8842-ba22d10cc15d'); downlevelDiv.innerHTML = &quot;&lt;div&gt;&lt;object width=\&quot;425\&quot; height=\&quot;355\&quot;&gt;&lt;param name=\&quot;movie\&quot; value=\&quot;http://www.youtube.com/v/FBMBQNOHzGc&amp;hl=en\&quot;&gt;&lt;\/param&gt;&lt;embed src=\&quot;http://www.youtube.com/v/FBMBQNOHzGc&amp;hl=en\&quot; type=\&quot;application/x-shockwave-flash\&quot; width=\&quot;425\&quot; height=\&quot;355\&quot;&gt;&lt;\/embed&gt;&lt;\/object&gt;&lt;\/div&gt;&quot;;" alt="" />
              </a>
            </div>
          </div>
        </div>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:679304df-120c-4361-af39-23b74f1a1653" class="wlWriterEditableSmartContent">
          <div id="eacf9aee-129f-4c9e-a9d9-39be6139961d" style="margin: 0px; padding: 0px; display: inline;">
            <div>
              <a href="http://www.youtube.com/watch?v=JHN0vNHyDlw&amp;feature=player_embedded" target="_new">
                <img src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Revueduwebdu26avril_920C/videoe8f635037dd1.jpg" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('eacf9aee-129f-4c9e-a9d9-39be6139961d'); downlevelDiv.innerHTML = &quot;&lt;div&gt;&lt;object width=\&quot;425\&quot; height=\&quot;355\&quot;&gt;&lt;param name=\&quot;movie\&quot; value=\&quot;http://www.youtube.com/v/JHN0vNHyDlw&amp;hl=en\&quot;&gt;&lt;\/param&gt;&lt;embed src=\&quot;http://www.youtube.com/v/JHN0vNHyDlw&amp;hl=en\&quot; type=\&quot;application/x-shockwave-flash\&quot; width=\&quot;425\&quot; height=\&quot;355\&quot;&gt;&lt;\/embed&gt;&lt;\/object&gt;&lt;\/div&gt;&quot;;" alt="" />
              </a>
            </div>
          </div>
        </div>
        <img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=9a88e3d8-162b-427d-839f-6d6f93224640" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Revue du Web du 19 avril</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2010/04/19/RevueDuWebDu19Avril.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,705dd2b4-70a9-4028-899d-9f7087324588.aspx</id>
    <published>2010-04-19T12:00:00-07:00</published>
    <updated>2010-04-19T05:59:52.0608479-07:00</updated>
    <category term=".net" label=".net" scheme="http://www.nventive.net/Blog2/CategoryView,category,net.aspx" />
    <category term="Revue du Web" label="Revue du Web" scheme="http://www.nventive.net/Blog2/CategoryView,category,RevueDuWeb.aspx" />
    <content type="html">&lt;h2&gt;&lt;b&gt;Les tweets de la semaine&lt;/b&gt; 
&lt;/h2&gt;
&lt;p&gt;
&lt;a href="http://twitter.com/atheken/statuses/12038918061"&gt;http://twitter.com/atheken/statuses/12038918061&lt;/a&gt; un
framework de DAL pour Mono en C# marchant avec SqlLite, c’est notre projet de la semaine
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://twitter.com/ufukkilic/statuses/12037707645"&gt;http://twitter.com/ufukkilic/statuses/12037707645&lt;/a&gt; dotCover
un nouvel outil de JetBrains
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://twitter.com/Pete_Brown/statuses/12055857669"&gt;http://twitter.com/Pete_Brown/statuses/12055857669&lt;/a&gt; les
nouvelles fonctionnalités de WPF 4
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;La question Stackoverflow&lt;/strong&gt; 
&lt;/h2&gt;
&lt;p&gt;
&lt;a href="http://stackoverflow.com/questions/1879672/what-exactly-is-the-windows-appfabric"&gt;http://stackoverflow.com/questions/1879672/what-exactly-is-the-windows-appfabric&lt;/a&gt; beaucoup
de personnes se posent : AppFabric c’est quoi ? Une tentative de clarification. On
regrette juste la disparition de Velocity en tant que module de cache indépendant.
&lt;/p&gt;
&lt;h2&gt;&lt;b&gt;Actualités Microsoft&lt;/b&gt;&amp;nbsp;
&lt;/h2&gt;
&lt;p&gt;
Avril, le quatrième mois de l’année aura été aussi le mois du chiffre 4 chez Microsoft
: 4ème version du framework mais aussi Silverlight 4 et bien sûr Visual Studio 2010.
On retrouvera une impressionnante série de vidéos sur les nouveautés du framework
sur Channel 9 :
&lt;/p&gt;
&lt;p&gt;
&lt;a title="vid&amp;eacute;os sur channel9" href="http://channel9.msdn.com/tags/.NET+4/"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="VS2010" border="0" alt="VS2010" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/RevueduWebdu12avril_BBAD/VS2010_1.png" width="510" height="484"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Actualités “Alt.NET”&lt;/strong&gt; 
&lt;/h2&gt;
&lt;p&gt;
On évoquait dans la revue de la semaine dernière les “Domain Events” et depuis Greg
Young a mis en ligne &lt;a title="documents sur Event Sourcing" href="http://groups.google.ca/group/DDDDReviewDiscussion/files"&gt;des
documents&lt;/a&gt; détaillant l‘architecture autour de l’“Event Sourcing”. Après avoir
rappelé les limites des architectures typiques autour de services et les avantages
de l’utilisation des events comme mécanisme de stockage, il décrit plus en détails
les principes de cette architecture comme la simplicité du stockage, l’historique
exhaustif des modifications ou encore le concept de “Rolling Snapshots”. En effet
si on ne stocke plus l’état courant d’un objet mais l’ensemble des évènements qu’il
a connu, quand on requête la base pour le retrouver il faut rejouer ceux-ci. Pour
optimiser cette lecture on peut alors passer par des clichés de l’objet à certains
moments. Enfin il termine par analyser les interfaces utilisateurs contruites autour
de tâches à effectuer (corriger une adresse, soumettre une demande de prêt, …) en
lieu et place de nos habituels CRUD.
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.pledgie.com/campaigns/8615"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;strong&gt;&lt;/strong&gt; 
&lt;p&gt;
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;De l’autre côté&lt;/strong&gt;&amp;nbsp;
&lt;/h2&gt;
&lt;p&gt;
L’équipe de développement de &lt;a title="article sur reddit" href="http://www.reddit.com/r/django/comments/bhvhz/the_onion_uses_django_and_why_it_matters_to_us/"&gt;The
Onion&lt;/a&gt; explique le passage de Drupal (CMS en PHP) à Django (Python). Il semble
que la migration s’est faite par un souci de simplifier la base de code dispersée
entre PHP et Python. Un gain en vitesse, maintenance et stabilité semble donner raison
à cette migration. On retiendra l’utilisation de la partie administration de Django
souvent mise en avant, pour cause elle a sauvé deux mois de développement à l’équipe.
L’architecture utilise maintenant PostgrSql en lieu et place de MySql, haproxy comme
Load Balancer et nginx comme reverse proxy. Enfin l’équipe est composée de 4 personnes
en télé-travail.
&lt;/p&gt;
&lt;p&gt;
Les développeurs .NET peuvent utiliser &lt;a title="le site officiel de IronPython" href="http://ironpython.net/"&gt;IronPython&lt;/a&gt;,
Google a un &lt;a title="Python classes by Google" href="http://code.google.com/edu/languages/google-python-class/"&gt;site
regroupant des cours gratuits&lt;/a&gt; sur le langage.
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Un projet&lt;/strong&gt;
&lt;/h2&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a title="site internet du projet" href="http://www.taimila.com/entify//"&gt;Entify&lt;/a&gt; est
un projet issu du travail d’un développeur finlandais, &lt;a href="http://www.taimila.com"&gt;Lauri
Taimila&lt;/a&gt;, qui est un framework ORM un peu particulier dans le sens où il ne vise
pas le marché des applications d’entreprises mais celui des applications de bureau
et mobile. Il utilise SQLite comme moteur de base de données, il tourne sous la CLR
de Microsoft et Mono, une version compatible MonoTouch est disponible (on peut donc
l’utiliser dans le développement iPhone), enfin un designer pour MonoDevelop est fourni.
&lt;/p&gt;
&lt;p&gt;
On doit se procurer &lt;a href="http://www.mono-project.com/Main_Page"&gt;Mono&lt;/a&gt; et &lt;a title="site de MonoDevelop" href="http://monodevelop.com/"&gt;MonoDevelop&lt;/a&gt;.
Le binaire prend la forme d’une dll de 61 Ko sans dépendances externes à part SqlLite
de Mono, comme le confirme un petit tour dans Reflector :
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/RevueduWebdu12avril_BBAD/Reflector_Entify.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Entify dans Reflector" border="0" alt="Entify dans Reflector" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/RevueduWebdu12avril_BBAD/Reflector_Entify_thumb.png" width="240" height="220"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
On peut installer MonoDevelop dans une &lt;a title="lien vers l'image de la machine virtuelle pr&amp;eacute;- install&amp;eacute;e" href="http://www.mono-project.com/GettingStartedWithMonoVS"&gt;image
virtuelle VMWare OpenSuse&lt;/a&gt; fournie par Novell pour un autre produit (Mono Tools
for Visual Studio).
&lt;/p&gt;
&lt;p&gt;
Voici notre application de test :
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/RevueduWebdu12avril_BBAD/MonoDevelop.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="MonoDevelop IDE" border="0" alt="MonoDevelop IDE" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/RevueduWebdu12avril_BBAD/MonoDevelop_thumb.png" width="644" height="313"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/RevueduWebdu12avril_BBAD/Form.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="le formulaire de test" border="0" alt="le formulaire de test" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/RevueduWebdu12avril_BBAD/Form_thumb.png" width="354" height="396"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Un designer permet de spécifier les entités (une classe partielle peut être générée
pour ajouter du code), on y trouve aussi la définition des associations et des propriétés
sur lesquelles on peut définir des règles de validation (personnalisées ou non) :
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/RevueduWebdu12avril_BBAD/diagramm.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="la diagramme de classe" border="0" alt="la diagramme de classe" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/RevueduWebdu12avril_BBAD/diagramm_thumb.png" width="644" height="484"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Un zoom sur la définition des règles de validation :
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;&lt;a href="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/RevueduWebdu12avril_BBAD/ValidationRule.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="d&amp;eacute;finition de r&amp;egrave;gles de validation" border="0" alt="d&amp;eacute;finition de r&amp;egrave;gles de validation" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/RevueduWebdu12avril_BBAD/ValidationRule_thumb.png" width="347" height="399"&gt;&lt;/a&gt; Voici
un exemple d’utilisation de l’API :
&lt;/p&gt;
&lt;pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #008000"&gt;//on
utilise sqllite en local&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;EntityContextSettings settingsEntify = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; EntityContextSettings() &lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;{  
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;    PersistentStoreLocation = "&lt;span style="color: #8b0000"&gt;/home/rupert/myFormDB.entifydb&lt;/span&gt;", &lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;    EnforceValidationRules = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;, &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;	ContextName = "&lt;span style="color: #8b0000"&gt;Main&lt;/span&gt;", &lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;	InMemory = &lt;span style="color: #0000ff"&gt;false&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;}; 
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #008000"&gt;//creation
du contexte entify&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;EntityContext context = EntityContextFactory.GetContext(settingsEntify);
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;var customer = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Customer(); &lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;customer.Id = Guid.NewGuid();
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;customer.Birthday = datbirthDate.Date;
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;customer.Firstname = firstNameTxtBX.Text;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;customer.Lastname = lastNameTxtBX.Text;
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;customer.Email = emailTxtBX1.Text;	
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;try&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;{  
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;	&lt;span style="color: #008000"&gt;//prend
un snapshot avan modification&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;	&lt;span style="color: #0000ff"&gt;long&lt;/span&gt; snapshotAfter
= context.TakeSnapshot(); &lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;	&lt;span style="color: #008000"&gt;//on
peut pas ajouter une nouvelle adresse directement&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;	&lt;span style="color: #008000"&gt;//il
faut passer par le Add au context&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;	&lt;span style="color: #008000"&gt;//customer.Adresses.Add(new
Address{ City= "Montreal" });&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;	
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;	var address = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Address{
Id= Guid.NewGuid() ,City= "&lt;span style="color: #8b0000"&gt;Montreal&lt;/span&gt;" }; &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;	context.Add(address);
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;	customer.Adresses.Add(address);
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;	
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;	&lt;span style="color: #008000"&gt;//ajoute
l' entite =&amp;gt; validation&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;    context.Add(customer);			
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;	&lt;span style="color: #008000"&gt;//autres
actions sur le context&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;	&lt;span style="color: #008000"&gt;//(...)&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;	var customers = context.GetAll&amp;lt;Customer&amp;gt;();
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;}  
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;catch&lt;/span&gt;(ValidationException
exe) &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;{  
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;    ValidationResults r = exe.ValidationResults; 
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;	var dialog = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; MessageDialog(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;, &lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;	                               DialogFlags.Modal,
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;	                               MessageType.Error,
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;	                               ButtonsType.Ok,
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;	                               exe.Message);
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;	dialog.Show();	
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;	&lt;span style="color: #008000"&gt;//context.RevertToSnapshot(snapshotAfter);&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;}&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;
Le framework gère aussi une API simple de requêtage avec filtre et pagination. La
possibilité de prendre des cliché de la base est intéressante dans le cadre de suivi
de modifications avant un renvoi vers un serveur. Cette librairie est certes simple
mais pour des utilisations bien ciblées (iPhone, applications de bureau indépendantes)
elle reste séduisante.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=705dd2b4-70a9-4028-899d-9f7087324588" /&gt;</content>
  </entry>
  <entry>
    <title>Revue du Web du 12 avril</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2010/04/12/RevueDuWebDu12Avril.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,a731f1c0-cc88-4989-83a3-aeed8fcdea91.aspx</id>
    <published>2010-04-12T12:00:00-07:00</published>
    <updated>2010-04-12T04:57:05.2145347-07:00</updated>
    <category term=".net" label=".net" scheme="http://www.nventive.net/Blog2/CategoryView,category,net.aspx" />
    <category term="Revue du Web" label="Revue du Web" scheme="http://www.nventive.net/Blog2/CategoryView,category,RevueDuWeb.aspx" />
    <content type="html">&lt;h2&gt;&lt;b&gt;Les tweets de la semaine&lt;/b&gt; 
&lt;/h2&gt;
&lt;p&gt;
&lt;a href="http://twitter.com/rajkaimal/statuses/11681362631"&gt;http://twitter.com/rajkaimal/statuses/11681362631&lt;/a&gt; les
Threads et ASP.NET, une longue histoire qui ne se finit pas.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://twitter.com/carlodiban/statuses/11681569277"&gt;http://twitter.com/carlodiban/statuses/11681569277&lt;/a&gt; Enterprise
Library 5 est sorti
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://twitter.com/Elsheimy/statuses/11877201716"&gt;http://twitter.com/Elsheimy/statuses/11877201716&lt;/a&gt; Marshaling,
un livre.
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;La question Stackoverflow&lt;/strong&gt; 
&lt;/h2&gt;
&lt;p&gt;
&lt;a href="http://stackoverflow.com/questions/1596158/good-introduction-to-the-net-reactive-framework"&gt;http://stackoverflow.com/questions/1596158/good-introduction-to-the-net-reactive-framework&lt;/a&gt; on
parlait la semaine dernière de Reactive Framework pour Javascript mais certains l’aborderont
sans doute plus dans le cadre de développement .NET, voici une liste de ressources
sur l’API avec un tutorial qui fournit une très bonne vue d’ensemble.
&lt;/p&gt;
&lt;h2&gt;&lt;b&gt;Actualités Microsoft&lt;/b&gt;&amp;nbsp;
&lt;/h2&gt;
&lt;p&gt;
Nous en parlions la semaine dernière, le lancement d’office 2010 arrive bientôt et
si on connaît déjà bien les produits de base, &lt;a title="article de CNET" href="http://news.cnet.com/8301-13860_3-20001979-56.html?tag=mncol;title"&gt;CNET
nous indique&lt;/a&gt; que la version gratuite dite “Starter” fera bien partie de l’offre
de l’éditeur. Cette version ne contiendra que Word et Excel avec des publicités mais
non contextuelles (heureusement, rendez-vous compte si Microsoft commence à lire vos
documents, quelle menace sur la vie privée …). Les particuliers font sans doute faire
un mélange de cette version et des futures éditions en ligne. Celles-ci sont même &lt;a title="portail sur les &amp;eacute;ditions en ligne priv&amp;eacute;es de Office" href="http://technet.microsoft.com/en-us/office/ee815687.aspx"&gt;installables
sur des serveurs privées&lt;/a&gt; : il est vrai que certaines entreprises sont réticentes
à mettre des documents sensibles en ligne (voir &lt;a title="Twitter probl&amp;egrave;me" href="http://www.thebigmoney.com/blogs/feeling-lucky/2009/07/16/twitters-google-docs-hacked"&gt;le
problème de Twitter&lt;/a&gt;) mais pouvoir partager. éditer facilement des documents à
travers un simple navigateur est devenu presque une nécessité.
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Actualités “Alt.NET”&lt;/strong&gt; 
&lt;/h2&gt;
&lt;p&gt;
Une des plus grandes conférence ouverte s’est déroulée ce week-end à Seattle : &lt;a title="wiki de la conf&amp;eacute;rence" href="http://sites.google.com/site/altnetseattleconference2010/home"&gt;Alt.Net
Seattle Conference 2010&lt;/a&gt;. D’une durée de 3 jours, l’évènement commence par une &lt;a title="liste des ateliers" href="http://sites.google.com/site/altnetseattleconference2010/workshops"&gt;journée
classique avec des ateliers&lt;/a&gt; sur des sujets connus d’avance comme F#, TDD ou Javascript.
Le &lt;a href="http://sites.google.com/site/altnetseattleconference2010/sessions"&gt;planning
des deux autres jours&lt;/a&gt; se décide par un processus de suggestion/vote.
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.pledgie.com/campaigns/8615"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;strong&gt;&lt;/strong&gt; 
&lt;p&gt;
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;De l’autre côté&lt;/strong&gt;&amp;nbsp;
&lt;/h2&gt;
&lt;p&gt;
La blogosphère des développeurs est en émoi après la publication de la version beta
du SDK de l’íPhone 4.0. Le nouvel accord de licence contient une restriction sur les
applications dont le code a été généré. Ceci mets en péril les outils de développement
qui permettent de coder dans un autre langage qu’Objective-C et de générer un binaire
“iPhone” (MonoTouch avec C#, Titanium avec HTML/JS et Adobe avec Flash). &lt;a title="article sur l'affaire par Ars Technica" href="http://arstechnica.com/apple/news/2010/04/apple-takes-aim-at-adobe-or-android.a"&gt;Ars
Technica&lt;/a&gt; a très bien résumé la situation : Apple est allé trop loin pour contrer
Adobe (et fait des dommages collatéraux). Certains invoquent la protection de la plateforme
contre des applications médiocres car ciblant plusieurs plates-formes (MonoTouch permet
de générer aussi un binaire pour Androïd) mais on sait tous que toutes les applications
natives ne sont pas elles-mêmes parfaites.
&lt;/p&gt;
&lt;p&gt;
On espère que Microsoft qui a une plus longue expérience avec des développeurs externes
(il faut rappeler qu’Apple a publié un SDK contre son gré presque puisque seule les
applications web étaient autorisées pour le premier iPhone) saura tirer parti du comportement
presque tyrannique d’Apple avec ses partenaires tout en conservant une plate-forme
cohérente (un défaut d’Androïd). Ceci n’est pas un compromis facile.
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Un projet&lt;/strong&gt;
&lt;/h2&gt;
&lt;p&gt;
On a déjà évoqué Noda Time, le portage d’une librairie Java en C#. Cette API permet
de manipuler des concepts temporels plus facilement qu’avec les classes de base du
framework (DateTime, TimeSpan etc.). La librairie n’est pas encore disponible mais
on peut déjà accèder au code source sur le &lt;a title="site de Noda Time" href="http://code.google.com/p/noda-time/source/checkout"&gt;site
internet dédié&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
En regardant le projet on peut voir que les choses avancent vite, heureusement le
projet de tests est là pour nous éclairer un peu :
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/RevueduWebdu12avril_BBAD/projects.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="vue d'ensemble de Noda time" border="0" alt="vue d'ensemble de Noda time" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/RevueduWebdu12avril_BBAD/projects_thumb.png" width="185" height="484"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
En regardant les tests sur les fuseaux horaires on peut voir des problèmes non triviaux
comme la gestion des changements d’heure d’été/hiver au cours du temps :
&lt;/p&gt;
&lt;pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #008000"&gt;//
Make sure we deal with the uncached time zone&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;readonly&lt;/span&gt; IDateTimeZone
Paris = DateTimeZones.ForId("&lt;span style="color: #8b0000"&gt;Europe/Paris&lt;/span&gt;").Uncached(); &lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #008000"&gt;//
Until 1911, Paris was 9 minutes and 21 seconds off UTC.&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;readonly&lt;/span&gt; Offset
InitialOffset = Offset.Create(0, 9, 21); &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;[Test]
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; FirstTransitions() &lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;{
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;	&lt;span style="color: #008000"&gt;//
Paris had a name change in 1891, and then moved from +0:09:21 to UTC in 1911&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;	var nameChangeInstant = Instant.FromUtc(1891, 3, 14, 23, 51, 39);
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;	var utcChangeInstant = Instant.FromUtc(1911, 3, 10, 23, 51, 39);
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;	var beforeNameChange = Paris.GetZoneInterval(nameChangeInstant - Duration.One);
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;	var afterNameChange = Paris.GetZoneInterval(nameChangeInstant);
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;	var afterSmallChange = Paris.GetZoneInterval(utcChangeInstant);
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;	Assert.AreEqual("&lt;span style="color: #8b0000"&gt;LMT&lt;/span&gt;",
beforeNameChange.Name); &lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;	Assert.AreEqual(InitialOffset, beforeNameChange.Offset);
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;	Assert.AreEqual("&lt;span style="color: #8b0000"&gt;PMT&lt;/span&gt;",
afterNameChange.Name); &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;	Assert.AreEqual(InitialOffset, afterNameChange.Offset);
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;	Assert.AreEqual("&lt;span style="color: #8b0000"&gt;WET&lt;/span&gt;",
afterSmallChange.Name); &lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;	Assert.AreEqual(Offset.Zero, afterSmallChange.Offset);
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;}&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;
Les principaux concepts sont :
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Calendrier : système de temps dont celui respectant la norme ISO8601 ou celui basé
sur le système Grégorien 
&lt;li&gt;
Chronology : un calendrier avec un fuseau horaire 
&lt;li&gt;
Instant : représente un instant dans le temps 
&lt;li&gt;
Interval : un intervalle entre deux instants 
&lt;li&gt;
Duration : le TimeSpan, une durée exprimée en Ticks&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;Duration test = Duration.FromStandardDays(1);&lt;/pre&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;
Period : permet d’exprimer une duration dans des unités différentes comme mois, année
etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;var eightWeeks = Weeks.From(8);
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;var twoWeeks = Weeks.Two;
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;var sixWeeks = eightWeeks - twoWeeks;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;
Un exemple de calcul avec ses différents concepts 
&lt;/p&gt;
&lt;pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #008000"&gt;//
2002-06-09&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;long TestTimeNow =
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;(Y2002Days + 31L + 28L + 31L + 30L + 31L + 9L - 1L) * NodaConstants.MillisecondsPerDay;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #008000"&gt;//
2002-04-05&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;long TestTime1 =
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;(Y2002Days + 31L + 28L + 31L + 5L - 1L) * NodaConstants.MillisecondsPerDay
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;+ 12L * NodaConstants.MillisecondsPerHour
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;+ 24L * NodaConstants.MillisecondsPerMinute;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;var debut = new Instant(TestTime1);
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;var fin = new Instant(TestTimeNow);
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;var interval = new Interval(debut, fin);
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;var dureeInterval = interval.Duration;
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;var period = Period.From(dureeInterval);&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;
Les tests ne sont pas encore très parlants et la documentation non existante mais
on suivra ce projet avec intérêt.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=a731f1c0-cc88-4989-83a3-aeed8fcdea91" /&gt;</content>
  </entry>
  <entry>
    <title>Revue du Web 5 avril</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2010/04/05/RevueDuWeb5Avril.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,17286628-d04d-41a0-bcdb-d9a1f77575cf.aspx</id>
    <published>2010-04-05T12:00:00-07:00</published>
    <updated>2010-04-05T05:46:41.3650184-07:00</updated>
    <category term=".net" label=".net" scheme="http://www.nventive.net/Blog2/CategoryView,category,net.aspx" />
    <category term="Revue du Web" label="Revue du Web" scheme="http://www.nventive.net/Blog2/CategoryView,category,RevueDuWeb.aspx" />
    <content type="html">&lt;h2&gt;&lt;b&gt;Les tweets de la semaine&lt;/b&gt; 
&lt;/h2&gt;
&lt;p&gt;
&lt;a href="http://twitter.com/AdaTheDev/statuses/11296750619"&gt;http://twitter.com/AdaTheDev/statuses/11296750619&lt;/a&gt; un
podcast sur NServiceBus
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://twitter.com/neilkilbride/statuses/11303426526"&gt;http://twitter.com/neilkilbride/statuses/11303426526&lt;/a&gt; on
en parlait dans la revue du web il y a un moment, .LESS un framework de CSS dynamique
pour .NET semble plaire
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;&lt;a href="http://twitter.com/webtopics/statuses/11478950321"&gt;http://twitter.com/webtopics/statuses/11478950321&lt;/a&gt; un
nouveau monde de debugging s’ouvre à ASP.NET
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;La question Stackoverflow&lt;/strong&gt; 
&lt;/h2&gt;
&lt;p&gt;
&lt;a href="http://stackoverflow.com/questions/2443697/tdd-exercise-ideas"&gt;http://stackoverflow.com/questions/2443697/tdd-exercise-ideas&lt;/a&gt; Des
idées de TDD pour s’exercer ou donner l’envie à ses collègues de s’essayer avant de
plonger dans le vrai TDD.
&lt;/p&gt;
&lt;h2&gt;&lt;b&gt;Actualités Microsoft&lt;/b&gt;&amp;nbsp;
&lt;/h2&gt;
&lt;p&gt;
Une semaine très calme dans le Monde MS, sans doute parce que tout le monde se prépare
pour la sortie conjointe de Visual Studio 2010 et de la version 4 du framework le
12 avril prochain. Un mois après, le 12 mai exactement, intervient la sortie officielle
d’Office 2010 et Sharepoint 2010 (les particuliers devront attendre le mois de juin).
Dans l’article de &lt;a title="article sur Zdnet news" href="http://blogs.zdnet.com/microsoft/?p=5776&amp;amp;tag=col1;post-5776"&gt;Marie
Jo Foley&lt;/a&gt;&amp;nbsp; consacré aux futures conférences on peut apprendre aussi qu’il
n’y aura sans doute pas de PDC cette année.
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Actualités “Alt.NET”&lt;/strong&gt; 
&lt;/h2&gt;
&lt;p&gt;
Eric Evans auteur du livre &lt;a href="http://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1238687848&amp;amp;sr=8-1"&gt;Domain-Driven
Design: Tackling Complexity in the Heart of Software&lt;/a&gt; propose &lt;a title="lien pour s'inscrire &amp;agrave; la newsletter" href="http://domainlanguage.com/phplist/?p=subscribe&amp;amp;id=1"&gt;une
newsletter&lt;/a&gt; sur l’actualité de sa société mais aussi sur son travail depuis la
sortie de son livre en 2003. Dans sa dernière édition il parle des “Domain Events”.
Il les considère comme un pattern à part entière aux côtés des entités, des “value
objects” etc.&amp;nbsp; Autant il est facile de représenter l’état courant de nos objets
du domaine, il est plus difficile d’accéder à l’historique&amp;nbsp; des évènements qui
ont amené à cet état. Cela peut être pour répondre à des exigences légales ou tout
simplement pour repérer dans le temps l’apparition d’un erreur. Les évènements sont
généralement marqués dans le temps et sont immutables. Il cite enfin CQRS étant une
architecture mettant les évènements au centre des préoccupations – on pourra consulter
aussi le blog de Greg Young sur “&lt;a title="event sourcing par Greg Young" href="http://codebetter.com/blogs/gregyoung/archive/2010/02/20/why-use-event-sourcing.aspx"&gt;Event
Sourcing&lt;/a&gt;” qui pousse le concept encore plus loin en supprimant le stockage d’un
état courant pour ne retenir seulement que les évènements.
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.pledgie.com/campaigns/8615"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;strong&gt;&lt;/strong&gt; 
&lt;p&gt;
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;De l’autre côté&lt;/strong&gt;&amp;nbsp;
&lt;/h2&gt;
&lt;p&gt;
&amp;nbsp;&lt;a title="site internet de Matt Raible" href="http://raibledesigns.com"&gt;Matt
Raible&lt;/a&gt;, célèbre bloggeur du monde web Java, a fait une chronologie des frameworks
web qu’on peut retrouver sur &lt;a title="la photo de la chronologie" href="http://www.flickr.com/photos/mraible/4378559350/"&gt;flickr&lt;/a&gt; : 
&lt;/p&gt;
&lt;p&gt;
&lt;a title="History of Web Frameworks" href="http://www.flickr.com/photos/37996621819@N01/4378559350/"&gt;&lt;img border="0" alt="History of Web Frameworks" src="http://farm5.static.flickr.com/4067/4378559350_7881a08e7a.jpg" width="500" height="234"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
crédit : Matt Raible
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Dans sa &lt;a title="billet sur le session &amp;agrave; TSSS" href="http://raibledesigns.com/rd/entry/tssjs_2010_presentations_and_summary"&gt;présentation&lt;/a&gt; on
peut entrevoir cette évolution depuis MVC (Struts 1) vers Component (Flex, GWT) et
les nouveaux défis qu’apporte HTML5 pour les technologies RIA. On y trouvera aussi
un&amp;nbsp; comparatif Flex/GWT qu’on peut aussi bien appliquer à Silverlight.
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Un projet&lt;/strong&gt;
&lt;/h2&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
On connait tous notre bonne vieille “Output window” de Visual Studio qui nous permet
d’accéder à la sortie standard des programmes. Mais parfois cela n’est pas suffisant
comme par exemple avec les applications ASP.NET et log4net. &lt;a title="site internet de logview4net" href="http://logview4net.com/"&gt;Logview4net&lt;/a&gt; peut
vous servir énormément. 
&lt;/p&gt;
&lt;p&gt;
log4viewnet arrive avec un écran prêt pour configurer un UDP Appender très utilisé
avec AS.NET par exemple (n’oubliez pas d’utiliser l’IP 127.0.0.2 pour les PC sous
Vista/Windows 7 c’est un bug de log4net 1.2.10). Ici une configuration typique pour
NHibernate :
&lt;/p&gt;
&lt;pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;log4net&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;   &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;appender&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"udpLogAppender"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"log4net.Appender.UdpAppender"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;      &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;encoding&lt;/span&gt; &lt;span style="color: #ff0000"&gt;value&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"utf-16"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;      &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;remoteAddress&lt;/span&gt; &lt;span style="color: #ff0000"&gt;value&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"127.0.0.2"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;      &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;remotePort&lt;/span&gt; &lt;span style="color: #ff0000"&gt;value&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"8888"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;      &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;layout&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"log4net.Layout.PatternLayout"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;conversionPattern&lt;/span&gt; &lt;span style="color: #ff0000"&gt;value&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"%date
%level [%thread] %type.%method - %message%n%exception"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;      &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;layout&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;appender&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;root&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;      &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;level&lt;/span&gt; &lt;span style="color: #ff0000"&gt;value&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"ERROR"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;      &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;appender&lt;/span&gt;-&lt;span style="color: #ff0000"&gt;ref&lt;/span&gt; &lt;span style="color: #ff0000"&gt;ref&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"udpLogAppender"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;root&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;logger&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"NHibernate"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;additivity&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"false"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;      &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;level&lt;/span&gt; &lt;span style="color: #ff0000"&gt;value&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"ERROR"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;      &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;appender&lt;/span&gt;-&lt;span style="color: #ff0000"&gt;ref&lt;/span&gt; &lt;span style="color: #ff0000"&gt;ref&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"udpLogAppender"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;logger&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;logger&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"NHibernate.SQL"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;additivity&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"false"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;      &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;level&lt;/span&gt; &lt;span style="color: #ff0000"&gt;value&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"DEBUG"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;      &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;appender&lt;/span&gt;-&lt;span style="color: #ff0000"&gt;ref&lt;/span&gt; &lt;span style="color: #ff0000"&gt;ref&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"udpLogAppender"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;logger&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;log4net&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;
et la configuration de l ‘application : 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/RevueduWeb5avril_B97C/configuration.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="configuration de logview4net" border="0" alt="configuration de logview4net" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/RevueduWeb5avril_B97C/configuration_thumb.png" width="644" height="271"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
et l’application en action :
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/RevueduWeb5avril_B97C/action.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="action" border="0" alt="action" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/RevueduWeb5avril_B97C/action_thumb.png" width="644" height="189"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Vous pouvez changer les couleurs des différents niveaux (INFO, WARNING, DEBUG, ERROR),
faire des recherches (l’utilisation d’expressions régulières est en cours de développement),
faire une pause etc.
&lt;/p&gt;
&lt;p&gt;
On n’est pas limité à l’utilisation d’UDP, une grande variété d’appenders est disponible
: Fichier, Dossiers, SQL, EventLog ou encore RSS :
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/RevueduWeb5avril_B97C/session.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="session RSS et SQL Server" border="0" alt="session RSS et SQL Server" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/RevueduWeb5avril_B97C/session_thumb.png" width="644" height="444"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=17286628-d04d-41a0-bcdb-d9a1f77575cf" /&gt;</content>
  </entry>
  <entry>
    <title>Revue du web du 29 mars</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2010/03/29/RevueDuWebDu29Mars.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,0b4fff31-4869-4c85-bef7-47dccfecbe17.aspx</id>
    <published>2010-03-29T12:00:00-07:00</published>
    <updated>2010-03-29T06:16:20.530906-07:00</updated>
    <category term=".net" label=".net" scheme="http://www.nventive.net/Blog2/CategoryView,category,net.aspx" />
    <category term="Revue du Web" label="Revue du Web" scheme="http://www.nventive.net/Blog2/CategoryView,category,RevueDuWeb.aspx" />
    <content type="html">&lt;h2&gt;&lt;b&gt;Les tweets de la semaine&lt;/b&gt; 
&lt;/h2&gt;
&lt;p&gt;
&lt;a href="http://twitter.com/marktucker/statuses/10890277413"&gt;http://twitter.com/marktucker/statuses/10890277413&lt;/a&gt; l’extension
à l’oeuvre dans Blend avec MEF
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://twitter.com/MWillemse/statuses/10892517988"&gt;http://twitter.com/MWillemse/statuses/10892517988&lt;/a&gt; Si
WCF était un monstre de jeu de rôle, on perdrait 20 points de santé mental rien qu’en
le voyant
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://twitter.com/kmckelvin/statuses/10972370963"&gt;http://twitter.com/kmckelvin/statuses/10972370963&lt;/a&gt;&amp;nbsp;
C’est beau et c’est utile. Le vectoriel a une place dans les applications métier finalement.
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;La question Stackoverflow&lt;/strong&gt; 
&lt;/h2&gt;
&lt;p&gt;
&lt;a href="http://stackoverflow.com/questions/2285045/what-scalability-problems-have-you-solved-using-a-nosql-data-store"&gt;http://stackoverflow.com/questions/2285045/what-scalability-problems-have-you-solved-using-a-nosql-data-store&lt;/a&gt; on
vous parlait la semaine dernière de db4o, une des applications souvent citées dans
le mouvement NoSQL (même si strictement parlant elle se trouve plutôt à la marge).
Voici une question comme on les aime : les réponses proviennent de projets réels où
l’utilisation d’une base de données non relationelle fait du sens.
&lt;/p&gt;
&lt;h2&gt;&lt;b&gt;Actualités Microsoft&lt;/b&gt;&amp;nbsp;
&lt;/h2&gt;
&lt;p&gt;
Quand on parle des trois W dela version 3 de .NET tout le monde arrive à citer WPF
et WCF mais on oublie souvent Windows WorkFlow. Dans ce &lt;a title="un billet sur WF4" href="http://blogs.msdn.com/somasegar/archive/2010/03/22/windows-workflow-foundation-in-net4.aspx"&gt;billet&lt;/a&gt; Soma
Segar essaie de donner un peu de visibilité à la version 4 de l’API qui n’a rien à
voir avec la version 3. 
&lt;/p&gt;
&lt;p&gt;
Le designer a été ré-écrit en WPF ce qui pourra sans doute améliorer son intégration
dans des applications tiers, la définition de processus étant souvent un travail effectué
par une personne loin de savoir manipuler Visual Studio (et le code). Les workflow
sont aussi définis en XAML (une porte ouverte pour des outils externes ?). Un nouveau
type de process existe : FlowChart qui expose des process pouvant connaître un retour
en arrière et/ou des conditions simples comme le switch ou decision.
&lt;/p&gt;
&lt;p&gt;
Le modèle de programmation a été simplifié : fini l’obligation d’avoir un runtime
pour exécuter un workflow, ceci peut se faire plus facilement notamment dans les tests.
Enfin l’intégration avec WCF a été aussi revue avec de nouvelles activités pour interagir
avec un service (dont une gestion de la corrélation de plusieurs messages) et une
configuration plus déclarative.
&lt;/p&gt;
&lt;p&gt;
Le designer en mode “hosté” : 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Revueduwebdu29mars_FB65/WFDesigner.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="le designer de WF en mode host&amp;eacute;" border="0" alt="le designer de WF en mode host&amp;eacute;" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Revueduwebdu29mars_FB65/WFDesigner_thumb.png" width="696" height="448"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Actualités “Alt.NET”&lt;/strong&gt; 
&lt;/h2&gt;
&lt;p&gt;
Décidémment Mono fait beaucoup parler de lui en ce moment. Mais cette fois-ci ce n’est
pas technique. Etant à l’intersection des mondes Open Source Linux et de Microsoft
il y a parfois des frictions des deux bords comme par exemple quand Miguel de Icaza
a reçu le titre de MVP ou quand Mono a été inclu dans les package de base de Ubuntu.
Aujourd’hui c’est encore une nouvelle qui est allée trop vite : une &lt;a title="article sur l'article fant&amp;ocirc;me" href="http://www.the-source.com/2010/03/the-disappearing-article-mystery/"&gt;allégation&lt;/a&gt; d’un
article du SD Times sur une déclaration du leader du projet sur la gestion par Microsoft
de la communauté.NET. L’interessé a éclairci les choses dans un &lt;a title="les explications de Miguel de Icaza" href="http://tirania.org/blog/archive/2010/Mar-25.html"&gt;billet&lt;/a&gt; très
intéressant. Il reconnaît que Microsoft fournit avec le .NET framework un produit
excellent mais regrette qu’il est fermé la porte à une plus grande communauté quand
Java avec la fondation Apache par exemple offre un choix d’outils, frameworks plus
grands . Dans un dernier point il dit avoir espoir car la nouvelle équipe aux commandes
de Microsoft a déjà changé pas mal de choses avec les projets comme ASP.NET MVC, le
changement de licence sur certaines parties du framework ou encore la nouvelle fondation
codeplex.org.
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.pledgie.com/campaigns/8615"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;strong&gt;&lt;/strong&gt; 
&lt;p&gt;
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;De l’autre côté&lt;/strong&gt;&amp;nbsp;
&lt;/h2&gt;
&lt;p&gt;
Adobe a publié cette semaine une nouvelle version de ses outils de développement Flex
Builder renommé Flash Builder. La quatrième incarnation de l’IDE RIA est toujours
basée sur Eclipse. Cette publication coïncide aussi avec le SDK – gratuit et open
source- Flex SDK.&amp;nbsp; Flash Catalyst le nouveau outil de design permet de profiter
du nouveau système de composants (Spark) en exportant des designs vectoriels vers
un format compatible de Flex. Les composants ont donc leur comportement séparé de
leur rendu (penser au couple Button.cs et Themes\generic.xaml en WPF).
&lt;/p&gt;
&lt;p&gt;
Flex est basé sur un langage déclaratif XML pour définir son interface utilisateur
(MXML) et ActionScript comme langage de programmation. Un autre langage existe (FXG)
qui rend compatible des artefacts créés dans d’autres outils d’Adobe. La plateforme
a enrichi son databinding aussi en rendant plus facile la définition de databinding
bi-directionelle.
&lt;/p&gt;
&lt;p&gt;
Outre les nouveautés de l’outil comme une meilleure génération (getter, setter, event
handler), la possibilité d’ajouter des breakpoints conditionnels. 
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Un projet&lt;/strong&gt;
&lt;/h2&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a title="le site web du projet" href="http://msdn.microsoft.com/en-us/devlabs/ee794896.aspx"&gt;Reactive
Extensions (Rx) est&lt;/a&gt; un projet de devlabs chez Microsoft qui a connu une certaine
notoriété car Erik Meijer, le créateur de Linq, fait partie de l’équipe à l’origine
de cette nouvelle API. Il est apparu d’abord dans Silverlight puis a été promu dans
le framework et enfin une version pour Javascript est apparue après la conférence
MIX10. 
&lt;/p&gt;
&lt;p&gt;
Rx se propose de simplifier le modèle de programmation asynchrone et événementielle
en renversant la relation que nous avons d’habitude entre une série d’appels ou d’évènements
et les fonctions de callbacks associées. Pour cela il utilise un patron de conception
connu : Observable/Oberserver et l’applique aux Collections. Si on décompose le concept
cela donnerait cet enchaînement : un évènement donné (MouseOver) peut-être vu comme
une série (une collection) et cet ensemble peut être observé. A chaque fois qu’une
nouvelle instance est créée (un mouseover x y) i.e. un élèment ajouté, le sujet (l’observé)
appelle la fonction OnNext sur les observeurs. Certains l ‘appréhendent aussi comnme
le relation inverse de l’énumerator où c’est votre code qui va chercher un par un
les élèments de la collection. Rx expose aussi OnError pour gérer les cas d’erreur
et Completed pour être prévenu lorsque le sujet n ‘est plus.
&lt;/p&gt;
&lt;p&gt;
L’installation par un package msi fournit un fichier de documentation des classes
et une page html d’exemple. On y trouve une version pour ScriptSharp et une version
Javascript (sans intellisense pour Visual Studio pour le moment) :
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Revueduwebdu29mars_FB65/RxInstaller.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Rx Installer" border="0" alt="Rx Installer" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Revueduwebdu29mars_FB65/RxInstaller_thumb.png" width="330" height="255"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Les fichiers installés pour la version Javascript : 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Revueduwebdu29mars_FB65/Installation.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Installation" border="0" alt="Installation" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Revueduwebdu29mars_FB65/Installation_thumb.png" width="424" height="165"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Il faut aussi passer par un &lt;a title="instructions sur le forum pour g&amp;eacute;n&amp;eacute;rer la documentation" href="http://social.msdn.microsoft.com:80/Forums/en-US/rx/thread/5168db3f-b29a-4fa5-b1d5-46bfb3a48e77"&gt;petit
hack&lt;/a&gt; si on veut la complétion automatique dans Visual Studio (en espérant que
cela soit résolu pour la version finale).
&lt;/p&gt;
&lt;p&gt;
Voici un exemple sur l’évènement click où à chaque occurence nous imprimons dans une
div les coordonnées :
&lt;/p&gt;
&lt;pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #008000"&gt;//element
cible&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;var&lt;/span&gt; element
= $("&lt;span style="color: #8b0000"&gt;#maDivClickable&lt;/span&gt;").get(0); &lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #008000"&gt;//observable
à partir de l'élèment et de l'event&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;var&lt;/span&gt; observable
= Rx.Observable.FromHtmlEvent(element, "&lt;span style="color: #8b0000"&gt;click&lt;/span&gt;"); &lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #008000"&gt;//ajout
d'un observer&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt; observable.Subscribe(&lt;span style="color: #0000ff"&gt;function&lt;/span&gt; (clickEvent)
{ &lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;      &lt;span style="color: #0000ff"&gt;var&lt;/span&gt; result
= $("&lt;span style="color: #8b0000"&gt;#resultat&lt;/span&gt;"); &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;      result.html("&lt;span style="color: #8b0000"&gt;vous
avez cliqué à la position : &lt;/span&gt;" &lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;            + clickEvent.clientX + "&lt;span style="color: #8b0000"&gt; , &lt;/span&gt;"
+ clickEvent.clientY); &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt; });&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;
&lt;a href="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Revueduwebdu29mars_FB65/ClickExemple.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="le rendu de l'exemple" border="0" alt="le rendu de l'exemple" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Revueduwebdu29mars_FB65/ClickExemple_thumb.png" width="460" height="162"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Rien de vraiment particulier mais Rx contient quelques méthodes bien pratiques comme &lt;font face="Courier New"&gt;Throttle(dueTime)&lt;/font&gt; qui
permet de réguler les cliques successifs par exemple en fixant une limite minimale
avant de relancer un autre event :
&lt;/p&gt;
&lt;pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;observable.Throttle(1000).Subscribe(..)&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;
ou Skip(1).Zip(prev, next) par exemple pour recevoir l’avant-dernière et la dernière
valeur ou SkipUntil() pour utiliser une condition.
&lt;/p&gt;
&lt;p&gt;
Avant de s’intégrer facilement avec les &lt;a title="annuaire d'API" href="http://www.programmableweb.com/"&gt;API
“Web 2.0”&lt;/a&gt; Rx fournit une méthode pour faire des appels asynchrones successifs
et transformer les résultats en sujet/observable : 
&lt;/p&gt;
&lt;pre&gt;Rx.Observable.XmlHttpRequest(url)&lt;/pre&gt;
&lt;p&gt;
Matthew Podwysocki a écrit &lt;a title="billets sur Rx pour Javascript" href="http://codebetter.com/blogs/matthew.podwysocki/archive/2010/03/21/introduction-to-the-reactive-extensions-for-javascript-jquery-live-event-integration.aspx"&gt;une
série très intéressante&lt;/a&gt; sur Rx pour Javascript et ses usages.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=0b4fff31-4869-4c85-bef7-47dccfecbe17" /&gt;</content>
  </entry>
  <entry>
    <title>Revue du web du 22 mars</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2010/03/22/RevueDuWebDu22Mars.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,4350b398-ed89-4840-bca7-f74d2ba1133b.aspx</id>
    <published>2010-03-22T11:00:00-07:00</published>
    <updated>2010-03-22T04:54:23.6839977-07:00</updated>
    <category term=".net" label=".net" scheme="http://www.nventive.net/Blog2/CategoryView,category,net.aspx" />
    <category term="Revue du Web" label="Revue du Web" scheme="http://www.nventive.net/Blog2/CategoryView,category,RevueDuWeb.aspx" />
    <content type="html">&lt;h2&gt;&lt;b&gt;Les tweets de la semaine&lt;/b&gt; 
&lt;/h2&gt;
&lt;p&gt;
&amp;nbsp;&lt;a href="http://twitter.com/Mix10French/status/10577773952"&gt;http://twitter.com/Mix10French/status/10577773952&lt;/a&gt; quand
on vous dit que c’est une version “developper preview”
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://twitter.com/MSDN_Forum/statuses/10613210551"&gt;http://twitter.com/MSDN_Forum/statuses/10613210551&lt;/a&gt; chercher
des failles potentielles de sécurité à travers le code décompilé de composants.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://twitter.com/snaveen/status/10544872113"&gt;http://twitter.com/snaveen/status/10544872113&lt;/a&gt; tracer
des informations de bas niveau en Silverlight, attention “hack ahead”
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;La question Stackoverflow&lt;/strong&gt; 
&lt;/h2&gt;
&lt;p&gt;
&lt;a href="http://stackoverflow.com/questions/2461319/c-inconsistent-math-operation-result-on-32-bit-and-64-bit"&gt;http://stackoverflow.com/questions/2461319/c-inconsistent-math-operation-result-on-32-bit-and-64-bit&lt;/a&gt; on
pensait ne plus avoir à tenir compte des différents machines quand on développe …
sauf dans certains cas. Une réponse par Eric Lippert, un des designer de C#. On pourra &lt;a title="une autre r&amp;eacute;ponse plus d&amp;eacute;taill&amp;eacute;e" href="http://stackoverflow.com/questions/2342396/why-does-this-floating-point-calculation-give-different-results-on-different-mach/2343351#2343351"&gt;consulter&lt;/a&gt; une
autre réponse plus précise.
&lt;/p&gt;
&lt;h2&gt;&lt;b&gt;Actualités Microsoft&lt;/b&gt;&amp;nbsp;
&lt;/h2&gt;
&lt;p&gt;
La conférence &lt;a title="site web de la con&amp;eacute;rence" href="http://live.visitmix.com/"&gt;MIX10&lt;/a&gt; a
bien tenu ses promesses :
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Silverlight 4 en release candidate :&amp;nbsp; Visual Studio 2010 RC est enfin compatible
avec cette version. 
&lt;li&gt;
Silverlight (sans nom&amp;nbsp; mais c’est une version mini entre le 3 et le 4) pour le
future système d’exploitation des Windows Phone Series 7 avec un &lt;a title="portail pour les d&amp;eacute;veloppeur" href="http://developer.windowsphone.com/windows-phone-7-series/"&gt;site
web dédié&lt;/a&gt;, des outils gratuits en beta et déjà pleins de clients Twitter en préparation 
&lt;li&gt;
Une version preview de Internet Explorer 9 qui montre le support de HTML 5, CSS3,
le nouveau moteur Javascript 
&lt;li&gt;
Microsoft annonce aussi une contribution plus importante dans jQuery (après l’ajout
dans Visual Studio et certains templates) : contribution de code et de ressources
de tests. Que devient ASP.NET AJAX ? Les réponses de Microsoft ne sont pas &lt;a title="r&amp;eacute;ponses de Microsoft sur son r&amp;ocirc;le dans jQuery" href="http://www.vaibhavsathe.com/blog/?p=67"&gt;rassurantes&lt;/a&gt; pour
le projet. 
&lt;li&gt;
OData, le protocole de Astoria-ADO.NET Data Servcices-WCF Services (vous êtes toujours
là ?) se voit doter d’un SDK. On sait aussi que SharePoint et SQL Server Reporting
services exposeront leur contenu via OData. Mais le catalogue des &lt;a href="https://www.sqlazureservices.com/Catalog.aspx"&gt;données
publiques&lt;/a&gt; se construit aussi avec Netflix, Nasa, l’ONU etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Avec ce &lt;a title="billet d&amp;eacute;tailllant les nouvelles de MIX10" href="http://www.hanselman.com/blog/Mix10RollupPost.aspx"&gt;billet&lt;/a&gt; de
Scott Hanselman on peut avoir l’essentiel des liens officiels, on attendra quelques
jours pour avoir le retour de la communauté.
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Actualités “Alt.NET”&lt;/strong&gt; 
&lt;/h2&gt;
&lt;p&gt;
On connaisait Mono sur linux depuis plusieurs années. Souvent considéré plus comme
une preuve de concept plus qu’un vrai runtime, les versions se sont succédées et commencent
à trouver une place dans un mouvement plus vaste. Là on trouverait une architecture
.NET “classique” avec par exemple ASP.MET MVC, Unity, Entity Framework sur un Windows
Server 2008, l’alternative Linux (Mono, Ninject, FubuMVC, NHibernate) n’est plus un
concept. Mais c’est vraiment du côté du développement mobile que Mono nous a surpris
avec MonoTouch, l’environnement .NET pour des applications iPhone/iPod Touch/iPad.
Novell récidive avec Androïd : &lt;a title="une confirmation du travail de Novell" href="http://www.h-online.com/open/news/item/Mono-for-Android-957628.html"&gt;MonoDroid&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.pledgie.com/campaigns/8615"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;strong&gt;&lt;/strong&gt; 
&lt;p&gt;
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;De l’autre côté&lt;/strong&gt; 
&lt;/h2&gt;
&lt;p&gt;
C&lt;a title="les serveurs d'applications comme on les a jamais vu" href="http://ocpsoft.com/java/why-doesnt-jpa-jma-jta-ejb-jsf-cdi-work-jee-is-too-complicated/"&gt;ertains&lt;/a&gt; essaient
de nous convaincre que maintenant il est préférable d’utiliser un serveur d’application
“full fledge” comme JBoss ou GlassFish plutôt qu’un serveur Tomcat “tuné”. Il est
vrai que le temps des containers EJB2 où les applications J2EE prenaient du temps
à se déployer (en plus du développement pas facile) est bien loin. JBoss et GlassFish
font partis de ces produits qui ont fait table rase du passé afin de proposer un container
qui offre les mêmes services mais de façon plus “agile”. &lt;a title="et pendant ce temps dans le monde Java" href="http://java.dzone.com/articles/whats-happening-java-world"&gt;DZone&lt;/a&gt; fait
un très bon résumé du nouveau stack de référence Java EE6 dont le package “web”.&amp;nbsp; 
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Un projet&lt;/strong&gt;
&lt;/h2&gt;
&lt;p&gt;
Il n’est pas facile de tester les interfaces utilisateurs. TDD a bien révolutionné
la façon de coder (et de tester) notre code de composant (quel est son contrat externe,
qu’est-ce que j’attends en entrée, quelle sont les cas passants, non passants etc.)
mais s’attaquer à la couche de présentation avec les outils de tests unitaires n’est
pas le plus approprié d’après Steve Sanderson. Dans ce &lt;a title="billet sur ASP.MET MVC" href="http://blog.stevensanderson.com/2010/03/03/behavior-driven-development-bdd-with-specflow-and-aspnet-mvc/"&gt;billet&lt;/a&gt; il
présente &lt;a title="site web du framework" href="http://specflow.org/"&gt;SpecFlow&lt;/a&gt; un
framework de BDD pour .NET avec une application ASP.NET MVC.
&lt;/p&gt;
&lt;p&gt;
L’intégration dans Visual Studio via le plugin (2008 et 2010) semble bien faite. Les
fichier .features contiennent les spécifications de test :
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Revueduwebdu22mars_BB27/Guestbook_features.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="les fichiers de tests" border="0" alt="les fichiers de tests" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Revueduwebdu22mars_BB27/Guestbook_features_thumb.png" width="220" height="179"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Si on prend pour exemple le test “browsing”&amp;nbsp; avec un breakpoint:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Revueduwebdu22mars_BB27/image_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="exemple de breakpoint" border="0" alt="exemple de breakpoint" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Revueduwebdu22mars_BB27/image_thumb.png" width="603" height="161"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
SpecFlow génère une dll de test NUnit que vous pouvez utiliser pour générer les squelettes
de vos “steps” de votre test en C# :
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Revueduwebdu22mars_BB27/steps.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="g&amp;eacute;neration des steps" border="0" alt="g&amp;eacute;neration des steps" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Revueduwebdu22mars_BB27/steps_thumb.png" width="644" height="418"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Ici compléter avec le framework &lt;a title="site internet du framework" href="http://watin.sourceforge.net/"&gt;WatiN&lt;/a&gt; pour
simuler le navigateur :
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Revueduwebdu22mars_BB27/stpes_implementations.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="impl&amp;eacute;mentation des test en C#" border="0" alt="impl&amp;eacute;mentation des test en C#" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Revueduwebdu22mars_BB27/stpes_implementations_thumb.png" width="644" height="303"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
On peut alors rejouer les test dans NUnit ou avec votre plugin VS préféré (en mode
administrateur) :
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Revueduwebdu22mars_BB27/pass.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="pass" border="0" alt="pass" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Revueduwebdu22mars_BB27/pass_thumb.png" width="644" height="413"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=4350b398-ed89-4840-bca7-f74d2ba1133b" /&gt;</content>
  </entry>
  <entry>
    <title>Revue du web du 15 mars</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2010/03/15/RevueDuWebDu15Mars.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,19ac0641-898d-4759-9aac-3c2c8db3e162.aspx</id>
    <published>2010-03-15T12:00:00-07:00</published>
    <updated>2010-03-15T05:52:04.7519397-07:00</updated>
    <category term=".net" label=".net" scheme="http://www.nventive.net/Blog2/CategoryView,category,net.aspx" />
    <category term="Revue du Web" label="Revue du Web" scheme="http://www.nventive.net/Blog2/CategoryView,category,RevueDuWeb.aspx" />
    <content type="html">&lt;h2&gt;&lt;b&gt;Les tweets de la semaine&lt;/b&gt; 
&lt;/h2&gt;
&lt;p&gt;
&amp;nbsp;&lt;a href="http://twitter.com/gpoune/statuses/10182612504"&gt;http://twitter.com/gpoune/statuses/10182612504&lt;/a&gt; ah
le monde déconnecté :) la consultation de &lt;a title="tout savoir sur le viewstate" href="http://weblogs.asp.net/infinitiesloop/archive/2006/08/03/Truly-Understanding-Viewstate.aspx"&gt;ce
document&lt;/a&gt; sur la gestion viewstate en ASP.NET est en soit un rappel des difficultés
du monde web
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;&lt;a href="http://twitter.com/marcjohnson/statuses/10190244953"&gt;http://twitter.com/marcjohnson/statuses/10190244953&lt;/a&gt; QCon
a toujours eu une bonne réputation, on en reparle dans un instant
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;&lt;a href="http://twitter.com/TigerHasse/statuses/10361767261"&gt;http://twitter.com/TigerHasse/statuses/10361767261&lt;/a&gt; les
nouveaux jouets pour architectes dans Visual Studio 2010
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;La question Stackoverflow&lt;/strong&gt; 
&lt;/h2&gt;
&lt;p&gt;
&amp;nbsp;&lt;a href="http://stackoverflow.com/questions/2432281/get-sum-of-two-columns-in-one-linq-query"&gt;http://stackoverflow.com/questions/2432281/get-sum-of-two-columns-in-one-linq-query&lt;/a&gt; On
est toujours étonné par la puissance de Linq pour ces petites requêtes de la vie de
tous les jours, on en serait où si on avait pas l’opérateur &lt;a title="documentation" href="http://msdn.microsoft.com/en-us/vcsharp/aa336750.aspx#FirstOrDefaultSimple"&gt;FirstOrDefault()&lt;/a&gt; ?
La réponse la plus adaptée utilise un opérateur peu utilisé : le &lt;a title="l'op&amp;eacute;rateur groupby dans la documentation" href="http://msdn.microsoft.com/en-us/vcsharp/aa336754.aspx"&gt;groupby&lt;/a&gt;.
&lt;/p&gt;
&lt;h2&gt;&lt;b&gt;Actualités Microsoft&lt;/b&gt;&amp;nbsp;
&lt;/h2&gt;
&lt;p&gt;
Après avoir lancé son offre commerciale autour des technologies “cloud” sous le nom
Azure au mois de janvier dernier, Microsoft la complète maintenant avec une offre
“serveur d’application”: Azure App Fabric. Cette dernière vient rejoindre Windows
Azure (offre “computing” simple avec des rôles web et/ou services et un stockage non
relationnel) et SQL Azure (base de données relationelle). 
&lt;/p&gt;
&lt;p&gt;
AppFabric se décompose en deux grandes fonctionnalités : 
&lt;/p&gt;
&lt;p&gt;
Un Bus de services pour permettre à des applications d’entreprises (souvent derrière
des pare-feux) de communiquer via Azure :
&lt;/p&gt;
&lt;p&gt;
&lt;a title="page descriptive de AppFabric Azure" href="http://www.microsoft.com/windowsazure/appfabric/"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="diagramme ServiceBus" border="0" alt="diagramme ServiceBus" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Revueduwebdu15mars_104AE/ServiceBus_1.png" width="644" height="413"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
et un composant de gestion d’identité ou fédération et y associer des règles d’accès
:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Revueduwebdu15mars_104AE/AccessControl.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="AccessControl" border="0" alt="AccessControl" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Revueduwebdu15mars_104AE/AccessControl_thumb.png" width="644" height="393"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
On trouvera aussi les prix associés dans ce &lt;a title="d&amp;eacute;tails sur les prix" href="http://blogs.msdn.com/netservices/archive/2010/01/04/announcing-windows-azure-platform-commercial-offer-availability-and-updated-appfabric-pricing.aspx"&gt;billet&lt;/a&gt;.
Un &lt;a title="lien vers le site de t&amp;eacute;l&amp;eacute;chargement" href="http://www.microsoft.com/downloads/details.aspx?FamilyID=39856a03-1490-4283-908f-c8bf0bfad8a5&amp;amp;displaylang=en"&gt;SDK&lt;/a&gt; est
publié.
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Actualités “Alt.NET”&lt;/strong&gt; 
&lt;/h2&gt;
&lt;p&gt;
&lt;a title="le site de la conf&amp;eacute;rence" href="http://qconlondon.com/london-2010/"&gt;QCon&lt;/a&gt; est
une conférence (une édition à Londres et l’autre en Novembre aux USA) sur le développement
informatique organisée par &lt;a title="site d'information" href="http://www.infoq.com"&gt;InfoQ&lt;/a&gt;,
un site d’ínformations sur le monde de l’informatique de l’entreprise (un theserverside.com
des années 2000 pour les plus anciens d’entre nous). Ce qui distingue QCon des autres
conférences ce sont&amp;nbsp; la qualité des présentateurs et les sujets sur des technologies,
méthodes innovante et/ou sur des questions d’architectures peu discutées autre part.
On y trouve des classiques Robert C. Martin mais aussi des sessions sur des architecture
atypiques comme &lt;a title="sessions sur les architectures atypiques" href="http://qconlondon.com/london-2010/tracks/show_track.jsp?trackOID=319"&gt;Skype
ou Facebook&lt;/a&gt;,&amp;nbsp; ou des technologies en particulier (comme &lt;a title="sessions sur .NET" href="http://qconlondon.com/london-2010/tracks/show_track.jsp?trackOID=323"&gt;.NET&lt;/a&gt;).
La &lt;a title="liste des tracks" href="http://qconlondon.com/london-2010/tracks/"&gt;liste
des tracks&lt;/a&gt; en elle-même est assez alléchante.
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.pledgie.com/campaigns/8615"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;strong&gt;&lt;/strong&gt; 
&lt;p&gt;
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;De l’autre côté&lt;/strong&gt; 
&lt;/h2&gt;
&lt;p&gt;
&lt;a href="http://highscalability.com/blog/2010/2/8/how-farmville-scales-to-harvest-75-million-players-a-month.html"&gt;http://highscalability.com/blog/2010/2/8/how-farmville-scales-to-harvest-75-million-players-a-month.html&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Vous avez tous vu dans votre flux de nouvelles sur Facebook ces messages d’amis qui
ont eu telle ou telle récompense dans le jeu FarmVille. Luke Rajlich réponds ici à
quelques questions sur la façon dont on rend disponible une application web utilisée
par 75 millions d’utilisateurs. Le jeu a un ratio de lecture/écriture très différents
d’une application web classique où les utilisateurs passent plus de temps à lire (site
de journal par exemple) qu’à écrire (laisser un commentaire). On y apprend que l’utilisation
de cache est primordiale (classique dans ce genre d’architecture mais ici ils doivent
aussi mettre en cache les données de Facebook), de considére chaque composant (Facebook,
les SGBD, le serveur de cache) comme un point de latence et de pouvoir les isoler
en cas d’incident.
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Un projet&lt;/strong&gt;
&lt;/h2&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
Les bases de données relationelles ont la vie dure en ce moment (voir le mouvement &lt;a title="fiche wikipedia du mouvement" href="http://en.wikipedia.org/wiki/NoSQL"&gt;NoSQL&lt;/a&gt;)
mais est-ce dire que c’est au bénéfice des bases de données orientées objets ? Un
de systèmes OODBMS qui connaît un certain succès est &lt;a title="site internet de l'&amp;eacute;diteur" href="http://developer.db4o.com/"&gt;db4o
de Versant&lt;/a&gt;. La version .NET fournie un plugin d’administration pour Visual Studio
2005 et 2008 : 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Revueduwebdu15mars_104AE/db4omanager.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="la manager db4o dans visual studio" border="0" alt="la manager db4o dans visual studio" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Revueduwebdu15mars_104AE/db4omanager_thumb.png" width="644" height="466"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Le moteur peut s’utiliser en local (fichier) ou pour une connection à un serveur :
&lt;/p&gt;
&lt;pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;IObjectContainer db = 
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;Db4oEmbedded.OpenFile(Db4oEmbedded.NewConfiguration(), YapFileName);&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;
IObjectContainer sera notre UnitOfWork pour dialoguer avec la base de données (il
fournit ainsi les méthodes pour le Commit ou le RollBback) pour&amp;nbsp; :
&lt;/p&gt;
&lt;p&gt;
- Insérer des données :
&lt;/p&gt;
&lt;pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;Pilot pilot1 = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Pilot("&lt;span style="color: #8b0000"&gt;Michael
Schumacher&lt;/span&gt;", 100); &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;db.Store(pilot1);&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;
- Retrouver des données : 
&lt;/p&gt;
&lt;pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;IList&amp;lt;Pilot&amp;gt; result = 
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;        db.Query&amp;lt;Pilot&amp;gt;(p =&amp;gt; p.Name == "&lt;span style="color: #8b0000"&gt;Michael
Schumacher&lt;/span&gt;");&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;
- Mettre à jour :
&lt;/p&gt;
&lt;pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;IObjectSet result = db.QueryByExample(&lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Pilot("&lt;span style="color: #8b0000"&gt;Michael
Schumacher&lt;/span&gt;", 0)); &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;var found = (Pilot)result.Next();
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;found.AddPoints(11);
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;db.Store(found);&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;
Les classes sont des POCOS. 
&lt;/p&gt;
&lt;p&gt;
Un founisseur Linq existe (bien qu’il souffre de certaines limitations du fait qu’il
traduit les requêtes en un langage interne, SODA) :
&lt;/p&gt;
&lt;pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;IEnumerable&amp;lt;Pilot&amp;gt; result = from Pilot p &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; db &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;                            where p.Name.StartsWith("&lt;span style="color: #8b0000"&gt;Michael&lt;/span&gt;") &lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;                            select p;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;
Pour gérer la profondeur en mise à jour et en lecture (opérations en cascade et lazy-loading)
on doit modifier la configuration par défaut qui ne cascade pas les mises à jour sur
les types référence :
&lt;/p&gt;
&lt;pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;IEmbeddedConfiguration config = Db4oEmbedded.NewConfiguration();
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;config.Common.ObjectClass(&lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;(Car)).CascadeOnUpdate(&lt;span style="color: #0000ff"&gt;true&lt;/span&gt;);&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;
En plus des propriétés de types primitifs (string, int etc.), les références sur Car
seront mises à jours (Pilot par exemple). Pour la lecture la profondeur par défaut
est de 5 niveau, on peut modifier ce paramétrage : c’est le concept d’Activation dans
db4o. Pour rendre systématique ce processus vos classes doivent implémenter une interface
(IActivatable) ou vous devez activer faire cette décoration au moment de la compilation
via une tâche MSBuild ou en utilisant l’outil fourni par db4o.
&lt;/p&gt;
&lt;p&gt;
Les concepts objet comme l’héritage sont bien sûr supportés. Il existe un langage
bas niveau pour requêter (SODA) mais il est assez verbeux et repose beaucoup sur les
chaînes de caractères. On utilisera plutôt Linq ou le langage natif de requête (en
plus du requêtage par exemple déjà vu ) :
&lt;/p&gt;
&lt;pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;var result = db.Query&amp;lt;Pilot&amp;gt;(pilot =&amp;gt; pilot.Points &amp;gt; 99
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;		                  &amp;amp;&amp;amp; pilot.Points &amp;lt; 199
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;		                  || pilot.Name == "&lt;span style="color: #8b0000"&gt;Rubens
Barrichello&lt;/span&gt;");&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Une version silverlight existe en beta. On pourra consulter le &lt;a title="compte github" href="http://github.com/jhicks"&gt;compte
github&lt;/a&gt; de &lt;a title="son blog" href="http://jamesrhicks.blogspot.com/"&gt;James Hicks&lt;/a&gt; pour
avoir des exemples d’applications utilisant db40 : une abstraction de db4o à travers
le concept de Session, une application avec une implémentation du pattern CQRS-Event
Sourcing et l’utilisation de db4o avec NServiceBus.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=19ac0641-898d-4759-9aac-3c2c8db3e162" /&gt;</content>
  </entry>
  <entry>
    <title>Revue du web du 8 Mars</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2010/03/08/RevueDuWebDu8Mars.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,3dd5727c-68c6-4b92-a925-ded5c3e0575f.aspx</id>
    <published>2010-03-08T13:00:00-07:00</published>
    <updated>2010-03-07T19:19:31.3105035-07:00</updated>
    <content type="html">&lt;h2&gt;&lt;b&gt;Les tweets de la semaine&lt;/b&gt; 
&lt;/h2&gt;
&lt;p&gt;
&amp;nbsp;&lt;a href="http://twitter.com/rcravens/status/9824210272"&gt;http://twitter.com/rcravens/status/9824210272&lt;/a&gt; Hudson
est un serveur d’intégration continu (et populaire), si vos poches ne sont pas assez
profondes pour TFS, Hudson peut être une bonne alternative.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://twitter.com/craighead/statuses/9837013687"&gt;http://twitter.com/craighead/statuses/9837013687&lt;/a&gt; Java
vs C#, maintenant en version Robots
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://twitter.com/UdiDahan/status/9858485324"&gt;http://twitter.com/UdiDahan/status/9858485324&lt;/a&gt; on
en parlait dans notre première revue du web : NServiceBus passe en version 2
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://twitter.com/gruuf/statuses/10073663444"&gt;http://twitter.com/gruuf/statuses/10073663444&lt;/a&gt; un
sondage autour des frameworks d’inversion de contôle / injection de dépendances dans
le monde .NET
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;La question Stackoverflow&lt;/strong&gt; 
&lt;/h2&gt;
&lt;p&gt;
&amp;nbsp;&lt;a href="http://serverfault.com/questions/45516/recommended-logparser-queries-for-iis-monitoring"&gt;http://serverfault.com/questions/45516/recommended-logparser-queries-for-iis-monitoring&lt;/a&gt; Nous
allons faire un petit tour sur serverfault.com cette semaine. Ce dernier est la première
spin-off de SO (il existe une version en marque blanche même). On y trouve des questions
sur la gestion des systèmes informatiques en général : installation serveur, les systèmes
d’exploitation, les bases de données etc. La question de la semaine énumère des requêtes
possibles contre les fichiers de log de IIS : fichier le plus demandé, user-agent
le plus présent etc. Nécessaire quand on a fini sa belle application et qu’on la rend
disponible sur le grand Interweb.
&lt;/p&gt;
&lt;h2&gt;&lt;b&gt;Actualités Microsoft&lt;/b&gt;&amp;nbsp;
&lt;/h2&gt;
&lt;p&gt;
Les MVP se réunissent chaque année sur le campus de Microsoft, &lt;a title="r&amp;eacute;sum&amp;eacute; en anlglais du MVP Summit" href="http://dotnet.dzone.com/articles/mvp-global-summit-2010-wrap"&gt;dans
cet article&lt;/a&gt; Dzone fait un résumé. Ce qui est toujours surprenant c’est que cet
évènement réuni des centaines de participants mais qui sont tous rendu nuets par un
accord de non divulgation (les fameux “NDA”). En attendant MIX approche et Microsoft &lt;a title="article sur unwired" href="http://www.theunwired.net/?item=confirmed-no-windows-phone-7-backward-compatibility-and-more-development-information"&gt;confirme
du bout des lèvres&lt;/a&gt; que la migration vers Windows Phone 7 ne sera pas possible
pour les téléphones actuels. On pourra consulter la &lt;a title="liveside nous livre les d&amp;eacute;tails" href="http://www.liveside.net/mobility/archive/2010/03/05/windows-phone-sessions-at-mix-unveiled.aspx"&gt;liste
des sessions&lt;/a&gt; consacrées au nouveau système d’exploitation.
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Actualités “Alt.NET”&lt;/strong&gt; 
&lt;/h2&gt;
&lt;p&gt;
Le groupe Alt.net virtual européen organise un &lt;a href="http://europevan.blogspot.com/2010/03/next-european-van-on-06-april-2010.html"&gt;session
spéciale&lt;/a&gt;&amp;nbsp; le 6 avril 2010 sur le mouvement “&lt;a href="http://manifesto.softwarecraftsmanship.org/"&gt;Software
Craftsmanship&lt;/a&gt;”avec du beau monde. On pourra aussi écouter la série de podcast
“&lt;a title="la s&amp;eacute;rie des &amp;eacute;pisodes" href="http://msdn.microsoft.com/en-ca/ff182908.aspx"&gt;Ignite
your coding&lt;/a&gt;” organisée par le groupe d’évangélistes de Microsoft Canada dont le &lt;a title="premier &amp;eacute;pisode" href="http://blogs.msdn.com/cdndevs/archive/2010/03/04/ignite-your-coding-begins-today-2-p-m-eastern-with-andy-pragmatic-thinking-and-learning-hunt.aspx"&gt;premier
invité est Andy Hunt&lt;/a&gt;, co-auteur du livre &lt;em&gt;The Pragmatic Programmer&lt;/em&gt;.
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.pledgie.com/campaigns/8615"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;strong&gt;&lt;/strong&gt; 
&lt;p&gt;
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;De l’autre côté&lt;/strong&gt; 
&lt;/h2&gt;
&lt;p&gt;
Flash, la descente aux enfers continue. L’enfant chéri des années 2000 n’en finit
plus d’être traité comme le nouveau vilain. Après avoir révolutionné l’accès aux contenus
vidéos puis connu une percée significative dans le monde des applications d’entreprise
avec Flex, la technologie est maintenant vue comme un handicap. Tout cela provient
du succès de l’íPhone qui a accentué les défauts du runtime propriétaire. Il est&amp;nbsp;
ironique de voir Apple qui a dû founir un SDK natif car les applications web n’étaient
pas suffisantes faire “cause commune”avec les défenseurs du standard HTML contre Flash.
The Register rapporte que &lt;a href="http://www.theregister.co.uk/2010/03/02/virgin_america_html_flash/"&gt;Virgin
America&lt;/a&gt; abondonne Flash pour HTML dans ses sites internet (70 % du revenu). Il
est intéressant toutefois de remarquer que Flash restera utilisé dans les systèmes
comme les kiosques “Touch Screen ”dans les aéroports. Finalement on revient aux basiques
: un internet standard pour du contenu à destination d’appareils multiples (navigateurs
différents avec des plateforme différentes) et des frameworks plus puissants pour
des applications en environment plus contrôlé. 
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Un projet&lt;/strong&gt;
&lt;/h2&gt;
&lt;p&gt;
&lt;a href="http://www.shazzam-tool.com/"&gt;Shazzam&lt;/a&gt; est un outil pour générer des Pixels
Shaders. Le code source est disponible sur &lt;a title="shazzam sur codeplex" href="http://www.codeplex.com/Wikipage?ProjectName=shazzam"&gt;codeplex&lt;/a&gt;.
Il existe des &lt;a title="librairie de shder effects" href="http://www.codeplex.com/wpffx"&gt;bibliothèques&lt;/a&gt; d’effets
3D existants mais cet outil vous permet de générer le code pour vos propres créations.
Basé sur HLSL (High Level Shading Language) Microsoft vous permet d’ajouter des directives
de transformations de pixels et un compilateur DirectX permet de générer le code machine
nécessaire. Il suffit d’un wrapper C# pour les utiliser ensuite dans vos applications.
Après avoir installé l’utilitaire et le SDK DirectX vous pouvez modfiier le code des
effets via le langage HSLSL :
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Revueduwebdu8Mars_8650/HLSL.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="HLSL" border="0" alt="HLSL" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Revueduwebdu8Mars_8650/HLSL_thumb.png" width="576" height="484"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Ici l’effet bloom est appliqué sur une image de test :
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Revueduwebdu8Mars_8650/image_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Revueduwebdu8Mars_8650/image_thumb.png" width="656" height="484"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Le code C# généré expose les Dependecy Properties qui vont bien pour paramétrer les
effets :
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Revueduwebdu8Mars_8650/ShaderGenerated.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="ShaderGenerated" border="0" alt="ShaderGenerated" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Revueduwebdu8Mars_8650/ShaderGenerated_thumb.png" width="644" height="427"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=3dd5727c-68c6-4b92-a925-ded5c3e0575f" /&gt;</content>
  </entry>
  <entry>
    <title>Revue du Web du 1er Mars</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2010/03/01/RevueDuWebDu1erMars.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,909f1cf3-b62b-4c5f-b354-668316291df3.aspx</id>
    <published>2010-03-01T13:00:00-07:00</published>
    <updated>2010-03-01T06:50:10.1154505-07:00</updated>
    <category term="Revue du Web" label="Revue du Web" scheme="http://www.nventive.net/Blog2/CategoryView,category,RevueDuWeb.aspx" />
    <content type="html">&lt;h2&gt;&lt;b&gt;Les tweets de la semaine&lt;/b&gt; 
&lt;/h2&gt;
&lt;p&gt;
&amp;nbsp;&lt;a href="http://twitter.com/loiane/statuses/9694669388"&gt;http://twitter.com/loiane/statuses/9694669388&lt;/a&gt; Travailler
pour la NASA en programmant du Silverlight.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://twitter.com/veryfancy/statuses/9582184256"&gt;http://twitter.com/veryfancy/statuses/9582184256&lt;/a&gt; On
utilise régulièrement System.Uri sans vraiment y faire attention, voici un petit rappel
de son contenu
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://twitter.com/dataartist/statuses/9575476761"&gt;http://twitter.com/dataartist/statuses/9575476761&lt;/a&gt; une
requête Linq peut compliquer le code
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;La question Stackoverflow&lt;/strong&gt; 
&lt;/h2&gt;
&lt;p&gt;
&amp;nbsp;&lt;a href="http://stackoverflow.com/questions/2346394/should-i-use-byte-or-int"&gt;http://stackoverflow.com/questions/2346394/should-i-use-byte-or-int&lt;/a&gt; Pouquoi
utilsier un type int plutôt qu’un byte (ou un short) ? Un dilemme entre performance
(ou sur-optimisation) et sémantique.
&lt;/p&gt;
&lt;h2&gt;&lt;b&gt;Actualités Microsoft&lt;/b&gt;&amp;nbsp;
&lt;/h2&gt;
&lt;p&gt;
Avec la dernière version de Visual Studio (2010 RC) on peut dire que le développement
WPF/Silverlight est devenu une expérience plaisante. Le mode prévisualisation fonctionne
pour les deux technologies et l’intellisense autour des expressions de binding a été
améliorée. Mais une des nouveautés intéressantes réside dans le support au design
time des types d’objets bindés aux contrôles. Les propriétés du namespace d: permettent
de spécifier des valeurs ignorées au moment de la compilation et donc du runtime.
On les connaît déjà pour la hauteur et la largeur des UserControl. Karl Shifflett
introduit &lt;a title="le billet de Karl" href="http://karlshifflett.wordpress.com/2009/10/28/ddesigninstance-ddesigndata-in-visual-studio-2010-beta2/"&gt;d:DataContext
et d:DesignInstance&lt;/a&gt; qui permet de spécifier son type pour ensuite voir les propriétés
dans les boîtes de dialogue de databindig.
&lt;/p&gt;
&lt;p&gt;
En parlant de Silverlight, la prochaine que vous en faites une démo et que tout le
monde baille, montrer &lt;a title="vid&amp;eacute;o sur youtube" href="http://www.youtube.com/watch?v=9QFvfHXkd2o&amp;amp;feature=player_embedded"&gt;cette
vidéo&lt;/a&gt; de Bing à la conférence TED par Blaise Aguera y Arcas (aux alentours de
4:45) : 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.youtube.com/watch?v=9QFvfHXkd2o&amp;amp;feature=player_embedded"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image de la vid&amp;eacute;o montrant un prototype de r&amp;eacute;alit&amp;eacute; augment&amp;eacute;e avec Visual Studio" border="0" alt="image de la vid&amp;eacute;o montrant un prototype de r&amp;eacute;alit&amp;eacute; augment&amp;eacute;e avec Visual Studio" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/RevueduWebdu1erMars_B46F/streetviewaugmented_1.png" width="544" height="409"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Oui c’est bien une “House View” à l’intérieur d’un bâtiment avec un flux direct de
vidéo en sur-impression. Street View est tellement 1996.
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Actualités “Alt.NET”&lt;/strong&gt; 
&lt;/h2&gt;
&lt;p&gt;
On connaît tous NHibernate ce framwork de mapping objet-relationnel qui semble être
là depuis toujours et même avant si on considère sa version Java. Il fait aussi parti
des projets phares dans le monde .NET car il est un des premiers&amp;nbsp; projets open
source ayant un grand succès. Son développement a été financé dans le passé par&amp;nbsp;
la passion de certains développeurs, des entreprises ont aussi donné du temps de développent
par exemple sur le founisseur Linq. 
&lt;/p&gt;
&lt;p&gt;
Voux pouvez faire un don directement en cliquant sur ce lien :
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.pledgie.com/campaigns/8615"&gt;&lt;img border="0" alt="Click here to lend your support to: NHibernate and make a donation at www.pledgie.com !" src="http://www.pledgie.com/campaigns/8615.png?skin_name=chrome"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;De l’autre côté&lt;/strong&gt; 
&lt;/h2&gt;
&lt;p&gt;
Pour envoyer des messages entre systèmes on connaît MSMQ (&lt;a title="article wikipedia sur MSMQ" href="http://en.wikipedia.org/wiki/Microsoft_Message_Queuing"&gt;Microsoft
Message Queuing&lt;/a&gt;). Un des équivalents dans le monde Java est JMS (&lt;a title="Java Message Service" href="http://en.wikipedia.org/wiki/Java_Message_Service"&gt;Java
Message Service&lt;/a&gt;), un standard implémenté par différents produits dont les plus
connus sont IBM MQ, TibCo. Dans ce billet &lt;a title="billet sur AMQP" href="http://blog.xebia.fr/2010/02/23/amqp-une-alternative-a-jms/"&gt;Xebia&lt;/a&gt; nous
introduit à AMQP (Advanced Message Queuing Protocol). Ce protocole initié par JP Morgan
se concentre sur la performance et propose les différents cas d’utilisation d’un systèmes
de messages (Store and Forward, Point to Point etc). Les deux implémentations connues
sont RabbitMQ en Erlang et&amp;nbsp; OpenAMQ en C++. La spécification 1.0 est attendue
pour cette année et on apprend aussi que Microsoft a collaboré avec QPid (projet Apache
autour de AMQP).
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Un projet&lt;/strong&gt;&amp;nbsp;
&lt;/h2&gt;
&lt;p&gt;
&lt;a title="site du projet sur codeplex" href="http://www.codeplex.com/entlib"&gt;Enterprise
Library&lt;/a&gt; va bientôt connaître une nouvelle version, la beta de la version 5 est
déjà disponible et une &lt;a title="roadmap de EntLib 5" href="http://blogs.msdn.com/agile/archive/2010/01/20/announcing-enterprise-library-5-0-and-unity-2-0-roadmap.aspx"&gt;beta
2&lt;/a&gt; doit sortir le 15 mars pour une version finale attendue juste après la sortie
de Visual Studio 2010. Dans le framework on trouve &lt;a title="site du projet Unity" href="http://www.codeplex.com/unity"&gt;Unity
2&lt;/a&gt;, le framework d’injection des dépendances de Microsoft. Comme pour la version
précédente il existe deux modes : par fichier de configuration ou par code. Le premier
offre maintenant un outil (en WPF BTW):
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/RevueduWebdu1erMars_B46F/image_4.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="outil de configuration de UNity" border="0" alt="outil de configuration de UNity" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/RevueduWebdu1erMars_B46F/image_thumb_1.png" width="593" height="245"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/RevueduWebdu1erMars_B46F/image_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="ajout d'un mapping" border="0" alt="ajout d'un mapping" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/RevueduWebdu1erMars_B46F/image_thumb.png" width="617" height="178"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Mais Unity offre aussi une API fluent :
&lt;/p&gt;
&lt;pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;var container = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; UnityContainer(); &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;container.RegisterType&amp;lt;IRepository&amp;lt;&amp;gt;, Repository&amp;lt;&amp;gt;()
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;.RegisterType&amp;lt;IContactRepository, ContactRepository&amp;gt;();&lt;/pre&gt;&lt;/pre&gt;Avec
de nouvelles méthodes comme &lt;font face="Courier New"&gt;IsRegistered&lt;/font&gt; pour vérifier
l’existance d’un mapping, 
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
Les deux nouveaux lifetime managers (les objets qui déclarent quand instancier ou
réutiliser une instance au moment de la résolution du type) sont &lt;font face="Courier New"&gt;HierarchicalifetimeManager&lt;/font&gt; (les
containes enfants ne partagent pas les instances des containers parents qui sont singleton)
et &lt;font face="Courier New"&gt;PerResolveLifetimeManager&lt;/font&gt; (même instance dans un
graphe donné : mon IRepository est utilisé comme propriété à deux endroits différents
dans deux objets liés à une instance construite par Unity, j’aurai la même référence
pour une résolution).
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=909f1cf3-b62b-4c5f-b354-668316291df3" /&gt;</content>
  </entry>
  <entry>
    <title>Revue du web .NET du 22 février</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2010/02/22/RevueDuWebNETDu22F%c3%a9vrier.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,283bd800-b2ef-47bc-9810-d57e3d283d06.aspx</id>
    <published>2010-02-22T13:00:00-07:00</published>
    <updated>2010-02-21T16:17:28.0907847-07:00</updated>
    <category term=".net" label=".net" scheme="http://www.nventive.net/Blog2/CategoryView,category,net.aspx" />
    <category term="Revue du Web" label="Revue du Web" scheme="http://www.nventive.net/Blog2/CategoryView,category,RevueDuWeb.aspx" />
    <content type="html">&lt;h2&gt;&lt;b&gt;Les tweets de la semaine&lt;/b&gt; 
&lt;/h2&gt;
&lt;p&gt;
&amp;nbsp;&lt;a href="http://twitter.com/cadred/statuses/9242655924"&gt;http://twitter.com/cadred/statuses/9242655924&lt;/a&gt; une
revue du web .NET quotidienne, elle va très bien avec le café du matin
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://twitter.com/romainverdier/status/8922567409"&gt;http://twitter.com/romainverdier/status/8922567409&lt;/a&gt; la
conversion de delegate, Func&amp;lt;T,bool&amp;gt; == Predicate&amp;lt;T&amp;gt; ?
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.alexatnet.com/content/net-memory-management-and-garbage-collector"&gt;http://www.alexatnet.com/content/net-memory-management-and-garbage-collector&lt;/a&gt; un
petit rappel sur le Garbage collector en .NET
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;La question Stackoverflow&lt;/strong&gt; 
&lt;/h2&gt;
&lt;p&gt;
&amp;nbsp;&lt;a href="http://stackoverflow.com/questions/129453/net-eventhandlers-generic-or-no"&gt;http://stackoverflow.com/questions/129453/net-eventhandlers-generic-or-no&lt;/a&gt; les
bonnes pratiques officielles concernant les events en .NET peuvent être rébarbatives,
cette question se concentre sur la classe représentant les arguments des évènements
et sa version générique.&amp;nbsp; 
&lt;/p&gt;
&lt;h2&gt;&lt;b&gt;Actualités Microsoft&lt;/b&gt;&amp;nbsp;
&lt;/h2&gt;
&lt;p&gt;
Windows Phone 7 Series a été annoncé, enfin les détails “grand public”, concernant
les développements il faudra attendre un peu : on parle d’une version de Visual Studio
gratuite et dédiée pour le début de l’été et un environnement de développement autour
de Silverlight ou XNA pour le jeux. En attendant voici un graphique &lt;a href="http://www.businessinsider.com/chart-of-the-day-microsoft-operating-income-by-division-2010-2"&gt;intéressant&lt;/a&gt; qui
donne la répartition des profits de Microsoft selon les lignes de produits – on y
voit bien l’effet de Windows 7 :
&lt;/p&gt;
&lt;p&gt;
&lt;a title="voir la source" href="http://www.businessinsider.com/chart-of-the-day-microsoft-operating-income-by-division-2010-2"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="Microsoft profit" border="0" src="http://static.businessinsider.com/image/4b7337bc0000000000a10a91/chart-of-the-day-msft-operating-profit.gif"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Actualités “Alt.NET”&lt;/strong&gt; 
&lt;/h2&gt;
&lt;p&gt;
On vous indiquait dans une édition précédente de la revue du web les présentations
de SkillsMatter, celle de Udi Dahan sur Command Query Responsibility Segregation est
maintenant en ligne : &lt;a href="http://skillsmatter.com/podcast/open-source-dot-net/udi-dahan-command-query-responsibility-segregation/rl-311"&gt;http://skillsmatter.com/podcast/open-source-dot-net/udi-dahan-command-query-responsibility-segregation/rl-311&lt;/a&gt;
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;De l’autre côté&lt;/strong&gt; 
&lt;/h2&gt;
&lt;p&gt;
Hibernate, un des plus anciens ORM, continue son bonhomme de chemin et devient avec
la version &lt;a title="blog sur la release candidate" href="http://in.relation.to/Bloggers/Hibernate350CR1Release"&gt;3.5&lt;/a&gt; conforme
à la version 2 de la spécification JPA (un standard Java pour la persistance des données).
Quelques &lt;a href="https://www.hibernate.org/357.html#A8"&gt;nouveautés&lt;/a&gt; : Les annotations
(équivalent des attributs en C#) sont incorporées dans le projet général, support
de JDBC 4, la possibilité de décrire des schémas de chargement (Fetch Profiles). Cette
dernière fonctionnalité est intéressante car si un ORM vous débarasse de l’écriture
d’une couche d’accès aux données fastidieuse, le lazy loading a un effet pervers :
on ne contrôle plus la granularité du graphe d’objets récupérés et on se retrouve
vite avec des problèmes comme le &lt;a title="une explication en anglais du probl&amp;egrave;me" href="http://ayende.com/Blog/archive/2006/05/02/CombatingTheSelectN1ProblemInNHibernate.aspx"&gt;Select
N+1&lt;/a&gt;. 
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Un projet&lt;/strong&gt;&amp;nbsp;
&lt;/h2&gt;
&lt;p&gt;
&lt;a title="site du projet sur Google Code" href="http://code.google.com/p/elmah/"&gt;ELMAH&lt;/a&gt; est
un projet qui permet de gérer l’audit des erreurs dans une applications ASP.NET. Les
exceptions sont sauvegardées dans une base de données (Sql Server, Oracle, SQlite,
un fichier XML). 
&lt;/p&gt;
&lt;p&gt;
La configuration consiste à ajouter un certain nombre de section pour paramétrer les
différents aspects : logging, reporting, notifications etc. :
&lt;/p&gt;
&lt;pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;sectionGroup&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"elmah"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;section&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"security"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;requirePermission&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"false"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"Elmah.SecuritySectionHandler,
Elmah"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;section&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"errorLog"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;requirePermission&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"false"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"Elmah.ErrorLogSectionHandler,
Elmah"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;section&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"errorMail"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;requirePermission&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"false"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"Elmah.ErrorMailSectionHandler,
Elmah"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;section&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"errorFilter"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;requirePermission&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"false"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"Elmah.ErrorFilterSectionHandler,
Elmah"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;sectionGroup&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;
Ainsi que les handler et le httpmodule dans les sections respectives :
&lt;/p&gt;
&lt;pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;add&lt;/span&gt; &lt;span style="color: #ff0000"&gt;verb&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"POST,GET,HEAD"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;path&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"elmah.axd"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"Elmah.ErrorLogPageFactory,
Elmah"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;add&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"ErrorLog"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"Elmah.ErrorLogModule,
Elmah"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;On configure le
datastore, ici SQLite :&amp;nbsp; &lt;pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;elmah&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;   &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;errorLog&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"Elmah.SQLiteErrorLog,
Elmah"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;connectionStringName&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"Elmah.SQLite"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;elmah&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;connectionStrings&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;add&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"Elmah.SQLite"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;connectionString&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"data
source=~/App_Data/Elmah.SQLite.db"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;connectionStrings&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;
On peut aussi specifier une notification par email (ou Twitter):
&lt;/p&gt;
&lt;pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;errorMail&lt;/span&gt; &lt;span style="color: #ff0000"&gt;from&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"elmah@example.com"&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;             &lt;span style="color: #ff0000"&gt;to&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"admin@example.com"&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;             &lt;span style="color: #ff0000"&gt;cc&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"carboncopy@example.com"&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;             &lt;span style="color: #ff0000"&gt;subject&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"..."&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;             &lt;span style="color: #ff0000"&gt;async&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"true|false"&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;             &lt;span style="color: #ff0000"&gt;smtpPort&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"25"&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;             &lt;span style="color: #ff0000"&gt;smtpServer&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"smtp.example.com"&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;             &lt;span style="color: #ff0000"&gt;userName&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"johndoe"&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;             &lt;span style="color: #ff0000"&gt;password&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"secret"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;
La page permet de voir une liste des erreurs survenues et de voir le détail de la
requête HTTP à l’origine du problème. On peut alors téleécharger le log et s’abonner
à un flux RSS des erreurs :
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Revueduweb.NETdu26octobre_90B0/ErrorLog.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="copie d'&amp;eacute;cran de la page d'erreur" border="0" alt="copie d'&amp;eacute;cran de la page d'erreur" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Revueduweb.NETdu26octobre_90B0/ErrorLog_thumb.png" width="632" height="370"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Auto-promotion&lt;/strong&gt;
&lt;/h2&gt;
&lt;p&gt;
nVentive organise une série de bootcamps sur des sujets très variés comme WPF, TDD
ou encore NHibernate.Tous ces ateliers sont orientés développement d’applications
d’affaires et font une large place aux labs.
&lt;/p&gt;
&lt;p&gt;
Voici une &lt;a title="liste des &amp;eacute;v&amp;egrave;nements" href="http://www.eventbrite.com/org/249982715?s=1547965"&gt;liste
des formations et leur description plus complète&lt;/a&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=283bd800-b2ef-47bc-9810-d57e3d283d06" /&gt;</content>
  </entry>
  <entry>
    <title>Revue du web .NET du 22 février</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2010/02/22/RevueDuWebNETDu22F%c3%a9vrier.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,ab297bcd-9382-4a07-a5cd-e7116eaca320.aspx</id>
    <published>2010-02-22T13:00:00-07:00</published>
    <updated>2010-02-24T10:51:29.8826697-07:00</updated>
    <category term=".net" label=".net" scheme="http://www.nventive.net/Blog2/CategoryView,category,net.aspx" />
    <category term="Revue du Web" label="Revue du Web" scheme="http://www.nventive.net/Blog2/CategoryView,category,RevueDuWeb.aspx" />
    <content type="html">&lt;h2&gt;&lt;b&gt;Les tweets de la semaine&lt;/b&gt; 
&lt;/h2&gt;
&lt;p&gt;
&amp;nbsp;&lt;a href="http://twitter.com/cadred/statuses/9242655924"&gt;http://twitter.com/cadred/statuses/9242655924&lt;/a&gt; une
revue du web .NET quotidienne, elle va très bien avec le café du matin
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://twitter.com/romainverdier/status/8922567409"&gt;http://twitter.com/romainverdier/status/8922567409&lt;/a&gt; la
conversion de delegate, Func&amp;lt;T,bool&amp;gt; == Predicate&amp;lt;T&amp;gt; ?
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.alexatnet.com/content/net-memory-management-and-garbage-collector"&gt;http://www.alexatnet.com/content/net-memory-management-and-garbage-collector&lt;/a&gt; un
petit rappel sur le Garbage collector en .NET
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;La question Stackoverflow&lt;/strong&gt; 
&lt;/h2&gt;
&lt;p&gt;
&amp;nbsp;&lt;a href="http://stackoverflow.com/questions/129453/net-eventhandlers-generic-or-no"&gt;http://stackoverflow.com/questions/129453/net-eventhandlers-generic-or-no&lt;/a&gt; les
bonnes pratiques officielles concernant les events en .NET peuvent être rébarbatives,
cette question se concentre sur la classe représentant les arguments des évènements
et sa version générique.&amp;nbsp; 
&lt;/p&gt;
&lt;h2&gt;&lt;b&gt;Actualités Microsoft&lt;/b&gt;&amp;nbsp;
&lt;/h2&gt;
&lt;p&gt;
Windows Phone 7 Series a été annoncé, enfin les détails “grand publics”, concernant
les développements il faudra attendre un peu : on parle d’une version de Visual Studio
gratuite et dédiée pour le début de l’été et un environnement de développement autour
de Silverlight ou XNA pour le jeux. En attendant voici un graphique &lt;a href="http://www.businessinsider.com/chart-of-the-day-microsoft-operating-income-by-division-2010-2"&gt;intéressant&lt;/a&gt; qui
donne la répartition des revenus de Microsoft selon les lignes de produits :
&lt;/p&gt;
&lt;p&gt;
&lt;a title="voir la source" href="http://www.businessinsider.com/chart-of-the-day-microsoft-operating-income-by-division-2010-2"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Microsoft profit" border="0" src="http://static.businessinsider.com/image/4b7337bc0000000000a10a91/chart-of-the-day-msft-operating-profit.gif"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Actualités “Alt.NET”&lt;/strong&gt; 
&lt;/h2&gt;
&lt;p&gt;
On vous indiquait dans une édition précédente de la revue du web les présentations
de SkillsMatter, celle de Udi Dahan sur Command Query Responsibility Segregation est
maintenant en ligne : &lt;a href="http://skillsmatter.com/podcast/open-source-dot-net/udi-dahan-command-query-responsibility-segregation/rl-311"&gt;http://skillsmatter.com/podcast/open-source-dot-net/udi-dahan-command-query-responsibility-segregation/rl-311&lt;/a&gt;
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;De l’autre côté&lt;/strong&gt; 
&lt;/h2&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Un projet&lt;/strong&gt;&amp;nbsp;
&lt;/h2&gt;
&lt;p&gt;
&amp;nbsp;&lt;strong&gt;Auto-promotion&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
nVentive organise une série de bootcamps sur des sujets très variés comme WPF, TDD
ou encore NHibernate.Tous ces ateliers sont orientés développement d’applications
d’affaires et font une large place aux labs.
&lt;/p&gt;
&lt;p&gt;
Voici une &lt;a title="liste des &amp;eacute;v&amp;egrave;nements" href="http://www.eventbrite.com/org/249982715?s=1547965"&gt;liste
des formations et leur description plus complète&lt;/a&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=ab297bcd-9382-4a07-a5cd-e7116eaca320" /&gt;</content>
  </entry>
  <entry>
    <title>Revue du web .NET du 15 février</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2010/02/15/RevueDuWebNETDu15F%c3%a9vrier.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,23cbdd65-b013-4fa9-bd49-fbd7acee7808.aspx</id>
    <published>2010-02-15T13:00:00-07:00</published>
    <updated>2010-02-14T09:32:15.3486886-07:00</updated>
    <category term="Revue du Web" label="Revue du Web" scheme="http://www.nventive.net/Blog2/CategoryView,category,RevueDuWeb.aspx" />
    <content type="html">&lt;h2&gt;&lt;b&gt;Les tweets de la semaine&lt;/b&gt; 
&lt;/h2&gt;
&lt;p&gt;
&lt;a href="http://twitter.com/tormodfj/statuses/8900636543"&gt;http://twitter.com/tormodfj/statuses/8900636543&lt;/a&gt; une
nouvelle version de l’éditeur de code est arrivée, non non, ce n’est pas ce que vous
pensez
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://twitter.com/darthpanda/statuses/8905432346"&gt;http://twitter.com/darthpanda/statuses/8905432346&lt;/a&gt; une
liste de méthodes d’extension pour toutes les situations de la vie
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://twitter.com/ManningBooks/statuses/8912372298"&gt;http://twitter.com/ManningBooks/statuses/8912372298&lt;/a&gt; Un
article d’introduction sur l’intégration continue en .NET par les auteurs d’un livre
qui sort prochainement sur le sujet
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;La question Stackoverflow&lt;/strong&gt; 
&lt;/h2&gt;
&lt;p&gt;
&lt;a href="http://stackoverflow.com/questions/2237275/what-does-default-keyword-mean-in-c"&gt;http://stackoverflow.com/questions/2237275/what-does-default-keyword-mean-in-c&lt;/a&gt; Un
peu d’humour aujourd’hui : cela part mal on dirait pour cet utilisateur de Visual
Studio.
&lt;/p&gt;
&lt;h2&gt;&lt;b&gt;Actualités Microsoft&lt;/b&gt;&amp;nbsp;
&lt;/h2&gt;
&lt;p&gt;
Depuis la semaine dernière les rumeurs les plus folles courent sur la (très attendue)
prochaine version de Windows Mobile : Windows Phone Series 7. Dans ce &lt;a title="windows mobile 7" href="http://www.mobiletechworld.com/2010/02/06/more-windows-mobile-7-rumors-grab-some-salt/"&gt;billet&lt;/a&gt; on
trouve quelques hypothèses dont un SDK basé sur Silvelright version mobile (un mix
de 3 et 4), une version de Visual Studio Express dédiée et la fin du multitasking.
On en sera sans doute plus au cours de la semaine avec la conférence &lt;a title="Le site de la conf&amp;eacute;rence" href="http://www.mobileworldcongress.com/index.htm"&gt;Mobile
Wolrd Congress&lt;/a&gt; qui se tient à Barcelone.
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Actualités “Alt.NET”&lt;/strong&gt; 
&lt;/h2&gt;
&lt;p&gt;
&amp;nbsp;&lt;a title="site web du projet" href="http://git-scm.com/"&gt;GIT&lt;/a&gt; est en passe
de supplanter Subversion le système de gestion de configuration alternatif au composant
dédíé de TFS. Dans un &lt;a title="vid&amp;eacute;o de la session" href="http://www.vimeo.com/9324683"&gt;webcast&lt;/a&gt; du
groupe Europe Virtual Alt.NET James Gregory nous parle de l’utilisation de l’outil.
On pourra consulter l’excellent add-in &lt;a title="page du projet sur sourceforge" href="http://sourceforge.net/projects/gitextensions/"&gt;GIT
Extensions&lt;/a&gt; pour les utilisateurs de Visual Studio.
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;De l’autre côté&lt;/strong&gt; 
&lt;/h2&gt;
&lt;p&gt;
La version 3.2 &lt;a href="http://blogs.sun.com/GullFOSS/entry/openoffice_org_3_2_0"&gt;d’Open
Office&lt;/a&gt; est sortie. Est-ce devenue une anomalie dans un monde de plus en plus tourné
vers les applications web (Google Docs, la future version web d’Office, &lt;a title="une suite bureautique" href="http://www.zoho.com/"&gt;Zoho&lt;/a&gt;…).
Certains regrettent aussi la communuaté de développeurs peu dynamique, le fait que
C++ soit le langage principal n’a pas joué en sa faveur (bien qu’Apple soit arrivé
à rendre sexy le développement avec pointeur, mais Open Office n’est pas un iPhone).
Le récent rachat de Sun par Oracle a fait beaucoup coulé d’encre à cause de Mysql
mais peu sur Open Office. Peut-on s’attendre à une mort lente ?
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Un projet&lt;/strong&gt;&amp;nbsp;
&lt;/h2&gt;
&lt;p&gt;
&amp;nbsp;&lt;a title="le site du projet" href="http://www.mongodb.org/display/DOCS/Home"&gt;MongoDB&lt;/a&gt; est
un système de stockage orienté document. Ces documents sont stockés au format binaire
et les requêtes utilisent un langage similaire au JSON pour dialoguer avec le système
de base de données. Contrairement aux systèmes relationnels les SGBD document n’ont
pas de structure fixe, deux documents peuvent partager un certain nombre de champs
mais ce n’est pas obligatoire.
&lt;/p&gt;
&lt;p&gt;
Dans ces &lt;a title="premier tutorial sur MongoDB" href="http://daniel.wertheim.se/2010/02/05/getting-started-with-mongodb-using-json-net-and-castle-dynamic-proxy/"&gt;deux&lt;/a&gt; &lt;a title="deuxi&amp;egrave;me billet sur mongodb" href="http://daniel.wertheim.se/2010/02/07/mongodb-in-c-extensions-to-support-json-mapping-or-proxy-generation/"&gt;billets&lt;/a&gt; Daniel
Wertheim nous montre comment utiliser MongoDB dans un environnment C#. Après télécharger
MongoDB la console nous permet d’ajouter des données :
&lt;/p&gt;
&lt;pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;
&lt;p&gt;
db.Notes.save({ Title: "&lt;span style="color: #8b0000"&gt;The first document&lt;/span&gt;", Body:
"&lt;span style="color: #8b0000"&gt;My first document stored in MongoDB.&lt;/span&gt;", 
&lt;/p&gt;
&lt;p&gt;
Tags: ["&lt;span style="color: #8b0000"&gt;MongoDB&lt;/span&gt;", "&lt;span style="color: #8b0000"&gt;Getting
started&lt;/span&gt;"]})
&lt;/p&gt;
&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;
le requêtage :
&lt;/p&gt;
&lt;pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;db.Notes.find({Tags : "&lt;span style="color: #8b0000"&gt;Getting
started&lt;/span&gt;"})&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;
Il existe un pilote c# pour interagir avec la base de données à travers une interface
JSON (avec des litérales ou en sérialisant des objets vers JSON) :
&lt;/p&gt;
&lt;pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;var firstNote = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Note
{ &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;	Title = "&lt;span style="color: #8b0000"&gt;First
note using Serialization&lt;/span&gt;", &lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;	Tags = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt;[]
{ "&lt;span style="color: #8b0000"&gt;MongoDB&lt;/span&gt;", "&lt;span style="color: #8b0000"&gt;Getting
started&lt;/span&gt;" }, &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;	Body = "&lt;span style="color: #8b0000"&gt;Some
nice text.&lt;/span&gt;" }; &lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;//Convert Note &lt;span style="color: #0000ff"&gt;to&lt;/span&gt; Document &lt;span style="color: #0000ff"&gt;and&lt;/span&gt; insert
it &lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;var firstNoteDocument = json.DocumentFrom(firstNote);
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;notes.Insert(firstNoteDocument);&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;
et le requêtage :
&lt;/p&gt;
&lt;pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;var noteDocument = notes.FindOne(&lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Document
{ { "&lt;span style="color: #8b0000"&gt;Tags&lt;/span&gt;", MongoDBNull.Value } }); &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;25
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;var note = json.ObjectFrom&amp;lt;Note&amp;gt;(noteDocument);&lt;/pre&gt;&lt;/pre&gt;Daniel
montre ensuite l’utilisation de classes proxy générées avec Castle pour simplifier
la sérialisation.&amp;nbsp; 
&lt;h2&gt;&lt;strong&gt;Auto-promotion&lt;/strong&gt;
&lt;/h2&gt;
&lt;p&gt;
nVentive organise une série de bootcamps sur des sujets très variés comme WPF, TDD
ou encore NHibernate.Tous ces ateliers sont orientés développement d’applications
d’affaires et font une large place aux labs.
&lt;/p&gt;
&lt;p&gt;
Voici une &lt;a title="liste des &amp;eacute;v&amp;egrave;nements" href="http://www.eventbrite.com/org/249982715?s=1547965"&gt;liste
des formations et leur description plus complète&lt;/a&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=23cbdd65-b013-4fa9-bd49-fbd7acee7808" /&gt;</content>
  </entry>
  <entry>
    <title>Revue du web .NET du 8 février</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2010/02/08/RevueDuWebNETDu8F%c3%a9vrier.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,745c834e-95be-4018-a242-4f70e72e9dc7.aspx</id>
    <published>2010-02-08T13:00:00-07:00</published>
    <updated>2010-02-08T10:54:10.7672551-07:00</updated>
    <category term=".net" label=".net" scheme="http://www.nventive.net/Blog2/CategoryView,category,net.aspx" />
    <category term="Revue du Web" label="Revue du Web" scheme="http://www.nventive.net/Blog2/CategoryView,category,RevueDuWeb.aspx" />
    <content type="html">&lt;h2&gt;&lt;b&gt;Les tweets de la semaine&lt;/b&gt; 
&lt;/h2&gt;
&lt;p&gt;
&lt;a href="http://twitter.com/pm5links/statuses/8498715256"&gt;http://twitter.com/pm5links/statuses/8498715256&lt;/a&gt; on
a tous utilisé Reflector au moins une fois dans notre vie de développeur .NET. La
version PRO payante de RedGate est prometteuse
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.lesnikowski.com/blog/index.php/testing-datetime-now/"&gt;http://www.lesnikowski.com/blog/index.php/testing-datetime-now/&lt;/a&gt; utiliser
DateTime,Now dans du code semble inoffensive&amp;nbsp; jusuqu’au moment où vous écrivez
votre test
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;&lt;a href="http://twitter.com/Saucerdk/statuses/8670557833"&gt;http://twitter.com/Saucerdk/statuses/8670557833&lt;/a&gt; Symbian
est devenu open source il y a quleques temps, on peut maintenant développer en .NET
pour ce système d’explotation. Un peu trop tard ?
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;La question Stackoverflow&lt;/strong&gt; 
&lt;/h2&gt;
&lt;p&gt;
&lt;a href="http://stackoverflow.com/questions/1704487/algorithm-to-flatten-peak-usage-over-time"&gt;http://stackoverflow.com/questions/1704487/algorithm-to-flatten-peak-usage-over-time&lt;/a&gt; Comment
répartir de façon égale une quantité dans un contenant subdivisble, voici une réponse
qui fait intervenir une classe que nous connaissons tous mais utilisons peu : HashTable.
&lt;/p&gt;
&lt;h2&gt;&lt;b&gt;Actualités Microsoft&lt;/b&gt;&amp;nbsp;
&lt;/h2&gt;
&lt;p&gt;
Microsoft a présenté ses résultats financiers en ce début 2010, et Windows 7 en plus
d’être un système d’exploitation fini et réussi apporte un souffle financier signatificatif
à l’éditeur. Comme l’explique &lt;a title="article de ArsTechnica sur les r&amp;eacute;sultats de Microsoft" href="http://arstechnica.com/microsoft/news/2010/01/windows-7-leads-the-way-to-record-quarter-for-microsoft.ars"&gt;ArsTechnica&lt;/a&gt;&amp;nbsp;
les 60 millions de copies vendues lors ce trimestre sont sans doute pour beaucoup
dans l’augmentation de 14% du chiffres d’affaires de Microsoft par rapport à l’année
précèdente. Mais cet &lt;a title="op-ed du NYT" href="http://www.nytimes.com/2010/02/04/opinion/04brass.html"&gt;éditorial&lt;/a&gt; dans
le New York Times d’un ancien vice-président de Microsoft sur les problèmes internes
qui empêchent de faire emerger des produits innovants va sans doute un peu assombrir
le tableau.
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Actualités “Alt.NET”&lt;/strong&gt; 
&lt;/h2&gt;
&lt;p&gt;
&amp;nbsp;&lt;a href="http://code.google.com/p/sharp-architecture/"&gt;Sharp architecture&lt;/a&gt; est
un projet qui se propose de faciliter le développement d’architecture en couches avec
NHibernate. Commencé après un &lt;a title="article sur les bonnes pratiques avec NHibernate" href="http://www.codeproject.com/KB/architecture/NHibernateBestPractices.aspx"&gt;article&lt;/a&gt; sur
codeproject (il y a presque 4 ans !), le projet est maintenant une application à part
entière avec son site internet et un forum très actif. 
&lt;/p&gt;
&lt;p&gt;
On pourrait penser que ce ne sont que des bonnes pratiques d’architectes sans réelle
application dans la vraie vie mais dans ce &lt;a title="utilisation de sharp architecture" href="http://devlicio.us/blogs/billy_mccafferty/archive/2010/02/03/using-s-arp-architecture-in-the-real-world.aspx"&gt;billet&lt;/a&gt; Billy
McCafferty (créateur du projet) présente des applications en production qui utilisent
ce “framework” dont Fancy Dress Outfitters &lt;a href="http://www.fancydressoutfitters.co.uk/"&gt;http://www.fancydressoutfitters.co.uk/&lt;/a&gt; .
Ils lancent une autre application didactique cette fois-ci mais qui utilise les mêmes
outils qu’une application réelle : &lt;a href="http://who-can-help.me/"&gt;http://who-can-help.me/&lt;/a&gt; dont
le code source est &lt;a title="code source de l'application sur codeplex" href="http://whocanhelpme.codeplex.com/"&gt;disponible&lt;/a&gt;.
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;De l’autre côté&lt;/strong&gt; 
&lt;/h2&gt;
&lt;p&gt;
On parle design cette semaine ! La signature email, c’est un peu les sites web personnels,
on a tout vu : le gif animé, les polices de caractères de couleur fluo ou qui changent
à chaque syllabe sans parler de celles qui font 20 lignes et s’entassent lors des
échanges. &lt;a title="signature" href="http://www.smashingmagazine.com/2010/02/04/the-art-and-science-of-the-email-signature/"&gt;Smahing
Magazine&lt;/a&gt; nous présente une étude détaillée et nous livre quelques bons conseils.
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Un projet&lt;/strong&gt;&amp;nbsp;
&lt;/h2&gt;
&lt;p&gt;
&lt;a title="poscast sur le projet" href="http://herdingcode.com/?p=233"&gt;Fluent Migrator&lt;/a&gt; est
issu d’une amélioration de &lt;a title="site internet du projet" href="http://code.google.com/p/migratordotnet/"&gt;Migrator.NET&lt;/a&gt; un
outil pour migrer des données entre différentes SGBD mais surtout entre différentes
version d’un schéma. La gestion de configuration des bases de données n’est pas chose
aisée il est agréable de voir des outils pour y remédier.
&lt;/p&gt;
&lt;p&gt;
En Migrator.NET on utilise des attributs pour versionner des actions à exécuter contre
un schéma :
&lt;/p&gt;
&lt;pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;[Migration(20080805151231)]
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; AddCustomerTable
: Migration &lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;{
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;        &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;override&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; Up() &lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;        {
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;                Database.AddTable("&lt;span style="color: #8b0000"&gt;Customer&lt;/span&gt;", &lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;                          &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Column("&lt;span style="color: #8b0000"&gt;name&lt;/span&gt;",
DbType.String, 50), &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;                          &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Column("&lt;span style="color: #8b0000"&gt;address&lt;/span&gt;",
DbType.String, 100), &lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;                          &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Column("&lt;span style="color: #8b0000"&gt;age&lt;/span&gt;",
DbType.Int32, 100) &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;                         );
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;        }
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;        &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;override&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; Down() &lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;        {
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;                Database.RemoveTable("&lt;span style="color: #8b0000"&gt;Customer&lt;/span&gt;"); &lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;        }
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;}&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;
L'attribut peut contenir un numéro version avec un entier ou un timestamp. Les actions
possibles sont varíées : clés étrangères, du code SQL pour un SGBD particulier :
&lt;/p&gt;
&lt;pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;[Migration(5)]
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; AddForeignKeyToTheBookAuthor
: Migration &lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;{
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;        &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;const&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; FK_NAME
= "&lt;span style="color: #8b0000"&gt;FK_Book_Author&lt;/span&gt;"; &lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;        &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;override&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; Up() &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;        {
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;                Database.AddForeignKey(FK_NAME, "&lt;span style="color: #8b0000"&gt;Book&lt;/span&gt;",
"&lt;span style="color: #8b0000"&gt;authorId&lt;/span&gt;", "&lt;span style="color: #8b0000"&gt;Author&lt;/span&gt;",
"&lt;span style="color: #8b0000"&gt;id&lt;/span&gt;"); &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;        }
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;        &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;override&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; Down() &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;        {
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;                Database.RemoveForeignKey(FK_NAME);
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;        }
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;}&lt;/pre&gt;&lt;/pre&gt;Une
application console, des tâches Nant et &lt;a title="article pour utiliser MSBuild avec Migrator.NET" href="http://michielvoo.net/blog/configuring-migrator-net-as-an-external-tool-in-visual-studio-using-msbuild/"&gt;MSBuild&lt;/a&gt; existent
pour exécuter et automatiser des migrations. 
&lt;p&gt;
L’interface Fluent rajoutée par Sean Chambers simplifie l’API :
&lt;/p&gt;
&lt;pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;[Migration(1)]
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; TestCreateAndDropTableMigration:
Migration &lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;{
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;	&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;override&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; Up() &lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;	{
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;		Create.Table("&lt;span style="color: #8b0000"&gt;TestTable&lt;/span&gt;") &lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;			.WithColumn("&lt;span style="color: #8b0000"&gt;Id&lt;/span&gt;").AsInt32().NotNullable().PrimaryKey().Identity() &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;			.WithColumn("&lt;span style="color: #8b0000"&gt;Name&lt;/span&gt;").AsString(255).NotNullable().WithDefaultValue("&lt;span style="color: #8b0000"&gt;Anonymous&lt;/span&gt;"); &lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;		
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;		Create.Index("&lt;span style="color: #8b0000"&gt;ix_Name&lt;/span&gt;").OnTable("&lt;span style="color: #8b0000"&gt;TestTable2&lt;/span&gt;").OnColumn("&lt;span style="color: #8b0000"&gt;Name&lt;/span&gt;").Ascending() &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;			.WithOptions().NonClustered();
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;		
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;		Create.ForeignKey("&lt;span style="color: #8b0000"&gt;fk_TestTable2_TestTableId_TestTable_Id&lt;/span&gt;") &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;			.FromTable("&lt;span style="color: #8b0000"&gt;TestTable2&lt;/span&gt;").ForeignColumn("&lt;span style="color: #8b0000"&gt;TestTableId&lt;/span&gt;") &lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;			.ToTable("&lt;span style="color: #8b0000"&gt;TestTable&lt;/span&gt;").PrimaryColumn("&lt;span style="color: #8b0000"&gt;Id&lt;/span&gt;"); &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;		Insert.IntoTable("&lt;span style="color: #8b0000"&gt;TestTable&lt;/span&gt;").Row(&lt;span style="color: #0000ff"&gt;new&lt;/span&gt; {
Name = "&lt;span style="color: #8b0000"&gt;Test&lt;/span&gt;" }); &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;	}
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;	&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;override&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; Down() &lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;	{
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;		Delete.Table("&lt;span style="color: #8b0000"&gt;TestTable2&lt;/span&gt;"); &lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;		Delete.Table("&lt;span style="color: #8b0000"&gt;TestTable&lt;/span&gt;"); &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;	}
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;}&lt;/pre&gt;&lt;/pre&gt;
&lt;h2&gt;&lt;strong&gt;Auto-promotion&lt;/strong&gt;
&lt;/h2&gt;
&lt;p&gt;
nVentive organise une série de bootcamps sur des sujets très variés comme WPF, TDD
ou encore NHibernate.Tous ces ateliers sont orientés développement d’applications
d’affaires et font une large place aux labs.
&lt;/p&gt;
&lt;p&gt;
Voici une &lt;a title="liste des &amp;eacute;v&amp;egrave;nements" href="http://www.eventbrite.com/org/249982715?s=1547965"&gt;liste
des formations et leur description plus complète&lt;/a&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=745c834e-95be-4018-a242-4f70e72e9dc7" /&gt;</content>
  </entry>
  <entry>
    <title>Revue du web .NET du 1er février</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2010/02/01/RevueDuWebNETDu1erF%c3%a9vrier.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,111fa30d-4e29-4fc1-84a8-9c863782a680.aspx</id>
    <published>2010-02-01T13:00:00-07:00</published>
    <updated>2010-02-01T11:20:39.9206906-07:00</updated>
    <category term=".net" label=".net" scheme="http://www.nventive.net/Blog2/CategoryView,category,net.aspx" />
    <category term="Revue du Web" label="Revue du Web" scheme="http://www.nventive.net/Blog2/CategoryView,category,RevueDuWeb.aspx" />
    <content type="html">&lt;h2&gt;&lt;b&gt;Les tweets de la semaine&lt;/b&gt; 
&lt;/h2&gt;
&lt;p&gt;
&lt;a href="http://twitter.com/MrWaz/statuses/8198003333"&gt;http://twitter.com/MrWaz/statuses/8198003333&lt;/a&gt; WCF
avec Mono sur Solaris, si si c’est possible 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://twitter.com/colinsurprenant/statuses/8203661366"&gt;http://twitter.com/colinsurprenant/statuses/8203661366&lt;/a&gt; un
autre jour, un autre système de stockage clé-valeur
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://twitter.com/webAgencyFAIL"&gt;http://twitter.com/webAgencyFAIL&lt;/a&gt; une
sorte de Daily What the Fuck pour web agencies.
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;La question Stackoverflow&lt;/strong&gt; 
&lt;/h2&gt;
&lt;p&gt;
&amp;nbsp;&lt;a href="http://stackoverflow.com/questions/1204309/force-lazy-entity-to-load-real-instance"&gt;http://stackoverflow.com/questions/1204309/force-lazy-entity-to-load-real-instance&lt;/a&gt; Les
framework modernes d’ORM gèrent&amp;nbsp; les associations polymorphiques de façon transparente
pour le développeur mais il faut être conscient que cette magie peut vous jouer des
tours (voir aussi le &lt;a title="billet sur Proxy" href="http://ayende.com/Blog/archive/2010/01/09/nhibernate-polymorphic-associations-and-ghost-objects.aspx"&gt;billet&lt;/a&gt; d’un
des développeurs de NHIbernate sur ce sujet).
&lt;/p&gt;
&lt;h2&gt;&lt;b&gt;Actualités Microsoft&lt;/b&gt;&amp;nbsp;
&lt;/h2&gt;
&lt;p&gt;
&lt;a href="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Revueduweb.NETdu26octobre_90B0/vs2010perf_2.gif"&gt;&lt;img style="border-right-width: 0px; margin: 0px 5px 0px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="vs2010perf" border="0" alt="vs2010perf" align="left" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Revueduweb.NETdu26octobre_90B0/vs2010perf_thumb.gif" width="400" height="307"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
On dirait que l’équipe de développement de Visual Studio a bien travaillé sur les
performances de la dernière version de l’éditeur de code. Dans un &lt;a title="performance de visual studio 2010" href="http://blogs.msdn.com/bharry/archive/2010/01/24/state-of-vs-2010-performance.aspx"&gt;billet&lt;/a&gt; l’équipe
nous mets l’eau à la bouche avec le résultat d’un sondage fait auprès des utilisateurs
d’une version beta privée comportant les améliorations.&amp;nbsp; Cela ressemble à un
feu vert pour la Release Candidate ?
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;
&lt;/h2&gt;
&lt;h2&gt;&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;
&lt;/h2&gt;
&lt;h2&gt;&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;
&lt;/h2&gt;
&lt;h2&gt;&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;
&lt;/h2&gt;
&lt;h2&gt;&lt;strong&gt;Actualités “Alt.NET”&lt;/strong&gt; 
&lt;/h2&gt;
&lt;p&gt;
Voici une &lt;a title="en bas de page le lien vers les podcast" href="http://skillsmatter.com/go/open-source-dot-net"&gt;série
de podcasts&lt;/a&gt; autour des projets open-source ou des méthodes agiles du monde .NET
(Architecture MVC, F#, Command Query, etc)&amp;nbsp; et si vous habitez pas très loin
de Londres vous pouvez assister à deux évènements gratuits sous la forme de discussion
avec Udi Dahan (créateur de NServiceBus) et Ayende Rahien sur NHibernate.
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;De l’autre côté&lt;/strong&gt; 
&lt;/h2&gt;
&lt;p&gt;
Pendant que nous développons (et livrons) avec des technologies comme Silverlight,
Flex ou ASP.NET MVC, HTML 5 fait son bonhomme de chemin (en octobre 2009 la dernière
phase du processus - initié en 2007- de validation de la spécification a commencé).
Mais ce chemin n’est pas si paisible que ça : la dernière contreverse concerne le
nouvel élèment &amp;lt;video&amp;gt; qui permet de présenter un média sans passer par un plug-in
propriétaire. Or les premières implémentations de YouTube ou Vimeo utilisent des codecs
supportant H.264 (non libre) et d’autres Ogg comme Firefox. Il faudra donc sans doute
founir plusieurs versions du même média. Les &lt;a title="billets sur HTML5 et les codecs vid&amp;eacute;os" href="http://robertnyman.com/2010/01/25/the-video-element-in-html5-great-possibilites-but-also-codec-and-licensing-problems/"&gt;explications&lt;/a&gt; sur
le site de Robert Nyman.
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Un projet&lt;/strong&gt;
&lt;/h2&gt;
&lt;p&gt;
&amp;nbsp;&lt;a title="le site codeplex" href="http://dejavu.codeplex.com/"&gt;DejaVu&lt;/a&gt; se
propose de fournir une bibliothèque légère gérant un système de commandes, leurs objets
et l’enregistrement de l’état des données pour revenir en arrière (undo / redo).Un
des principaux arguments pour l’utilisation de DTO en lieu et place d’objets métiers
(POCO) dans la couche de présentation vient du souhait de ne pas les polluer avec
les préoccupations de cette couche : notification de changement (la famause interface
INotifyPropertyChanged), des validations de premier niveau, et la gestion des modifications. &lt;a title="article sur codeproject" href="http://www.codeproject.com/KB/cs/AutomatingUndoRedo.aspx"&gt;Cet
article&lt;/a&gt; sur codeproject est une bonne introduction à cette bibliothèque. Bien
qu’on puisse sans doute améliorer son utilisation, elle fait réfléchir sur le problème
sous-jacent.
&lt;/p&gt;
&lt;p&gt;
Voici un exemple où on explicite le début de l’enregistrement des modifications et
leur commit ou rollback :
&lt;/p&gt;
&lt;pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;UndoRedoManager.Start("&lt;span style="color: #8b0000"&gt;My
Command&lt;/span&gt;"); &lt;span style="color: #008000"&gt;// start point&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;data.Name = "&lt;span style="color: #8b0000"&gt;Name1&lt;/span&gt;"; &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;data.Weight = 33;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;data.MyList.Add(other);
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;UndoRedoManager.Commit(); 
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #008000"&gt;//ou&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;UndoRedoManager.Undo();
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;/pre&gt;&lt;/pre&gt;
&lt;h2&gt;&lt;strong&gt;Auto-promotion&lt;/strong&gt;
&lt;/h2&gt;
&lt;p&gt;
nVentive organise une série de bootcamps sur des sujets très variés comme WPF, TDD
ou encore NHibernate.Tous ces ateliers sont orientés développement d’applications
d’affaires et font une large place aux labs.
&lt;/p&gt;
&lt;p&gt;
Voici une &lt;a title="liste des &amp;eacute;v&amp;egrave;nements" href="http://www.eventbrite.com/org/249982715?s=1547965"&gt;liste
des formations et leur description plus complète&lt;/a&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=111fa30d-4e29-4fc1-84a8-9c863782a680" /&gt;</content>
  </entry>
  <entry>
    <title>Revue du web .NET du 25 janvier</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2010/01/25/RevueDuWebNETDu25Janvier.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,bb13b1e9-7c28-4394-935a-dc448f17851d.aspx</id>
    <published>2010-01-25T13:00:00-07:00</published>
    <updated>2010-01-25T11:20:45.9307944-07:00</updated>
    <category term=".net" label=".net" scheme="http://www.nventive.net/Blog2/CategoryView,category,net.aspx" />
    <category term="Revue du Web" label="Revue du Web" scheme="http://www.nventive.net/Blog2/CategoryView,category,RevueDuWeb.aspx" />
    <content type="html">&lt;h2&gt;&lt;b&gt;Les tweets de la semaine&lt;/b&gt; 
&lt;/h2&gt;
&lt;p&gt;
&amp;nbsp;&lt;a href="http://twitter.com/MichelSchep/statuses/7986002678"&gt;http://twitter.com/MichelSchep/statuses/7986002678&lt;/a&gt; une
vue d’ensemble des API du .NET Framework 4 avec DeepZoom
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://twitter.com/ReedCopsey/statuses/7959294663"&gt;http://twitter.com/ReedCopsey/statuses/7959294663&lt;/a&gt; Toujours
.NET Framework 4, une série d’articles pour aborder le parallélisme
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://twitter.com/jschmiede/statuses/7912861843"&gt;http://twitter.com/jschmiede/statuses/7912861843&lt;/a&gt; On
connaît TFS, Cruise Control et PSake, voici Rake pour .NET en vidéo
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;La question Stackoverflow&lt;/strong&gt; 
&lt;/h2&gt;
&lt;p&gt;
&amp;nbsp;&lt;a href="http://stackoverflow.com/questions/2040924/best-way-to-communicate-between-net-1-1-and-net-3-5"&gt;http://stackoverflow.com/questions/2040924/best-way-to-communicate-between-net-1-1-and-net-3-5&lt;/a&gt; Comment
faire communiquer une application basée sur la version 1.1 du Framework avec une application
qui utilise la version 3.5 ? Socket, Remoting, WebServices tout y passe.
&lt;/p&gt;
&lt;h2&gt;&lt;b&gt;Actualités Microsoft&lt;/b&gt; et &lt;strong&gt;Actualités “Alt.NET”&lt;/strong&gt; 
&lt;/h2&gt;
&lt;p&gt;
Nous essayons d’avoir le contenu le plus original possible mais il est difficile de
passer sous silence ce billet d’Ian Cooper sur la communauté &lt;a title="destin de alt.net" href="http://codebetter.com/blogs/ian_cooper/archive/2010/01/19/whither-alt-net.aspx"&gt;Alt.Net&lt;/a&gt;.
Il est certain que la philosophie derrière ce mouvement (qui tourne autour de l’agilité,
du TDD, des principes S.O.L.I.D. de développement) a fait du chemin dans la communauté
.NET en général. Il est intéressant de voir les réactions / actions entre Microsoft
et cette communauté dans divers domaines : ORM (Nhibernate, Entity- Framework, Subsonic
etc.), IoC (Unity, StructureMap, Autofac) et le web: FubuMVC existerait-il si ASP.NET
MVC n’avait pas été développé par Microsoft ? On espère que cette saine compétition
continuera et s’étendra à d’autres domaines comme par exemple les ESB (on parle encore
peu de AppFabric/Dublin, NServiceBus ou MassTransit). 
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;De l’autre côté&lt;/strong&gt; 
&lt;/h2&gt;
&lt;p&gt;
&amp;nbsp;&lt;a title="le projet" href="http://code.google.com/p/google-collections/"&gt;Google
Collections&lt;/a&gt; est un projet comme il en existe beaucoup : compléter le framework
Java dans un domaine bien particulier. &lt;a title="site web du proje apache commons" href="http://commons.apache.org/"&gt;Apache
Commons&lt;/a&gt; est un autre exemple : client HTTP, Codecs, Emails etc… Il se sert du
JDK 1.5 et des génériques pour apporter plus flexibilité, moins de friction dans l’usage
des API de base. Par exemple faire un join 
&lt;/p&gt;
&lt;pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;Joiner.on("&lt;span style="color: #8b0000"&gt;, &lt;/span&gt;").join(iterable); &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;Joiner.on("&lt;span style="color: #8b0000"&gt;, &lt;/span&gt;").skipNulls().join(iterable); &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;Joiner.on("&lt;span style="color: #8b0000"&gt;, &lt;/span&gt;").useForNull("&lt;span style="color: #8b0000"&gt;&amp;lt;null&amp;gt;&lt;/span&gt;").join(iterable);&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;
Voici &lt;a title="introduction &amp;agrave; Google Collections" href="http://users.mafr.de/~matthias/articles/google-collections.html"&gt;un
article&lt;/a&gt; concis qui montre les fonctionnalités de la bibliothèque.
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Un projet&lt;/strong&gt;
&lt;/h2&gt;
&lt;p&gt;
&amp;nbsp;&lt;a href="http://www.codeplex.com/htmlagilitypack"&gt;HTML Agility Pack&lt;/a&gt; est
une bibliothèque pour parser du code HTML, une tâche des plus ingrates qui puisse
exister pour un développeur (après écrire une documentation peut-être). Les navigateurs
pardonnant beaucoup il existe beaucoup de pages qui ne respectent pas les schémas
sans parler des pages générées qui rendent le code des plus exotiques. 
&lt;/p&gt;
&lt;p&gt;
Ce projet qui a connu en fin d’année dernière un renouveau grâce à une série de patchs
et maintenant un nouveau lead technique a encore rendu son utilisation plus agréable
: requête de type XPath avec l’usage de Linq, Extraction facile du texte nettoyé des
balises html etc.
&lt;/p&gt;
&lt;pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;var atts = _doc.DocumentNode.SelectNodes("&lt;span style="color: #8b0000"&gt;//*[@background
or @lowsrc or @src or @href]&lt;/span&gt;"); &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;var hrefs = _doc.DocumentNode.SelectNodes("&lt;span style="color: #8b0000"&gt;//a[@href]&lt;/span&gt;"); &lt;/pre&gt;&lt;pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;var nodes = from node &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; hrefs &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;            where node.Attributes["&lt;span style="color: #8b0000"&gt;target&lt;/span&gt;"].Value
== "&lt;span style="color: #8b0000"&gt;_blank&lt;/span&gt;" &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;	    select node;&lt;/pre&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;/pre&gt;&lt;/pre&gt;
&lt;h2&gt;&lt;strong&gt;Auto-promotion&lt;/strong&gt;
&lt;/h2&gt;
&lt;p&gt;
nVentive organise une série de bootcamps sur des sujets très variés comme WPF, TDD
ou encore NHibernate.Tous ces ateliers sont orientés développement d’applications
d’affaires et font une large place aux labs.
&lt;/p&gt;
&lt;p&gt;
Voici une &lt;a title="liste des &amp;eacute;v&amp;egrave;nements" href="http://www.eventbrite.com/org/249982715?s=1547965"&gt;liste
des formations et leur description plus complète&lt;/a&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=bb13b1e9-7c28-4394-935a-dc448f17851d" /&gt;</content>
  </entry>
  <entry>
    <title>Revue du web .NET du 18 janvier</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2010/01/18/RevueDuWebNETDu18Janvier.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,c81d7d1e-3c30-41a5-a389-5e9d61f330b7.aspx</id>
    <published>2010-01-18T13:00:00-07:00</published>
    <updated>2010-01-18T19:58:57.8298164-07:00</updated>
    <category term=".net" label=".net" scheme="http://www.nventive.net/Blog2/CategoryView,category,net.aspx" />
    <category term="Revue du Web" label="Revue du Web" scheme="http://www.nventive.net/Blog2/CategoryView,category,RevueDuWeb.aspx" />
    <content type="html">&lt;h2&gt;&lt;b&gt;Les tweets de la semaine&lt;/b&gt; 
&lt;/h2&gt;
&lt;p&gt;
&lt;a href="http://twitter.com/csharp_tan/status/7857602895"&gt;http://twitter.com/csharp_tan/status/7857602895&lt;/a&gt; une
liste des frameworks MVVM (Model View VierwModel – un des patrons de conception pour
la couche de présentation) 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://twitter.com/wanswins/status/7793053854"&gt;http://twitter.com/wanswins/status/7793053854&lt;/a&gt; on
vous parlait la &lt;a title="dans l'&amp;eacute;pisode pr&amp;eacute;c&amp;eacute;dent" href="http://www.nventive.net/Blog2/2010/01/12/RevueDuWebNETDu11Janvier.aspx"&gt;semaine
dernière&lt;/a&gt; de Script# un compilateur C# vers Javascript, il en existe d’autres comme
sharpkit
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://twitter.com/dotnettv/statuses/7745427907"&gt;http://twitter.com/dotnettv/statuses/7745427907&lt;/a&gt; Event
Driven architecture en vidéo
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;La question Stackoverflow&lt;/strong&gt; 
&lt;/h2&gt;
&lt;p&gt;
Nous allons parler d’une méta-question aujourd’hui : Quelle API doit avoir &lt;a title="la question" href="http://meta.stackoverflow.com/questions/33397/sxapi-a-net-api-for-so-f-u-meta-updated-to-version-4-0"&gt;Stackoverflow&lt;/a&gt; ?
Le projet a été annoncé sur le &lt;a title="le billet sur la future API" href="http://blog.stackoverflow.com/2010/01/what-would-a-stack-overflow-api-look-like/"&gt;blog&lt;/a&gt; et
déjà une liste de possibles &lt;a href="http://meta.stackoverflow.com/questions/35723"&gt;applications&lt;/a&gt; est
apparue. Une application web n’est une application web sans une API externe : quels
formats supportés, le mode d’authentification, lecture seulement etc. ? 
&lt;/p&gt;
&lt;h2&gt;&lt;b&gt;Actualités Microsoft&lt;/b&gt; 
&lt;/h2&gt;
&lt;p&gt;
La saison des conférences va commencer dans quelques semaines : &lt;a href="http://visitmix.com/"&gt;Mix
2010&lt;/a&gt; où on devait parler de Visual Studio mais on entendra plus parler de Silverlight
4 et on espère de Internet Explorer 9 et Windows Mobile 7. Le lancement de Visual
Studio sera annoncé le 12 avril lors de la conférence &lt;a title="DevConnections" href="http://www.devconnections.com/"&gt;Devconnections&lt;/a&gt; Visual
Studio&amp;nbsp; 
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Actualités “Alt.NET”&lt;/strong&gt; 
&lt;/h2&gt;
&lt;p&gt;
S’il y a bien un domaine où le monde .NET est actif c’est celui des frameworks de
mapping objet-relationnel (et on dirait que cela se transpose dans le développement
de frameworks de présentation WPF ou même du côté&amp;nbsp; web avec MVC). Voici un billet
d’humour qui résume bien &lt;a title="les frameworks ORM vus les uns par les autres" href="http://www.kevinwilliampang.com/post/How-Fanboys-See-NET-ORMs.aspx"&gt;les
relations entre eux&lt;/a&gt;. Un classique mais toujours efficace.
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;De l’autre côté&lt;/strong&gt; 
&lt;/h2&gt;
&lt;p&gt;
ToughtWorks édite &lt;a title="le produit" href="http://www.thoughtworks-studios.com/mingle-agile-project-management"&gt;Mingle&lt;/a&gt; qui
est une application de gestion de projet supportant les méthodes agile. Ce dernier
utilise une base de données : Mysql, Postgresql ou Oracle. L’éditeur a décidé d’abondonner &lt;a title="billet sur la d&amp;eacute;cision" href="http://community.thoughtworks.com/posts/a0e9ee4773"&gt;le
support de Mysql&lt;/a&gt;. C’est un SGBD très flexible : il y a une multitude d’autres
moteurs de stockage que ISAM ou Innodb (livrés en standard) pour couvrir des besoins
telle que les gros volumes. Mais il semblerait que certains se tournent vers des applications
plus spécialisées (voir le mouvement Nosql (MongoDb, CouchDb etc ) ou plus orientées
“entreprise”comme Postgresql.
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Un projet&lt;/strong&gt;
&lt;/h2&gt;
&lt;p&gt;
Pas un projet mais une liste de projets cette semaine : &lt;a href="http://csharpopensource.com/"&gt;C#
open source&lt;/a&gt; (base de données, PDF, CRM). Comme son l’indique ce site répertorie
les projets open-source du monde .NET par catégorie. On pourra consulter aussi &lt;a title="site annuaire d'outils" href="http://sharptoolbox.com/"&gt;SharpToollbox&lt;/a&gt; qui
est plus orienté outils de développement.
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Auto-promotion&lt;/strong&gt;
&lt;/h2&gt;
&lt;p&gt;
nVentive organise une série de bootcamps sur des sujets très variés comme WPF, TDD
ou encore NHibernate.Tous ces ateliers sont orientés développement d’applications
d’affaires et font une large place aux labs.
&lt;/p&gt;
&lt;p&gt;
Voici une &lt;a title="liste des &amp;eacute;v&amp;egrave;nements" href="http://www.eventbrite.com/org/249982715?s=1547965"&gt;liste
des formations et leur description plus complète&lt;/a&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=c81d7d1e-3c30-41a5-a389-5e9d61f330b7" /&gt;</content>
  </entry>
  <entry>
    <title>Revue du web .NET du 11 janvier</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2010/01/12/RevueDuWebNETDu11Janvier.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,90a686d6-8eea-4bce-a651-10f209f7528a.aspx</id>
    <published>2010-01-12T03:02:00-07:00</published>
    <updated>2010-01-11T20:04:37.8741353-07:00</updated>
    <category term=".net" label=".net" scheme="http://www.nventive.net/Blog2/CategoryView,category,net.aspx" />
    <category term="Revue du Web" label="Revue du Web" scheme="http://www.nventive.net/Blog2/CategoryView,category,RevueDuWeb.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <h2>
          <b>Les tweets de la semaine</b>
        </h2>
        <p>
          <a href="http://twitter.com/penderi/statuses/7514754215">http://twitter.com/penderi/statuses/7514754215</a> Souvent
cité comme l’outil indispensable de Visual Studio, Resharper 5 est en beta et la dernière
version semble prometteuse
</p>
        <p>
          <a href="http://twitter.com/dougcunha/status/7496302216">http://twitter.com/dougcunha/status/7496302216</a> un
aide-mémoire sur les principaux opérateurs Linq sous la forme de 101 exemples.
</p>
        <p>
          <a href="http://twitter.com/escobar5/statuses/7406606555">http://twitter.com/escobar5/statuses/7406606555</a> attention
long article sur les fondamentaux de Linq
</p>
        <h2>
          <strong>La question Stackoverflow</strong>
        </h2>
        <p>
 <a href="http://stackoverflow.com/questions/2030636/c-read-only-calculated-properties-should-they-be-methods">http://stackoverflow.com/questions/2030636/c-read-only-calculated-properties-should-they-be-methods</a> les
propriétés calculées en .NET : doit-on coder une méthode ou une propriété en lecture
seule ?
</p>
        <h2>
          <b>Actualités Microsoft</b>
        </h2>
        <p>
C’est peut-être une des nouvelles fonctionnalités de Silverlight 4 les moins discutées
: l’incorporation de MEF dans le runtime. MEF est un framework open-source soutenu
par Microsoft pour construire des applications extensibles en fournissant un système
de plug-ins. Voici une série de vidéos pour aborder le nouveau couple <a title="MEF et Silverlight" href="http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2009/12/31/silverlight-4-screencasts-the-managed-extensibility-framework-mef.aspx">MEF
et Silverlight</a>.
</p>
        <h2>
          <strong>Actualités “Alt.NET”</strong>
        </h2>
        <p>
Une des évolutions du TDD, BDD (Behaviour Driven Design) se propose de fournir une
définition des tests en langage presque naturel et surtout très proche du domaine
métier (c’est en cela qu’on présente le BDD comme étant du TDD + DDD). <a title="Cucumber framework" href="http://cukes.info/">Cucumber</a> est
un framework BDD ruby mais qui supporte .NET et Java, Gojko Adzic en donne un exemple
dans <a title="Cucumber en .NET" href="http://gojko.net/2010/01/01/bdd-in-net-with-cucumber-cuke4nuke-and-teamcity/">un
billet</a>.
</p>
        <h2>
          <strong>De l’autre côté</strong>
        </h2>
        <p>
          <a href="http://www.djangoproject.com/">Django</a> est un framework web fondé sur
le langage Python. Il a fait à Python ce que Ruby on Rails a fait à Ruby : démocratiser
l’usage d’un langage pas très populaire. Ce <a title="8 reasons to love django" href="http://www.coderholic.com/8-reasons-why-you-should-try-django/">développeur</a> parle
de son expérience en mettant en avant les fonctionnalités souvent citées : ORM, templating,
interface d’administration. De plus le langage a connu un regain d’intérêt quand Google
l’a choisi pour sa plate-forme cloud Google App Engine (depuis complétée avec Java). 
</p>
        <h2>
          <strong>Un projet</strong>
        </h2>
        <p>
          <a title="page sur script#" href="http://projects.nikhilk.net/ScriptSharp">Script#</a> est
peu reconnu car c’est plus un outil qu’un Framework web classique comme ASP.NET MVC.
Son développeur, Nikhil Kothari, est connu dans la communauté .NET pour fabriquer
beaucoup de choses dans son “garage”. Script# est un compilateur C# vers Javascript
pour être utilisé dans des applications web ou des gadgets Vista par exemple. L’une
des applications de Microsoft qui l’utilise est <a title="le blog de office web apps" href="http://blogs.msdn.com/officewebapps/">Office
Web</a>, la version en ligne des applications bureautiques.
</p>
        <p>
L’expérience de codage en C# : 
</p>
        <p>
          <a href="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Revueduweb.NETdu26octobre_90B0/scriplet.png">
            <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="scriplet" border="0" alt="scriplet" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Revueduweb.NETdu26octobre_90B0/scriplet_thumb.png" width="634" height="484" />
          </a>
        </p>
        <p>
Le debug : 
</p>
        <p>
          <a href="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Revueduweb.NETdu26octobre_90B0/debug.png">
            <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="debug" border="0" alt="debug" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Revueduweb.NETdu26octobre_90B0/debug_thumb.png" width="624" height="549" />
          </a>
        </p>
        <p>
Script# permet aussi la communication avec le serveur (JSON), incorpore une bibliothèque
de composants graphiques de base comme la textbox mais aussi des textboxes avec des
comportements auto-complétion ou watermaquée  etc. 
</p>
        <p>
Pour avoir une idée plus précise des possibilités et des limitations n’oubliez pas
de parcourir le fichier PDF <a href="http://projects.nikhilk.net/Content/Projects/ScriptSharp/ScriptSharp.pdf">readme</a> (40
pages) qui est une vraie documentation.
</p>
        <img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=90a686d6-8eea-4bce-a651-10f209f7528a" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Revue du web .NET du 15 décembre</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2009/12/14/RevueDuWebNETDu15D%c3%a9cembre.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,a0e7a710-4ae8-4984-acac-75835ed245a4.aspx</id>
    <published>2009-12-14T15:26:07.7565403-07:00</published>
    <updated>2009-12-14T15:26:07.7565403-07:00</updated>
    <category term=".net" label=".net" scheme="http://www.nventive.net/Blog2/CategoryView,category,net.aspx" />
    <category term="Revue du Web" label="Revue du Web" scheme="http://www.nventive.net/Blog2/CategoryView,category,RevueDuWeb.aspx" />
    <content type="html">&lt;h2&gt;&lt;b&gt;Les tweets de la semaine&lt;/b&gt; 
&lt;/h2&gt;
&lt;p&gt;
&lt;a href="http://twitter.com/thierry_n/statuses/6581723672"&gt;http://twitter.com/thierry_n/statuses/6581723672&lt;/a&gt; :
une nouvelle version de Mono, qui voit son offre commerciale prendre forme avec Mono
Touch (développement pour l’iPhone), Mono Tools for Visual Studio et la plateforme
serveur avec support (Suse Linux). Au passage le compilateur Mono devient aussi “C#
4.0 compatible”.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://twitter.com/EdgarSanchez/statuses/6566426910"&gt;http://twitter.com/EdgarSanchez/statuses/6566426910&lt;/a&gt; on
parlait la semaine dernière de GWT, Volta, voici un produit open source commercial,
SharpKit, qui permet de travailler en C# et compiler vers Javascript et vice versa. 
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;La question Stackoverflow&lt;/strong&gt; 
&lt;/h2&gt;
&lt;p&gt;
&amp;nbsp;&lt;a href="http://stackoverflow.com/questions/1681546/custom-wpf-control-dependency-property-not-binding-to-external-dp/1681624#1681624"&gt;http://stackoverflow.com/questions/1681546/custom-wpf-control-dependency-property-not-binding-to-external-dp/1681624#1681624&lt;/a&gt; Les
“dependency properties” de WPF sont un des aspects les plus puissants du framework
mais aussi un des plus difficiles à appréhender. Ici un exemple qui met en lumière
l’importance des metadata associées aux DP.
&lt;/p&gt;
&lt;h2&gt;&lt;b&gt;Actualités Microsoft&lt;/b&gt; 
&lt;/h2&gt;
&lt;p&gt;
Bien que &lt;a title="Patrick Smacchia et VS2010" href="http://codebetter.com/blogs/patricksmacchia/archive/2009/12/08/a-vs-2010-beta3-would-be-welcomed.aspx"&gt;certains&lt;/a&gt; pensent
qu’une beta 3 ou une RC pour Visual Studio 2010 serait la bienvenue, la date de sortie
(22 mars 2010) approche (moins de 100 jours maintenant). Dans &lt;a href="http://blogs.msdn.com/somasegar/archive/2009/12/09/creating-extensions-for-vs-2010.aspx"&gt;cet
article&lt;/a&gt;, Somasegar présente les nouveautés autour du développement d’add-in pour
Visual Studio :
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
un SDK de 10 MB au lieu de 100 MB (= documentation en ligne)&amp;nbsp; 
&lt;li&gt;
WPF comme framework de base 
&lt;li&gt;
facilité d’extension autour de l’éditeur 
&lt;li&gt;
un &lt;a title="extension gallerie" href="http://visualstudiogallery.msdn.microsoft.com/en-us/"&gt;site
renouvelé&lt;/a&gt; pour découvrir les extensions existantes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
On pourra consulter aussi &lt;a title="vid&amp;eacute;os sur channel 9" href="http://channel9.msdn.com/tags/Development-Tools-Ecosystem-Summit/"&gt;les
nombreuses vidéos&lt;/a&gt; issues de la conférence “Development Tools Ecosystem” 
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Actualités “Alt.NET”&lt;/strong&gt; 
&lt;/h2&gt;
&lt;p&gt;
&lt;a title="le site de DDD France" href="www.dddfrance.org"&gt;DDDFrance&lt;/a&gt; est un site
francophone qui propose des ressources autour du Domain Drivern Design en français.
Par exemple le livre DDD Quickly a été traduit : &lt;a title="lien vers la page du livre" href="http://www.dddfrance.org/DDDViteFait"&gt;DDD
vite fait&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
Au passage, en suivant les principes du DDD dont l’utilisation au plus proche du langage
du domaine métier, doit-on coder en anglais ou dans &lt;a title="DDD en VO ou pas ?" href="http://www.dddfrance.org/EcrireLeCodeDansSaLangueMaternelle"&gt;sa
langue maternelle&lt;/a&gt; ? 
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;De l’autre côté&lt;/strong&gt; 
&lt;/h2&gt;
&lt;p&gt;
&lt;a title="Virtual Box" href="http://www.virtualbox.org"&gt;VirtualBox&lt;/a&gt; est une application
de virtualisation rachetée par SUN il y a maintenant un peu plus d’un an. La version
3.1 sortie fin novembre apporte des fonctionnalités telle que la migration “live’”
d’une instance d’un hôte à un autre ou encore la restauration à partir d’un snapshot
(arbitraire et non le dernier). Un &lt;a title="console pour virtual box" href="http://code.google.com/p/vboxweb/"&gt;projet&lt;/a&gt; communautaire
fournit une console web pour administrer les machines virtuelles.
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Un projet&lt;/strong&gt;
&lt;/h2&gt;
&lt;p&gt;
&lt;a title="le site du projet" href="http://statlight.net/"&gt;&lt;img style="border-right-width: 0px; margin: 0px 0px 5px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="StatLight.logo.home" border="0" alt="StatLight.logo.home" align="left" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Revueduweb.NETdu26octobre_90B0/StatLight.logo.home_3.jpg" width="244" height="83"&gt;&lt;/a&gt;&amp;nbsp;&lt;a title="le site du projet" href="http://statlight.net/"&gt;Statlight&lt;/a&gt; est
un framework de tests automatisés pour Silverlight. Vous pouvez le penser un peu comme
le Nunit de Silverlight. Dans la définition de xUnit et du TDD en général il faut
que l’outil fournisse un moyen de :
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
définir les tests (attributs) 
&lt;li&gt;
les exécuter 
&lt;li&gt;
vérifier les résultats (méthodes d’assertions) 
&lt;li&gt;
et les assembler en suite&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Il faut d’abord se procurer le &lt;a title="template de TU pour silverlight" href="http://code.msdn.microsoft.com/silverlightut/"&gt;template&lt;/a&gt; de
projet de tests unitaires pour Silverlight et le code source du framework de test
unitaires (on le trouvera dans le sous-répertoire source code du toolkit : C:\Program
Files (x86)\Microsoft SDKs\Silverlight\v3.0\Toolkit\Jul09\Source par exemple, extraire
les dlls du répertoires binaries du dossier compressé). Vous devez arriver à cette
structure
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Revueduweb.NETdu26octobre_90B0/setup.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="setup" border="0" alt="setup" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Revueduweb.NETdu26octobre_90B0/setup_thumb.png" width="234" height="244"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Voici un test sur l’interface : 
&lt;/p&gt;
&lt;pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;[TestClass]
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; Test
: SilverlightTest &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;{
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;  &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; MainPage
sut; &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt; [TestInitialize]
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; Setup() &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt; {
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;    sut = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; MainPage(); &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;    &lt;span style="color: #008000"&gt;//pour
nettoyer les pages entre chaque TU&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;    &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.TestPanel.Children.Add(sut); &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt; }
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt; [TestMethod]
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; TestButton() &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt; {
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;    Assert.AreEqual(300, sut.Width);
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;    &lt;span style="color: #008000"&gt;//no
automation&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;    &lt;span style="color: #008000"&gt;//visible
with the [assembly: &lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;    &lt;span style="color: #008000"&gt;//InternalsVisibleTo("MySLApplication.Tests")] &lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;    sut.Button_Click(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;, &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;); &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;    Assert.AreEqual(Visibility.Visible, sut.childrenPanel.Visibility);
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt; }
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;}&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;
Le changement de visibilité sur les contrôles et l’assembly vient du manque d’automation
dans le Framework de test. Quand vous lancez le test une page apparaît avec les résultats
: 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Revueduweb.NETdu26octobre_90B0/resultat.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="resultat du test" border="0" alt="resultat du test" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Revueduweb.NETdu26octobre_90B0/resultat_thumb.png" width="244" height="203"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;a title="le site du projet" href="http://statlight.net/"&gt;Statlight&lt;/a&gt; permet d’automatiser
cette démarche et est compatible avec TeamCity ou MSBuild par exemple. Ici on ajoute
l’appel à l’outil dans un post-build (à exécuter avec un compte admnistrateur) :
&lt;/p&gt;
&lt;p&gt;
C:\StatLight.v0.9\StatLight.exe -x='C:/Projects/MySLApplication.Tests/Bin/Debug/MySLApplication.Tests.xap"
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Revueduweb.NETdu26octobre_90B0/image_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="r&amp;eacute;sultat du test dans VS" border="0" alt="r&amp;eacute;sultat du test dans VS" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Revueduweb.NETdu26octobre_90B0/image_thumb.png" width="594" height="232"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
La version de Visual Studio 2010 de Web Testing devrait être compatible Silverlight
mais en attendant et/ou vous êtes sur une plateforme moins récente, StatLight est
l’outil à évaluer.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=a0e7a710-4ae8-4984-acac-75835ed245a4" /&gt;</content>
  </entry>
  <entry>
    <title>Revue du web .NET du 8 décembre</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2009/12/08/RevueDuWebNETDu8D%c3%a9cembre.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,960a95d3-7c89-4fd7-b066-eb96682d0f1b.aspx</id>
    <published>2009-12-08T15:44:00-07:00</published>
    <updated>2009-12-08T06:36:13.6419053-07:00</updated>
    <category term=".net" label=".net" scheme="http://www.nventive.net/Blog2/CategoryView,category,net.aspx" />
    <category term="Revue du Web" label="Revue du Web" scheme="http://www.nventive.net/Blog2/CategoryView,category,RevueDuWeb.aspx" />
    <content type="html">&lt;h2&gt;&lt;b&gt;Les tweets de la semaine&lt;/b&gt; 
&lt;/h2&gt;
&lt;p&gt;
&amp;nbsp;&lt;a href="http://twitter.com/sbohlen/statuses/6236293827"&gt;http://twitter.com/sbohlen/statuses/6236293827&lt;/a&gt; les
vidéos de la NotAtPdc sont en lignes. 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://twitter.com/programmingjoy/status/6296011683"&gt;http://twitter.com/programmingjoy/status/6296011683&lt;/a&gt; Mono
everywhere ? Un projet qui le rend disponible pour Android.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://twitter.com/thbonk/status/6235070045"&gt;http://twitter.com/thbonk/status/6235070045&lt;/a&gt; Windows
Mobile n’a pas peut-être pas l’interface utilisateur qu’il mérite mais il a tous les
atouts d’un système d’entreprise dont la présence d’un système de messaging comme
MSMQ
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;La question Stackoverflow&lt;/strong&gt; 
&lt;/h2&gt;
&lt;p&gt;
&amp;nbsp;&lt;a title="question stackoverflow" href="http://stackoverflow.com/questions/1855211/how-to-store-several-states-in-one-variable"&gt;http://stackoverflow.com/questions/1855211/how-to-store-several-states-in-one-variable&lt;/a&gt; on
connaît tous les énumérations mais leur utilisation en tant que flag (combinaison
de plusieurs valeurs) est moins évidente même si souvent rencontrée dans le Framework
lui-même.
&lt;/p&gt;
&lt;h2&gt;&lt;b&gt;Actualités Microsoft&lt;/b&gt; 
&lt;/h2&gt;
&lt;p&gt;
Une des nouveautés du .NET Framework 4 sont les API autour du parallélisme. Afin de
profiter des processeurs à cœurs multiples Microsoft ajoute des classes de base pour
simplifier le développement de traitements en parallèle. On a beaucoup entendu parler
de PLinq qui permet d’appliquer des traitements parallélisés à des ensembles d’objets.
Task Parallel Library (TPL) est moins connue, &lt;a title="article sur TPL" href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=c3ea8fb5-650d-434b-a216-7e54c53965d1"&gt;un
article au format PDF&lt;/a&gt; permet de découvrir les tâches parent-enfant, leur utilisation
et leur debugging.
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Actualités “Alt.NET”&lt;/strong&gt; 
&lt;/h2&gt;
&lt;p&gt;
Un nouveau site qui dépasse le monde .NET : &lt;a href="http://www.algorithmatic.com/browse"&gt;http://www.algorithmatic.com/browse&lt;/a&gt; pour
apprendre, découvrir et contribuer à un répertoire d’algorithmes, le site est en ASP.NET
MVC et l’éditeur de code en Silverlight. 
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;De l’autre côté&lt;/strong&gt; 
&lt;/h2&gt;
&lt;p&gt;
La spécification de JavaEE a été &lt;a title="un billet sur la sp&amp;eacute;cification JavaEE 6" href="http://sacha.labourey.com/2009/12/03/ee6-has-been-approved-yet/"&gt;voté&lt;/a&gt;e
cette semaine.&amp;nbsp; Le vote (non) de la fondation Apache reflète une inquiétude grandissante
chez les membres du comité d’après &lt;a href="http://www.theserverside.com/news/thread.tss?thread_id=58718"&gt;TheServideSide.com&lt;/a&gt; sans
parler du &lt;a title="d&amp;eacute;bat sur le JCP" href="http://www.theserverside.com/news/thread.tss?thread_id=58629"&gt;débat&lt;/a&gt; sur
le processus même d’évolution, certains militant pour un abandon du JCP (Java Community
Process) pour un modèle complètement Open Source.
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Un projet&lt;/strong&gt;
&lt;/h2&gt;
&lt;p&gt;
&lt;a href="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Revueduweb.NETdu26octobre_90B0/wix_2.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="logo de wix" border="0" alt="logo de wix" align="left" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Revueduweb.NETdu26octobre_90B0/wix_thumb.gif" width="125" height="94"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
Dans ce monde d’applications web ou SAAS (Software As A Service) on en oublierait
presque les programmes d’installation… 
&lt;/p&gt;
&lt;p&gt;
&lt;a title="site du projet Wix" href="http://wix.sourceforge.net/index.html"&gt;Wix&lt;/a&gt; est
un projet que Microsoft a arrêté de développer et l’a mis à disposition de la communauté
qui l’a fait vivre depuis : la version 3 est sortie cet été. 
&lt;/p&gt;
&lt;p&gt;
Wix est un outil pour packager les applications. Comme l’illustre &lt;a title="tutorial de Wix" href="http://www.tramontana.co.hu/wix/"&gt;le
tutorial&lt;/a&gt; très riche, les fonctionnalités de Wix sont riches. Basé sur XML il vous
permet de gérer les dépendances comme le .NET Framework, les raccourcis ou encore
les fichiers d’aide etc. Le support de Visual Studio 2008 prend la forme de plusieurs
types de projets dont les customs actions pour étendre l’installation avec des étapes
personnalisées. La mise à jour d’application est aussi gérée.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Revueduweb.NETdu26octobre_90B0/wixProjetcs.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="wixProjetcs" border="0" alt="wixProjetcs" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/Revueduweb.NETdu26octobre_90B0/wixProjetcs_thumb.png" width="244" height="197"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Déclaration d’une dépendance avec le .NET Framework :
&lt;/p&gt;
&lt;pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;PropertyRef&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Id&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"NETFRAMEWORK35_CLIENT"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Condition&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Message&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;'This
setup requires the .NET Framework 3.5 client profile installed.'&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;![CDATA[Installed
OR NETFRAMEWORK35_CLIENT]]&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Condition&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;
Installation d’une base de données :
&lt;/p&gt;
&lt;pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #c71585"&gt;sql&lt;/span&gt;:&lt;span style="color: #800000"&gt;SqlDatabase&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Id&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;'SqlDatabase'&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Database&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;'Foobar'&lt;/span&gt; &lt;span style="color: #ff0000"&gt;User&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;'SQLUser'&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Server&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;'[SQLSERVER]'&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;              &lt;span style="color: #ff0000"&gt;CreateOnInstall&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;'yes'&lt;/span&gt; &lt;span style="color: #ff0000"&gt;DropOnUninstall&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;'yes'&lt;/span&gt; &lt;span style="color: #ff0000"&gt;ContinueOnError&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;'yes'&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #c71585"&gt;sql&lt;/span&gt;:&lt;span style="color: #800000"&gt;SqlScript&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Id&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;'CreateTable'&lt;/span&gt; &lt;span style="color: #ff0000"&gt;BinaryKey&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;'CreateTable'&lt;/span&gt; &lt;span style="color: #ff0000"&gt;ExecuteOnInstall&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;'yes'&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #c71585"&gt;sql&lt;/span&gt;:&lt;span style="color: #800000"&gt;SqlDatabase&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;pre&gt; ou encore &lt;a title="configuration du firewall" href="http://wix.sourceforge.net/manual-wix3/firewall_xsd_firewallexception.htm"&gt;configurer
le firewall&lt;/a&gt;.&lt;/pre&gt;&lt;img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=960a95d3-7c89-4fd7-b066-eb96682d0f1b" /&gt;</content>
  </entry>
</feed>