# Thursday, November 27, 2008

[WPF] Le MultiBinding

Si vous devez effectuer un binding qui dépend de plusieurs valeurs tout en étant capable d’être notifié dès qu’une modification a été faite sur une des deux valeurs, il est inutile de faire du bricolage pour arriver à une solution farfelue, il existe en WPF une solution toute prête qui permet de répondre à ce genre de problématiques : le MultiBinding.

Exemple simple  :

Une classe Personne :

clip_image002

Puis au niveau de l’interface :

clip_image004

Il faut donc ensuite créer un Converter afin d’indiquer la valeur à retourner en fonction des différentes propriétés bindées. Pour cela il ne faut pas créer un converter "classique" mais une classe qui implémente l'interface IMultiValueConverter qui prend en paramètre un tableau d’objets correspondant aux différents valeurs définies dans le multibinding (dans l’ordre de définition)

clip_image006

Résultat :

clip_image008

That’s All !

# Wednesday, November 26, 2008

[TeamSystem] Team System 2008 Database Edition dispo en RTM

Tout est dans le titre, l'édition Data Dude de Team System 2008 est à présent disponible en RTM !

Pour toutes les infos sur les nouveautés apportées par cette rtm, vous pouvez vous rendre sur ce post : http://blogs.msdn.com/gertd/archive/2008/11/25/visual-studio-team-system-2008-database-edition-gdr-rtm.aspx

Cela se passe par ici : http://www.microsoft.com/downloads/details.aspx?FamilyID=bb3ad767-5f69-4db9-b1c9-8f55759846ed&DisplayLang=en

# Thursday, November 20, 2008

