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.

# 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
# Tuesday, November 17, 2009

Les tweets de la semaine

http://twitter.com/shanselman/status/5740020895 Channel 9 la chaîne pour les développeurs .NET diffusera en direct un flux vidéo depuis la grande salle du centre de conférence. Au menu : interviews et démos par les présentateurs, partenaires et développeurs de la communauté.

http://twitter.com/giovannibassi/statuses/5738375005 il y a bien une underground PDC (enfin pas si underground car le principal intervenant est Scott Gutherie) mais sur twitter on a trouvé la “nopdc”, une conférence virtuelle ou une simple blague ?

http://twitter.com/tomconte/statuses/5720465827 mise à jour du Azure SDK (Novembre 2009) juste avant la PDC. L’accent est mis sur le support de Visual 2010, l‘amélioration des fonctionnalités de logs mais aussi sur le service comme la puissance des machines virtuelles, les ports HTTP ouverts etc.

La question Stackoverflow

 http://stackoverflow.com/questions/36296/whats-the-answer-to-this-microsoft-pdc-challenge une question PDC sur Stackoverflow, un peu tirée par les cheveux mais sympathique, voir le lien de la première réponse pour un explication

Actualités Microsoft

Nous y voilà. La PDC est le rendez-vous des développeurs .NET. Pour se tenir au courant Twitter est d’une grande aide. Azure sera sûrement la vedette de cette édition, Visual Studio 2010 étant déjà disponible on pourra sans doute approfondir certains points. Des surprises ? Peut-être du côté de Sharepoint ou de Office en ligne dont on a pas entendu parler même si certains produits comme Excel sont déjà disponibles.

Actualités “Alt.NET”

On parlait récemment du manque de Maven pour les projets .NET. Voici un début de solution avec HornGet. Ce site est un repository des librairies et frameworks couramment utilités. On y trouve la version stable courante mais aussi le trunk. Voici un exemple avec NHibernate : http://www.hornget.net/packages/orm/nhibernate/ A chaque fois les dépendances sont incluses dans le package.

De l’autre côté

La version 3 de Spring va bientôt voir le jour. Du framework simplifiant le développement J2EE en passant par l ‘injection des dépendances, Spring a eu un fort impact sur la communauté Java. Racheté par VMware, le contenu payant (outils, support, serveur d’application …) est de plus en plus étoffé. Au niveau des fonctionnalités c’est le support des annotations (lire attributs en .NET) de plus en plus présents ainsi que des API REST complètes. Mais c’est aussi un mouvement de fond et Spring est passé d’une multitude librairies pour combler des manques à un stack complet qui  est en concurrence avec Java EE6.

Un projet

Quartz.NET est un portage .NET d’une librairie de planification de tâches. On y trouve toutes les fonctionnalités pour ce type de programme :

  • intégré ou application “stand-alone”
  • planification par trigger sur dates, calendrier particulier (calendrier avec vacances etc.)
  • l’application fournit simplement des “jobs” : classes implémentant une interface et instanciées. On peut pendre le contrôle de l’instanciation via une factory. 
  • des fonctionnalités “entreprise”comme le fail-over ou le load-balancing

Voici un extrait des tutoriaux :

// construct a scheduler factory
ISchedulerFactory schedFact = new StdSchedulerFactory();
// get a scheduler
IScheduler sched = schedFact.GetScheduler();
sched.Start();
// construct job info
JobDetail jobDetail = new JobDetail("myJob", null, typeof(HelloJob));
// fire every hour
Trigger trigger = TriggerUtils.MakeHourlyTrigger();
// start on the next even hour
trigger.StartTimeUtc = TriggerUtils.GetEvenHourDate(DateTime.UtcNow);  
trigger.Name = "myTrigger";
sched.ScheduleJob(jobDetail, trigger); 

Le planificateur a la notion de calendrier attaché aux triggers ce qui permet d’exclure des dates pour lesquelles ceux-ci ne se déclenchent pas  :

