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, February 22, 2010

Les tweets de la semaine

 http://twitter.com/cadred/statuses/9242655924 une revue du web .NET quotidienne, elle va très bien avec le café du matin

http://twitter.com/romainverdier/status/8922567409 la conversion de delegate, Func<T,bool> == Predicate<T> ?

http://www.alexatnet.com/content/net-memory-management-and-garbage-collector un petit rappel sur le Garbage collector en .NET

La question Stackoverflow

 http://stackoverflow.com/questions/129453/net-eventhandlers-generic-or-no les bonnes pratiques officielles concernant les events en .NET peuvent être rébarbatives, cette question se concentre sur la classe représentant les arguments des évènements et sa version générique. 

Actualités Microsoft 

Windows Phone 7 Series a été annoncé, enfin les détails “grand publics”, concernant les développements il faudra attendre un peu : on parle d’une version de Visual Studio gratuite et dédiée pour le début de l’été et un environnement de développement autour de Silverlight ou XNA pour le jeux. En attendant voici un graphique intéressant qui donne la répartition des revenus de Microsoft selon les lignes de produits :

Actualités “Alt.NET”

On vous indiquait dans une édition précédente de la revue du web les présentations de SkillsMatter, celle de Udi Dahan sur Command Query Responsibility Segregation est maintenant en ligne : http://skillsmatter.com/podcast/open-source-dot-net/udi-dahan-command-query-responsibility-segregation/rl-311

De l’autre côté

 

Un projet 

 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, February 22, 2010 3:00:00 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0] -
.net | Revue du Web

Les tweets de la semaine

 http://twitter.com/cadred/statuses/9242655924 une revue du web .NET quotidienne, elle va très bien avec le café du matin

http://twitter.com/romainverdier/status/8922567409 la conversion de delegate, Func<T,bool> == Predicate<T> ?

http://www.alexatnet.com/content/net-memory-management-and-garbage-collector un petit rappel sur le Garbage collector en .NET

La question Stackoverflow

 http://stackoverflow.com/questions/129453/net-eventhandlers-generic-or-no les bonnes pratiques officielles concernant les events en .NET peuvent être rébarbatives, cette question se concentre sur la classe représentant les arguments des évènements et sa version générique. 

Actualités Microsoft 

Windows Phone 7 Series a été annoncé, enfin les détails “grand public”, concernant les développements il faudra attendre un peu : on parle d’une version de Visual Studio gratuite et dédiée pour le début de l’été et un environnement de développement autour de Silverlight ou XNA pour le jeux. En attendant voici un graphique intéressant qui donne la répartition des profits de Microsoft selon les lignes de produits – on y voit bien l’effet de Windows 7 :

Actualités “Alt.NET”

On vous indiquait dans une édition précédente de la revue du web les présentations de SkillsMatter, celle de Udi Dahan sur Command Query Responsibility Segregation est maintenant en ligne : http://skillsmatter.com/podcast/open-source-dot-net/udi-dahan-command-query-responsibility-segregation/rl-311

De l’autre côté

