# Monday, March 30, 2009

Visual Studio Extensibility

Parfois une simple image vaut mieux que qu’un long discours… J’ai toujours pensé que les mécanismes d’extensibilité proposés par Visual Studio (notamment les add-ins) étaient ennuyants, trop compliqué du fait du poids de la technologie COM. Au lieu de disposer d’un modèle objet managé “propre” nous devons en effet batailler avec tous un tas d’interfaces qui ne sont que de simples wrappers des composants COM sous-jacents sur lesquels se base Visual Studio. L’extensibilité de Visual Studio 2010 est d’ailleurs une de mes plus gros attentes à propos de la prochaine version de l’IDE.

Bizarrement, en voyant cette couverture, j’ai l’impression de ne pas être seul à avoir cette opinion sur l’extensibilité de Visual Studio :)

image

Blague à part, je viens de terminer la “lecture” de l’ouvrage. Il s’agit d’un point de départ si vous souhaitez appréhender les différents mécanismes d’extensibilité de VS 2008 tels que les Macros, les Addins, les packages ou encore les DSLs. Il permet d’éviter de fouiller dans les différents articles de la MSDN afin de trouver une documentation qui permette de démarrer. Et il s’agit malheureusement de son seul intérêt. Si vous connaissez les bases du développement de macros et d’addins, passez votre chemin, ce livre ne vous apportera pas grand chose.

Il s’agit d’un simple survol de ce que l’on peut développer avec Visual Studio. Et c’est malheureusement également la seule chose que l’on puisse faire en ouvrant cet ouvrage.

# Sunday, March 29, 2009

Bewise Day Conference 2009

Comme chaque année, Bewise organise la BDC qui se tiendra de nouveau dans un lieu mythique toulousain : le stade Ernest Wallon bien connu de tous les passionnés de rugby. L’évènement rassemblera le 21 Avril les professionnels du développement et du monde de l’IT, les étudiants et enseignants, autour des technologies Microsoft. 40 experts de Bewise et de Microsoft vous attendent afin de passer une après-midi riche en découvertes puisque 25 espaces de démonstrations seront proposés.

DSCF3184

Donc si vous aussi, vous souhaitez être ébahis par des démonstrations sur les nouveautés des langages .net, le Multitouch sous Windows 7 et sur la table Surface, SQL Server 2008, et Sharepoint, n’hésitez pas à vous inscrire au Bewise Day Conference 2009.

En savoir plus :
http://bdc2009.bewise.fr/

# Sunday, March 22, 2009

Les webcast des TechDays 2009 sont disponibles

Webcast Techdays 2009 Tout est dans le titre, l’intégralité des sessions qui ont été proposées par Microsoft et ses partenaires lors des Microsoft TechDays 2009 qui ont eu lieu au palais des congrès à Paris début février est à présent disponible sur le site de Microsoft.
Ce sont ainsi plus de 900 webcasts dédiés au développement et à l’IT qui sont rendus disponible gratuitement. Une offre indispensable afin d’assister virtuellement aux sessions que vous auriez pu manquer lors de l’évènement.


En savoir plus :
Le site des TechDays

Photos du MVP Global Summit 2009 et de Seattle

image

Je viens de publier les photos que j’ai prises durant le MVP Summit à Seattle.


Si vous souhaitez avoir un court aperçu du Summit et/ou de la ville de Seattle, vous pouvez les consulter sur mon flickr :

http://www.flickr.com/photos/patricevb/sets/72157614910508839/

Browser Ball : Communication inter-fenêtres

Browser Ball est un projet assez intéressant qui met en place de manière originale une communication entre différentes fenêtres d’un même navigateur :

image

L’idée est simple, jouer avec un ballon et le faire rebondir sur les bords d’une fenêtre. Si plusieurs fenêtres d’un même navigateur sont adjacentes, le ballon se déplacera alors de manière transparente à travers-elles. C’est assez fun, et cela permet d’imaginer de nouvelles possibilités en matières d’UI web.

En savoir plus :
http://experiments.instrum3nt.com/markmahoney/ball/

# Wednesday, March 18, 2009

Je HAIS les regions

Les regions sont incontestablement la fonctionnalité que je déteste et qui m’insupporte le plus dans Visual Studio. En voir dans du code, me fait enrager, grogner, avoir des boutons dans 98% des cas où je les rencontre.