HolidayCalendar cal = new HolidayCalendar();
cal.AddExcludedDate(someDate);
sched.AddCalendar("myHolidays", cal, false);
// fire every one hour interval
Trigger trigger = TriggerUtils.MakeHourlyTrigger();
// start on the next even hour
trigger.StartTimeUtc = TriggerUtils.GetEvenHourDate(DateTime.Now); 
trigger.Name = "myTrigger1";
trigger.CalendarName = "myHolidays";
// .. schedule job with trigger
// fire every day at 08:00
Trigger trigger2 = TriggerUtils.MakeDailyTrigger(8, 0);
// begin immediately
trigger.StartTimeUtc = DateTime.UtcNow; 
trigger2.Name = "myTrigger2";
trigger2.CalendarName = "myHolidays";
// .. schedule job with trigger2 
Tuesday, November 17, 2009 3:22:00 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0] -
.net
# Wednesday, November 11, 2009

Les tweets de la semaine

http://twitter.com/adamhill/statuses/5433030511 : vous pensiez que les expressions lambda étaient la fin de vos peines de développeur ? Voici les “dynamic methods bags” avec C# 4. 

http://twitter.com/rbirkby/status/5309987820 le copier-coller le plus grand “ami” du développeur, voilà un outil pour détecter le code dupliqué.

http://twitter.com/Weiti/statuses/5473911173 snippet console, pour tester des bouts de code.

La question Stackoverflow

http://stackoverflow.com/questions/1694297/does-entity-framework-4-0-allow-to-work-without-designers

Entity-Framework en est déjà à la version 4 mais ne vous inquiétez pas si vous avez ignoré les versions précédentes, cette dernière incarnation de l’ORM de l’éditeur (rappelez-vous d’ObjectSpaces) est presque un nouveau produit. On y trouve la transparence des mécanismes de persistance et comme évoquée dans la question de la semaine une API du mapping plus accessible.

Actualités Microsoft

Encore quelques jours avant la PDC 2009, nous continuons le tour d’horizon du .NET Framework 4.0 avec WPF. Une technologie prometteuse mais peut-être trop innovante ? Un nouveau langage (XAML), un manque certain d’outils et de contrôles de base (vous avez dit DataGrid ?). Enfin tout cela était avant la version 4.0 qui occupe le devant de la scène : le nouveau Visual Studio 2010 utilise WPF comme moteur de rendu pour l’éditeur de code.On peut consulter ici la liste des nouveautés. Une des ressources les plus instructives sur le Framework de présentation est le blog de Jaime Rodriguez avec notamment son billet hebdomadaire qui condense des questions / réponses de la liste de diffusion interne de Microsoft.      

Actualités “Alt.NET”

On a beaucoup entendu parler ces derniers temps de Mono grâce à MonoTouch, le Framework qui permet de développer en C# des applications pour l’iPhone.  Mais l’hébergement est un domaine où Mono peut faire le différence. Pour ceux qui préfèrent un hébergement sous un OS alternatif, voici un blog qui offre quelques informations sur l‘installation de Mono.Une image avec un serveur virtuel préinstallé est disponible.

De l’autre côté

La fondation Apache fête ses 10 ans. Démarré avec le fameux serveur web, la communauté comporte maintenant 65 projets dont les plus connus comme Tomcat, Strut, Commons ont presque défini le mode de travail autour de l’open source pour les projets Java. Microsoft qui est devenu partenaire en 2008,  a lancé un site d'hébergement pour les projets : CodePlex et depuis peu une fondation Codeplex.org dont on attend encore les détails de fonctionnement mais qui à l’ instar de Eclipse ou Apache sera un lieu d’incubation et de développement pour des projets Open Source de la plate-forme .NET.

Un projet

Aujourd’hui pas de code, car ce projet n’existe pas encore ou du moins il est encore en phase de démarrage : Noda. Né de l’idée de John Skeet, employé de Google et ancien MVP C#, cette librairie sera un portage de la librairie Joda. L’objet ? Fournir une utilisation facile, performante et extensible des concepts de temps et date. Cela va de fournir des chronologies (ISO, Julian, Islamic) aux concepts comme les instants, les durées, les intervalles de temps et les calculs qu’on peut effectuer dessus.

