Blog du Pôle .NET

Partager pour mieux développer...

Créer un Dictionary[string, List[T]] en LinqToObject ...

clock February 20, 2009 08:23 by author Xavier Masclet

.... ou comment créer un dictionnaire de "regroupement" a partir d'une liste simple.

Au départ on a en entrée : List<Communes> lesCommunes.

Et on voudrait créer un dictionnaire de ces meme communes ayant pour clé leur code postal. MAIS.... plusieurs communes pouvant avoir le meme code postal, on souhaiterait avoir en valeur non pas une Commune, mais une liste de communes. Autrement dit :

> Dictionary<string, List<Commune>>

 Ceci se fait via la requête suivante en utilisant la méthode d'extension ToDictionary<TKey, TSource>(...) :

var rqt = from c in lesCommunes
              group c by c.CodePostal into communes_par_CP
              select new { list = communes_par_CP };

Dictionary<string, List<Commune>> lesCommunesParCodePostal = rqt.ToDictionary(a => a.list.Select(b => b.CodePostal).First(), c => c.list.Select(y => y).ToList<Commune>());

 Et tant qu'à faire, autant pousser jusqu'au SortedDictionary....:

SortedDictionary<string, List<Commune>> lesCommunesParCodePostal = new SortedDictionary<string, List<Commune>>(rqt.ToDictionary(a => a.list.Select(b => b.CodePostal).First(), c => c.list.Select(y => y).ToList<Commune>()));

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


Microsoft Health Graphing control

clock February 20, 2009 05:15 by author aequoy

 

La santé et le secteur hospitalier étant mes domaines fonctionnels d'origine, voici un petit billet pour vous informer de la sortie de nouveaux contrôles et guides WPF/Silverlight dédiés aux interfaces médicales. 

Si vous n'avez pas encore consulté le site http://www.mscui.net/ je vous y invite.



Source : http://www.mscui.net/Blog/post/Welcome-to-our-New-Graphing-Control.aspx

Alexandre Equoy

Currently rated 5.0 by 1 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


Access it aux techdays

clock February 9, 2009 13:41 by author aequoy

Histoire de relayer la news présente sur notre site, vous pourrez nous retrouver sur le stand CUC23 espace Communication Unifiée et Collaboration.

Florent Santin, consultant .Net, interviendra, en tant que speaker, sur les sujets suivants :

WF 4 : Premier contact (FRA318)
Mardi 10 février - de 14h30 à 15h30

Microsoft a dévoilé Workflow Foundation avec la version 3 du framework .Net. Cette session vous présente WF 4.0, dans un premier temps de façon didactique pour comprendre les motivations de ce pan technologique, puis en passant en détail les nouveautés et différences par rapport à la version actuelle.

De la macro VBA au développement .Net VSTO (RDA102)
Mardi 10 février - de 16h00 à 17h00

Vous êtes développeur de macros VBA dans Office? Vous commencez à vous sentir limité dans vos possibilités et aimeriez aller un cran plus loin ? Venez donc voir comment migrer en douceur vers la plateforme .NET et VSTO pour passer d'un code VBA à un code VB.NET libérant ainsi vos possibilités de personnalisation et d'intégration dans Office. Visual Studio 2008 vous aidera par exemple également à modifier le ruban Office sans ligne de code à l'aide d'un designer !

Visual Studio 2010 : les nouveautés de l'édition test (IND126)
Mercredi 11 février - de 13h00 à 14h00

La qualité des applications est un axe majeur pour Microsoft. La version 2010 de Visual Studio Team System présentera des nouveautés intéressantes dans ce domaine. Visual Studio Team System Test Edition sera beaucoup enrichi : - Tests fonctionnels d'applications Web, WinForms et WPF - Outil dédié à la gestion des campagnes de tests - Enregistrement de vidéos à l'exécution des tests Visual Studio Team Lab (un nouveau produit) permet de gérer et de déployer des environnements de tests virtualisés. Sans oublier des améliorations dans Team Foundation Server et Visual Studio Team System Development : - Gestion graphique des branches - Eléments de travail : traçabilité et liens typés - Débuggeur historique - Débuggeur déployable à distance en mode déconnecté La sessions sera illustrée par des démonstrations de ces nouvelles fonctionnalités.