Hibernate, un des plus anciens ORM, continue son bonhomme de chemin et devient avec la version 3.5 conforme à la version 2 de la spécification JPA (un standard Java pour la persistance des données). Quelques nouveautés : Les annotations (équivalent des attributs en C#) sont incorporées dans le projet général, support de JDBC 4, la possibilité de décrire des schémas de chargement (Fetch Profiles). Cette dernière fonctionnalité est intéressante car si un ORM vous débarasse de l’écriture d’une couche d’accès aux données fastidieuse, le lazy loading a un effet pervers : on ne contrôle plus la granularité du graphe d’objets récupérés et on se retrouve vite avec des problèmes comme le Select N+1.

Un projet 

ELMAH est un projet qui permet de gérer l’audit des erreurs dans une applications ASP.NET. Les exceptions sont sauvegardées dans une base de données (Sql Server, Oracle, SQlite, un fichier XML).

La configuration consiste à ajouter un certain nombre de section pour paramétrer les différents aspects : logging, reporting, notifications etc. :

<sectionGroup name="elmah">
  <section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, Elmah" />
  <section name="errorLog" requirePermission="false" type="Elmah.ErrorLogSectionHandler, Elmah" />
  <section name="errorMail" requirePermission="false" type="Elmah.ErrorMailSectionHandler, Elmah" />
  <section name="errorFilter" requirePermission="false" type="Elmah.ErrorFilterSectionHandler, Elmah" />
</sectionGroup>

Ainsi que les handler et le httpmodule dans les sections respectives :

<add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah"/>
On configure le datastore, ici SQLite : 
<elmah>
   <errorLog type="Elmah.SQLiteErrorLog, Elmah" connectionStringName="Elmah.SQLite" />
</elmah>
<connectionStrings>
    <add name="Elmah.SQLite" connectionString="data source=~/App_Data/Elmah.SQLite.db" />
</connectionStrings>

On peut aussi specifier une notification par email (ou Twitter):

 <errorMail from="elmah@example.com"    
             to="admin@example.com"    
             cc="carboncopy@example.com"    
             subject="..."  
             async="true|false"  
             smtpPort="25"  
             smtpServer="smtp.example.com"    
             userName="johndoe"  
             password="secret" />  

La page permet de voir une liste des erreurs survenues et de voir le détail de la requête HTTP à l’origine du problème. On peut alors téleécharger le log et s’abonner à un flux RSS des erreurs :

copie d'écran de la page d'erreur

 

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, February 22, 2010 3:00:00 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0] -
.net | Revue du Web
# Monday, February 15, 2010

Les tweets de la semaine

http://twitter.com/tormodfj/statuses/8900636543 une nouvelle version de l’éditeur de code est arrivée, non non, ce n’est pas ce que vous pensez

http://twitter.com/darthpanda/statuses/8905432346 une liste de méthodes d’extension pour toutes les situations de la vie

http://twitter.com/ManningBooks/statuses/8912372298 Un article d’introduction sur l’intégration continue en .NET par les auteurs d’un livre qui sort prochainement sur le sujet

La question Stackoverflow

http://stackoverflow.com/questions/2237275/what-does-default-keyword-mean-in-c Un peu d’humour aujourd’hui : cela part mal on dirait pour cet utilisateur de Visual Studio.

Actualités Microsoft 

Depuis la semaine dernière les rumeurs les plus folles courent sur la (très attendue) prochaine version de Windows Mobile : Windows Phone Series 7. Dans ce billet on trouve quelques hypothèses dont un SDK basé sur Silvelright version mobile (un mix de 3 et 4), une version de Visual Studio Express dédiée et la fin du multitasking. On en sera sans doute plus au cours de la semaine avec la conférence Mobile Wolrd Congress qui se tient à Barcelone.

Actualités “Alt.NET”

 GIT est en passe de supplanter Subversion le système de gestion de configuration alternatif au composant dédíé de TFS. Dans un webcast du groupe Europe Virtual Alt.NET James Gregory nous parle de l’utilisation de l’outil. On pourra consulter l’excellent add-in GIT Extensions pour les utilisateurs de Visual Studio.

De l’autre côté

La version 3.2 d’Open Office est sortie. Est-ce devenue une anomalie dans un monde de plus en plus tourné vers les applications web (Google Docs, la future version web d’Office, Zoho…). Certains regrettent aussi la communuaté de développeurs peu dynamique, le fait que C++ soit le langage principal n’a pas joué en sa faveur (bien qu’Apple soit arrivé à rendre sexy le développement avec pointeur, mais Open Office n’est pas un iPhone). Le récent rachat de Sun par Oracle a fait beaucoup coulé d’encre à cause de Mysql mais peu sur Open Office. Peut-on s’attendre à une mort lente ?

Un projet 

 MongoDB est un système de stockage orienté document. Ces documents sont stockés au format binaire et les requêtes utilisent un langage similaire au JSON pour dialoguer avec le système de base de données. Contrairement aux systèmes relationnels les SGBD document n’ont pas de structure fixe, deux documents peuvent partager un certain nombre de champs mais ce n’est pas obligatoire.

Dans ces deux billets Daniel Wertheim nous montre comment utiliser MongoDB dans un environnment C#. Après télécharger MongoDB la console nous permet d’ajouter des données :

db.Notes.save({ Title: "The first document", Body: "My first document stored in MongoDB.",

Tags: ["MongoDB", "Getting started"]})

le requêtage :

