Tester un controle Calendar avec NUnitAsp.

26 juin 2005 par Alexis KARTMANN

NunitAsp est un outil fabuleux pour le test unitaire de site réalisé en ASP.Net

Surtout qu’avec l’utilisation d’un parser sgml il n’est plus nécessaire d’avoir un code XHTML pour l’utiliser.

Je m’en sert depuis une semaine de manière intensive et j’ai pu tout tester dans mon site grâce au testeurs de contrôle de base.

Tout, sauf le contrôle calendrier (Calendar) qui n’est pas géré en standard. Qu’à cela ne tienne, je regarde un peu le code généré, et il est assez facile de déterminer que le choix d’une date se fait par un post-back du type __doPostBack('identifiant du contrôle','identifiant du jour').

L’identifiant du jour me semble incrémental, mais sa valeur n’est pas triviale. Alors je lance Reflector et je regarde un peu le code de génération du contrôle calendrier. J’y voie que l’identifiant du jour est en fait le nombre de jour écoulé depuis le premier janvier 2000.

A partir de là, l’écriture d’un contrôle de test est assez facile :

CSharp [Show Plain Code]:
  1. using System;
  2.  
  3. using NUnit.Extensions.Asp;
  4.  
  5. using NUnit.Extensions.Asp.AspTester;
  6.  
  7.  
  8.  
  9. namespace NUnit.Extensions.Asp.MyTesters
  10.  
  11. {
  12.  
  13.         ///
  14.  
  15.         /// Test for for Calendar control.
  16.  
  17.         ///
  18.  
  19.         public class CalendarTester  : AspControlTester
  20.  
  21.         {
  22.  
  23.                 static private DateTime baseDate;
  24.  
  25.  
  26.  
  27.                 static CalendarTester()
  28.  
  29.                 {
  30.  
  31.                         baseDate = new DateTime(2000, 1, 1);
  32.  
  33.                 }
  34.  
  35.  
  36.  
  37.                 public CalendarTester(string aspId, Tester container) : base(aspId, container)
  38.  
  39.                 {
  40.  
  41.                 }
  42.  
  43.  
  44.  
  45.                 public void SelectDate(DateTime date)
  46.  
  47.                 {
  48.  
  49.                         TimeSpan daysSpan = date.Subtract(CalendarTester.baseDate);
  50.  
  51.                         int datecode = daysSpan.Days;
  52.  
  53.  
  54.  
  55.                         string tag =
  56.  
  57.                                            string.Format("javascript:__doPostBack(’{0}’,'{1}’)",
  58.  
  59.                                                   this.AspId, datecode);
  60.  
  61.                         PostBack(tag)
  62.  
  63.                 }
  64.  
  65.         }
  66.  
  67. }

Evidement ce code est limité, il ne permet pas de simuler la navigation d’un mois à l’autre, ni de vérifier que le jour choisi est bien affiché dans le calendrier, notamment si on surcharge l’événement DayRender du contrôle Calendar. Et il ne fonctionne qu’avec une sélection d’un jour unique.

Mais c’est un début, et cela devrait suffire dans la plupart des cas.


Compte rendu SQLDays 2005 Paris

10 juin 2005 par Alexis KARTMANN

Les SQLDays de Microsoft, c’est comme les DevDays, mais uniquement consacré à SQL Server 2005.

Les présentations étaient denses. C’est dire si SQL Server 2005 est devenue une plateforme à part entière, et pas seulement un SGBDR. En effet SQL Server 2005 inclut maintenant un ETL (extract, transform and load), un outil de génération de rapport, un outil d’analyse multidimensionnel, ainsi que de fonctions avancées de SGBD comme la réplication. Ces outils étaient déjà présents dans SQL Server 2000, mais les versions 2005 sont bien plus complets. Comme à son habitude Microsoft intègre dans ses produits les fonctions qui étaient fournis par ses partenaires. Cette fois les “gagnants” sont BO, Cognos, SAS, Hyperion, etc.

