# Wednesday, February 27, 2008

[LINQ] Importer du CSV en deux lignes de code

Plus j'écris du code reposant sur le framework 3.5 et plus je me rends compte que j'écris de moins en moins de boucles. Ce n'est peut-être pas toujours l'idéal en terme de performances, mais je dois avouer que si je peux écrire une requête LINQ au lieu d'écrire une boucle, je penche plutôt pour la première solution tant je trouve l'écriture de requêtes simples et "belles".

Un exemple tout bête pour faire un import CSV. Je suis en train de travailler sur un logiciel de gestion de finance perso (nommé iThunes :)) et afin d'importer mes opérations bancaires, ma banque me propose un fichier au format CSV dont le séparateur est la virgule. Il ressemble à peu près à ça :

image

Afin de manipuler les opérations au sein de mon application, j'ai donc créé une entité toute simple :

namespace iThunes.Entities
{
    public class Operation
    {
        public DateTime DateOperation
        { get; set; }

        public DateTime Valeur
        { get; set; }

        public decimal Debit
        { get; set; }

        public decimal Credit
        { get; set; }

        public string Libelle
        { get; set; }

        public decimal Solde
        { get; set; }
    }
}

Et finalement l'import d'un fichier CSV afin de récupérer une List<Operation> se fait de manière très simple grâce à LINQ :

namespace iThunes.Importers
{
    public class CSVImporter
    {
        public static List&lt;Entities.Operation&gt; LoadFile(string filename)
        {
            CultureInfo inv=CultureInfo.InvariantCulture;

            var operations = from line in System.IO.File.ReadAllLines(filename)
                         let fields = line.Split(new char[] { ',' })
                         select new Entities.Operation
                         { 
                             DateOperation = DateTime.Parse(fields[0]), 
                             Valeur = DateTime.Parse(fields[1]), 
                             Debit=fields[2].Length&gt;0? decimal.Parse(fields[2],inv):0 ,
                             Credit=fields[3].Length&gt;0?decimal.Parse(fields[3],inv):0,
                             Libelle = fields[4],
                             Solde=decimal.Parse(fields[5],inv)
                         };

           return operations.ToList();
        }
    }
}

Pas besoin d'écrire un boucle afin de parcourir le fichier ligne par ligne et pour ensuite découper la ligne en champs grâce au séparateur et instancier une Operation correspondante. Une simple requête LINQ et c'est bouclé.

# Monday, February 25, 2008

[VS2008] Visual Studio 2008 et le multitargeting

Ce n'est un secret pour personne et c'est même un argument de vente utilisé par Microsoft pour vanter Visual Studio 2008 : il est enfin possible de développer des applications basées sur différentes versions du framework .net depuis un seul IDE : Visual Studio 2008.

Il en effet possible de choisir la version de framework souhaitée dès la création d'un projet grâce à une liste déroulante, l'IDE s'adaptant automatique au choix sélectionné :

image

Le seul soucis avec cette histoire de multitargeting est que bien qu'ayant la possibilité de se baser sur différentes versions du framework, un seul et même compilateur est utilisé !

Ainsi même si je créé une application .net 2.0, il est possible d'écrire du code C# 3 :

public string Name
        { get; set; }

Rien de choquant à première vue, puisque cela ne nécessite pas de nouvelles instructions coté IL, le code généré par le compilateur est strictement compatible avec .net 2.0.

Le seul soucis, et qui peut être de taille, est que si vous travaillez dans une équipe mixte c'est à dire travaillant à la fois sur Visual Studio 2005 et Visual Studio 2008, vous vous retrouverez avec du code C# non compilable bien qu'étant utilisé pour le framework .net 2.0. Si vous souhaitez écrire du code VS 2005 "compliant" n'utilisez donc surtout pas les snippets de VS 2008 car ils vous généreront du code C#3...

# Saturday, February 23, 2008

[News] Changement de strategie concernant l'interoperabilite

C'est l'actualité du moment qui concerne Microsoft qui fait le plus parler : l'éditeur de Redmond a annoncé un changement concernant sa stratégie d'ouverture aux éditeurs tiers afin de permettre faciliter encore plus l'intégration d'outils tiers avec la plate-forme Microsoft.