Wednesday, November 11, 2009 3:40:00 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0] -
.net
# Friday, November 06, 2009

Nous organisons un atelier sur le TDD, Test-Driven Developement,  le vendredi 27 novembre. Cette journée attache beaucoup d’importance aux exercices et aux outils que vous utiliserez dans la vie de tous les jours pour pratiquer un développement agile.

Voici un extrait de la description – consulter le lien ci-dessous pour plus de détails sur l’agenda.

Dans la première partie de ce cours, nous répondrons à la question "Qu'est-ce le  TDD ?" mais aussi le "pourquoi, dans quel but et à quel coût ?"
La deuxième phase est plus axée sur la mise en pratique avec les outils et frameworks orientés « xUnit » autour de cas pratiques. On verra également dans cette partie l'utilisation des « stubs » et « mocks » ainsi que les différences entre les différents types de faux objets qui permettent l’isolation des tests.
Pour terminer, on explorera les meilleures pratiques du TDD, les  pièges à éviter. On jettera également un regard sur les méthodes périphériques comme le « Behavior-Driven Development » et l'íntégration continue.

Inscription : http://nventive.eventbrite.com/
Contact : info@nventive.net

Friday, November 06, 2009 3:20:00 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0] -
.net | Agile - Development
# Monday, October 26, 2009

Les tweets de la semaine

http://twitter.com/PauloMorgado/statuses/5345415268: Pouvoir démarrer un serveur Cassini (le serveur utilisé par Visual Studio) à partir de n’importe quel répertoire, la solution pour ASP.NET 3.5 /4.

http://twitter.com/sensenet une alternative open source à Sharepoint

http://twitter.com/rogerjenn/statuses/5340211244 .NET Services va connaître une mise à jour majeure le 5 novembre, deux semaines avant l’annonce officielle de l’offre commerciale.

La question Stackoverflow

http://stackoverflow.com/questions/885955/whats-the-compelling-reason-to-upgrade-to-visual-studio-2010-from-vs2008

Pour continuer sur la sortie la semaine dernière de Visual Studio 2010 beta 2, voici une liste de fonctionnalités et améliorations pour vous déculpabiliser d'avoir installer une version beta sur votre poste de développeur (alors que votre patron vous l’a expressément interdit bien sûr).

Actualités Microsoft

Où est passé Dublin ? Le serveur d’application présenté pendant la PDC 2008 n’a pas fait beaucoup parler de lui depuis. Un planning a été annoncé : beta 1 fermée en fin d’année et RTM au printemps 2010 mais à part les présentations colorées on en a pas vu beaucoup plus sur l’assemblage de WCF et WF autour de IIS. En attendant on devra se contenter de retours sur certaines présentations. Le PDC répondra peut-être à certaines interrogations, mais WF4 et WCF4 sont déjà deux Frameworks pouvant nous occuper jusqu’au printemps…

Actualités Alt.NET

Si vous n’avez pas la chance d’habiter dans une ville dotée d’un groupe Alt.NET, vous pouvez assister aux réunions virtuelles : virtual ALT.NET (la section “recording” contient des archives). Par exemple, l’épisode “Separated Presentation” avec Jeremy Miller présente les différents patterns de présentation.

De l’autre côté

Amazon a ajouté un nouveau membre à la famille déjà bien nombreuse de ses services "cloud": RDS pour "Relationnal Databse Service”. Basé sur MySql ce service offre un stockage relationnel avec sauvegarde programmable. Azure SQL n’est donc plus seul face aux offres non relationnelles comme les très à la mode système “clé–valeur” qu’offre aussi Amazon (SimpleDB), Microsoft (Azure), Google (GAE et Big Table). Les détails de cette annonce en suivant ce lien. On trouvera une comparaison des offres d’Amazon et de Microsoft ici.