Oracle est aussi clairement en ligne de mire, avec des améliorations très nette dans les fonctions d’exploitation. Presque tout peut se faire en ligne, sans coupure de service. La réplication est amélioré, et une fonction de base miroir offre une alternative économique au cluster (elle semble comparable à celle de MySQL). De même les fonction de partitionnement des données facilite la gestion de tables contenant beaucoup de données.

Mais si les fonctions d’exploitation sont au niveau, les fonctions de développements ne sont pas encore équivalents à ce que propose Oracle.

Bien sur on a enfin un support XML digne de ce nom, ainsi qu’une recherche fulltext améliorée. Mais ce que j’en ai vu est encore loin de ce que propose Oracle depuis 9i (surtout avec le mélange de ces deux fonctions).

L’intégration du framework .Net ouvre d’immenses perspectives, mais Oracle offre le support de Java depuis longtemps. Et surtout le modèle objet-relationnel n’est toujours pas supporté par SQL Server 2005.

Ne parlons même pas des données spatiale (ou géographique), supportée par Oracle, MySQL, PostgresSQL, et toujours pas par SQL Server 2005.

Bref SQL Server 2005 est largement meilleurs de SQL Server 2000, mais certaines fonctions manquent encore. Microsoft a préféré concurrencer ses partenaires plutôt que ses concurrents en investissant plus sur des fonctions complémentaires des bases de données plutôt que sur des fonctions de base. D’un autre côté ces fonctions sont-elles vraiment utilisées dans les bases concurrentes ? J’aurai tendance à dire qu’en fait il ne manque pas vraiment de fonctions à SQL Server 2005, à l’exception de quelques applications de niche. Mais ce n’est pas ce que Microsoft vise.

En tout cas beaucoup de vraies limitations de SQL Server sont levées avec cette nouvelle version, notamment pour l’exploitation, ce qui devrait motiver beaucoup de client à migrer. Reste une politique de prix à la hausse, justifiée par Microsoft par l’augmentation de la couverture fonctionnelle, bien sûr !


Et encore des conférences Microsoft

20 mai 2005 par Alexis KARTMANN

Tout d’abord les rencontres WinForms à Paris le 13 juin.

Et aussi les SQL days 2005 à Paris le 9 juin.

Bien sur j’y serais !


VS 2005 : La revanche des C++iens

12 mai 2005 par Alexis KARTMANN

Je viens d’assister à la rencontre C++ organisé par Microsoft. Pour une fois tous les intervenants venaient de Microsoft (dont les fameux Eric Mittelette et Eric Vernié), voire même de Redmond (ce qui nous a valu quelques gags lors de la traduction simultanée improvisée).

Je ne vais pas faire un compte rendu détaillé, d’autant que la plupart des démos sont disponibles ici.

Je note avec plaisir que Microsoft a décidé avec Visual Studio 2005 de réinvestir sur Visual C++ qui en sera à sa version 8.0, selon deux axes :

  • Visual C++ 8.0 reste le langage de choix pour le code natif Win32 et supporte mieux la norme C++ 98 (98 % de la norme).
  • Visual C++ 8.0 devient un langage managé crédible, avec une syntaxe plus lisible que dans les version 7.0 et 7.1 (VS 2002 et 2003), et le langage de choix pour le mélange de code managé et natif.

Parmi les améliorations intéressantes, j’ai surtout retenu :

  • Une amélioration de la protection contre les débordement de tampon par rapport à VS2003 et l’ajout d’une CRT sécurisé.
  • L’optimisation globale fonctionne aussi pour le code managé (voir la démo).
  • Une optimisation après instrumentation du code apparaît (adieu le compilateur et le profiler Intel).
  • Le support de Open MP pour l’écriture d’applications multithread (hyperthreading et multi-coeur oblige). On en parle ici.
  • Une analyse statique du code lors de la compilation pour détecter les erreurs fréquentes. Le retour de lint !
  • Une navigation facile dans les classes et les dépendances sans devoir compiler le source.
  • Une proposition d’extension du C++ (C++/CLI) normalisé pour rendre C++ compatible avec certaines constructions propre à la CLI .Net.
  • Le support 64 bits, que ce soit x86-64 ou I64, que ce soit en natif ou en managé avec .Net 2.0.

