PDC : ManyCore and the microsoft .Net Framework 4 and Visual Studio 2010

Une session particulièrement enthousiasmante, qui change de l’ordinaire. Il était surtout question de parler de la démocratisation des processeurs multi-cœur, du changement que cela implique dans nos habitudes de développeur et de comment les équipes Microsoft ont travaillé pour appréhender cette approche le plus simplement et le plus efficacement possible.

La refonte complète du threadPool à permis de largement améliorer le Framework .Net dans les utilisations MultiTreading. Ce nouveau threadPool est devenu la pierre centrale de nombreux développement du Framework et en particulier les Task. Les Task apportent une véritable gestion fine des processus que nous aurions habituellement fait avec le ThreadPool, ainsi il est possible d’attendre la fin d’une à plusieurs taches, de contrôler et récupérer l’état. De plus les tasks sont customisable au niveau du scheduleur par exemple.

De plus Visual Studio 2010 amène un ensemble de fonctionnalités de débuggage spécifique aux traitements parallèles. Il est indispensable d’utiliser les fenêtres de Parallel Thread et Parallel Tasks.


Tags:
Catégories: C# | Divers

0 Commentaires
Actions: Permalink | Comment RSSRSS comment feed

PDC : Using Dynamic Langages to Build Scriptable Application

Cette session était très intéressante, elle montrait comment ajouter dans un programme .Net une fonction d’exécution de code dynamique comme JavaScript, Python ou encore Ruby. Le principe est simple, le speaker avait une application ou se trouvais un Canvas WPF. Dans celui-ci on pouvait y créer des cercles et des rectangles.

Dans cette même application, il y avait une TextBox pour pouvoir écrire du code dynamique et un bouton pour le l’exécuter à la volée. Dans son exemple, le speaker pouvait interagir en direct via le langage Ruby avec les cercles et rectangles de l’application. C’est réellement bluffant de voir que cette intégration se fait très facilement.

A la base on défini des Providers de langage dynamique appelé Runtime. Ensuite,  grâce à un système de scope, il est possible de définir les limites de l’interaction du langage dynamique avec son application, à savoir qu’elle objets et namespace sont accessibles dans l’exécution du langage dynamique. Ensuite il suffit d’injecter le code saisie dans le moteur dynamique et celui-ci est compilé et exécuté à la volé dans le scope.

Ce que l’on peut retenir de cette session :

·         Améliorer son application en un écosystème applicatif.

·         Les langages dynamiques peuvent se parler entre eux.

·         IronPython et IronRuby sont les langages dynamiques actuellement supportés.

·         Les nouvelles classes pour gérer l’exécution dynamique :

  •  
    • ScriptRuntime (Class)
      • ScriptScope (Class)
      • ScriptEngine (Class)
        • ScriptSource (Class)

·         Le but est d'enrichir les applications C# avec un langage dynamique qui peut interagir avec notre application dans un scope défini.

·         Permet un lien total entre son programme et le langage avec peu de code.

·         Le DynamicObject permet de pouvoir accéder aux propriétés d'un objet interne C# dans le moteur de script.

·         L'API Script est valable pour IronPython, IronRuby et autres DLR si le provider est là.

·         Lien : http://ironpython.codeplex.com/

 

Au final, si on couple cette technologie avec d’autres comme « M » ou « Quadran », il est possible de créer pour son application, un langage custom et permettre a ses utilisateurs de créer des petit programme comme les macros VBA, mais avec un contrôle total sur l’interaction du langage avec son domaine fonctionnel et applicatif.


Tags:
Catégories: C# | Divers

0 Commentaires
Actions: Permalink | Comment RSSRSS comment feed

PDC : Future directions for C# and Visual Basic

Pour ma part ma première session a été très intéressante, une présentation sur les concepts et directions que Microsoft va donner a ses langages phares que sont C# et Visual Basic. Outre le fait de montrer quelques évolutions syntaxique c’est surtout l’occasion pour le speaker de préciser qu’à l’avenir les langages seront plus tournés vers le déclaratif à l’instar de Linq que vers l’impératif (même si les deux seront toujours possible).

