J'avais rencontré mon coach préféré sur un vide grenier dans la région d'Annecy, et il m'en avait parlé, et voilà c'est fait : le quatrième atelier du Coach C# est maintenant publié sur MSDN france.
C'est à l'adresse (avec les trois premiers ateliers) :
http://msdn.microsoft.com/fr-fr/vcsharp/msdn.coachcsharp.laboratoire.aspx
Il se concentre sur l'adaptation des objets au contexte avec C# et .Net ... l'héritage, le polymorphisme, le reflexion, etc ...
Il a été conçu pour C# 2, mais tout fonctionne sur la version VS 2008, bien sûr.
Une petite indiscrétion du coach : les deux derniers ateliers sont toujours en gestation, mais ils arrivent :-)) - il faut beaucoup de temps pour écrire tout cela ! mais c'est générique et enumérateur à tous les étages, vous allez vous faire plaisir.
Ou comprendre le positionnement des technologies de développement de Microsoft.
Comme beaucoup, mes clients ont pour principal objectif de créer suffisamment de valeur pour pouvoir gagner plus que ce qu’ils dépensent, chaque année. Et dans mon monde, la technologie est souvent vue comme le principal véhicule de création de valeur – mais ce n’est pas le seul, loin de là. Si une bonne technologie suffisait pour faire des entreprises rentables et des projets réussis, cela se saurait !
Microsoft, qui a les mêmes préoccupations de rentabilité, s’est orienté très tôt sur une démarche d’augmentation de la valeur basée sur quatre vecteurs principaux : la technologie bien sûr (par rapport à laquelle des standards de facto sont créés), le marché ciblé, les utilisateurs (au sens large), et les scénarios délivrés.

A mon sens, cette segmentation transparait fortement dans les technologies de développement distribuées par Microsoft, et aide à comprendre le positionnement de chacune de ces dernières et les compétences requises pour bien les implémenter. Car pour continuer à créer sa valeur, Microsoft a besoin que ses technologies de développement soient utilisées par les bonnes personnes pour délivrer les bons scénarios !
En gros, quels utilisateurs sommes nous réellement et que souhaitons nous faire avec ces technologies.

Les équipes de Redmond ont travaillé sur le sujet et sont arrivé aux conclusions suivantes :
 |