Les regions permettent de définir différentes zones dans du code, zones qui peuvent être nommées et qui peuvent être rétractables. Le principal reproche que je trouve aux régions réside tout simplement dans le rôle même de cette fonction : MASQUER LE CODE.

Car après tout, les régions ont été créés dans un seul et unique but : masquer du code que le développeur ne doit pas voir ou modifier :

Cela avait donc une utilité avant que les classes partielles existent afin de masquer du code qui est généré et qui donc par définition ne doit pas être modifié (sous peine de voir les modifications supprimées lors de la prochaine génération de code) en le plaçant dans un autre fichier.

Vous l’avez compris, je ne comprends pas quel est l’intérêt de masquer du code. Lorsque je consulte des fichiers sources je souhaite avoir la meilleure lisibilité possible afin de comprendre le fonctionnement du code que je suis en train de lire. Le voir masqué m’oblige à utiliser mes dons de contorsionniste des doigts afin de déplier ces fameuses régions qui, pour certains développeurs, servent à “ranger” ou “classer” du code source de “manière plus propre”.  Dans la très majorité des cas, si vous avez besoin de “ranger” votre code source présent dans une classe en plus zone, c’est que votre classe fait beaucoup trop de choses que ce qu’elle devrait faire. Repenser la séparation des responsabilités permet de résoudre le problème. Si vous regroupez plusieurs méthodes et/ou propriétés dans une région particulière, il y a une forte probabilité que cet ensemble devrait se trouver dans une autre classe. Et si vous groupez des lignes de code d’une même méthode en plusieurs régions, cela signifie que votre méthode à trop de responsabilité et qu’il serait bon de la splitter en différentes méthodes distinctes.

Le seul avantage que je vois donc aux régions, et qu’il permet de voir du premier coup d’œil quel est le code qu’il est urgent de factoriser.

# Monday, March 16, 2009

Bilan MVP Summit 2009

Comme je vous l’ai indiqué il y a 2 semaines, j’ai participé ce mois-ci à mon 3ème MVP Summit qui s’est déroulé comme chaque année à Seattle et à Redmond directement sur le Campus Microsoft.

Je n’y étais pas seul puisque cette année j’étais accompagné de deux collègues de Bewise : Jean Pierre Riehl [MVP SQL Server] et Frédéric Colin [MVP Connected Systems].

P1000059

 

Le summit est l’occasion de rencontrer les équipes produits de Microsoft Corp. et ceci pour toutes les technologies/produits de l’éditeur. C’est ainsi que près de 700 sessions ont été organisés afin d’accueillir 1500 MVPs qui ont fait le déplacement pour l’occasion.

Le gros point fort de cet évènement réservé aux MVPs par rapport aux évènements plus “traditionnels” comme les Tech’Ed ou la PDC est la qualité des rencontres et discussions que l’on est susceptible d’avoir. Il est en effet possible de rencontrer ses pairs, afin d’échanger, de confronter ses idées/opinions à propos des différentes technos MS. On peut ainsi partager différents retours d’expériences sur des projets très variés

Le MVP Summit c’est également l’occasion d’avoir un contact direct avec les équipes de développement de Microsoft Corp. et avoir ainsi la possibilité de discuter directement avec les personnes qui créé, concoivent, et développent  les technos que nous utilisons tous les jours. Après avoir été nommé MVP ASP.net pendant 3 ans, j’ai ainsi découvert l’équipe de développement du langage C# puisque j’ai été nommé sur cette spécialité l’année dernière. Le moins que l’on puisse dire c’est que lorsque Microsoft affirme que les MVPs sont des contacts privilégiés qui ont un fort impact sur les différents développements en cours, l’éditeur ne ment pas et l’organisation du summit qui a été faite par la team C# répond exactement à cela. Une grande partie des sessions auxquelles j’ai participé étaient en effet des sessions de discussions et de feedbacks avec les responsables des différentes équipes (langage, intégration à l’ide, etc.) Nous avons ainsi pu discuter sans langue de bois afin d’indiquer les axes d’amélioration qui pouvait être pris pour les prochaines versions du langage et de Visual Studio. En plus de cette occasion unique de pouvoir échanger avec les personnes qui “font” les technos, nous avons pu poser quelques questions à plusieurs Technical Fellows un titre décernée par Microsoft aux Microsoftees qui ont un fort impact sur l’industrie informatique. C’est ainsi qu’Handers HeljsbergMohsen Agsen, Patrick Dussud et Brian Harry ont joué le jeu des questions réponses sous la direction de Soma Somasegar, Directeur de la division développement. 

