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, 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
# 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
Search
Archive
<December 2009>
SunMonTueWedThuFriSat
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789
Statistics
Total Posts: 98
This Year: 28
This Month: 3
This Week: 0
Comments: 17
Sign In