# Monday, August 30, 2010

News de la semaine #34

imageAprès 2 ou 3  beaucoup de semaines d’absence, les news de la semaine sont de retour !

Sasha Goldshtein nous montre comment tester l’hébergement en side by side de la CLR rendu possible grâce à la CLR 4.

Phil Haack nous propose un post sur le fait que le développeurs ne sont pas payer pour écrire du code.

Si vous souhaitez découvrir les Reactive Extensions, Lee Campbell vous propose une série de 7 posts.

L’équipe Bing Maps annonce de nouveaux SDK pour les développeurs PHP.

L’équipe de JetBrains présente la fonctionnalité des File Templates présente au sein de ReSharper.

Un nouveau template est proposé par l’équipe d’AppFabric qui permet de créer des DataService WCF s’incorporant pleinsement à l’AppFabric.

# Friday, August 20, 2010

Nova participe au concours Windows Phone 7

C’est avec grand plaisir que je vous indique que Nova le logiciel 3D temps réél édité par la société Vertice (société soeur de Bewise) participe depuis quelques jours au concours Windows Phone 7 organisé par Microsoft France.

Vous pouvez visionner la vidéo de démonstration de Nova4Phone via la vidéo ci-dessous hébergée sur Facebook. Et si vous l’appréciez n’hésitez pas à l’indiquer en faisant un “Like” ce qui permetttra à l’application de grimper de quelques places au sein du concours !

image


# Tuesday, June 15, 2010

Exemple de migration d’application web ASP.net vers Azure

 image

Le numéro de Juin du magazine Programmez ! est disponible et j’ai le plaisir de vous indiquer qu’un de mes articles est présent au sein de ce numéro. Avec cet article, je vous présente succinctement la migration d’une application ASP.net vers Windows Azure que nous avons effectué dans le cadre d’un de nos projets tournant sur Azure. Vous y verrez comment nous avons migré l’application Open Source nopCommerce pour la rendre “Azurée”.

Plus d’infos dans le numéro de Juin du magazine Programmez !

# Wednesday, May 12, 2010

3 livres pour avoir les bases en .net

Quels sont les livres que je peux lire pour avoir de bonnes bases en .net ?”

est en substance la question que se peuvent se poser ceux qui débutent en .net (et que devraient se poser beaucoup de développeurs qui pensent avoir les bases :)). Il se trouve qu’on vient de me la poser pour 686 ème fois, voici donc ma sélection de 3 ouvrages que je trouve important d’avoir lu pour être efficace.

Le premier est la 3ème édition de CLR via C# écrit par Jeffrey Richter de Wintellect. J’ai déjà lu les deux premières éditions et je suis en train de lire cette 3ème édition (qui est sorti très récemment), et c’est de mon point de vue un des meilleurs ouvrages sur les fondamentaux de la CLR et donc de la BCL.

Le second ouvrage est orienté maitrise du langage C#. C# in depth de Jon Skeet est très clairement l’ouvrage le plus pédagogique est le plus avancé que j’ai pu lire sur le langage C#. Ce qui est plaisant avec cet ouvrage, c’est que l’ensemble des concepts et notions sont abordés de manière intelligente sans passer sur les détails qui peuvent paraitre compliqué au premier abord. Une vrai référence pour ceux qui s’intéresse au langage C#.

Et enfin, le petit dernier est le bien connu Framework Design Guidelines. Cet ouvrage annoté par plusieurs acteurs importants dans le monde .net permet de comprendre comment le framework .net a été conçu, et indique comment créer des frameworks qui respectent les recommandations de Microsoft. Sa lecture peut très globalement être appliquée à la création de tous type d’applications.

 

Et vous ? Quelles sont vos recommandations de lecture sur .net en général et sur C# ?


# Tuesday, May 11, 2010

Légers changements autour du 64 bits et de Visual Studio 2010