La première chose mise en avant est que les deux langages seront maintenant identique dans leurs possibilités, fini l’époque ou Visual Basic offrait telle fonctionnalité et C# une autre sans possibilité d’avoir les deux dans le même langage. Avec C# et  Visual Basic 4, ce que peut faire l’un, l’autre peut le faire aussi.

Dans les nouvelles fonctionnalités, une m’a particulièrement attiré, celle concernant le DynamicObject. Le concept est simple, pouvoir accéder a des accesseurs dynamique sur un objet, ce qui était avant impossible car ils étaient déterminés à la compilation. Si vous voulez voir a quoi sa ressemble coté code :  http://msdn.microsoft.com/en-us/library/system.dynamic.dynamicobject%28VS.100%29.aspx

Ce qu’il faut donc retenir de cette session :

·         Plus aucune différence de fonctionnalité.

·         La version déclarative d'un code est plus lisible de la version impérative.

·         L'idée est que le déclaratif est plus facile à mettre en place et plus facile à maintenir, et pose moins de problème de compréhension.

·         Possibilité de créer ses propres fonctions de refactoring de code dans Visual Studio 2010.

 

La session proposait comme exemple la création d’un parser de fichier CSV, en combinant les nouveaux concepts déclaratif de C# 4, on arrivait à un modèle pour le fichier était chargé dans un objet donc les accesseurs était dynamique, et donc que leurs nom changeaient en fonction du fichier CSV chargé.


Tags:
Catégories: C# | Divers

0 Commentaires
Actions: Permalink | Comment RSSRSS comment feed

Log4net et les dates sur les noms de fichier

J'ai récement eu un petit problème sur log4net pour générer des fichiers auyant le nom "monfichier_24-11-2008.log". En effet soit l'appender me met la date à la fin derrière l'extension, où si je met le ".log" dans le format de date il me transforme le "g" de "log" en "A.D".

Pour remédier à ce problème il faut tout simplement passer par le caractère d'échapement sur les formats de date qu'est le "\". En effet en mettant "\{char}" (par exempel "\g") l'interpréteur sur les dates ne prend pas en compte le caractère en question. Nous pouvons donc dans le format de date log4net spécifier le "\g" sur le ".log" afin qu'il ajoute correctement la date à la fin du fichier et surtout avant l'extenstion. Je vous propose un exemple d'appender :

<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
    <file value="C:\MonFichier_" />
    <appendToFile value="true" />
    <datePattern value="yyyy-MM-dd.lo\g" />
    <staticLogFileName value="false" />
    <rollingStyle value="Date" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level %logger %method [%ndc] - %message%newline" />
    </layout>
  </appender>


Tags:
Catégories: C# | Divers

2 Commentaires
Actions: Permalink | Comment RSSRSS comment feed

Convertir une chaîne en Hash MD5

Si certain se pose la question à savoir comment hasher une chaîne de caractère au format MD5, voici la méthode qui le permet. Elle utilise System.Security.Cryptography du framework, ça mange pas de pain et parfois ça dépanne.

using System.Security.Cryptography;

public static string HashToMD5(string p_sChaine)
{
  MD5 oServiceMD5 = null;
  byte[] sChaineMD5 = null;
  StringBuilder oResult = new StringBuilder();

  // Création du provider MD5 et conversion

  oServiceMD5 = new MD5CryptoServiceProvider();
  sChaineMD5 = oServiceMD5.ComputeHash(Encoding.ASCII.GetBytes(p_sChaine));

  // On convertie les bytes résultat en chaine de caractère

  foreach ( byte oByte in sChaineMD5 )
    oResult.Append(oByte.ToString("x2"));

  // On retourne le résultat

  return (oResult.ToString());
}


Tags: ,
Catégories: C#

0 Commentaires
Actions: Permalink | Comment RSSRSS comment feed