- Un groupe de personnes est humainement plus facilement appréhendé comme un personnage virtuel, facilement mémorisable, et suffisamment décrit pour en comprendre le contour et les compétences ; Par exemple, Toto est un personnage traditionnel de nos écoles et le Père Noël en est un autre bien courant dans nos familles ! |
|
- Chacun des ces personnages possède des compétences propres, qui l’aident à réaliser des scénarios bien déterminés – Toto raconte des histoires, alors que le père Noël distribue des cadeaux (pour les baffes, c’est le père Fouettard). |
Par analogie, si on peut imaginer « Toto développe une macro Excel », le scénario « Toto développe un feature pour Sharepoint » est une bonne blague qui va faire rire les collègues de Toto, mais pas les acheteurs potentiels dudit feature (enfin, surtout les équipes de support).
Dans le domaine du développement, l’équipe de Visual Studio utilise trois personnages principaux :
- Mort : c’est un développeur n’ayant pas à la base un cursus d’informaticien, mais devant venir à la programmation par l’intermédiaire d’un autre métier consommateur de technologie (par exemple, statisticien, biologiste, ingénieur, roboticien, etc.). Il sélectionne et utilise les technologies de manière ad’hoc et opportuniste par rapport aux besoins de son métier de base ; Il n’hésite pas à changer de solution ou de composant s’il trouve quelque chose qu’il juge plus adaptée à ses problématiques ;
- Elvis : C’est un développeur qui a choisi avant tout un domaine technologique, et qui utilise ce dernier dans ses développements quotidiens, en cherchant à travailler sur des projets pouvant l’aider à étendre sa compétence. De cursus initial informatique, il est définit comme un pragmatique ayant la capacité à développer ses compétences tout en travaillant sur un projet de longue durée.
- Einstein : C’est un développeur comme Elvis, mais qui a la capacité à (entre)voir les relations entre les choses grâce à une approche quelque peu obsessionnelle qui le pousse à créer la solution la plus optimum à un problème donné ; Il aime maîtriser, connaître et comprendre la totalité des codes produits dans une solution.
En regardant les technologies de développement au travers de ce prisme, on comprend mieux le positionnement de chacune d’entre elle. Alors que Mort va privilégier une prise en charge rapide du produit (le "quick", mais cerainement aussi "dirty"), Elvis va se concentrer sur le développement à l’aide des objets (Il connaît la POO, donc !), alors que Einstein va aller jusqu’à tenter de modifier et/ou surcharger les mécanismes internes (c'est l'expert du fond du couloir, qui mange ses pizzas devant son clavier).
Toute la difficulté est que ces trois catégories ne sont pas exclusives entre elle. Personnellement, je suis certainement un Mort de l’ISA Server, et pourtant j’ai quelques connaissances un peu plus proches du code en .Net (il doit bien exister un domaine dans .Net où je puisse jouer à l’Elvis). Nous mélangeons tous deux ou trois personnages.
Pour l'exemple, ASP.NET est une technologie pour Mort, Elvis et Einstein :
- Par simple glisser-déplacer de contrôles, il est possible pour Mort de développer des applications Web ad’hoc relativement puissantes, intégrant même aujourd’hui des mécanismes AJAX ;
- Elvis pourra respecter une architecture en couches et avoir l’impression de pouvoir partager ses classes d’objets en développant en VB.Net ou en C# ; Si Elvis est puriste, il préfèrera le C# qui est plus élégant et plus sécurisé ; Pour l’aider, Elvis va utiliser les « Microsoft Entreprise Libraries », qui sont bien utiles même si on ne regarde jamais comment elles ont été développées.
- Einstein va commencer par développer son architecture de référence respectant une factorisation de besoins fonctionnels et d’indicateurs de qualités spécifiques, qu’il utilisera par la suite dans tous ses développements de site Web en ASP.NET ; Cette architecture sera basée sur des composants de services et des modules http propres ; En tout cas, il tentera de ne jamais utiliser un code en licence partagée ! Mais cela restera bien de l’ASP.NET.
La capacité d'ASP.NET à s'adapter aux trois scénarios explique certainement en partie le succès que connaît cette technologie.
Par contre, Quid des autres ? A y regarder de plus près, à l’exception de Visual Studio au sens large, de la personnalisation de SharePoint avec Sharepoint Designer, ou du paramétrage de CRM avec la modification des métadonnées, toutes les autres technologies de développement s’adressent à des Elvis ou des Einstein.
Maintenant, la vrai question est : Est-il possible de gagner de l’argent en réalisation de projets de développement si on n’est ni Elvis, ni Einstein ? A regarder les technologies dans le prisme de la classification des personnages, la réponse donnée est évidement Non ! Sinon les scénarios correspondants auraient été créés …
Et vous ? Qui êtes vous ? Mort ? Elvis ? Einstein ?
Il y a quelques mois, Microsoft a publié (en anglais) un kit de formation gratuit très complet. Ce kit inclut des présentations (ppts - 28 en tout sur difrférents sujets), des ateliers (21 ateliers sur VS 2008 et .Net 3.5) et des demonstrations (18 démonstrations) à réaliser. Le contenu a été pensé pour aider à comprendre Visual Studio 2008 et certaines des nouvelles technologies du framework 3.5 comme : LINQ, C# 3.0, Visual Basic 9, WCF, WF, WPF, ASP.NET AJAX, VSTO, CardSpace, SilverLight, les application Mobile, et l'ALM (Application Lifecycle Management) avec Visual Studio Team System 2008. Il est à noter que c'est exactement le contenu qui a été utilisé dans le cadre du program de formation METRO (auquel je participe en tant que trainer Visual Studio 2008), à destination des partenaires et "early adopter" de Microsoft. En se basant sur ce contenu, j'ai d'ailleurs déjà donnés plusieurs sessions/workshop de formation, notamment en afrique du nord et au moyen-orient, et il y a largement de quoi faire plusieurs jours de contenu.
Il est téléchargeable ici.
Les présentations distribuées avec le kit sont ci-dessous. Il est à noter que chacun des slides dispose en commentaire la retranscrition des explications données lors de la formation d'origine. Les titres des présentations sont assez explicites sur le sujet traité.
01-LapAroundVS2008AndThe.NetFramework3.5.pptx
02-.NET Language Integrated Query (LINQ) Framework.pptx
03-Using LINQ to access relational data.pptx
04-WhatsNewCS.pptx
05-Visual Basic.pptx
06-Framework35.pptx
07-Introduction to the Microsoft Client Continuum.pptx
08-Introduction to ASP.NET AJAX.pptx
09-Building Web Apps with VS.pptx
10-Introduction to Silverlight.pptx
11-What's new in Windows Presentation Foundation 3.5.pptx
13-BuildingWPFAppsInVS2008andExpressionBlend.pptx
15-ConnectedApplicationFoundationsWFWCFCardSpace.pptx
16-WCFWeb-CentricCapabilitiesinOrcas.pptx
17-WFServices.pptx
18-CardSpace.pptx
19-Overview_of_an_OBA_VSTO.pptx
20-Building_Custom_Office_UI_With_VSTO.pptx
21-VSTO SharePoint Workflow Development.pptx
22-Building Mobile Applications.pptx
23-Introducing Application Lifecycle Management.pptx
24-Value-up Software development.pptx
25-The Business Analyst Perspective.pptx
26-The Project Managers Perspective.pptx
27-The Architect Perspective.pptx
28-The Developers Perspective.pptx
29-The Testers Perspective.pptx
31-ADO Sync Services.pptx
Les ateliers (avec le code source), tous aussi intéressants les uns que les autres, sont :
- Building Web Applications with Visual Studio 2008
- Building Windows Presentation Foundation Applications
- Integrating CardSpace into web sites
- Client Application Service s using Windows Forms and WPF Interoperability in Visual Studio 2008
- Developing Dynamic, Data-Driven Web Sites
- Introduction to ASP.NET AJAX
- JSON using the Windows Communication Foundation and ASP.NET AJAX
- Using LINQ to SQL ( DLinq ) with the .Net Framework 3.5 and Visual Studio 2008
- Silverlight: Monster Factory
- Syndication using the Windows Communication Foundation
- LINQ: Unified Language Features for Object and Relational Queries
- Using Visual Studio Tools for Office v3.0 with Excel 2007
- Using Visual Studio Tools for Office v3.0 with Outlook 2007
- Using Visual Studio Tools for Office v3.0 with Share Point 2007 (how to create a Sharepoint Workflow with Visual Studio 2008 and VSTO).
- Using Visual Studio Tools for Office v3.0 with Word 2007
- Introduction to Windows Communication Foundation
- Introduction to Windows Workflow Foundation
- C# 3.0 Language Enhancements
- Visual Basic 9 .0 Language Enhancements
- Workflow Services using the Windows Communication Foundation
- DataBinding with Microsoft Windows Presentation Foundation
Et les démonstrations (avec le script, les codes soources et les procédures d'installation), si vous devez convaincre vos collègues ou faire des présentations, des séminaires, etc. :
- Visual Studio 2008 Web Development
- The .NET Language Integrated Query Framework (LINQ)
- Workflow Services : Introduction
- Workflow services : Durable Services
- Workflow services : Content Exchange and Management
- Workflow services : Duplex Messaging
- workflow services : Long Running Work via Messaging
- workflow services : Conversations
- Extending the Office Fluent User Interface
- SharePoint Workflow Tools
- Visual Basic 9.0
- Using LINQ with Relational Data
- Building Mobile Applications using Visual Studio 2008 & .NETCF 3.5
- Building the LogonScreen in WPF.docx
- Framework Enhancements – Application Domain Isolation
- Connected Application Foundations using WF, WCF, and CardSpace
- Windows CardSpace and Information Cards
- WCF – Syndication Services
C'est en tout cas, même si les technologies ont continué à évoluer depuis la date de publication, une bonne source d'inspiration !
Et pour finir le cyle de formation WinFx, une journée de formation/information gratuites disponibles en WebCast, pour tout savoir des bases de Windows Presentation Foundation. C'est encore en anglais.
Qu'est-ce que le workflow ?
Introduction à Windows Workflow (Anglais)
Le workflow séquentiel (Anglais)
Le workflow à état (Anglais)
Windows Workflow Foundation dans le détail
Le développement d'applications avec Windows Workflow (Anglais)
Exemple de Workflow simple (Anglais)
Scénarios de Hosting et de Communication (Anglais)
Le développement d'applications distribuées (Anglais)
Le développement de workflow à états (Anglais)
La base du développement d'activités (Anglais)
Le développement de moteur de règles (Anglais)
Si vous souhaitez vous faire la main, voici 10 ateliers complets très intéressant. Ils ont été écrits il y a quelques temps avec VS 2005, pensez-donc à adpater le contenu à Visual Studio 2008. Il y a aussi bien sûr quelques autres changements avec .Net 3.5. Néanmoins, cela reste très interessant, d'autant que l'atelier 10 traite du rehosting complet du designer de workflow dans une application Windows Form - avec le code complet. Je suis personnellement reparti de ce code pour réaliser pour l'un de mes clients l'application de dessin de workflow qu'il est possible de voir dans ma session au TechDays 2008 (LAN307 - Programmation visuelle avec Workflow Foundation dans une application de finances).
L'adresse de chargement des ateliers est ici.
le contenu des ateliers est le suivant :
WF HOL01 - Getting Started with Windows Workflow Foundation
Un bonne inntroduction aux mécanismes de workflow
WF HOL02 - Creating Custom Activities
la base de la base pour la création d'activité personnalisées. A comprendre donc ! Un petit article à lire (et faire les exemple) avant d'attaquer le lab, histoire d'avoir les idées claires sur le différentes classes
http://msdn.microsoft.com/en-us/library/aa480200.aspx
WF HOL03 - Hosting Workflows
Une introduction aux différents mécanismes de hosting des workflow.
WF HOL04 - Creating State Machine Workflows
Les workflows à état ... tout un programme !
WF HOL05 - Creating State Machine Workflows
L'idée de ce lab est d'introduire les services locaux de Windows Workflow.
WF HOL06 - Workflow and Web Services
C'est une présentation de l'exposition de WF sous forme de Web Service, et l'utilisation de Web Service dans les workflows. C'est la partie qui a été le plus fortement modifiée avec VS 2008 en utilisant .Net 3.5.
WF HOL07 - Creating Rules Driven Workflows
ça c'est très interessant : la gestion des règles. Une petite introduction au moteur des règles à lire avant de faire le lab : http://msdn.microsoft.com/fr-fr/library/aa480193(en-us).aspx. Pour ma part, en 3.5, j'ai déja utilisé les arbres d'expression pour implémenter différement des règles de workflow (un prochain post, certainement).
WF HOL08 - Transactional Behavior in Workflow
Un peu d'approche transactionnel, de compensation, etc. ça ne fait pas de mal, surtout lorsque vos sources n'implémentent pas XA, et qu'il faut donc un jour le faire soi même ...
WF HOL09 - Modifying Workflow Models at Runtime with Workflow Change
Du dynamisme dans l'approche de définition des workflow
WF HOL10 - Embedding the Workflow Designer
La partie la plus visuel sur le rehosting du designer dans une application winform. A comprendre absolument donc, si vous voulez un jour développer une interface de dessin de workflow sans passer par Visual Studio ...
Du travail en perspective, bon courage !
Bien que cette technologie ne soit pas réellement nouvelle aujourd'hui, j'ai toujours autant de questions sur comment s'informer (et/ou se former) sur Windows Communication Foundation. Alors voici (en anglais) deux journées de formation gratuites en vidéo disponibles en WebCast.
Introduction à WCF
Les contrats WCF
Gestion des versions de contrats
Gestion des exceptions
Bindings
Hosting WCF
Patterns d'échange de message
Modes d'instanciation
Gestion des accès
Les bases de la sécurité WCF
Sécurité avancée avec WCF
Sécurité des messages
Gestion des transactions
Gestion de files d'attente
Extension de WCF
C'est une excellente introduction avant de faire des ateliers, voire de lire un bon livre sur le sujet. Et Comme c'est sur msevents.microsoft.com, munissez-vous de votre liveId.
Le troisième atelier du Coach C# est maintenant publié sur MSDN france :
http://msdn2.microsoft.com/fr-fr/vcsharp/bb968851.aspx
Il se concentre sur la programmation des objets avec C# et .Net ... quelques pages à lire, donc, si vous n'êtes pas encore familiarisé avec cette approche : les objets, les méta-données, un peu de serialisation, et beaucoup de bonne humeur.
Les autres sont toujours en gestation, mais ils arrivent :-))
L'atelier 2 du coach C# a été mis en ligne sur le site MSDN France à l'adresse suivante :
http://msdn2.microsoft.com/fr-fr/vcsharp/bb847899.aspx
Bon, il s'est fait attendre, mais le contenu est relativement long et en fait, c'est relativement difficile de tenter d'expliquer simplement des choses compliquées (surtout qui sont la base de la POO). Les autres ateliers sont en cours d'écriture et je me fais plaisir :-)) On va tenter de gader un rythme de sortie d'un lab par mois.
Si vous avez des commentaires, des remarques, n'hésitez pas à me les envoyer pour éventuellement les incorporer aux prochaines livraisons.
Les 600 webcasts du Techdays 2007 à Paris sont maintenant disponibles à l'adresse suivante : WebCast TechDays
Pour ceux qui ont suivi ma session Introduction à .Net 3.0, elle est maintenant disponible à l'adresse suivante : WebCast Introduction .Net 3.0
Le fichiers de présentation et les démonstrations sont disponibles en pièces jointes de ce message.
Les sessions de Christine Dubois sont disponibles à l'adresse suivante :
WebCast Introduction à ASP.NET 2.0
WebCast Sécuriser un site Web
Le 18 janvier 2007, nous organisons avec Microsoft à Lausanne (Suisse) au palais des congrès de Beaulieu un atelier gratuit d’une demi-journée consacré à la découverte d’ASP.Net AJAX. Il est ouvert à tous (dans la limite des places disponibles).
L’atelier étant consacré essentiellement à des exercices, il est nécessaire que vous veniez avec votre portable configuré en poste de développement. Un document d'atelier et les codes de solution seront fournis à chaque participant.
Plus d’informations et inscription en cliquant ici.
Une bonne occasion à ne pas manquer.
Lors d’un déjeuner avec une connaissance chargée du recrutement de profils techniques dans un cabinet de ressources humaines, la discussion est venue sur une question majeure : « quels sont les trois principaux points pour déterminer qu’un(e) candidat(e) possède une expérience réussie de projet de développement .Net ? » Vaste question qui a demandé une prolongation gastronomique bien après le repas du soir, afin d’arriver aux trois questions suivantes :
- « Qu’exprime pour vous l’extrait de code suivant ? »
VB.Net
(ByVal sender As Object, ByVal e As EventArgs)
C#
(object sender, EventArgs e)
Au début, nous avions pensé à des questions du style « quelle est l’influence des méthodes virtuelles dans le polymorphisme ? », ou encore « Parlez-moi des différences entre une classe abstraite et une interface », mais il suffit d’avoir en face de soi une personne qui a bachoté un livre sur l’approche objet, pas nécessairement en .net, et les réponses sont évidentes.
Alors que si le(la) candidat(e) fait une réponse autre que « c’est le truc qu’on a quand on double-click sur un contrôle », voire qu’il(elle) est tellement intarissable sur l’avantage de l’héritage de System.EventArgs qu’au bout de cinq minute on doit siffler la mi-temps, on est [à peu près, ndlr] sûr qu’il(elle) a compris ce qu’est la programmation objet, ce qu’est un « event handler », et qu’elle est la différence entre la programmation procédurale et celle par événement.
- « Quelle est votre principale source de documentation que vous utilisez dans votre recherche d’information ? »
Ici, aucun doute possible, la bonne réponse donnée par l’expérience n’est ni msdn2.microsoft.com, ni les documents et livres (nombreux) sur le sujet, mais bien www.google.com ou encore www.google.com/microsoft pour trouver les bonnes réponses sur les sites communautaires (au passage, ne pas oublier de demander à l'administrateur réseau de débloquer tous les sites communautaires).
- « Quelle est la caractéristique principale indiquant la fin d’un projet de développement ? »
La réponse traditionnelle « Quand l’ensemble du cahier des charges est couvert » traduit bien une approche quelque peu théorique du développement (nous avons tous été formés à Merise J), car bien rares sont les développements qui ont un réel cahier des charges … En fait, quelqu’un réaliste répondrait sûrement plutôt « Quand il n’y a plus rien à retirer au projet ! ».
Enfin, pour vraiment les bons candidats, nous avons ajouté la question subsidiaire : « Comment caractériser la complétude d’un projet de développement ? » Et là, si le(la) candidat(e) possède une bonne conscience de la réalité économique des choses, la bonne réponse devrait ressembler à « lorsque l’étendue du revenu créé par la solution développée correspond à plus de 50% de ce qui avait été estimé. »
Encore faudrait-il que les projets de développement soient caractérisés par des indicateurs de complétude tangibles, et par des objectifs financiers - mais cela n'est pas en standard dans le framework .Net.
Microsoft France lance un site pour accompagner ceux qui ont à gérer des projets de développements. Sauf si tous vos projets ont été (ou sont) de totales réussites, il peut être interessant d'aller faire un tour sur le site : le coach VSTS
Neuf ateliers seront publiés d'ici à début février 2007, et l'objectif est de couvrir l'ensemble des points qu'il faut savoir pour bien gérer le(s) cycle(s) de développement d'une solution logicielle en utilisant team System et la méthode Agile (MSF - Microsoft Solution Framework). Pour le moment, seul l'atelier N°1, qui concerne l'installation de la plateforme Team System et de ses outils clients, est en ligne. Les autres vont suivre rapidement.
Pour télécharger les ateliers et/ou visualiser les vidéos de présentation, cliquez ici.
Il est à noter que, comme le coach asp.net, les ateliers sont téléchargeables au format Word 2003 (.doc), ainsi que le code de la solution.
Voici le plan :
|
Atelier 1 : Installer et configurer un environnement avec Visual Studio Team Foundation Server
Le premier atelier vous présente les étapes de création d’un environnement de développement et de test et de vous familiariser avec l’outil de développement Visual Studio Team System.
Atelier 2 : Créer un premier projet avec VSTS
L’atelier 2 vous permet de déterminer les risques du projet, de constituer le noyau dur de l’équipe de projet, de définir les itérations du cycle de projet et les livrables, de concevoir les éléments de travail de base, et de mettre en place la base documentaire du projet.
Atelier 3 : Dessiner l’architecture de l’application
L’atelier 3 vous permet de Récupérer le projet de développement en l’état avec Visual Studio et de dessiner les diagrammes de l’application.
Atelier 4 : Définition de la stratégie de contrôle du code source
L’atelier 4 vous permet de gérer le contrôle de source, de définir la stratégie de test Check-in et d’association de check-in à une unité de travail et de créer une stratégie personnalisée. |
|
|
|
Atelier 5 : La construction de l’application
L’atelier 5 vous permet de générer l’architecture de référence, de créer des diagrammes de classe, de comprendre comment développer un code de qualité et de créer des tests de développement : Test unitaire, couverture de code et analyse de code.
Atelier 6 : Validation de la qualité du code
L’atelier 6 vous permet de modifier les tests de développement, de créer les tests de charge et de valider la performance du code (profiling).
Atelier 7 : Gestion des builds
L’atelier 7 vous permet de créer des builds, de synchroniser les sources et les exécutions des tests, et de générer et publier les rapports de build.
Atelier 8 : Déploiement de l’application
L’atelier 8 vous permet de créer le build final, les projets de déploiements Windows/Web/CAB/Merge et d’installer la solution finale.
Atelier 9 : Trucs et Astuces |
Suivez le coach ... :-))
En arrivant un matin cette semaine à mon bureau, j’ai trouvé un joli colis avec un Zune noir à l’intérieur. Pour les ignorants (dont je faisais parti jusqu’à ce fameux matin), Zune est Le « Digital Media Player » de Microsoft.
J’allais enfin sortir de l’âge de silence dans lequel j’étais ancré depuis ma naissance pour gouter aux joies sans fin de la promenade matutinale avec des bouchons musicaux dans les oreilles.
Il est vrai que le gris du béton est beaucoup plus seyant en musique, et que de douces notes améliorent la tolérance à l’art scatologique signé d’un grand nombre d’animaux de compagnies sur les trottoirs de nos villes.
Bref, c’est le geste fébrile et la main tremblante d’émotion que j’insère le CD d’installation. La procédure semble facile et seules trois lignes accompagnées de trois pictogrammes la décrivent : « Charger le logiciel d’installation », « Connecter le Zune quand cela est demandé », et « Synchroniser vos musiques, vos vidéos et vos images ». Rien de plus simple, donc. C’est un vrai produit grand public. Ouf, je suis sauvé.
J’attaque donc la procédure, de belles images défilent, et après quelques boutons « Suivant », lorsque la l’installation indique 95% de complétude, une très belle fenêtre s’affiche : « Installation Error » !