Alors pourquoi ce revirement stratégique ?

Cette réunion était visiblement critique pour Microsoft. Le fait de faire venir 4 ou 5 program manager de Redmond alors que VS 2005 est en phase de beta n’est pas innocent. Cela montre (ou veut montrer) que C++ est stratégique pour Microsoft.

En effet tous les éditeurs de logiciel sous Windows utilisaient C++ en majorité. Ceux qui ont une base de code importante et des contraintes de migration sont restés sous VC++6. Surtout que la syntaxe de C++.Net n’a pas incité à migrer sous VS2002/2003 dont le seul apport était l’ouverture à .Net (et une STL un peu mieux faite).

A la différence de Visual Basic que Microsoft a pu tué pour forcer à la migration vers VB.Net (au grand dam des VBistes qui ont demandé sans succès le support du VB “classique” dans VS.Net), d’autre compilateur supporte C++. Si Microsoft avait abandonné le C++ “natif” pour pousser à la migration vers C++.Net, surtout dans sa syntaxe à base de __, le risque aurait été grand de voir ses clients migrer vers d’autre compilateurs (commerciaux ou open-source).

Bref la concurrence a du bon !


Encore des conférences Microsoft ?

11 mai 2005 par Alexis KARTMANN

Le 8 juin aura lieu à Paris la Microsoft Mobile & Embedded Developer Conference.

Le sujet est à la fois Windows Mobile et Windows Embedded. C’est gratuit. J’y serais !

A propos de conférence Microsoft, jeudi 12 mai j’assiste à la rencontre C++ organisé par Microsoft. Encore un billet polémique en perspective ? A suivre en tout cas.


Conférence Microsoft : "Evaluez les performances de vos applications".

15 avril 2005 par Alexis KARTMANN

Je viens d’assister à une conférence, encore réalisé par un partenaire de Microsoft, en l’occurrence OCTO Technology. J’ai l’impression que ces briefs techniques sont surtout des occasions que Microsoft donne à ces partenaires de se faire connaître.

D’ailleurs la présentation d’Eric Groise et Messaoud Oubechou n’était pas spécifique à la plateforme .Net, notamment en ce qui concerne les principes. Mais ce n’est pas étonnant, OCTO se disant agnostique quand aux technologies. Voila un terme qui m’a plut !

C’était d’ailleurs la partie consacrée à la méthode et à l’architecture qui m’a le plus intéressé, l’inventaire des outils et les méthodes de test et de stress m’a semblé plus classique pour qui s’intéresse à l’optimisation sous .Net. A l’exception de MBUnit qui semble une version plus évoluée de NUnit que je vais m’empresser de regarder !

Ce qui m’a frappé dans la méthode (orienté performance de l’application, je le rappelle), c’est qu’elle fait la part belle aux itérations successives. Eric Groise a souvent cité eXtreme Programming. C’est rare d’entendre ça chez un consultant en architecture. C’est encore plus rare d’entendre dire qu’on ne peut pas créer l’architecture parfaite au début du projet, et qu’on doit la construire de manière itérative durant l’avancement du projet ! Même remarque sur la critique de modèle en n-tiers, traite d’inutilement lourd, avec la préconisation de câbler directement l’IHM sur l’accès aux donnés quand on a des problèmes de performances.

En fait j’ai vraiment eu l’impression que la méthode préconisée consistait en une méthode agile comme eXtreme Programming, en intégrant les contraintes de performance dans les scénarios utilisateurs. Ce que beaucoup d’équipes XP sérieuses font. Surtout s’il y a un SLA à respecter.

Bref ça fait plaisir de voir qu’une méthode qu’on défend depuis 3 ans est mise en avant, même si j’ai plutôt l’impression qu’OCTO cherche à proposer un équilibre entre XP et des méthodes plus formelles. Un peu comme MSF v4 ?