Alexandre Equoy 

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


Binding WPF dans une scène 3D

clock February 6, 2009 23:44 by author dox

Je viens de terminer une formation WPF et une fois le chapitre sur le binding de données terminé, un stagiaire me pose une colle, à peu près dans ce genre là :


"Il existe beaucoup d'applis de démos en WPF où l'on peut facilement changer l'angle de la caméra, à la souris ou autrement, mais comment faire pour binder la lumière, sur un contrôle Slider par exemple ?"

Bon, j’avais bien une idée en tête, mais sur le coup, je ne voyais pas comment l’implémenter. Je me suis mis au boulot en rentrant, et au bout d’une demi heure, j’ai terminé une petite application WPF que voici

Décortiquons un peu le contenu.
On commence par jeter un œil à la définition de la lumière en XAML, ce qui donne ceci :

<DirectionalLight x:Name="light" Color="White" 
    Direction="-5,-5,-5/>


On creuse un peu et on se rend compte que la propriété Direction est de type Vector3D, défini dans System.Windows.Media.Media3D, et qu’elle contient 3 valeurs : X, Y et Z (entre autres). La valeur « -5,-5,-5 » ne serait donc que le résultat de l’appel à la méthode ToString() sur la classe Vector3D.


On réalise que ça va être un peu dur (ou un peu long) de binder ça sur 3 contrôles différents, ou 3 sources différentes. Je commence donc par créer un UserControl, que j’appelle VectorControl et qui contient 3 contrôles de type Slider. J’ajoute les DependencyProperties qui me permettent de lier les valeurs des Sliders à mes propres propriétés : X, Y, Z et Vector3D, et j’ajoute les notifications correspondantes.

// dependencies
public static readonly DependencyProperty XProperty = 
    DependencyProperty.Register("X", typeof(double), 
    typeof(VectorControl), new UIPropertyMetadata((double)0));
...
public static readonly DependencyProperty Vector3DProperty = 
    DependencyProperty.Register("Vector3D", typeof(Vector3D), 
    typeof(VectorControl), new PropertyMetadata(
    new Vector3D(0, 0, 0)));

// constructeur
public VectorControl() {
    InitializeComponent();
    DependencyPropertyDescriptor.FromProperty(XProperty, 
        typeof(VectorControl)).AddValueChanged(this,
        delegate { Vector3D = new Vector3D(X, Y, Z); });
    ...
    DependencyPropertyDescriptor.FromProperty(Vector3DProperty, 
        typeof(VectorControl)).AddValueChanged(this,
        delegate { 
        X = Vector3D.X; Y = Vector3D.Y; Z = Vector3D.Z; });
}

Au final, j’obtient un UserControl qui ne paye pas de mine, mais qui est fully functionnal !

VectorControl
 
L’étape suivante consiste à intégrer mon UserControl dans mon application, qui contient déjà un ViewPort3D hébergeant ma scène 3D, et à renseigner ses propriétés. Au passage, j’en ai profité pour en créer 2 :

• Un pour la lumière
• Un pour la caméra (puisque la direction est aussi une propriété de type Vector3D)

<!-- les usercontrol ici --> 
<StackPanel Orientation="Vertical" Grid.Column="0"> 
    <local:VectorControl x:Name="lightVectorControl" 
        Title="Lumière ambiente" X="-4" Y="-2" Z="-1"/> 
    <local:VectorControl x:Name="lookDirectionVectorControl" 
        Title="Caméra" X="-5" Y="-5" Z="-5"/> 
</StackPanel>

Il ne me reste plus qu’à modifier la ligne de définition de la lumière (et celle de la caméra), et de binder la propriété Direction à mon UserControl, ce qui donne ceci :

<DirectionalLight x:Name="light" Color="White" 
    Direction="{Binding ElementName=lightVectorControl, 
    Path=Vector3D}"/>

Un test en runtime pour vérifier que tout fonctionne bien, et on obtient une application dans laquelle on peut modifier directement la direction de la lumière, et celle de la caméra :

 VectorControlApp


En espérant que ça pourra être utile à quelqu’un ;-)

Dominique Thery

Currently rated 5.0 by 4 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


Microsoft Surface Camp : day 2

clock February 6, 2009 04:58 by author aequoy

