Register Login

 

Welcome to the Coach Factor blog. Here you will find all of our ideas on software development. Subscribe at  http://blog.nventive.net.

# Monday, January 18, 2010

Les tweets de la semaine

http://twitter.com/csharp_tan/status/7857602895 une liste des frameworks MVVM (Model View VierwModel – un des patrons de conception pour la couche de présentation)

http://twitter.com/wanswins/status/7793053854 on vous parlait la semaine dernière de Script# un compilateur C# vers Javascript, il en existe d’autres comme sharpkit

http://twitter.com/dotnettv/statuses/7745427907 Event Driven architecture en vidéo

La question Stackoverflow

Nous allons parler d’une méta-question aujourd’hui : Quelle API doit avoir Stackoverflow ? Le projet a été annoncé sur le blog et déjà une liste de possibles applications est apparue. Une application web n’est une application web sans une API externe : quels formats supportés, le mode d’authentification, lecture seulement etc. ?

Actualités Microsoft

La saison des conférences va commencer dans quelques semaines : Mix 2010 où on devait parler de Visual Studio mais on entendra plus parler de Silverlight 4 et on espère de Internet Explorer 9 et Windows Mobile 7. Le lancement de Visual Studio sera annoncé le 12 avril lors de la conférence Devconnections Visual Studio 

Actualités “Alt.NET”

S’il y a bien un domaine où le monde .NET est actif c’est celui des frameworks de mapping objet-relationnel (et on dirait que cela se transpose dans le développement de frameworks de présentation WPF ou même du côté  web avec MVC). Voici un billet d’humour qui résume bien les relations entre eux. Un classique mais toujours efficace.

De l’autre côté

ToughtWorks édite Mingle qui est une application de gestion de projet supportant les méthodes agile. Ce dernier utilise une base de données : Mysql, Postgresql ou Oracle. L’éditeur a décidé d’abondonner le support de Mysql. C’est un SGBD très flexible : il y a une multitude d’autres moteurs de stockage que ISAM ou Innodb (livrés en standard) pour couvrir des besoins telle que les gros volumes. Mais il semblerait que certains se tournent vers des applications plus spécialisées (voir le mouvement Nosql (MongoDb, CouchDb etc ) ou plus orientées “entreprise”comme Postgresql.

Un projet

Pas un projet mais une liste de projets cette semaine : C# open source (base de données, PDF, CRM). Comme son l’indique ce site répertorie les projets open-source du monde .NET par catégorie. On pourra consulter aussi SharpToollbox qui est plus orienté outils de développement.

Auto-promotion

nVentive organise une série de bootcamps sur des sujets très variés comme WPF, TDD ou encore NHibernate.Tous ces ateliers sont orientés développement d’applications d’affaires et font une large place aux labs.

Voici une liste des formations et leur description plus complète.

Monday, January 18, 2010 3:00:00 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0] -
.net | Revue du Web
# Tuesday, January 12, 2010

Les tweets de la semaine

http://twitter.com/penderi/statuses/7514754215 Souvent cité comme l’outil indispensable de Visual Studio, Resharper 5 est en beta et la dernière version semble prometteuse

http://twitter.com/dougcunha/status/7496302216 un aide-mémoire sur les principaux opérateurs Linq sous la forme de 101 exemples.

http://twitter.com/escobar5/statuses/7406606555 attention long article sur les fondamentaux de Linq

La question Stackoverflow

 http://stackoverflow.com/questions/2030636/c-read-only-calculated-properties-should-they-be-methods les propriétés calculées en .NET : doit-on coder une méthode ou une propriété en lecture seule ?

Actualités Microsoft

C’est peut-être une des nouvelles fonctionnalités de Silverlight 4 les moins discutées : l’incorporation de MEF dans le runtime. MEF est un framework open-source soutenu par Microsoft pour construire des applications extensibles en fournissant un système de plug-ins. Voici une série de vidéos pour aborder le nouveau couple MEF et Silverlight.