Microsoft et la génération perdue

14 avril 2005 par Alexis KARTMANN

Depuis quelque temps je me demande pourquoi je continue à défendre Microsoft alors que ce n’est plus vraiment à la mode. Enfin pas toujours, ce qui me fait aussi passer pour un anti Microsoft primaire.

En fait j’ai un vieil attachement envers Microsoft qui date de mon enfance, de mon adolescence, de mes études et du début de ma vie professionnelle.

Je fais partie d’une génération qui est née avant l’invention de l’ordinateur personnel. Je pense que j’ai décidé de devenir informaticien quand j’ai appris à développer en Basic Microsoft. A l’époque il y avait beaucoup de différentes machines, mais le Basic, popularisé par Microsoft était un peu le seul langage commun. Alors on pouvait s’échanger des programmes dans les clubs d’informatique, et ça, c’était cool.Mais j’ai aussi une certaine tendresse envers Apple à cause de mon Apple II.

Ensuite dans mon école nous avions bien sur de l’Unix (SunOs), des Mac (mais seulement pour la bureautique), et des PC sous DOS. Et j’ai commencé à gagner de l’argent en faisant des projets sous DOC pour la junior entreprise. A l’époque Linux n’était qu’une vague idée dans le cerveau de Linus Torvald. Et évidement utiliser un PC et DOS c’était cool parce que nos profs n’y comprenaient rien !

Quand j’ai commencé à travailler, dans l’industrie, j’ai découvert les mainframes et le COBOL. Je ne suis battu pour défendre un projet de développement sous Windows 3.1 parce que tous les “vieux informaticiens” ne parlait que de ligne de commande et ne voyait pas l’intérêt de l’interface graphique pour les applications d’entreprise (”c’est bon pour la bureautique, et encore…”). Alors bien sûr j’ai appris à défendre Microsoft à l’époque. Et à l’époque c’était cool.

Évidement il y avait le Mac, mais l’avantage du PC c’était, en plus de prix bien plus bas, la possibilité de monter sa propre machine. Et la configuration du système (autoexec.bat, config.sys et autre) permettait de mélanger le côté facile de l’interface graphique et le côté ésotérique de la ligne de commande.

Du coup à la première occasion j’ai rejoint un éditeur de logiciel sous Windows. Et à l’époque nous étions comme des missionnaires, apportant la souris et l’interface graphique à de pauvres habitué de la ligne de commande. Je me souviens d’une formation à notre produit où il a fallut expliquer à un des élève, développeur Cobol expérimenté, comment fonctionnait une souris.

Et un jour Internet est arrivé. Du coup Microsoft n’était plus aussi cool. Et Linux est devenu crédible. Et Microsoft a tué Netscape. Et n’était plus du tout cool.

Aujourd’hui la jeune génération de développeurs trouve que Linux est cool. Or pour une partie de ma génération, Linux n’est qu’un clone d’Unix, qui était la bête à abattre. A tel point que la génération qui a précédé la mienne retrouve ces marques avec Linux. Un ancien collègue plus âgé que moi me disait qu’il est très content du succès de Linux car il pouvait frimer auprès de son fils grâce à sa maîtrise du shell.

Alors, quelquefois, je me demande si je ne fais pas partie d’une génération perdue, coincé entre vieux Unixiens et jeunes Linuxiens…

Alors pour s’en sortir, on se met à faire de l’open source, du web avec Linux, Apache, MySQL, PHP. Et hop, on est redevenu cool.

Mais quand même, malgré tout, C#, ASP.Net, je ne peux pas m’empêcher de trouver ça cool !


Microsoft, l’innovation et les brevets.

14 avril 2005 par Alexis KARTMANN

Encore un jugement contraire à Microsoft dans une affaire de brevet. Évidement c’est du pain béni pour les opposants aux brevets (dont le fameux président de Mozilla Europe).

