• 2010 : l’année du retour de la vengeance du format slate ?

    Nouvelle rumeur de tablettes chez Apple, nouveau PC slate chez HP, Lenovo, Dell, etc, le format “slate” semble très à la mode en ce moment ! Entre les stars du C.E.S. – oui, je sais ca ne veux rien dire : cela fait plusieurs années que les UMPC/MID sont à l’honneur là bas sans qu’il y ait aucun signe de leur adoption par le grand public – et les rumeurs persistantes, il semblerait que le format “écran tactile seul” soit à la mode.

    image001[1]

    C’est pour moi l’occasion de ressortir mon vieux Tablet PC (un Acer Travelmate je-sais-plus-combien), mon compaq TC1000 (acheté d’occase il y a pas si longtemps que ça) et mon Samsung Q1… Bah oui, ca fait pas loin de 10 ans (j’exagère, ca n’en fait que 8 en fait…) que Microsoft et surtout ses partenaires s’essayent à ce genre de choses, sans trop de succès jusqu’à présent. Apparues bien trop tôt, les TabletPC sont de vraies petites merveilles de technologie, mais … comment dire … souffraient de problèmes rédhibitoires : principalement leur coûts astronomiques et le peu d’application grand public qui leur étaient destinées.  Si le TravelMate (pb hardware) et le TC1000 (manque de puissance) ne me servent plus, le Q1 est encore utilisé plusieurs fois par semaines comme “télécommande domotique géante” avec pas mal de succès, sans compter quelques – trop rares – démonstrations en clientèle plutôt bluffantes pour l’auditoire.

    Oyé oyé, donc, voici revenu le temps des rires et des chants, dans l’île aux enfants des modèles “slate”, et cela est très prometteur : le marché est suffisamment mature (merci l’iPhone) pour voir apparaître des applications passionnantes : je suis assez impatient de voir ce que ces 3 prochaines années nous réservent sur ce front.

  • Erreur “Required project systems are not installed” dans un projet de test

    Si vous utilisez une version internationale de Visual Studio 2008 (je n’ai pas encore eu le problème avec la beta de 2010, alors c’est peut-être corrigé), vous avez peut-être déjà eu quelques soucis de fonctionnalités non disponibles. Pour moi, cet après-midi, c’est tout le système de tests unitaires qui était en rade, suite à une réinstallation. Plus moyen de charger les projets de tests, ni d’en créer de nouveau : rien !

    Quelques conseils si vous rencontrez ce problème :

    Commencez un bon vieux devenv.exe /resetSkipPkgs, à lancer depuis une ligne de commande

    Si ce n’est pas mieux, essayez de faire Tests > Nouveau Test. Si dans cet écran vous voyez un joli “Required project systems are not installed” à la place où vous vous attendiez à voir “Nouveau projet de test en c#”, eh bien vous avez gagné et avez le même problème que moi ! Pas de panique, ca se corrige assez facilement : Dans le menu Outils / Options, cherchez les “paramètres internationaux” et changez la langue utilisée pour correspondre à celle de votre installation de Visual Studio.

    image

  • les joies de l’assistance chez un FAI

    Depuis quelques jours, et pour la seconde fois consécutive en moins d’un mois, une personne de ma famille rencontre des soucis de connexion chez son FAI. Ce matin, pour la troisième fois, j’ai pris contact avec l’assistance de celui-ci (bah, oui, être “l’informaticien” de la famille fait que tous ces problèmes me retombe dessus… je pense que vous savez ce que c’est :p). Le discours a parfois été un peu surréaliste, tenant du dialogue de sourd, en voici quelques morceaux choisis ! (je retire volontairement le nom du FAI et de sa box, mais il est facile à deviner).

    [10-04-2009 11h31] [Début Session Tchat] [Service choisi: Technique]

    [11h46] Assistance: Mme/M. ……, bienvenue sur le Tchat de …, vous êtes actuellement connecté(e) sur le salon Technique.

    Votre adresse email de contact: ……
    Votre numéro de téléphone mobile de contact: …

    Notez que vous pouvez à tout moment modifier vos éléments de contact (mail + mobile) depuis votre interface de gestion, à la rubrique "Mon Abonnement".

    11h46] Moi: bonjour

    [11h48] Assistance: Bonjour

    [11h48] Assistance: Quel est l'objet de votre demande …?

    [11h48] Moi: je suis toujours sans connexion, ce qui commence à être un peu pénible

    [11h49] Moi: …box n°…., qui reste sur le rectangle clignotant de connexion, tests en tout genre réalisés (hard reboot, test croisé, etc), sans succès

    [11h54] Assistance: Est ce que le dysfonctionnement est dû à un orage, coupure de courant..... ?

    [11h55] Moi: non

    [11h56] Assistance: Quels sont les tests et les vérifications que vous avez effectués ?

    [11h56] Moi: alors : hard reboot, vérification de la non présence de condensateurs, tests avec [une autre …box] (edité pour retirer le nom), changement de filtre

    [11h56] Moi: tout sans aucun résultat

    [12h01] Assistance: Sur quelle entrée de la …box (derrière ) est branchée le câble RJ11 venant de la prise téléphonique murale ?

    … la j’ai failli craquer… je lui dit en entrée de jeu que j’ai fait plein de tests et sa première vraie question est : “est-ce que tu as tout bien branché, banane ?”…

    [12h01] Moi: le bon... [du blah blah disant que j’ai passé le stade des compétences minimums]

    [12h03] Moi: nous avons testé avec d'autres cables téléphoniques et un autre filtre pour s'assurer que cela ne venait pas non plus de la

    [12h08] Assistance: Avez vous vérifié toutes les prises téléphoniques si présence de condensateur ?

    … la pareil, un peu dur à supporter, j’ai déjà dit cela y a pas 10 messages…

    [12h09] Assistance: Est ce que la …box est reliée à un rallonge téléphonique ?

    [12h10] Moi: non

    [12h10] Assistance: Avez vous une alarme, un interphone reliées à la ligne téléphonique France Télécom ?

    [12h10] Moi: non

    [12h11] Moi: avant que vous posiez la question : oui elle est branchée directement sur une prise, non il n'y a pas de sources d'ondes (micro ondes, enceintes, ordinateurs) à moins de quelques mètres

    … vous devinez quelle sera sa prochaine question ? gagné ! …

    [12h12] Assistance: Avez vous un halogène, néon, enceinte, ampli, démodulateur, domotique, micro onde...ou toute appareil rémanent autour de la …box ?

    [12h13] Assistance: Avez vous testé avec d'autres connectivité : câble RJ11, filtre et une alimentation ?

    … bon, après tout j’ai juste dit que j’avais essayé avec une autre …box, j’ai pas pensé à préciser “et tous ses cables”, ma faute, pour le filtre, c’est juste que j’aime me répéter, c’est pour ça que j’aime quand on me pose des questions auquelles j’ai déjà répondu…

    [12h14] Moi: oui, comme dit précédemment, avec d'autres cables rjs, d'autres filtres et avec une autre …box entièrement, qui fonctionne parfaitement, c'est à dire avec tous ses cables, alimentations, carte wifi etc (ah oui, à noter que j'ai aussi essayé en retirant la carte wifi de ma …box)

    Enfin, il a fallu une heure complète de dialogue de sourd de ce genre pour qu’il transmette enfin le dossier au service technique pour une vérification de la ligne. Si ca c’est pas du temps perdu, je ne sais pas ce que c’est !

  • Intégrer ClickOnce à une compilation TeamBuild

    Eh bien, pour une journée de réunions, on peut dire que le résultat est plus productif que d’habitude ! Entre deux réunions de gestion de projet, j’ai en effet pu mettre en place une chose qui manquait depuis plusieurs mois à l’un de mes partenaires : une automatisation complète de son processus de Build, allant jusqu’à l’élaboration de la release ClickOnce.

    Voici donc un petit guide, basé sur les “découvertes” de cette journées pour obtenir un déploiement ClickOnce au cours d’un Build automatisé. Ces informations sont plus qu’inspirées par Tim Hibbard, en fait on pourrait presque dire qu’il s’agit d’une version traduite et mise à jour de ses instructions.

    Premier point important, récupérez le MSBuild Extension pack à partir de Codeplex et installez les sur chacun des serveurs/postes que vous utiliserez pour compiler vos projets.

    Une fois ce composant indispensable récupéré, il va falloir modifier le fichier tfsbuild.proj correspondant à votre build :

    • pour ajouter des références aux extensions. Ici deux solutions : soit se conformer aux instructions de Tim Hibbard, et créer un PropertyGroup spécifique à ClickOnce, soit – et c’est cette solution qui sera détaillé ci-après – utiliser la tâche AssemblyInfo et ses dérivés pour gérer à la fois ClickOnce et les versions des assemblies. Il vous faudra donc ajouter deux lignes, dans la partie “imports”
       1: <Import Project="$(MSBuildExtensionsPath)\ExtensionPack\MSBuild.
    ExtensionPack.tasks"
    />
       2: <Import Project="$(MSBuildExtensionsPath)\ExtensionPack\MSBuild.
    ExtensionPack.VersionNumber.targets"
    />
    • Puis définir le property group nécessaire à mettre à jours les versions des assemblies (et de click once)
       1: <!-- Properties for controlling the Assembly Version -->
       2: <PropertyGroup>
       3:   <AssemblyMajorVersion>9</AssemblyMajorVersion>
       4:   <AssemblyMinorVersion>0</AssemblyMinorVersion>
       5:   <AssemblyBuildNumber>0</AssemblyBuildNumber>
       6:   <AssemblyRevision>1</AssemblyRevision>
       7: </PropertyGroup>
       8:  
       9: <!-- Properties for controlling the Assembly File Version -->
      10: <PropertyGroup>
      11:   <AssemblyFileMajorVersion>9</AssemblyFileMajorVersion>
      12:   <AssemblyFileMinorVersion>0</AssemblyFileMinorVersion>
      13:   <AssemblyFileBuildNumber>0</AssemblyFileBuildNumber>
      14:   <AssemblyFileRevision>1</AssemblyFileRevision>
      15: </PropertyGroup>
    • Nous allons ensuite un peu ruser pour mettre à jour le FileRevision, en effet, le partenaire en question utilise un schéma de numéros du type “année”.”release”.”itération interne”.”version de compilation” depuis un certain temps (par exemple 9.0.3.228 signifie “version 2009, release 1, itération N°3 du 28/02). Il a donc fallu contourner les limitations de la tâche AssemblyInfo :
       1: <Target Name="VersionPublish">
       2:   <MSBuild.ExtensionPack.Framework.DateAndTime TaskAction="Get" 
       3:                                                Format="MMdd">
       4:     <Output TaskParameter="Result" 
       5:           PropertyName="AssemblyFileRevision" />
       6:   </MSBuild.ExtensionPack.Framework.DateAndTime>
       7: </Target>
       8:  
       9: <Target Name="BeforeCompile" DependsOnTargets="VersionPublish">
      10:   <Message Text="FileVersion générée par le VersionNumber.Targets 
      11:            $(AssemblyFileMajorVersion).$(AssemblyFileMinorVersion).
      12:            $(AssemblyFileBuildNumber).$(AssemblyFileRevision)" />
      13: </Target>

    Comme vous devez vous en douter, le deuxième noeud ne sert qu’à tracer dans le fichier de génération le numéro généré… c’est assez pratique pour débugger, donc autant le mettre :)

    • reste ensuite à dire à TeamBuild de publier une version de l’application :
       1: <Target Name="AfterCompile">
       2:   <MSBuild Projects="$(SolutionRoot)\project.csproj"
       3:   Properties="PublishDir=$(OutDir)publish\;InstallFrom=Web;
       4:     UpdateRequired=true;InstallUrl=...;
       5:     MinimumRequiredVersion=$(AssemblyFileMajorVersion)
       6:     .$(AssemblyFileMinorVersion)
       7:     .$(AssemblyFileBuildNumber).$(AssemblyFileRevision);
       8:     ApplicationVersion=$(AssemblyFileMajorVersion)
       9:     .$(AssemblyFileMinorVersion).
      10:     $(AssemblyFileBuildNumber).$(AssemblyFileRevision)"
      11:   Targets="Publish" />
      12: </Target>

    Si vous avez besoin de modifier des options de publication, le plus simple est probablement d’ouvrir votre fichier .csproj dans un notepad et de regarder le nom des différents paramètres, en tout cas, c’est comme cela que j’ai trouvé les “MinimumRequiredVersion” ou autre “InstallUrl”.

    Voila, avec ces quelques lignes en plus, vous aurez un très joli dossier publish/ dans le dossier de sortie de votre définition de build. Il existe peut-être une solution plus pratique que le “<MSBuild… Targets=’publish’ />”, mais c’est ce que j’ai trouvé de plus pratique et de plus facile à mettre en place pour le moment…

  • snifff, IE 8 ne permet plus un bug que j’aimais bien…

    Si vous venez sur ce site avec un navigateur comme Chrome, Firefox ou autre, vous ne saurez pas de quoi je parle, mais une des différences d’affichage entre IE7 et le reste du monde était sa “capacité” à tronquer un texte en exploitant un bug CSS… IE8 semble avoir corrigé ce bug, il ne me reste donc plus qu’a chercher si on peut faire la même chose en CSS valide…

    Le rendu sous IE7 :

    sousie7

    Sous IE8 :

    sousie8

  • Microsoft Expression Web SuperPreview for Internet Explorer

    Ehhhh bah, si ca c’est pas du nom made in Microsoft, je ne vois pas ce que c’est ! il manque un petit “R2 with service pack 1” pour compléter le titre du nom d’application le plus long de l’histoire !

    Microsoft Expression Web SuperPreview for Internet Explorer R2 with Service Pack 2 Release Candidate 1, ca en jetterai un max !! d’autant plus que ca donne une super abréviation : MEWSPIER2SP2RC1 !

    Tout ça pour dire que vous devriez lire le post de Long Zheng, sur le futur ajout à Expression Web (à ce propos, il trouve ce nom particulièrement bon aussi !).

  • Jeudi… on doit être jeudi…

    D’aucuns abhorrent le lundi, mais moi c’est surtout le jeudi que j’ai du mal à supporter… Et encore une fois, aujourd'hui, ce jour maudit m’a donné des raisons de le haïr :)

    Un petit résumé de la situation, histoire de vous faire rire un peu… Nous possédons 3 serveurs que l’on pourraient qualifier de serveurs d’infrastructure : black, blue et orange. Le premier (black) est notre serveur ActiveDirectory principal, serveur DHCP et DNS; il s’agit d’une  machine assez ancienne, qui ne fait donc pas grand chose… Blue, en plus de son rôle de serveur “secondaire” AD fait aussi office de serveur de fichiers. Enfin, orange est notre serveur Exchange. Imaginez maintenant que, suite à une coupure électrique et à un problème d’onduleur, black fasse un drôle de bruit et blue n’en fasse absolument plus (alimentation grillée)…. Vous avez compris, nous sommes bel et bien jeudi ! :)

    Tout cela pour dire que, si vous avez besoin un jour de transférer en urgence la responsabilité d’ActiveDirectory à partir d’un serveur qui n’est plus en ligne, vous aurez besoin des articles de base de connaissance suivants :
    - 216498 : Comment faire pour supprimer des données dans Active Directory après l'échec d'une rétrogradation de contrôleur de domaine
    - 255504 : Utilisation de Ntdsutil.exe pour prendre ou transférer des rôles FSMO vers un contrôleur de domaine
    - 324801 : Comment faire pour afficher et transférer des rôles FSMO dans Windows Server 2003

    Vous aurez certainement aussi besoin de l’outil DCDIAG.exe et peut être de nltest.exe…

    Bonne chance :)

  • Pourquoi continuer à conserver l’edit and continue dans Visual Studio ?

    Je me demande vraiment si quelqu’un arrive encore à se servir de l’edit&continue dans VS, et si cela vaut donc encore la peine de le conserver… Voici quelques exemples de cas où il est impossible de s’en servir :

    • le code est compilé en 64bits (en anyCPU si vous êtes sur une machine 64bits)
    • le code est “optimisé” (elle me fait toujours rire celle-la…)
    • vous avez changé une classe d’un projet dépendant depuis une autre instance de VS ou notepad ou autre
    • la solution contient un projet Silverlight
    • vous venez de modifier une méthode intégrant une expression lambda ou une méthode anonyme (de plus en plus fréquent, surtout si vous faites du WPF et avez donc beaucoup de traitements asynchrones)
    • la Lune est en conjonction avec Saturne (ouais, non, pas celle là en fait…)

    Grosso modo, neuf fois sur dix, quand on veux modifier une méthode ça coince, la question est donc posée : à quoi cela sert-il ?

  Next >