Actualités “Alt.NET”

Une des évolutions du TDD, BDD (Behaviour Driven Design) se propose de fournir une définition des tests en langage presque naturel et surtout très proche du domaine métier (c’est en cela qu’on présente le BDD comme étant du TDD + DDD). Cucumber est un framework BDD ruby mais qui supporte .NET et Java, Gojko Adzic en donne un exemple dans un billet.

De l’autre côté

Django est un framework web fondé sur le langage Python. Il a fait à Python ce que Ruby on Rails a fait à Ruby : démocratiser l’usage d’un langage pas très populaire. Ce développeur parle de son expérience en mettant en avant les fonctionnalités souvent citées : ORM, templating, interface d’administration. De plus le langage a connu un regain d’intérêt quand Google l’a choisi pour sa plate-forme cloud Google App Engine (depuis complétée avec Java).

Un projet

Script# est peu reconnu car c’est plus un outil qu’un Framework web classique comme ASP.NET MVC. Son développeur, Nikhil Kothari, est connu dans la communauté .NET pour fabriquer beaucoup de choses dans son “garage”. Script# est un compilateur C# vers Javascript pour être utilisé dans des applications web ou des gadgets Vista par exemple. L’une des applications de Microsoft qui l’utilise est Office Web, la version en ligne des applications bureautiques.

L’expérience de codage en C# :

scriplet

Le debug :

debug

Script# permet aussi la communication avec le serveur (JSON), incorpore une bibliothèque de composants graphiques de base comme la textbox mais aussi des textboxes avec des comportements auto-complétion ou watermaquée  etc.

Pour avoir une idée plus précise des possibilités et des limitations n’oubliez pas de parcourir le fichier PDF readme (40 pages) qui est une vraie documentation.

Tuesday, January 12, 2010 5:02:00 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0] -
.net | Revue du Web
# Monday, December 14, 2009

Les tweets de la semaine

http://twitter.com/thierry_n/statuses/6581723672 : une nouvelle version de Mono, qui voit son offre commerciale prendre forme avec Mono Touch (développement pour l’iPhone), Mono Tools for Visual Studio et la plateforme serveur avec support (Suse Linux). Au passage le compilateur Mono devient aussi “C# 4.0 compatible”.

http://twitter.com/EdgarSanchez/statuses/6566426910 on parlait la semaine dernière de GWT, Volta, voici un produit open source commercial, SharpKit, qui permet de travailler en C# et compiler vers Javascript et vice versa.

La question Stackoverflow

 http://stackoverflow.com/questions/1681546/custom-wpf-control-dependency-property-not-binding-to-external-dp/1681624#1681624 Les “dependency properties” de WPF sont un des aspects les plus puissants du framework mais aussi un des plus difficiles à appréhender. Ici un exemple qui met en lumière l’importance des metadata associées aux DP.

Actualités Microsoft

Bien que certains pensent qu’une beta 3 ou une RC pour Visual Studio 2010 serait la bienvenue, la date de sortie (22 mars 2010) approche (moins de 100 jours maintenant). Dans cet article, Somasegar présente les nouveautés autour du développement d’add-in pour Visual Studio :

  • un SDK de 10 MB au lieu de 100 MB (= documentation en ligne) 
  • WPF comme framework de base
  • facilité d’extension autour de l’éditeur
  • un site renouvelé pour découvrir les extensions existantes

On pourra consulter aussi les nombreuses vidéos issues de la conférence “Development Tools Ecosystem”

Actualités “Alt.NET”

DDDFrance est un site francophone qui propose des ressources autour du Domain Drivern Design en français. Par exemple le livre DDD Quickly a été traduit : DDD vite fait.

Au passage, en suivant les principes du DDD dont l’utilisation au plus proche du langage du domaine métier, doit-on coder en anglais ou dans sa langue maternelle ?