db.Notes.find({Tags : "Getting started"})

Il existe un pilote c# pour interagir avec la base de données à travers une interface JSON (avec des litérales ou en sérialisant des objets vers JSON) :

var firstNote = new Note {
	Title = "First note using Serialization",
	Tags = new string[] { "MongoDB", "Getting started" },
	Body = "Some nice text." };
//Convert Note to Document and insert it
var firstNoteDocument = json.DocumentFrom(firstNote);
notes.Insert(firstNoteDocument);

et le requêtage :

var noteDocument = notes.FindOne(new Document { { "Tags", MongoDBNull.Value } });
25
var note = json.ObjectFrom<Note>(noteDocument);
Daniel montre ensuite l’utilisation de classes proxy générées avec Castle pour simplifier la sérialisation. 

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, February 15, 2010 3:00:00 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0] -
Revue du Web
# Monday, February 08, 2010

Les tweets de la semaine

http://twitter.com/pm5links/statuses/8498715256 on a tous utilisé Reflector au moins une fois dans notre vie de développeur .NET. La version PRO payante de RedGate est prometteuse

http://www.lesnikowski.com/blog/index.php/testing-datetime-now/ utiliser DateTime,Now dans du code semble inoffensive  jusuqu’au moment où vous écrivez votre test

 http://twitter.com/Saucerdk/statuses/8670557833 Symbian est devenu open source il y a quleques temps, on peut maintenant développer en .NET pour ce système d’explotation. Un peu trop tard ?

La question Stackoverflow

http://stackoverflow.com/questions/1704487/algorithm-to-flatten-peak-usage-over-time Comment répartir de façon égale une quantité dans un contenant subdivisble, voici une réponse qui fait intervenir une classe que nous connaissons tous mais utilisons peu : HashTable.

Actualités Microsoft 

Microsoft a présenté ses résultats financiers en ce début 2010, et Windows 7 en plus d’être un système d’exploitation fini et réussi apporte un souffle financier signatificatif à l’éditeur. Comme l’explique ArsTechnica  les 60 millions de copies vendues lors ce trimestre sont sans doute pour beaucoup dans l’augmentation de 14% du chiffres d’affaires de Microsoft par rapport à l’année précèdente. Mais cet éditorial dans le New York Times d’un ancien vice-président de Microsoft sur les problèmes internes qui empêchent de faire emerger des produits innovants va sans doute un peu assombrir le tableau.

Actualités “Alt.NET”

 Sharp architecture est un projet qui se propose de faciliter le développement d’architecture en couches avec NHibernate. Commencé après un article sur codeproject (il y a presque 4 ans !), le projet est maintenant une application à part entière avec son site internet et un forum très actif.

On pourrait penser que ce ne sont que des bonnes pratiques d’architectes sans réelle application dans la vraie vie mais dans ce billet Billy McCafferty (créateur du projet) présente des applications en production qui utilisent ce “framework” dont Fancy Dress Outfitters http://www.fancydressoutfitters.co.uk/ . Ils lancent une autre application didactique cette fois-ci mais qui utilise les mêmes outils qu’une application réelle : http://who-can-help.me/ dont le code source est disponible.

De l’autre côté

On parle design cette semaine ! La signature email, c’est un peu les sites web personnels, on a tout vu : le gif animé, les polices de caractères de couleur fluo ou qui changent à chaque syllabe sans parler de celles qui font 20 lignes et s’entassent lors des échanges. Smahing Magazine nous présente une étude détaillée et nous livre quelques bons conseils.

Un projet 

Fluent Migrator est issu d’une amélioration de Migrator.NET un outil pour migrer des données entre différentes SGBD mais surtout entre différentes version d’un schéma. La gestion de configuration des bases de données n’est pas chose aisée il est agréable de voir des outils pour y remédier.

En Migrator.NET on utilise des attributs pour versionner des actions à exécuter contre un schéma :

[Migration(20080805151231)]
public class AddCustomerTable : Migration
{
        public override void Up()
        {
                Database.AddTable("Customer",
                          new Column("name", DbType.String, 50),
                          new Column("address", DbType.String, 100),
                          new Column("age", DbType.Int32, 100)
                         );
        }
        public override void Down()
        {
                Database.RemoveTable("Customer");
        }
}