Un projet

PSake est un système pour construire (compiler, packager, déployer) des projets .NET. Le monde .NET n’a pas encore son Maven qui repose sur le principe “convention over configuration”. Il y a Nant, MSBuild mais aucun outil ne nous libère de la dure tâche d’écrire des scripts. PSake ne fait pas exception mais essaie de simplifier le travail. Basé sur Powershell, il expose le concept de tâche avec dépendances.

On commence par déclarer une liste de propriétés :

properties {
  $currentdir= resolve-path .
  $basedir= resolve-path .\..\..\
  $releasedir= 'C:\Release\'
  $releasewebsitedir = $releasedir+"_PublishedWebsites\Projet.Web.Web\"
  $solutionfile= "$basedir\Projet.Web\Projet.Web.Web.csproj"
  $configuration= 'staging'
}

Puis on définit une tâche par défaut :

task default -depends tacheDependante

Et on peut appeler ensuite des outils externes comme msbuild de façon simplifiée :

task Compile -depends Init { 
  exec msbuild "/p:OutDir=""$releasedir "" $sln_file"
} 

Le support pour des serveurs d’intégration continue (Cruise Control .NET, Team City, TFS ) fait encore défaut mais pour des projets de complexité moyenne, PSake est simple et rapide à mettre en place (et puis cela permet de se familiariser avec Powershell, ce qu’en tant que développeur on a toujours voulu faire sans jamais avoir eu le temps).

Monday, October 26, 2009 3:11:49 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0] -
.net
# Tuesday, October 20, 2009

Voici notre première revue du web sur l’actualité du monde .NET. Elle ne se veut pas exhaustive, nous essayons de mettre en avant des choses intéressantes, peu connues parfois mais toujours pertinentes. L’objectif est d’offrir une vue synthétique des nouvelles du développement sur notre plateforme préférée.

Vous trouverez 7 petites rubriques : les deux premières sont des extraits de sites qu’on ne présente plus maintenant (Twitter et Stackoverflow). Ensuite des actualités du monde Microsoft et de la communauté Alt.NET. Nous mettrons aussi en avant un projet ou une application .NET et jetterons un coup œil ailleurs (Java, Ruby, PHP) . Enfin on retiendra un évènement pour la semaine à venir.

N’hésitez pas à réagir dans la section “commentaires” !

Les tweets de la semaine

http://twitter.com/SharedProphet/statuses/4925873898
Une introduction à la nouvelle invention du père de Linq : Rx, Reactive framework

http://twitter.com/EdgarSanchez/statuses/4905530109 
ServiceStack : un stack alternatif à WCF pour faire de l’appel distant depuis Linux, Windows et une version pour MonoTouch

http://twitter.com/oising/statuses/4867514391
On a tous de belles machines en 64bit et on est tous un peu ennuyés par ce message du débogueur de Visual Studio : "Change to 64-bit applications are not allowed" voici une solution.

La question stackoverflow.com

http://stackoverflow.com/questions/9033/hidden-features-of-c

« hidden features of c# » c'est la question la plus "active". Il y a sans doute des choses que vous connaissez déjà dans cette liste, d'autres dont vous ne vous servirez peut-être jamais mais la parcourir de temps à autre, avec son café du matin, c'est toujours instructif.

Actualités Microsoft

Le site de MSDN a connu un lifting de son interface, ici le portail consacré à C# http://msdn.microsoft.com/en-us/vcsharp/default.aspx et le site de référence de l’API a aussi une nouvelle version légère.

Un site peu connu avec pleins de projets petits ou grands : http://msdn.microsoft.com/en-us/devlabs/dd125421.aspx

Dans un mois c'est la PDC 09 dont les grands moments seront sans doute : le lancement commercial de Azure, .NET Framework 4 et VS 2010.  http://microsoftpdc.com /    