De l’autre côté

VirtualBox est une application de virtualisation rachetée par SUN il y a maintenant un peu plus d’un an. La version 3.1 sortie fin novembre apporte des fonctionnalités telle que la migration “live’” d’une instance d’un hôte à un autre ou encore la restauration à partir d’un snapshot (arbitraire et non le dernier). Un projet communautaire fournit une console web pour administrer les machines virtuelles.

Un projet

StatLight.logo.home Statlight est un framework de tests automatisés pour Silverlight. Vous pouvez le penser un peu comme le Nunit de Silverlight. Dans la définition de xUnit et du TDD en général il faut que l’outil fournisse un moyen de :

 

  • définir les tests (attributs)
  • les exécuter
  • vérifier les résultats (méthodes d’assertions)
  • et les assembler en suite

Il faut d’abord se procurer le template de projet de tests unitaires pour Silverlight et le code source du framework de test unitaires (on le trouvera dans le sous-répertoire source code du toolkit : C:\Program Files (x86)\Microsoft SDKs\Silverlight\v3.0\Toolkit\Jul09\Source par exemple, extraire les dlls du répertoires binaries du dossier compressé). Vous devez arriver à cette structure

setup

Voici un test sur l’interface :

[TestClass]
public class Test : SilverlightTest
{
  private MainPage sut;
 [TestInitialize]
 public void Setup()
 {
    sut = new MainPage();
    //pour nettoyer les pages entre chaque TU
    this.TestPanel.Children.Add(sut);
 }
 [TestMethod]
 public void TestButton()
 {
    Assert.AreEqual(300, sut.Width);
    //no automation
    //visible with the [assembly: 
    //InternalsVisibleTo("MySLApplication.Tests")] 
    sut.Button_Click(this, null);
    Assert.AreEqual(Visibility.Visible, sut.childrenPanel.Visibility);
 }
}

Le changement de visibilité sur les contrôles et l’assembly vient du manque d’automation dans le Framework de test. Quand vous lancez le test une page apparaît avec les résultats :

resultat du test

Statlight permet d’automatiser cette démarche et est compatible avec TeamCity ou MSBuild par exemple. Ici on ajoute l’appel à l’outil dans un post-build (à exécuter avec un compte admnistrateur) :

C:\StatLight.v0.9\StatLight.exe -x='C:/Projects/MySLApplication.Tests/Bin/Debug/MySLApplication.Tests.xap"

résultat du test dans VS

La version de Visual Studio 2010 de Web Testing devrait être compatible Silverlight mais en attendant et/ou vous êtes sur une plateforme moins récente, StatLight est l’outil à évaluer.

Monday, December 14, 2009 5:26:07 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0] -
.net | Revue du Web
# Tuesday, December 08, 2009

Les tweets de la semaine

 http://twitter.com/sbohlen/statuses/6236293827 les vidéos de la NotAtPdc sont en lignes.

http://twitter.com/programmingjoy/status/6296011683 Mono everywhere ? Un projet qui le rend disponible pour Android.

http://twitter.com/thbonk/status/6235070045 Windows Mobile n’a pas peut-être pas l’interface utilisateur qu’il mérite mais il a tous les atouts d’un système d’entreprise dont la présence d’un système de messaging comme MSMQ

La question Stackoverflow

 http://stackoverflow.com/questions/1855211/how-to-store-several-states-in-one-variable on connaît tous les énumérations mais leur utilisation en tant que flag (combinaison de plusieurs valeurs) est moins évidente même si souvent rencontrée dans le Framework lui-même.

Actualités Microsoft

Une des nouveautés du .NET Framework 4 sont les API autour du parallélisme. Afin de profiter des processeurs à cœurs multiples Microsoft ajoute des classes de base pour simplifier le développement de traitements en parallèle. On a beaucoup entendu parler de PLinq qui permet d’appliquer des traitements parallélisés à des ensembles d’objets. Task Parallel Library (TPL) est moins connue, un article au format PDF permet de découvrir les tâches parent-enfant, leur utilisation et leur debugging.