L'attribut peut contenir un numéro version avec un entier ou un timestamp. Les actions possibles sont varíées : clés étrangères, du code SQL pour un SGBD particulier :

[Migration(5)]
public class AddForeignKeyToTheBookAuthor : Migration
{
        private const string FK_NAME = "FK_Book_Author";
        public override void Up()
        {
                Database.AddForeignKey(FK_NAME, "Book", "authorId", "Author", "id");
        }
        public override void Down()
        {
                Database.RemoveForeignKey(FK_NAME);
        }
}
Une application console, des tâches Nant et MSBuild existent pour exécuter et automatiser des migrations.

L’interface Fluent rajoutée par Sean Chambers simplifie l’API :

[Migration(1)]
public class TestCreateAndDropTableMigration: Migration
{
	public override void Up()
	{
		Create.Table("TestTable")
			.WithColumn("Id").AsInt32().NotNullable().PrimaryKey().Identity()
			.WithColumn("Name").AsString(255).NotNullable().WithDefaultValue("Anonymous");
		
		Create.Index("ix_Name").OnTable("TestTable2").OnColumn("Name").Ascending()
			.WithOptions().NonClustered();
		
		Create.ForeignKey("fk_TestTable2_TestTableId_TestTable_Id")
			.FromTable("TestTable2").ForeignColumn("TestTableId")
			.ToTable("TestTable").PrimaryColumn("Id");
		Insert.IntoTable("TestTable").Row(new { Name = "Test" });
	}
	public override void Down()
	{
		Delete.Table("TestTable2");
		Delete.Table("TestTable");
	}
}

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, February 08, 2010 3:00:00 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0] -
.net | Revue du Web
# Monday, February 01, 2010

Les tweets de la semaine

http://twitter.com/MrWaz/statuses/8198003333 WCF avec Mono sur Solaris, si si c’est possible

http://twitter.com/colinsurprenant/statuses/8203661366 un autre jour, un autre système de stockage clé-valeur

http://twitter.com/webAgencyFAIL une sorte de Daily What the Fuck pour web agencies.

La question Stackoverflow

 http://stackoverflow.com/questions/1204309/force-lazy-entity-to-load-real-instance Les framework modernes d’ORM gèrent  les associations polymorphiques de façon transparente pour le développeur mais il faut être conscient que cette magie peut vous jouer des tours (voir aussi le billet d’un des développeurs de NHIbernate sur ce sujet).

Actualités Microsoft 

vs2010perf

On dirait que l’équipe de développement de Visual Studio a bien travaillé sur les performances de la dernière version de l’éditeur de code. Dans un billet l’équipe nous mets l’eau à la bouche avec le résultat d’un sondage fait auprès des utilisateurs d’une version beta privée comportant les améliorations.  Cela ressemble à un feu vert pour la Release Candidate ?

 

 

 

 

Actualités “Alt.NET”

Voici une série de podcasts autour des projets open-source ou des méthodes agiles du monde .NET (Architecture MVC, F#, Command Query, etc)  et si vous habitez pas très loin de Londres vous pouvez assister à deux évènements gratuits sous la forme de discussion avec Udi Dahan (créateur de NServiceBus) et Ayende Rahien sur NHibernate.

De l’autre côté

Pendant que nous développons (et livrons) avec des technologies comme Silverlight, Flex ou ASP.NET MVC, HTML 5 fait son bonhomme de chemin (en octobre 2009 la dernière phase du processus - initié en 2007- de validation de la spécification a commencé). Mais ce chemin n’est pas si paisible que ça : la dernière contreverse concerne le nouvel élèment <video> qui permet de présenter un média sans passer par un plug-in propriétaire. Or les premières implémentations de YouTube ou Vimeo utilisent des codecs supportant H.264 (non libre) et d’autres Ogg comme Firefox. Il faudra donc sans doute founir plusieurs versions du même média. Les explications sur le site de Robert Nyman.

Un projet

 DejaVu se propose de fournir une bibliothèque légère gérant un système de commandes, leurs objets et l’enregistrement de l’état des données pour revenir en arrière (undo / redo).Un des principaux arguments pour l’utilisation de DTO en lieu et place d’objets métiers (POCO) dans la couche de présentation vient du souhait de ne pas les polluer avec les préoccupations de cette couche : notification de changement (la famause interface INotifyPropertyChanged), des validations de premier niveau, et la gestion des modifications. Cet article sur codeproject est une bonne introduction à cette bibliothèque. Bien qu’on puisse sans doute améliorer son utilisation, elle fait réfléchir sur le problème sous-jacent.

Voici un exemple où on explicite le début de l’enregistrement des modifications et leur commit ou rollback :

UndoRedoManager.Start("My Command"); // start point
data.Name = "Name1";
data.Weight = 33;
data.MyList.Add(other);
UndoRedoManager.Commit(); 
//ou
UndoRedoManager.Undo();

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, February 01, 2010 3:00:00 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0] -
.net | Revue du Web
# Monday, January 25, 2010