C’est vrai que l’image est belle, et vu l’expression de la charmante dame, c’est une erreur qui va faire mal …
Bon, étant un habitué de la théorie de l’accoutumance, (c'est-à-dire qu’avec le temps les choses incompatibles arrivent à cohabiter), je reboote mon ordinateur. Mais là, rien n’y fait, chacun reste campé sur ses positions. Donc, après avoir observé cette magnifique dentition quelques paires de fois, je décide de m’en référer à des copains pour m’apercevoir qu’une compétition mondiale vient de s’ouvrir : « Comment installer un client Zune sur une machine XP SP2 installée avec une version internationale du système d’exploitation ».
Et c’est un allemand de Fuerth, Damir Tomicic, qui remporte la palme : Il manque deux groupes dans la liste des groupes locaux de la machine, le compte d’installation devant appartenir à ces deux groupes, à moins qu’il n’appartienne au groupe d’administrateurs locaux. Tout d’un coup, on sort du rêve pour entrer dans une informatique bien plus professionnelle – c’est une bonne nouvelle, il va surement y avoir des MVP Zune [avis aux amateur(e)s, ndlr].
Donc voici l’étape manquante dans la procédure d’installation du zune :
Pré-requis :

Le reste de la procédure reste inchangé.
Après, c’est un vrai plaisir d’utiliser un Zune, j’ai enfin ma musique et mes vidéos préférées quand je bois mon café sur le zinc du quartier. Je ne suis plus obligé de regarder cet écran de télévision qui défile des tirages de numéros.
En fait, j’en discutais avec ma femme hier, et je pense que je vais l’utiliser pour regarder tous les webcasts que je charge essentiellement du site de Microsoft pour rester informé des nouveautés. La pause café ou l’attente à la poste ne sera plus une perte de temps. Et la prochaine fois que vous verrez une personne dans une file d’attente avec un Zune, il ne faudra pas se dire qu’elle s’isole dans la musique, mais qu’elle est peut-être en formation professionnelle.
Microsoft SQL 2005 introduit un nouvel opérateur relationnel PIVOT qui applique une rotation à un jeu d’enregistrements en croisant dynamiquement les valeurs d’une colonne unique en un jeu de colonnes multiples. C’est le même mécanisme que celui utilisé pour la création de tableaux croisés dynamique avec un tableur.
Imaginons le jeu d’enregistrements suivant contenu par une table temps, donnant par exemple par numéro de jour le nombre d’heure travaillé sur un projet :
Jour Duree Nom
----------- ---------------------- --------------------
1 2,5 Bernard
2 3 Bernard
1 4 Christine
3 6 Christine
3 1,5 Bernard
5 4 Bernard
5 6 Christine
En appliquant l’opérateur PIVOT suivant la requête suivante :
SELECT * FROM dbo.TestTemps
PIVOT (sum(Duree) FOR Jour IN ([1], [2], [3], [4] )) as PVT
On obtient le jeu de données croisées suivant :
Nom 1 2 3 4 5
--------------- ------ ------ ------ ------ ------
Bernard 2,5 3 1,5 NULL 4
Christine 4 NULL 6 NULL 6
C’est donc un opérateur sur le principe très pratique pour croiser tout type de jeu d’enregistrements. Néanmoins, il possède un inconvénient majeur : la liste d’éléments explicités dans l’ensemble de l’opérateur IN est une liste finie qui ne peut pas être générée à partir d’une sous requête SELECT.
Se pose donc le problème de l’utilisation de PIVOT avec une liste d’éléments variables, comme par exemple le numéro de jour du mois donc le maximum vari de 28 à 31.
Voici une solution qui a été implémentée dans le cadre d’une gestion de suivi des temps passés par des ressources sur des projets (informatiques). Le principe de la solution est de générer dynamiquement une chaine de caractères qui représente l’ensemble à appliquer pour l’opérateur IN, et d’exécuter la requête avec une EXEC().
La modélisation (simplifiée) de la base de données est la suivante :

Tout d’abord, une table temporaire contenant l’ensemble des numéros de jour pour un mois donné et ayant des saisies de temps :
DECLARE @NumeroDeMois int ,@NumeroDeProject int
SET @NumeroDeMois = 1
DECLARE @ListeDesJours TABLE (IdJour int )
INSERT INTO @ListeDesJours (IdJour)
SELECT DISTINCT DAY(Date) FROM Temps
WHERE MONTH(Date) = @NumeroDeMois
Puis une chaine de caractère est créée sur le format suivant ‘[1], [2], [3], …’ en balayant l’ensemble des enregistrements de la table temporaire :
DECLARE @Jours varchar(2000)
SET @Jours = ''
SELECT @Jours = @Jours + '[' + convert(varchar(2),IdJour) + '],'
FROM @ListeDesJours
Le dernier ‘,’ est retiré de la chaine de caractères :
SET @Jours = LEFT(@Jours, LEN(@Jours) - 1)
Enfin la requête PIVOT est exécutée par l’intermédiaire d’une EXEC(), en référençant la chaîne créée :
SET @NumeroDeProjet = 1
EXEC( '
DECLARE @RecapitulatifDesTemps TABLE
( Nom varchar(50)
,IdJour int
,Duree float
)
INSERT INTO @RecapitulatifDesTemps
(
Nom
,IdJour
,Duree
)
SELECT Nom, DAY(Date) as IdJour, Duree FROM Temps
INNER JOIN Employes ON Temps.IdEmploye = Employes.IdEmploye
WHERE temps.IdProjet = '+ @NumeroDeProjet +'
AND MONTH(Temps.Date) = '+ @NumeroDeMois +'
SELECT * FROM @RecapitulatifDesTemps
PIVOT (sum(Duree) FOR IdJour IN (' + @Jours + ')) PVT'
)
Et le tour est joué. Il suffit de mettre tout cela en procédure stockée. Il est à noter que l’opérateur PIVOT n’est disponible que pour des bases de données fonctionnant avec SQL 2005 et en niveau de compatibilité SQL 2005 (90).

Vous trouverez en pièce jointe le code pour créer le contenu de la base de données de test et la procédure stockée.
Comme annoncé précédemment, Microsoft a lancé le programme "VHD Test Drive" le lundi 06 novembre 2006, c'est à dire la possibilité de télécharger des VHDs configurés pour des problématiques de démonstrations et/ou de test. (cf. l’article
Le programme VHD Test Drive
).
Limité pour des utilisateurs ne souscrivant ni au programme TechNet, ni au programme MSDN, le programme « VHD Test Drive » revêt un réel intérêt car les machines virtuelles fournies peuvent servir de bases à la mise en place de scénarios de test et/ou de démonstration pouvant fonctionner jusqu’au 09 mars 2008.
Nénamoins, il faut les dompter un peu pour les rendre plus dociles à l’emploi. En effet, elles arrivent directement de Microsoft Corp. à Redmond, et certains paramétrages sont nécessaires pour les utiliser dans nos contrées lointaines.
1. Tout d’abord, à propos de l’activation
Ces machines virtuelles nous arrivent non activées. Elles sont donc utilisables durant les 30 jours qui suivent leurs installations par Microsoft, c'est-à-dire jusqu’au 3 décembre 2006. Si vous disposez d’une souscription TechNet ou MSDN, vous pouvez l’activer par téléphone (ne passez pas par une activation Internet, elle sera refusée, car nous utilisons tous les mêmes machines virtuelles). Dans ce cas la machine est utilisable en test jusqu’au 09 mars 2008. Après cette date, elle doit arrêter de fonctionner.
2. Le login
Les machines arrivent sous forme compressées. Après les avoir installées comme toute machine virtuelle, vous pouvez les lancer et les accéder avec le client WMRC (Virtual Server Remote Control). La fenêtre de login se présente (ça se gâte !).
Les credentials à utiliser sont :
§ Nom d’utilisateur : Administrator
§ Mot de passe : Evaluation1
Le problème est que la machine virtuelle a été installée avec un clavier US, il faut donc taper le tout comme si vous étiez sur un clavier US. Voici donc la combinaison à utiliser sur un clavier Français :
§ Nom d’utilisateur : Qd,inistrqtor
§ Mot de passe : Evqluqtion&
Il est possible de changer la configuration du clavier au login pour pouvoir taper les bonnes touches (cf. l’article Comment changer la configuration du clavier au login).
Une fois la session ouverte, si vous êtes souscripteur MSDN ou Technet, activez la machine et changez les paramètres locaux (clavier et localisation).
3. Le paramétrage de la machine virtuelle
Il est possible de configurer la machine virtuelle afin de l’accéder à distance en utilisant une « connexion bureau à distance ». C’est plus souple, plus rapide, et l’affichage couvre la totalité de l’écan (cf. l’article Comment utiliser une connexion bureau distante avec Virtual Server).
Il est aussi bon d’isoler la machine virtuelle de l’ensemble du réseau sur lequel vous êtes connecté (cf. l’article Comment isoler les machines virtuelles).
4. Le clonage de la machine virtuelle
Microsoft publie actuellement plusieurs machines virtuelles, qu’il est possible de cloner pour monter des configurations complexes de test, notamment pour la machine de base Windows 2003 R2 que l’on peut utiliser plusieurs fois dans un même domaine de test. Pour ce faire, il faut changer le SID de la machine (cf. l’article Comment cloner une machine virtuelle).
Une fois tout cela fait, la (les) machine(s) virtuelle(s) est(sont) en bonne(s) forme(s) pour des tests intensifs de vos propres configurations avec vos propres logiciels spécifiques, sans besoin de licence supplémentaire. Si vous avez des produits Microsoft complémentaires à jouter dessus, pensez à installer des versions d’évaluations. Même s’il n’existe aucune restriction technologique à l’installation de version activable des produits (comme MSDN ou Technet par exemple), le contrat de licence l’interdit.
Lorsque l’on commence à travailler avec des machines virtuelles pour des tests, il arrive que l’on veuille monter en domaine plusieurs machines différentes, toutes issues de la même installation de base. Et oui, pourquoi réinstaller la totalité d’un machine si vous pouvez repartir par simple copie de fichier .vhd d’une machine existante.
Le principal problème est que les machines sont identiques, et vous allez récupérer une erreur liée au fait que les machines ont toutes le même SID. C’est un problème lié au clonage d'un ordinateur.
Pour corriger ce problème, il est nécessaire de changer les SID des machines que vous ajoutez. Un utilitaire existe sur le site Technet à l’adresse suivante :
http://www.microsoft.com/technet/sysinternals/Security/NewSid.mspx
En fait, Microsoft a acheté le site www.sysinternals.com en juillet 2006 sur lequel cet utilitaire était précédemment publié.
Il est important de passer cet utilitaire relativement tôt dans le processus d’installation de la machine. Ma pratique est de le passer sur une installation propre, une fois que le système d’exploitation est installé, et sans aucun autre produit installé. Je sauvegarde ensuite cette machine, qui me sert de base ultérieure pour mes autres tests et/ou machines à ajouter à ma configuration virtuelle (en repassant l'utilitaire, au besoin).