image C’est en lisant le premier chapitre de la 3ème édition de CLR via C# de Jeffrey Richter que m’est revenu cette information qui a son importance lorsque l’on souhaite le pourquoi du comment à propos du support du 64 bits.

Jeffrey Richter indique à juste titre que le compilateur C# compile par défaut les assemblies en AnyCPU afin que celles-ci soient portables et compilées en 32 ou 64 bits par le compilateur JIT en fonction de la plate-forme sur laquelle on souhaite exécuter l’application. Ceci est vrai, mais on pourrait penser que donc Visual Studio compile également par défaut vos assemblies en AnyCPU.

Et cela était effectivement le cas avec les précédentes versions de Visual Studio, mais il y a eu un changement de politique avec Visual Studio 2010 qui a eu lieu assez récemment il me semble (probablement à partir de la RC).

Avec la dernière version de l’ide, les projets qui sont généralement des points d’entrées applicatifs (les types de projets relatifs au GUI clients) sont par défaut compilés en x86. Ainsi si vous créez un projet Windows Forms, un projet WPF ou une application Console vous pouvez constater que l’AnyCPU qui faisait loi jusqu’à présent à laisser place à une configuration en x86. Les projets ASP.net et les bibliothèques de classes ne sont pas concernés et restent par défaut en AnyCPU.

Pourquoi ce changement alors que l’AnyCPU permet d’avoir des assemblys multi-plateforme et donc portables ?

Tout simplement, parce que les développeurs ne font pas assez souvent de tests de leurs applicatifs sur des environnements 32 bits ET 64 bits. Si vous développez dans un environnement 32 bits, et que vous ne testez pas votre application 64 bits vous risquez d’avoir des problèmes si vous référencez des composants 32 bits. En effet, votre point d’entrée étant en AnyCPU votre application sera compilée en 64 bits et sera donc incapables de charger des composants 32 bits.

Modifier le paramétrage par défaut afin de compiler en x86 les projets de types GUI clients permet d’avoir des applications qui fonctionneront dans tous les cas puisque elles seront (par défaut) exécutées en 32 bits même sur un OS 64 bits. Vous êtes toujours libre de changer cette configuration vers un compilation en AnyCPU mais prenez bien garde à vos dépendances.

Quand aux projets ASP.net, ceux-ci concernent des applications serveurs qui ont potentiellement bien moins de chance d’avoir des dépendances vers des composants 32 bits, et les bibliothèque de classes restent en AnyCPU afin de garder leur portabilité, le point d’entrée de votre application étant l’élément clé indiquant si le process doit être en 32 ou 64 bits.

# Monday, May 10, 2010

News de la semaine #19

imageComme chaque semaine, débutons avec l’actualité sur Windows Azure et plus particulièrement l’épisode 10 de Cloud Cover qui traite cette semaine des API permettant de manipuler les Tables.

Le SDK 4.0.12 de pour Dynamics CRM 4.0 est disponible. Celui est orienté vers l’application de type xRM puisque il propose propose un dossier Microsoft.xRM avec des extensions avancées pour les développeurs. Toujours à propos de Dynamics CRM, Mary Jo Foley nous informe que CRM 5.0 sera d’abord disponible en version Online puis plus tard en version On Premise.

Quant au développement web, Scott Guthrie présente deux nouveautés soumises au framework jQuery. L’occasion de montrer que Microsoft participe activement à ce projet Open Source.

L’équipe d’Internet Explorer nous informe qu’une seconde preview d’IE 9 est à présent disponible.

A propos de la CLR, un article sur MSDN Magazine présente les nouveautés apportées par la CLR4 en matière de diagnostiques d’applications en production.

L’équipe responsable de la génération de code propose une série de posts consacrés à l’utilisation de ngen.exe.

Du côté de l’actualité française, Benoit Laut nous informe d’une nouvelle fonctionnalité proposée par DotFuscator 4.0 et disponible sur CodePlex, l’instrumentation d’applications afin d’analyser leur utilisation (nombres d’utilisateurs, quel modules sont utilisés ,etc.). 