Les tweets de la semaine

 http://twitter.com/MichelSchep/statuses/7986002678 une vue d’ensemble des API du .NET Framework 4 avec DeepZoom

http://twitter.com/ReedCopsey/statuses/7959294663 Toujours .NET Framework 4, une série d’articles pour aborder le parallélisme

http://twitter.com/jschmiede/statuses/7912861843 On connaît TFS, Cruise Control et PSake, voici Rake pour .NET en vidéo

La question Stackoverflow

 http://stackoverflow.com/questions/2040924/best-way-to-communicate-between-net-1-1-and-net-3-5 Comment faire communiquer une application basée sur la version 1.1 du Framework avec une application qui utilise la version 3.5 ? Socket, Remoting, WebServices tout y passe.

Actualités Microsoft et Actualités “Alt.NET”

Nous essayons d’avoir le contenu le plus original possible mais il est difficile de passer sous silence ce billet d’Ian Cooper sur la communauté Alt.Net. Il est certain que la philosophie derrière ce mouvement (qui tourne autour de l’agilité, du TDD, des principes S.O.L.I.D. de développement) a fait du chemin dans la communauté .NET en général. Il est intéressant de voir les réactions / actions entre Microsoft et cette communauté dans divers domaines : ORM (Nhibernate, Entity- Framework, Subsonic etc.), IoC (Unity, StructureMap, Autofac) et le web: FubuMVC existerait-il si ASP.NET MVC n’avait pas été développé par Microsoft ? On espère que cette saine compétition continuera et s’étendra à d’autres domaines comme par exemple les ESB (on parle encore peu de AppFabric/Dublin, NServiceBus ou MassTransit).

De l’autre côté

 Google Collections est un projet comme il en existe beaucoup : compléter le framework Java dans un domaine bien particulier. Apache Commons est un autre exemple : client HTTP, Codecs, Emails etc… Il se sert du JDK 1.5 et des génériques pour apporter plus flexibilité, moins de friction dans l’usage des API de base. Par exemple faire un join

Joiner.on(", ").join(iterable);
Joiner.on(", ").skipNulls().join(iterable);
Joiner.on(", ").useForNull("<null>").join(iterable);

Voici un article concis qui montre les fonctionnalités de la bibliothèque.

Un projet

 HTML Agility Pack est une bibliothèque pour parser du code HTML, une tâche des plus ingrates qui puisse exister pour un développeur (après écrire une documentation peut-être). Les navigateurs pardonnant beaucoup il existe beaucoup de pages qui ne respectent pas les schémas sans parler des pages générées qui rendent le code des plus exotiques.

Ce projet qui a connu en fin d’année dernière un renouveau grâce à une série de patchs et maintenant un nouveau lead technique a encore rendu son utilisation plus agréable : requête de type XPath avec l’usage de Linq, Extraction facile du texte nettoyé des balises html etc.

var atts = _doc.DocumentNode.SelectNodes("//*[@background or @lowsrc or @src or @href]");
var hrefs = _doc.DocumentNode.SelectNodes("//a[@href]");
var nodes = from node in hrefs
            where node.Attributes["target"].Value == "_blank"
	    select node;

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 25, 2010 3:00:00 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0] -
.net | Revue du Web
Search
Archive
<February 2010>
SunMonTueWedThuFriSat
31123456
78910111213
14151617181920
21222324252627
28123456
78910111213
Statistics
Total Posts: 98
This Year: 28
This Month: 3
This Week: 0
Comments: 17
Sign In