Le support de MS pour jQuery continue encore plus avec la version 6 de la Preview des contrôles ASP.NET Ajax qui s’exposent aussi comme plugins jQuery : http://weblogs.asp.net/scottgu/archive/2009/10/15/announcing-microsoft-ajax-library-preview-6-and-the-microsoft-ajax-minifier.aspx

Actualités Alt.Net

Ce n'est pas de l'actualité chaude mais Karl Seguin (http://codebetter.com/blogs/karlseguin/ ), développeur canadien et membre de la communauté codebetter.com a publié un e-book de près de 80 pages sur les bonnes pratiques de développement : « Foundations of Programming ». Le sommaire est alléchant et une application accompagne le texte : http://codebetter.com/blogs/karlseguin/archive/2009/05/25/revisiting-codebetter-canvas.aspx

Ailleurs

Jetbrains, l'éditeur connu dans le monde .NET pour Resharper (le plugin pour Visual Studio) vient de rendre disponible une version gratuite de son produit phare IntelliJIDEA (un IDE Java) ainsi que le code source de la plateforme. La version dite communauté ne contient pas beaucoup de fonctionnalités au-delà de la programmation JAVA SE mais comme Eclipse un écosystème de plugin va sans doute apparaître.

Avec Eclipse, Netbeans et maintenant IntelliJIDEA, le monde des IDE Java semble plus dynamique que celui de .NET. MonoDevelop et SharpDevelop n'ont pas vu leur adoption croître beaucoup. Et les tentatives infructueuses comme celle de Together .NET de Borland ne sont pas là pour nous rendre optimistes.

On peut juste espérer que Visual Studio 2010 simplifie vraiment l’intégration de plugins.

http://www.jetbrains.com/idea/nextversion/editions_comparison_matrix.html?utm_source=IDEA_BLOG&utm_media=Anouncement&utm_campaign=IDEA9_CE

http://blogs.jetbrains.com/idea/

Un projet

http://www.sparkviewengine.com

Spark View Engine est un moteur de vue pour le Framework ASP.NET MVC (et Castle MonoRail) créé par Louis Dejardin (qui depuis a été embauché par Microsoft) pour un projet interne à son ancien employeur. Il simplifie la construction des pages en évitant les spaghettis de tags que représentent pour certains le moteur de vue par défaut de ASP.NET MVC.

Un des cas les plus courants courants les boucles.

  1: <viewdata Posts="IList[[MyApp.Models.Post]"/>
  2: <for each="var post in Posts">
  3:   <p>${post.Title}</p>
  4: </for>

ou encore plus simple :

  1: <var classes="new [] {'even','odd'}">
  2: <tr each="var user in users" class="${classes[userIndex%2]}">
  3: <td>${userIndex}) ${user.Name}</td>
  4: <td>${user.UserType}</td>
  5: </tr>
  6: </var>

L’intellisense est un peu dur à mettre en place mais avec Fluent HTML du projet  MVC Contrib on arrive à une productivité agréable :

  1: <content name="MainContent">
  2: <viewdata model="IList[[Story]]"/>
  3: !{this.Html.Grid(Model).Columns(column =>
  4: {
  5: column.For(x => x.Id).Named("ID");
  6: column.For(x => x.Title);
  7: column.For(x => x.DateSubmitted).Format("{0:d}");
  8: column.For(x => Html.ActionLink<StoryController>(c => c.Single(x.Ref), "View Details"))
.DoNotEncode();
  9: })}
 10: 
 11: </content>
 12: 
 13: 

Qui a dit « IntelliSense pour XAML ! » ?

ASP.NET MVC devient un des domaines où la communauté est des plus actives.

La semaine prochaine

La conférence Monospace sur 4 jours avec bien sûr la vedette du moment MonoTouch, l’environnement de développement .NET pour l’iPhone : http://monospace.us/

Tuesday, October 20, 2009 8:37:28 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0] -
.net
Search
Archive
<November 2009>
SunMonTueWedThuFriSat
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345
Statistics
Total Posts: 98
This Year: 28
This Month: 3
This Week: 0
Comments: 17
Sign In