Évidement on pourrait faire le parallèle avec l’affaire Eolas et le brevet sur le pluggin des navigateurs. Dans ce cas particulier ce serait un peu simple.

En effet le plaignant aurait discuté avec Microsoft à propos d’une de leur technologie et après une période de silence radio Microsoft annonce une technologie semblable à celle couverte par le brevet. Si c’est vrai, on est quand même très loin d’un petit malin voulant faire de l’argent après avoir déposé un brevet sur quelque chose qui existe déjà, comme dans le cas d’Eolas, ou de certains fameux brevets de Microsoft dont le double clic.

Et on touche là le noeud du débat autour des brevets logiciels. S’il est vrai que certains brevets sont totalement abusifs, d’autre permettent quand même de protéger des petites sociétés de certaines pratiques douteuses de grosses sociétés. Mais pour une petite société floué par Microsoft (ou un autre) qui serait défendu par un brevet, combien seront tués par un procès en violation d’un brevet totalement abusif ?

Bien sûr Bill Gates a expliqué que les brevets peuvent tuer l’innovation, du moins celle venant des start-ups. Au passage cela veux dire que l’innovation selon lui consiste à copier ou adapter les idées des autres. Ce n’est pas faux, puisque finalement l’innovation vient souvent de la combinaison de plusieurs concepts existants, ou de l’adaptation d’un concept à un contexte différent. Mais c’est bien pour cela, que maintenant qu’il en a les moyens, Microsoft dépose tous les brevets possibles, pour avoir un moyen d’échange avec les autres géants, dont IBM qui en passant dépose largement plus de brevets que Microsoft (mais pas que dans le logiciel).

Alors les brevets, blocage ou protection ? Et une menace pour l’open-source ?

C’est vrai qu’il y a une thèse la dessus, selon laquelle Microsoft préparerait une offensive contre l’open source, et notamment Linux, grâce aux brevets. C’est loin d’être sûr, en général je me mefie des thèses de complot. De toutes façons, vu qu’IBM soutient Linux, il n’est pas impossible que son portefeuille de brevets lui permette de protéger Linux… Pour les autres projets open source, c’est loin d’être évident.

Bref on n’a pas fini de parler de brevets logiciels !


Conférence "La programmation avancée des formulaires ASP.NET" par Rédo

11 avril 2005 par Alexis KARTMANN

J’ai assisté aujourd’hui à la conférence de Rédo sur la programmation avancée ASP.Net.

J’avais déjà rencontré Rédo lors de la conférence sur l’open source, mais là c’était vraiment une claque !

Rédo est vraiment étonnant, on pourrait croire qu’il raisonne à l’envers, mais le résultat est là. En fait il a une approche partant des couches bases et remontant vers l’architecture. Ainsi l’approche qu’il propose n’est rien moins que de développer son propre AGL en utilisant les classes de base du .Net framework, et notamment la reflexion, comme expliqué ici.

Au final Rédo arrive à écrire un moteur dont le principe s’approche d’un DataGrid (dont la structure est généré à partir d’un DataSet), mais généralisé à toute les éléments d’un formulaire.

La conférence s’acheve par la démo bluffante d’un produit que Wygwam va bientôt sortir. Là aussi une approche originale, puisque contrairement à beaucoup d’éditeurs qui se mette à faire du service pour vendre des licenses, Rédo commence par faire du service et construit un logiciel pour réduire ses temps de développement.

Chapeau l’artiste !


Test Certification MCP en français

8 avril 2005 par Alexis KARTMANN

Un nouveau site en français, CertifDotNet propose des évalutions en ligne gratuites sur les technologies DotNet.

J’ai passé deux tests, et les questions sont proches de celles que l’on a lors d’un passage de certification MCP, mais avec une méthode de notation différente, puisqu’elle intègre le temps de réponse. L’inconvénient c’est que ce n’est pas idéal pour se préparer à une certification, mais cela permet au site de proposer un classement des meilleurs réponse aux tests.

Enfin j’aurais eu le plaisir d’avoir le meilleur score pendant quelques temps…



Propulsé par WordPress