Que cela signifie-t-il concrètement ? Microsoft va tout simplement livrer gratuitement tout un ensemble de spécifications techniques qui concernent des technologies propriétaires afin que des développeurs externes à Microsoft puissent implémenter certaines fonctionnalités, le tout, sans risquer de se voir poursuivi pour violation de brevets !

Quelques exemples de la vague qui vient de débuter :
Les spécifications des formats binaires de fichiers Office
600 Mo de documentation sur les protocoles de communications utilisés par Windows
415 Mo de documentation sur les protocoles utilisés par les OS serveurs de Microsoft

Pour en savoir plus :
Interview de Marc Gardette (Responsable Interoperabilite à Microsoft France) par Benjamin Gauthey

Un pas de plus vers l'interop
envoyé par dubrow

# Friday, February 22, 2008

[Silverlight] Preview de Silverlight 2

Scott Guthrie vient de livrer quelques informations précieuses sur la prochaine version de Silverlight qui devrait être disponible en beta 1 dans deux semaines.

Excellente nouvelle : Tous les reproches que l'on pouvait faire à Silverlight 1.1 semble être résolus avec cette nouvelle version. Les styles, templates, databinding, layout font enfin leur apparition.

Pour plus d'infos :
First Look at Silverlight 2

# Thursday, February 21, 2008

[Event] Les slides et videos du Lang.net Symposium disponibles

Microsoft vient de mettre à disposition l'ensemble des slides et vidéos du Lang.net Symposium 2008. Si vous êtes passionnés de langages ou tu simplement curieux n'hésitez pas à les consulter.

En savoir plus :
http://www.langnetsymposium.com/talks.asp

# Wednesday, February 20, 2008

[Fun] Faire des jeux pour les Zune avec XNA

L'équipe responsable du framework XNA vient d'annoncer que la prochaine version de XNA Game Studio (la version 3.0) proposera en plus du support des PC et de la XBOX 360, la possibilité de développer des jeux pour le player MP3 de Microsoft : le ZUNE ! Voilà une bonne nouvelle pour tous les pocesseurs de Zune et pour moi par la même occasion puisque je ne vais pas avoir besoin d'acheter une XBOX afin de bidouiller un jeu avec XNA :)

Pour plus d'infos :
http://creators.xna.com/whatsnew.aspx

# Sunday, February 17, 2008

[News] Une nouvelle version des GAX et du GAT

Microsoft vient de rendre disponible la version de février des GAX et du GAT. A noter que cette version supporte à la fois Visual Studio 2005 ET Visual Studio 2008. De plus, la procédure d'installation a été grandement améliorée puisqu'il n'est plus nécessaire de désinstaller la précédente version avant d'installer la nouvelle.

En savoir plus:
http://blogs.msdn.com/agile/archive/2008/02/15/gax-gat-february-2008-final-release.aspx

[Vista] Explication Lenteur Copie de Fichiers

Un des plus gros problèmes pour ceux qui travaillent tous les jours avec Windows Vista est très certainement la copie de fichiers. Il arrive en effet très régulièrement de devoir aller prendre un café le temps que Vista veuille bien effectuer une bête copie de fichiers, copies qui se déroulaient sans aucun problème sous Windows XP.

Et bien ces lenteurs ont une explication technique qui vient d'être expliquée en détail par le célèbre Mark Russinovich qui travaille à présent chez Microsoft. Afin de comprendre le pourquoi de ces lenteurs, et comment Microsoft compte résoudre le problème avec le SP1 c'est par ici : http://blogs.technet.com/markrussinovich/archive/2008/02/04/2826167.aspx

# Wednesday, February 06, 2008

[Framework] Telecharger toutes les sources du framework.net

Scott Guthrie a bloggé récemment sur la possibilité de consulter les sources du framework grâce à l'application d'un patch sur Visual Studio 2008. Seul problème, il est seulement possible de consulter les sources classes par classes et non d'avoir une vue d'ensemble sur toutes les sources du framework.