Après une première journée dont l'objectif était de défaire les illusions vis à vis de Microsoft Surface et de nous projeter dans ce que l'on peut attendre de l'outil, cette seconde journée démarre sur le design d'application sur Surface.
Yoann has improved his english. He is certainly fluent now... ;)
Notre interlocuteur a commencé par évoquer des guidelines de design.
L'aspect multi user et l'aspect contextuel (l'endroit, les types de participants...) influent énormément sur le design et les comportements d'application
.
Nos scénarios de tests vont devoir s'étoffer afin de prendre en compte tous les cas d'utilisations.

Nous continuerons à vous donner des nouvelles.

Repeat after me Yoann, my taylor is rich ....

Après 2 jours passés ensemble, Yoann s'est enfin décidé à me demander en mariage. Et comme tout "bons" devs que nous sommes nous avons décidé de préparer l'événement par une application Surface.

L'idée de cette application est de préparer un plan de table, d'assigner des personnes à ces tables, d'imprimer des tags sur les cartes d'invitation et le jour J (un jour mon prince viendra...) par la reconnaissance des tags_id de placer les gens automatiquement.

Nous avons codé une partie de la nuit ce début d'application sur le simulateur et nous l'avons testé en réel sur la table cet après midi.

Enormément d'idées arrivent du fait de passer sur la table (c'est l'application bien sûr qui est passée sur la table ;)). Plutôt que d'utiliser des bouton nous allons utiliser des objets réels que nous placerons et qui par reconnaissance de forme donneront au final le même rendu.

Lorsque notre interlocuteur nous prévenait qu'il fallait absolument une table pour développer, c'est VRAI !!! (Arnaud, Eric, Olivier si vous nous lisez :) )

Les idées fusent à partir du moment où d'autres utilisateurs peuvent interagir.

Expérience fantastique ! Nous sommes comme 2 gosses devant un jouet.

Marvellous comme dirait Yoann ;)

Alexandre Equoy

Quelques photos de l'évenement :

 



Avec le témoin ;)
Laurent tu seras mon témoin


Currently rated 3.9 by 9 people

  • Currently 3.888889/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


Microsoft Surface Camp : day 1

clock February 5, 2009 07:48 by author aequoy

J'ai la chance d'être avec mon collègue Yoann (YoView pour les intimes) de participer à un séminaire Microsoft Surface.

C'est le début de l'aventure Access it sur cette technologie.

Nous ne sommes pas assujettis à un NDA quelconque donc nous vous donnerons des nouvelles, des samples assez rapidement.

En attendant la table Access it :) (message subliminal pour nos boss :) , nous proposerons un résumé de ce séminaire où des choses très intéressantes se disent.

Un premier constat que notre interlocuteur américain nous fait justement remarquer est qu'il faut revoir notre façon de penser.

Le multitouch n'est absolument pas le fer de lance de cette technologie. Il faut penser "social computing", intégration de devices multiples, reconnaissance de formes.

C'est vrai qu'il est tentant de faire tout et n'importe quoi avec surface pour le "fun" mais à 10 000 euros la table c'est cher payé.

Mieux vaut un "bête" écran tactile. 

Nous avons donc du boulot pour imaginer de "vrais" scénarios métiers intégrant l'ensemble des capacités de la table.

Les scénarios multitouch étant simples à concevoir, je pense que dans un premier temps, il faut imaginer l'objet, le device qui va se "connecter" à la table.

Alexandre Equoy

Quelques photos pour la route :

 

YoView devant la table

Access it



Currently rated 5.0 by 2 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


Entity Framework : release des multiples providers de bases de données

clock February 2, 2009 11:40 by author aequoy

En ce début d'année, une liste d'annonce autour du Framework Entity vient nous rassurer quant à la pérénité de la technologie.

Devart offre un Provider supportant l'accès à Oracle, MySQL et PostgreSQL.

Sybase annonce le support du framework Entity sur iAnywhere.

Npgsql2.0RTM fournit un support du framework Entity sur PostgreSQL.

IBM annonce l'arrivée d'un provider Entity pour DB2.

Alexandre Equoy

Currently rated 4.5 by 2 people

  • Currently 4.5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


Calendrier

<<  July 2010  >>
MoTuWeThFrSaSu
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678
Afficher en pleine page

Visiteurs