Jb Evain nous propose une manière simple d’implémenter l’équivalent de mots-clés parameterof, propertyof, methodof, et eventof en C#.

# Thursday, May 06, 2010

Quand la CLR V2, la CLR V4 et du code mixte se rencontrent

“Mixed mode assembly is built against version 'v2.0.50727' of the runtime and cannot be loaded in the 4.0 runtime without additional configuration information”

Voici le petit message d’amour que peut vous renvoyez votre ami la CLR lorsque vous essayez d’exécuter une application qui :

  • référence une assembly mixte (mêlant code natif et code managé) qui a été compilée pour être basée sur une version différente de la CLR utilisée par votre point d’entrée.

La solution à ce problème est assez simple, il suffit de rajouter une section dans votre fichier de config :

<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0"/>
</startup>
</configuration>

L’attribut useLegacyV2RuntimeActivationPolicy

La clé du problème se situe donc dans l’utilisation de l’attribut useLegacyV2RuntimeActivationPolicy qui est à false par défaut. Cet attribut permet de changer la politique de chargement de CLR au sein de votre application. Il y a eu en effet un gros changement à ce sujet :

  • Dans l’ère pré-CLR V4, en V2 quoi, il n’était possible de charger qu’une seule version de CLR au sein d’un process. La politique par défaut était de charger toutes vos assemblies en utilisant la version la plus récente de la CLR que vous aviez à disposition. Cette stratégie a comme avantage que votre ancien code bénéficie automatiquement des améliorations apportées par des versions plus récentes de CLR. Mais cela pouvait posait des problèmes de compatibilité dans certains rares cas.
  • Avec la CLR V4, il est à présent de charger différentes versions de CLR au sein d’un même process et afin de ne plus être confronté aux problèmes de compatibilité la politique de chargement a changé. A présent les assemblies basées sur la CLR 4, utilisent la CLR 4, et les autres utilisent la version la plus récente inférieure à la V4.

Le problème avec les assemblies mixtes c’est que la CLR doit être capable de savoir quelle est la CLR a utiliser lorsque un thread natif appel du code managé. Il faut donc désactiver le side by side afin d’avoir une seule version identifiable.

Mais pourquoi ça marche très bien depuis mes tests unitaires ?

Confronté au problème une de mes premières questions a été de comprendre pourquoi mon code fonctionne très bien depuis mes tests unitaires alors qu’il plante lorsque je l’appelle depuis mon application. Le moteur d’exécution des tests unitaires MSTest est QTAgent.exe (QTAgent32.exe en version 32 bits, et oui VS 2010 supporte enfin l’exécution de tests unitaires en 32 et 64 bits). Si l’on va farfouiller un petit peu dans le dossier C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE à la recherche des fichiers de configs des tests runners on se rend compte que Microsoft a configuré le chargement de runtime via le fameux attribut useLegacyV2RuntimeActivationPolicy.

Ce qui veut donc dire que par défaut tous vos tests unitaires utiliseront uniquement la V4 de la CLR et que le hosting de CLR Side by Side est désactivé pour tous vos tests unitaires.

 

# Wednesday, May 05, 2010

Mettre en place une veille technologique via RSS

“Mais tu passes combien d’heures par jour sur le net pour connaitre autant de sites/blogs ?” 

Voilà une question que l’on me pose de temps en temps suite à une de mes réponses du style : “Il  y a Eric Lippert qui a bloggué sur ce sujet il y a 1 mois et demi, vas sur son blog sur msdn tu trouveras ton bonheur”. Malheureusement à chaque fois que l’on m’interroge à ce sujet je me rends compte que la personne en face de moi ne fait pas du tout de veille technologique et ne maitrise pas l’utilisation des flux RSS. Car au lieu de passer plusieurs heures par jour à me balader sur Internet, je passe maximum 1/2h par jour à consulter l’ensemble du contenu que je récupère via mes 200 flux auxquels je suis abonné. Consulter 200 sites/blogs par jour ? oui c’est possible via RSS. Et voici ma méthode pour réaliser ma veille technologique efficacement sans y consacrer 307 ans.