Actualités “Alt.NET”

Un nouveau site qui dépasse le monde .NET : http://www.algorithmatic.com/browse pour apprendre, découvrir et contribuer à un répertoire d’algorithmes, le site est en ASP.NET MVC et l’éditeur de code en Silverlight.

De l’autre côté

La spécification de JavaEE a été votée cette semaine.  Le vote (non) de la fondation Apache reflète une inquiétude grandissante chez les membres du comité d’après TheServideSide.com sans parler du débat sur le processus même d’évolution, certains militant pour un abandon du JCP (Java Community Process) pour un modèle complètement Open Source.

Un projet

logo de wix

Dans ce monde d’applications web ou SAAS (Software As A Service) on en oublierait presque les programmes d’installation…

Wix est un projet que Microsoft a arrêté de développer et l’a mis à disposition de la communauté qui l’a fait vivre depuis : la version 3 est sortie cet été.

Wix est un outil pour packager les applications. Comme l’illustre le tutorial très riche, les fonctionnalités de Wix sont riches. Basé sur XML il vous permet de gérer les dépendances comme le .NET Framework, les raccourcis ou encore les fichiers d’aide etc. Le support de Visual Studio 2008 prend la forme de plusieurs types de projets dont les customs actions pour étendre l’installation avec des étapes personnalisées. La mise à jour d’application est aussi gérée.

wixProjetcs

Déclaration d’une dépendance avec le .NET Framework :

<PropertyRef Id="NETFRAMEWORK35_CLIENT"/>
<Condition Message='This setup requires the .NET Framework 3.5 client profile installed.'>
  <![CDATA[Installed OR NETFRAMEWORK35_CLIENT]]>
</Condition>

Installation d’une base de données :

<sql:SqlDatabase Id='SqlDatabase' Database='Foobar' User='SQLUser' Server='[SQLSERVER]'
              CreateOnInstall='yes' DropOnUninstall='yes' ContinueOnError='yes'>
 <sql:SqlScript Id='CreateTable' BinaryKey='CreateTable' ExecuteOnInstall='yes' />
</sql:SqlDatabase>
 ou encore configurer le firewall.
Tuesday, December 08, 2009 5:44:00 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0] -
.net | Revue du Web
# Tuesday, December 01, 2009

Les tweets de la semaine

 http://twitter.com/pedeveloper/statuses/6046161616 les index en base de données, on connaît mais les index clustérisés ? Un rapide et intéressant tour d’horizon des index sous SQL Server.

http://twitter.com/prodotnet pour apprendre (ou ré-apprendre) .NET un tweet à la fois.

La question Stackoverflow

 http://stackoverflow.com/questions/129389/how-do-you-do-a-deep-copy-an-object-in-net-c-specifically Copier un objet de type valeur est facile, copier un objet de type référence l’est moins car il a souvent lui même des références vers d’autres objets d’où le concept de “deep copy”, “deep”car on doit gérer un graphe d’objets.

Actualités Microsoft

C’est le grand calme après la tempête PDC. Que retenir de cette édition ? D’après Keith Elder dans un post sur dzone il faut faire le pari de Silverlight 4 et Entity Framework. Il est vrai qu’avec la version 4 de Silverlight on arrive au WPF/E (Everywhere) annoncé lors de sa première incarnation. De son côté le framework de mapping objet relationnel semble être le plus stable des investissements fait dans  ce domaine et son orientation “POCO” est un très bon signe.

Actualités “Alt.NET”