[C# 4] Où se trouve la classe DynamicObject

Lors de la PDC plusieurs démonstrations ont été faites à propos des nouvelles fonctionnalités dynamiques apportées à C# 4. Pour créer une classe dont le comportement peut s'apparenter aux types manipulés par les langages dynamiques, Microsoft a ajouté une interface IDynamicObject à implémenter afin de pouvoir appeler des propriétés, méthodes, champs non présents lors de la compilation. Lors de ces démonstrations, on a pu voir les différents Microsoftees utiliser une classe de base DynamicObject afin de bénéficier d'une implémentation par défaut. Cette classe DynamicObject n'est malheureusement pas disponible au sein du framework .net 4.0 tel que livré par Microsoft au sein de la CTP de Septembre.

Néammoins,  une bonne âme a bien voulu livrer les sources de cette classe afin d'être capable d'écrire du code se rapprochant des démos effectuées lors de la PDC : http://hagenlocher.org/software/DynamicObject.cs.txt

Source:
http://blogs.msdn.com/curth/archive/2008/11/07/dynamicobject.aspx

# Wednesday, November 19, 2008

[C#] Pourquoi on peut rajouter une virgule à la fin d'une enum

En C# nous avons la possibilité de rajouter une virgule à la fin de la liste des valeurs d’une enum.

Exemple :

clip_image002 La virgule après Buffering est accepté et le code compile sans aucun soucis.

La question qu’il est donc légitime de se poser est de savoir pouquoi le compilateur C# si rigoureux habituellement est-il autant laxiste dans le cas donné ?

Encore une fois, il s’agit d’une raison historique qui tire son origine du langage C++.

Le C++ permet en effet l’écriture de ce genre de code pour 3 raisons différentes :

· Faciliter la génération de code (pas besoin de supprimer le séparateur en fin de boucle)

· Minimiser les changements lors d’ajout de valeur (une valeur ajouté correspond à une ligne modifiée et non deux ce qui facilite la lecture des changesets)

· Permettre de définir des enums « bornées » où la dernière valeur correspond à la dernière valeur (dans le cas où votre enum a une valeur de départ et une valeur de fin). Si vous mettez une virgule après le dernier élément vous indiquez ainsi que ce dernier élément n’est pas « sémantiquement » le dernier.

Cf révision 59 des specs du C++ : http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#518

A noter que vous avez la même possibilité pour l’initialisation de tableaux ou pour l’initialisation d’objets introduite par C#3.

# Tuesday, November 18, 2008

[Singularity] La Version 2 de Singularity est disponible

Le système d'exploitation Open Source et managé développé par Microsoft est à présent disponible sur Codeplex en Version 2.0.

Vous pouvez donc dès à présent télécharger les sources de cet OS afin de l'étudier ou afin de contribuer à ce projet.

image

A noter qu'une image ISO bootable est également disponible pour démarrer rapidement.

En savoir plus :
http://www.codeplex.com/singularity/Release/ProjectReleases.aspx?ReleaseId=19428

[Silverlight] Videos en HD via Silverlight et IIS 7

Lorsque Microsoft a annoncé pour la première fois que Silverlight allait supporter les vidéos HD, j'étais assez susceptique du fait de la bande passante nécessaire pour arriver à afficher des vidéos d'une telle qualité. Et bien je dois bien dire que je suis à présent totalement convaincu grâce au site de démonstration http://www.smoothhd.com qui permet de bénéficier des dernières fonctionnalités de IIS 7 en matière de streaming et des capacités de Silverlight en matière de lecture de vidéo haute qualité.

image

Le résultat est tout simplement bluffant : aucun temps de chargement, adaptation de la qualité de la vidéo en fonction des limitations en bande passante du client, etc. Le résultat final dépasse de loin ce que j'aurais pu imaginé. Un seul lien pour le découvrir par vous-même : http://www.smoothhd.com.

[VB] Les opérateurs AND et OR en VB

Un des reproches qui est le plus souvent fait au Visual Basic est les opérateurs Or et And évaluent dans tous les cas les deux opérandes contrairement à d’autres langages comme le C#. (Il faut utiliser OrElse ou AndAlso pour éviter ce comportement).

La raison de comportement qui peut sembler bizarre est en réalité tout à fait logique quand on sait que les opérateurs Or et And en VB ne sont pas des opérateurs logiques mais des opérateurs binaires. Ce qui veut donc dire que ces opérateurs effectuent une comparaison bit à bit de chaque opérande afin de produire un résultat. C’est ainsi que 3 Or 4 = 7 et 2 And 4 = 0. Ainsi le Or et le And ne sont pas les équivalents des opérateurs || et && mais plutôt des opérateurs | et &.

Concernant les valeurs booléennes, True étant égal à -1 en VB, les opérateurs Or et And agissent comme s’il s’agissaient d’opérateurs logiques (à l’exception près que les deux opérandes sont évalués puisqu’il s’agit d’une opération binaire). Pour ceux qui trouvent bizarre qu’en VB le True est égal à -1 voici une petite explication :

« La constante booléenne True a la valeur numérique -1[4]. Ceci est dû au fait que le type booléen est codé comme un entier de 16 bits signé. Dans cette représentation, -1 est codé comme une suite de 16 « 1 binaires » (la valeur booléenne True), et que 0 est codé comme 16 « 0 binaires » (la valeur booléenne False) ; lorsque on effectue l’opération Non Logique sur un entier signé de 16 bits valant 0, on obtient -1. En d’autre termes, True = Not False. Cette caractéristique intrinsèque devient particulièrement utile lorsque l’on effectue des opérations logiques bit à bit sur un entier, telles qu’And, Or, Xor et Not. Cette définition est également globalement cohérente avec les implémentations de BASIC depuis Microsoft Basic, au début des années 1970. C’est également en adéquation avec les caractéristiques des microprocesseurs de cette période. » http://fr.wikipedia.org/wiki/Visual_Basic#Caract.C3.A9ristiques_de_Visual_Basic

Cette astuce a donc  permis d’éviter d’implémenter les deux types opérateurs (binaires et logiques) comme c’est le cas dans d’autres langages (C#, C, C++, etc.)

Pour en savoir plus sur cette différence :
http://www.panopticoncentral.net/archive/2003/08/18/179.aspx

# Monday, November 17, 2008

[Astuce] Copier Coller le texte d'une boite de dialogue

Windows permet de récupérer très simplement le texte affiché dans une boite de dialogue.

Exemple :

clip_image002

Pour cela, quand la boite de dialogue a le focus, il suffit de faire un traditionnel Ctrl+C puis Ctrl+V ce qui va donner le résultat suivant :

---------------------------

Titre

---------------------------

Message de la boite de dialogue

---------------------------

OK  

---------------------------

# Friday, November 14, 2008

[.net 4.0] Training Kit pour VS 2010 et .net 4.0 disponible

Si vous souhaitez commencer à vous former sur Visual Studio 2010 et le framework .net 4.0, sachez que Microsoft vient de publier une première version d'un training kit contenant des slides ainsi que des labs sur des sujets tels que : ParallelFX, VB10, C# 4, F#, ASP.net Ajax 4.0, etc...

Comme la précédente version dédiée à VS 2008, ce training kit est construit autour d'un site web vous permettant de sélectionner les ressources qui vous intéresse.

image

En savoir plus :
http://www.microsoft.com/downloads/details.aspx?FamilyID=752cb725-969b-4732-a383-ed5740f02e93&displaylang=en

# Wednesday, November 12, 2008

[Interop] Les sources de TLBIMP disponibles

Microsoft publie les sources de l'utilitaire Type Library Importer sur CodePlex. Cet utilitaire qui permet de générer un wrapper managé de composants COM est en effet disponible sous la forme d'une solution C#.

A noter que bien qu'entièrement fonctionnel, le code source est une adaptation du "vrai" tlbimp.exe livré dans le SDK.

En savoir plus :
http://www.codeplex.com/clrinterop

# Tuesday, November 11, 2008

[Outils] Générer des sections de configuration

Jelle Druyts, Microsoftee belge, propose sur CodePlex un DSL permettant de créer de manière graphique des sections de configuration personnalisées.

Un projet idéal pour en apprendre plus sur les DSL ou pour tout simplement ne plus s' embêter à écrire du code ennuyeux..

The Configuration Section Designer In Action

En savoir plus :
http://www.codeplex.com/csd

# Monday, November 10, 2008

[DirectX] Une première preview de DirectX 11 est disponible

Microsoft vient de sortir une premiere preview de DirectX 11 via l'update de Novembre du SDK de DirectX.

En savoir plus :
http://www.microsoft.com/downloads/details.aspx?FamilyId=5493F76A-6D37-478D-BA17-28B1CCA4865A&displaylang=en

# Friday, November 07, 2008

[.net 3.5] Microsoft fournit des contrôles pour réaliser des graphiques

Microsoft vient de mettre à disposition des contrôles ASP.net Windows Forms utiles pour réaliser de sympathiques graphiques. Ces contrôles ressemblent fortement à ceux proposées dans SSRS et pour cause, ils sont également issues de l'acquisition de certains produits de la gamme Dundas.

Pour les télécharger et les essayer cela se passe par ici :
Microsoft Chart Controls for Microsoft .NET Framework 3.5
Microsoft Chart Controls for Microsoft .NET Framework 3.5 Language Pack
Microsoft Chart Controls Add-on for Microsoft Visual Studio 2008
ASP.NET Samples

A noter que les exemples téléchargeables sont très complets et très bien présentés via une application dédiée :
 image

Source :
http://blogs.msdn.com/alexgor/default.aspx

# Thursday, November 06, 2008

[PDC08][TL16]The future of C#

Cette présentation fait partie des sessions de la PDC de cette année qu'il faut absolument visionner. Présenté par un des pères du C# (Anders Hejlsberg), l'ensemble des nouveautés qui seront proposés par la version 4 de C# qui sera proposé avec Visual Studio 2010 sont abordées.

Premier constat rassurant, les changements sont moins nombreux et moins importants que ceux introduits au passage de C# 2 à C# 3. L'essentiel de ces nouveautés concerne :

  • l'ajout d'un mot clé dynamic  qui permet de manipuler des types à la manière des langages à typage dynamique c'est à dire que nous avons la possibilité d'indiquer au compilateur de ne pas s'occuper de savoir si une méthode Foo est présente sur le type manipulé avec le fameux mot-clé, mais d'uniquement tenter de l'appeler lors de l'exécution. L'intérêt de cette nouveauté est de permettre une meilleure interopérabilité avec les langages dynamiques présents dans le monde .net tels que Iron Ruby mais également de manipuler de manière plus simple les objets COM. Bien entendu le but n'est pas transformer le langage C# en langage dynamique mais de lui offrir la possibilité de profiter de certains avantages de cette gestion des types. L'interface IDynamicObject est également ajouté afin de définir directement en C# des objets à manipuler de manière "dynamique". A noter que le Visual Basic dispose depuis la version 4 d'une partie de cette fonctionnalité grâce à l'implémentation du latebinding qui permettait d'appeler les méthodes que l'on souhaitait sur un simple type Object.
  • le support des paramètres optionnels et nommés également supportés par Visual Basic depuis bien longtemps. Je rassure de suite les puristes de la POO l'objectif n'est pas de remplacer les surcharges de méthodes mais de simplifier l'interop avec les composants COM et les API basés sur cette technologie comme... Microsoft Office. Fini le cauchemard des ref missing...
  • Le support de la co-variance et de la contra-variance au niveau des méthodes. La co-variance étant déjà disponible au niveau des délégués depuis C# 2.

TL16 The Future of C# (Note:5/5)

Slides PPTX - Vidéos WMV-HQ

# Wednesday, November 05, 2008

[PDC08][PC17] Développement avec Microsoft Surface

La table Surface fait partie des produits Microsoft qui attire le plus d'intêret actuellement que cela soit de la part des développeurs ou du grand public, grâce à son originalité et les innovations qui y sont lié. Cette table munie de 5 caméras infrarouges permet de développer des applications multi-touch, multi-utilisateurs en proposant une expérience utilisateur très différente des PCs traditionnels grâce à  une utilisation sans clavier ni souris.

Le périphérique est pour le moment disponible en une seule taille et à un seul prix de 15000$ mais il y a fort à parier que des versions alternatives plus accessibles soit mises sur le marché dans les mois/années à venir.

Surface est actuellement une surcouche de Windows Vista SP1. Le développement se fait via un SDK qui est entre autre composé :

  • d'une API dite Core qui permet de développer des applications pour Surface à partir d'applications Windows Forms, DirectX ou XNA.
  • d'une API dédiée à WPF qui semble être l'API à privilégier pour le développement d'applications Surface. En plus de tous les bénéfices apportées par WPF, cette API fournit des versions spécifiques des contrôles de base permettant de gérer de manière simple le multitouch en utilisant les contacts en lieu et place de la traditionnelle souris, un contrôle ScatterView qui permet de gérer le redimensionnement et la rotation des éléments présents à l'écran. Il est à noter qu'une partie cette API sera directement intégrée au sein de .net 4.0 et non plus uniquement disponible séparément via le SDK de surface.
  • d'une gestion des caméras et de l'interprétation de l'image détectée qui permet par exemple de gérer simple des tags graphiques utilisés pour la reconnaissance d'objets.

Que cela soit au niveau de l'expérience utilisateur proposée par Surface, ou au niveau du SDK proposé, tout semble avoir été pleinement refléchi et très abouti. L'ensemble donne une excellente impression, et l'arrivée prochaine de nouvelles versions de Surface et du multitouch dans Windows 7 ne doivent pas laisser indifférent. Il n'est en effet pas trop tôt afin de découvrir toutes ces nouvelles possibilités pour être prêt lorsque ces technologies se seront démocratisées.

PC17 Developing for Microsoft Surface (Note:3/5)

Slides PPTX Vidéo WMV-HQ

# Tuesday, November 04, 2008

[PDC08][PC47] Session Microsoft Blend Tips & Tricks

Malgré mes a priori sur les sessions Tips & Tricks, je viens de visionner la session concernant Microsoft Blend (aka Interactive Design). J'ai trouvé cette session bien plus intéressante que la C# Tips & Tricks.

Microsoft Blend est composé de 300 000 lignes de code C# ainsi que 80 000 lignes de code XAML. Microsoft utilise Blend afin de développer le produit (un peu à la manière du compilateur C++ qui est utilisé pour se construire lui-même) et les Microsoftees présentant la session ont eu la bonne idée d'utiliser ce produit "Real World" afin de présenter les possibilités de Microsoft Blend. On voit ainsi la solution contenant les différents projets utilisés afin de développer Blend lui-même et comment on peut utiliser l'outil au travers de projets volumineux.

En plus de cette gestion de gros projets, les speakers montrent, entre autres, comment débogger une erreur Design Time ayant lieu dans Blend grâce à Visual Studio, comment embarquer les polices dans Silverlight 2 de manière statique ou dynamique, etc.

A noter que la prochaine version de Blend est annoncé comme étant une version majeure qui intégrera toutes les fonctionnalités qui manquent cruellement à l'outil comme l'intellisense, l'intégration au source control de TFS, un meilleur support du databinding en mode design grâce à l'utilisation de données fictives, etc.

Si vous êtes développeurs WPF/Silverlight ou designer et souhaitez avoir des infos pertinentes sur Blend, n'hésitez pas à passer 1 heure à regarder cette session, cela ne sera pas du temps perdu !

PC47 Microsoft Expression Blend: Tips & Tricks (Note:3/5)
Slides PPTX | Video en WMV-HQ

# Monday, November 03, 2008

[Azure] Vers le Cloud Computing avec Windows Azure

Laurent vient de publier un nouvel article sur Tech Head Brothers afin de présenter une des annonces phares de la PDC qui s'est tenu la semaine dernière : Windows Azure. Si comme moi vous trouvez cette offre un peu floue, n'hésitez pas à lire cet article afin d'en avoir une idée un peu plus concrète.

En savoir plus :
http://www.techheadbrothers.com/Articles.aspx/cloud-computing-windows-azure-page-1

[.net 4.0] Linq To SQL est mort (suite)

Quelques bloggueurs influents ont commencé à commenter la nouvelle relayée il y a quelques jours :

Un des membres de l'équipe Linq To SQL a répondu à l'ensemble des craintes liées à la publication du post de l'équipe ADO.net. Ce dernier tente de calmer le jeu en indiquant que Linq To SQL ne va pas disparaitre du framework et qu'il continuera d'être maintenu au travers de corrections de bugs par exemple. (cf : http://damieng.com/blog/2008/10/31/linq-to-sql-next-steps)

Il n'en reste que Microsoft ne recommande l'utilisation que d'un seul et unique provider LINQ pour accéder à des bases de données relationnelles : LINQ TO ENTITIES. Linq To SQL n'a donc pas d'avenir hors de la maintenance des applications existantes basés sur ce provider dont la simplicité d'utilisation a séduit de nombreux développeurs.