1ère étape : Trouvez votre lecteur RSS

Première étape qui évoluera en fonction de vos habitudes de consommation, il faut choisir votre client RSS. Deux principales options s’offrent à vous : un client web ou un client riche. Pour savoir quels sont les points forts et points faibles des principaux clients sur le marché, je vous recommande ce post de l’excellent blog d’Olivier Ezratty.

image Les critères de choix qui me semble les plus importants en tant que gros consommateur de flux sont : la performance (en terme de consommation CPU et de mémoire et d’affichage des posts), et la possibilité de flagguer les posts les plus intéressants.


2ème étape : Créez votre catalogue de flux RSS 
Il s’agit généralement de l’étape la plus simple. Vous avez très probablement en tête certains blogs ou têtes pensantes qui publient régulièrement des informations dans le domaine qui vous intéresse. Rendez-vous (pour la dernière fois) sur ces sites web que vous connaissez déjà et abonnez vous aux flux RSS qu’ils exposent.

Classez correctement vos flux en différentes catégories/sous-catégories afin de pouvoir retrouver facilement les informations lorsque vous en aurez besoin.

Je vous déconseille fortement de vous abonner aux flux qui ne proposent qu’un résumé du contenu et non l’intégralité du contenu (le RSS sert à syndiquer du contenu et non des résumés). Ces flux sont une perte de temps puisqu’ils vous obligent à consulter le site pour avoir accès à l’information souhaitée. Sur mes 200 flux, je n’en possède que deux qui proposent uniquement le résumé (celui de Mary Jo Foley, et celui d’une toulousaine pleine d’humour –rien à avoir avec la techno :p)

3ème étape : Maintenez régulièrement sa liste d’abonnements

Il est très important d’enrichir votre liste de flux, votre client RSS n’est pas une boite qui s’alimente toute seule en effectuant sans cesse des requêtes HTTP, il faut l’entretenir en lui donnant de quoi se mettre sous la dent. En plus du simple ajout ponctuel effectué suite à des recherches précises, j’enrichis mon catalogue de deux manières :

  • En suivant les blogrolls des blogs qui me plaisent le plus. Les personnes qui vous intéressent le plus ont une probabilité assez importante de recommander à leur tour des personnes intéressantes. Cette technique fonctionnait bien jusqu’à il y a quelques mois mais je l’utilise de moins en moins car : les bloggeurs utilisent de moins en moins les blogroll et quand ils le font c’est généralement pour des blogroll “corporate” destinés à promouvoir leurs collègues.
  • La deuxième technique, celle que je privilégie, est d’utiliser Twitter.

La maintenance passe également par la suppression des flux inactifs ou qui ne vous intéressent plus. Cette étape est importante afin de ne pas pénaliser les performances de votre client et surtout afin de toujours avoir des informations pertinentes et non un simple tas d’informations accumulées avec le temps. La plupart des clients RSS vous permettent d’avoir facilement accès à vos flux morts pour que vous puissiez faire facilement le ménage.

4ème étape : Abonnez vous à des blogs/sites/rubriques de news

Vous n’êtes pas les seuls à faire de la veille technologique, n’hésitez donc pas à profiter du travail des autres quand ceux-ci ont la gentillesse de le partager via des blogs, des sites ou alors des rubriques dédiées.

En règle générale, vous ne trouverez pas de listes qui ciblent exactement vos centres d’intérêts, c’est pour cette raison que ces sites doivent être des compléments à votre propre veille, et non en être la base.

Dans le monde .net vous pouvez vous abonner aux sites suivants :

En anglais : The Morning Brew

En français : C2i.fr ou encore ma propre rubrique de news ;)

Voilou ! vous êtes à présent parés pour affronter la masse d’informations disponibles sur le net !