Depuis que Volta a été abandonné par Microsoft, il y a une place pour un framework comme GWT en .NET. Script# est similaire mais incomplet. Un message sur la liste de discussion altnet parle d’un effort par un développeur, Frank, de répondre à ce besoin. Est-ce qu’il y une place entre Silverlight et le couple ASP.NET MVC + jQuery ? Si cela ne vient pas de Microsoft peut-être que la communauté délivrera, appel à contribution lancé donc.

De l’autre côté

 La beta d’Adobe Air 2 est sortie en même temps que celle de Silverlight 4. Flash a connu 4 grandes étapes :

  • la création du plugin en 1996-97 qui a permis d’utiliser (et d'abuser) des animations vectorielles
  • le codec vidéo qui a révolutionné le streaming de vidéo sur le web (et de perdre beaucoup de temps sur youtube.com)
  • Flex : peu connu du grand public (sauf pour les 10.000 clients Twitter), c’est avec Flex et ActionScript (le langage) que Macromedia a fait son entrée dans le monde du développement d’entreprise (avec un back-end en Java)
  • Air : qui permet d’exécuter un programme en dehors du navigateur.

On compare souvent Air et Silverlight car ils se positionnent comme la plate-forme “smart client” (et sont souvent cités comme les concurrents de HTML5). Silverlight a l’avantage d’offrir une expérience de développement unifiée (client et serveur en .NET), Flash/Flex/Air celui du pourcentage de déploiement sur les postes des particuliers. Dans sa dernière incarnation Adobe fournit dans la suite un nouvel outil Catalyst qui permet de passer plus facilement d’un design de contrôle purement vectoriel à un “skin”réutilisable dans l’environnement de développement. 

Un projet

logo

dotlesscss (.less{}) se propose de moderniser la manipulation et la définition  des feuilles de styles (CSS). Il existe des techniques pour optimiser les styles en utilisant les bons sélecteurs mais il est vrai que la maintenance peut être fastidieuse.

dotlesscss supporte par exemple la déclaration de variables globales, ici une couleur :

@brand_color: #4D926F;
 
#header {
  color: @brand_color;
}
 
h2 {
  color: @brand_color;
}

ou encore les propriétés calculées :

@the-border: 1px;
@base-color: #111;
 
#header {
  color: @base-color * 3;
  border-left: @the-border;
  border-right: @the-border * 2;
}
 
#footer { 
  color: (@base-color + #111) * 1.5; 
}

Autopromotion (juste un peu)

nVentive sera présente lors des TechDays à Montréal : Erik Renaud animera une présentation d’introduction sur le Test-Driven Development (TDD).

Tuesday, December 01, 2009 1:18:23 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0] -
.net | Revue du Web
# Tuesday, November 24, 2009

Les tweets de la semaine

Voici un site intéressant pour suivre les tweets de la communauté .NET : http://managedassembly.com/twitter C’est seulement un groupe sélectionné, certains se transforment en “drama queen” parfois mais l’essentiel est là : le partage de connaissances au sens large dans la communauté .NET

La question Stackoverflow

http://stackoverflow.com/questions/289176/how-is-duck-typing-different-from-the-old-variant-type-and-or-interfaces Avec les fonctionnalités de C# 4 comme le mot-clé dynamic, on parle de duck-typing, mais que recouvre ce terme ? Une explication avec exemple dans la question de la semaine.

Actualités Microsoft

La PDC 2009 ne restera sans doute pas dans les annales comme une des plus importantes. Sauf peut-être pour les conférenciers qui ont reçu un PC portable Tablet PC gratuitement.

Comme on le pressentait dans cette chronique les semaines précédentes, les sessions et annonces ont tourné autour de Azure, Dublin, Office 2010 et Silverlight 4 avec aussi un bilan de Windows 7.

Azure : en plus de l’offre commerciale qui démarre en 2010, l’éditeur a annoncé un AppStore de Azure sous le nom de code Dallas qui sortira en beta dans le courant de l ‘année prochaine. Mais aussi des outils comme ce Power Pack de synchronisation de base de données SQL Server vers Azure.