Afin de palier à ce problème, Kerem Kusmezer et John Robbins ont développé un outil permettant de télécharger en mode Batch l'ensemble des sources depuis les serveurs de Microsoft. Le projet est disponible via CodePlex : NetMassDownloader

Le résultat est le téléchargement de 125 Mo de sources constitué de plus de 4000 fichiers sources dont une classe string pensant 134Ko et une classe System.Windows.Forms.Form pesant 345Ko !

# Sunday, February 03, 2008

[Event] Bewise aux TechDays 2008

Je vous ai indiqué hier que je présenterais deux sessions dans une semaine aux TechDays à Paris, et bien en réalité je ne serais pas seul à faire le déplacement de Toulouse vers Paris puisque je serais accompagné de 3 collègues de Bewise :

David Catuhe

XNA, Introduction au développement de jeux PC et XBox360, lundi 11 février 2008, 11:00 - 12:00

Utiliser la technologie DirectX 10 en .NET, lundi 11 février 2008, 16:00 - 17:00

Interop Windows Forms - WPF : le meilleur des deux mondes, lundi 11 février 2008, 17:30 - 18:30

Patrice Lamarche

Les nouveautés de C# 3.0, lundi 11 février 2008, 13:00 - 14:00

Linq et Visual Basic 9.0 (VS 2008), lundi 11 février 2008, 16:00 - 17:00

Sébastien Pertus

Développer des solutions Online/Offline avec ADO Sync Services, mardi 12 février 2008, 11:00 - 12:00

Sébastien Pertus & Jean-Pierre Riehl

Gestion des textes et des images avec SQL Server 2005 et 2008 : XML, FTS, FileStream, Gestion des BLOB..., mercredi 13 février 2008, 16:00 - 17:00

[Event] Sessions aux TechDays 2008

Comme annoncé par Pascal et Laurent, je présenterais deux sessions lors des Microsoft TechDays 2008 qui auront lieu dans 1 semaine :

Linq et Visual Basic 9.0 (VS 2008) (LAN210)

Le lundi 11 février 2008, 16:00 - 17:00.

LINQ (Language INtegrated Query) est un jeu d'extension que l'on trouve dans des languages comme Visual Basic ou encore C# et qui permettent un modèle de programmation unifié pour le requêtage de choses aussi différentes qu'un tableau d'objets en mémoire, des bases de données plus traditionnelles ou encore un document XML.
Nous verrons dans cette session toutes ces nouveautés dans le détail.

Les nouveautés de C# 3.0 (LAN221)

Le lundi 11 février 2008, 13:00 - 14:00.

La dernière mouture du langage C# arrive avec le tout nouveau Visual Studio 2008. Cette version 3.0 augmente encore la productivité apportée par la version 2.0, tout en conservant les avantages et la sécurité d'un modèle compilé.
Inférence de type étendue, méthodes d'extensions, expression lambdas, types anonymes ! Ne négligez pas l'usage de toutes ces nouveautés qui vous simplifient la vie et vous permettent de bénéficier de toute la puissance de C#.

J'espère vous y voir nombreux !

# Saturday, February 02, 2008

[C#] Les nouveautes de C# 4

Le langage C# 3 étant disponible depuis novembre 2007, L'équipe de développement du langage C# commence petit à petit communiquer sur les pistes suivies pour implémenter de nouvelles fonctionnalités dans la version 4. Charlie Calvert propose en effet une série de posts afin de découvrir en avant première ce que nous reservera la prochaine version d'un des langages phares de la plate-forme .net.

Le premier post de cette série concerne une fonctionnalité de Dynamic Lookup qui correspond à la fonctionnalité de late binding que l'on a déjà depuis bien longtemps en Visual Basic. Il sera donc prochainement possible de manipuler des types non connus à la compilation et cela à moindre frais puisque l'équipe de C# va se baser sur la DLR afin de proposer cette fonctionnalité. Développer avec Jasper avec du C# sera donc possible dans le futur !

En savoir plus :
http://blogs.msdn.com/charlie/archive/tags/Future+Focus/default.aspx