Revue du web .NET du 8 février
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.
Billet publié dans les rubriques Programmation le