Dublin : Le projet a au moins un nom : Windows Server AppFabric et une beta. Et Velocity, le cache distribué, est aussi absorbé dans ce projet qui permet manager WCF et le nouveau WF dans IIS. 

Silvelright 4 : en plus des nouvelles API autour de la webcam et l’accès au système de fichiers local, on assiste au un rattrapage (attendu) du framework avec la CLR classique : présence des ICommand et IDataeErrorInfo chères aux développeurs WPF, compatibilité des binaires (i.e. plus de projets spécifiques Silverlight pour les composants communs), Tim Heuer a comme toujours un billet qui détaille ces nouveautés.

Divers : sortie de ASP.NET MVC 2 Beta, des renommages de produits : RIA Services et ADO.NET Data Services tombent dans l’ombrelle de WCF, un protocole d'accès aux données basé sur Atom : OData , la sortie de Geneva ou Windows Identity Foundation … Ah si on oubliait : l’annonce de IE9 mais à part un Power Point repris partout les informations intéressantes seront divulguées lors de MIX2010 en mars prochain.

Actualités “Alt.NET”

Finalement la PDC virtuelle alternative (NotAtPdc) a connu un certain succès avec une vingtaine de sessions sur ASP.NET MVC, Entity Framework, les bonnes pratiques de développement et même Javascript :) Espérons que les enregistrements soient disponibles.

De l’autre côté

Terracotta a annoncé le rachat de Quartz (version java) après celui de EhCache durant l’été. C’est une tendance, beaucoup d’entreprises fondées sur un projet Open Source phare rachète des projets connexes pour bâtir une offre plus complète. JBoss, Spring en sont les exemples les plus cités. Terracotta a connu un vrai succès en simplifiant la distribution d’applications. En utilisant la manipulation de byte code au runtime, l’application permet à des threads sur des JVMs différentes (CLR en .NET) de communiquer comme si elle appartenait à la même. Les cas d’utilisation les plus courants sont la distribution de cache, la réplication de sessions ou le clustering de POJO ou Spring Bean.

Un projet

PostSharp est une librairie AOP pour .NET. Cette librairie ajoute le code de l’aspect après la compilation. On utilise souvent l’AOP pour des considérations techniques comme l’audit, le cache, les exceptions ou encore la démarcation des transactions sur des couches comme le fait Spring.NET.

Le projet est basé sur les attributs .NET, en héritant de OnMethodBoundaryAspect par exemple on développe un composant qui sera exécuté à l’entrée et à la sortie de la méthode :

public sealed class MyAttribute : OnMethodBoundaryAspect

On peut alors surcharger les méthodes pertinentes :

public override void OnEntry( MethodExecutionEventArgs eventArgs )
{
	Trace.WriteLine(
	string.Format( "Entering {0}.{1}.",
				   eventArgs.Method.DeclaringType.Name,
				   eventArgs.Method.Name ),
	this.category );
}
public override void OnExit( MethodExecutionEventArgs eventArgs )
{
	Trace.WriteLine(
	string.Format( "Leaving {0}.{1}.",
				   eventArgs.Method.DeclaringType.Name,
				   eventArgs.Method.Name ),
	this.category );
}

et appliquer cet attribut sur notre méthode :

[Trace]
private static void ToBeTraced()
{
    Console.WriteLine("Hello, world." );
}
 
PostSharp travaille sur les assembly compilées, au niveau du MSIL, il est donc compatible avec tous les langages .NET
Tuesday, November 24, 2009 3:00:00 PM (Eastern Standard Time, UTC-05:00)  #    Comments [2] -
.net | Revue du Web
Search
Archive
<January 2010>
SunMonTueWedThuFriSat
272829303112
3456789
10111213141516
17181920212223
24252627282930
31123456
Statistics
Total Posts: 98
This Year: 28
This Month: 3
This Week: 0
Comments: 17
Sign In