P1000036 P1000177

Bien entendu, le summit c’est également l’opportunité de voir en avant-première le futur de différentes technologies que nous verrons dans les prochains mois/années mais sur ce point je ne pourrais rien dire NDA oblige…

En savoir plus :
Le compte rendu de Fabrice Romelard [MVP Sharepoint]
Le compte rendu de Jean Pierre Riehl [MVP SQL Server]
Le compte rendu de Sebastien Picamelot [MVP Sharepoint]

# Monday, March 02, 2009

Arrivée à Seattle

Comme chaque année, me voilà à Seattle pour une semaine afin de participer au Microsoft MVP Summit 2009. Le summit est l'occasion de retrouver ses pairs afin de partager et confronter ses opinions et idées sur les différentes technologies. Il s'agit également d'une occasion unique de rencontrer les équipes de Microsoft Corp afin de directement remonter différents feedbacks sur les produits et avoir un aperçu des prochaines versions qui arriveront prochainement.

DSCF2341 by Patrice Lamarche.

Malheureusement l'événement est sous NDA donc je ne pourrais rien révéler de bien important durant la semaine qui arrive. La semaine devrait donc être assez calme sur le blog...

# Thursday, February 26, 2009

Les applications VB 6 fonctionneront sous Windows 7

Microsoft vient de l'annoncer via une mise à jour de la page dédiée au support de Visual Basic 6, le runtime de VB6 sera présent sur Windows 7. Windows 7 sera probablement ainsi le dernier OS a support ce runtime, l'éditeur n'ayant pas prévu de l'inclure dans les versions ultérieures.

Ceci est donc une bonne nouvelle pour la compatibilité de ces applications, mais bon, il va falloir penser à migrer vers .net un jour quand même :)

En savoir plus :
Support Statement for Visual Basic 6.0 on Windows Vista, Windows Server 2008 and Windows 7

Attention aux dépendances dynamiques pour le support du 64 bits

Disposer d'une machine virtuelle et d'une compilation en deux phases permet de bénéficier d'un support du 64 bits quasi-automatique. Si l'on compile une assembly en Any Cpu, celle-ci sera compilée en JIT en 32 bits si elle est chargée dans un process 32 bits ou en 64 bits dans le cas d'un chargement dans un process 64 bits. De plus si une assembly a des dépendances vers des assemblys 32 bits ou vers des DLL natives 32 bits,  elle se retrouvera automatiquement compilée en 32 bits même si chargée dans un environnement 64 bits.

Il faut cependant noter que cette analyse de dépendances ne concerne que les dépendances statiques et en aucun cas les dépendances dynamiques (introduites via du code).

J'ai récemment rencontré le problème à propos de l'utilisation d'un filtre DirectShow. Le filtre est instancié via un Activator.CreateInstance afin d'être manipulé et insérer au sein d'un graphe de cette manière :

    /// <summary>
    /// Wrapper of the HttpDestinationFilter
    /// </summary>
    public class HttpDestinationFilter
    {
        private static readonly Guid CLSID_HttpDestination = new Guid("E6788379-AAA3-4516-86EC-158B7A49EA74");

        public static IBaseFilter CreateInstance()
        {
            return (IBaseFilter) Activator.CreateInstance(Type.GetTypeFromCLSID(CLSID_HttpDestination, true));
        }
    }

Seul problème, lors de l'exécution de ce code sur une plate-forme 64 bits, l'instanciation peut échouer si le composant en question est en 32 bits et si l'assembly est compilée en Any Cpu.

Etant sur un Windows 64 bits, la base de registres est en grande partie divisée en deux versions, une copie pour les applications 32 bits et une autre copie pour les application 64 bits. Il est ainsi (entre autres raisons) impossible d'utiliser des composants COM 32 bits depuis une application 64 bits car le composant se retrouve introuvable du fait de la redirection. La correction du problème est simple : trouver une version 64 bits du composant en question ou alors définir manuellement la target de compilation afin d'indiquer un compilation en 32 bits.