Dot.Blog

C#, XAML, Xamarin, UWP/Android/iOS

.NET s'offre un nouveau logo !

Depuis "l'initiative .NET" en 2000 et la première version en 2001, .NET a bien grandi ! en sept année d'existence beaucoup de choses sont apparues et nous sommes passés d'un framework Windows bien sympathique à une gigantesque plateforme intégrant  des merveilles comme WPF, Silverlight , LINQ, WF, WCF et j'en passe...

L'ancien logo de .NET vous connaissez c'est celui là :

Personnellement je n'ai jamais aimé. Un truc qui faisait trop "XP", trop vieux, enfin je ne ressentais pas dans ce logo la modernité qui émanait de .NET.

Ca a pris le temps (sept ans et demi !) mais Microsoft s'en bien rendu compte de ce décalage et ils viennent d'offrir à .NET un nouveau logo tout beau tout neuf. Il faut le temps de s'y habituer, j'avoue ne pas encore très bien savoir si je l'aime ou pas... Mais en tout cas il est plus "moderne", c'est déjà ça, et puis Bill Gates a oublié de m'appeler pour me demander mon avis donc faudra que je fasse avec (Bill ? t'as perdu mon numéro de portable ? laisse un message ici, fais moi un signe ! :-) ).

Donc le voici le voilà, dans toute sa splendeur :

Si vous ne voulez pas passer pour un ringard, va falloir mettre à jour vos sites Web, vos blogs, vos CV, et tous les documents sur lesquels vous avez collé l'ancien logo ! (je me mets ça comme un reminder car il va falloir que je prenne le temps de le faire sur mes propres sites et documents!).

C'est pas une nouvelle fracassante, mais c'est du tout frais.. Alors... Stay Tuned !

Astuce : recenser rapidement l'utilisation d'une classe dans une grosse solution

Comment recenser toutes les utilisations d'une classe précise dans une grosse solution pleine de projets ?

Certains proposeront d'utiliser la fonction "find usage" de Resharper. Certes mais tout le monde n'a pas cet add-in. Et même si vous l'avez, vous n'êtes pas sûr que là où vous aurez à intervenir il sera toujours là...

D'autres proposeront le Ctrl-F. C'est pas mal mais ça trouvera aussi les bouts de texte qui citent la classe ou qui contiennent le nom de cette dernière. Les plus torturés proposeront alors d'utiliser une expression régulière. Techniquement c'est mieux mais concevoir une belle ER qui fasse bien le boulot, tout le monde ne sait pas forcément faire.

Non, moi je vous parle d'un moyen ultra simple et absolument sûr de trouver toutes les utilisations d'une classe dans des tas projets en quelques secondes sans trop se fatiguer.

... Vous séchez ? Alors voici la réponse : l'attribut Obsolete.

C'est tout bête, c'est une utilisation un peu détournée de la chose il faut l'avouer, mais il suffit d'ajouter devant la définition de la classe en question l'attribut
[Obsolete("blabla")]
public class TheClassARepérer ...
 
et l'affaire est jouée. Faites un Rebuild de la solution et dans les warnings vous aurez la liste de tous les endroits où la classe est utilisée. Un double-clic vous amènera directement dans le code en question.

Quand l'opération est terminée, il suffit de supprimer l'attribut. La manip est ultra légère, peu de chance d'introduire un bug, et si on onblit l'attribut ça se verra tout de suite dans les warnings.

Malin non ?

Alors Stay Tuned !

Back to school ! (éduquez vos enfants avec Small Basic)

Ahh le Microsoft Basic Interprété de ma jeunesse ... La première version de Hippocrate, série de logiciels pour cabinets médicaux que j'ai écrite durant une quinzaine d'années, a été écrite avec un MS Basic interprété sous CP/M sur une machine Kaypro II (dont je fus le premier importateur en France). Que de souvenirs !

Il faudra attendre un peu plus tard sur des Kaypro 16 doté d'un disque dur de 10 Mo (équivalent à l'époque du PC XT qui venait de sortir) pour utiliser un S-Basic compilé (un Basic scientifique compilé, la classe absolue !)...

Bref tout à commencé par Basic pour la majorité d'entre nous qui sommes de la génération des premiers PC. Les plus jeunes n'ont pas eu cette joie, c'est ça le progrès :-)

Je vous parlerai bien aussi de ma première place près du MIN de Rungis à programmer en DACL (sorte de HLA) sous Xerox 510 qui ressemblait à l'IBM 5120 puis sur des Xerox 820 ... Ne rions pas, je ne trouve même pas une image sur le Web pour le X520 ! Quand au DACL j'aurais bien aimé vous en montrer quelques lignes mais ma mémoire me trahit et le Web, cette grande mémoire du monde moderne, ne remonte pas si loin et ne trouve rien... je n'y peux, c'est à cause de Microsoft et des zinzins qui bossent dans leur "Labs" que tout cela me remonte en mémoire. Vous allez comprendre dans une minute.

Pour paraphraser un joke qui tournait au Club Med à ces mêmes époques dans le monde des G.O. "Le BASIC même à tout, à condition d'en sortir" (remplacer BASIC par "Club Med" pour obtenir la phrase originale). C'était vrai pour l'un et ça reste vrai pour l'autre (ou réciproquement, ça marche aussi).

Le BASIC c'est facile et formateur mais ça ne mène pas loin (enfin si, à VB.NET mais faut aimer) mais ça met surtout le pied à l'étrier. Alors aujourd'hui je ne vais pas vous conseiller de vous (re) mettre au BASIC, non, mais de former vos chères têtes blondes à ce merveilleux langage grâce aux techniques .NET les plus modernes ! Car voici venu le Small BASIC !

Comme vous vous en doutez aux souvenirs évoqués ici, mes têtes blondes à moi ça fait longtemps qu'elles sont en FAC ou en pleine crise d'adolescence et que je ne peux plus m'en servir pour faire des expériences pédagogiques... Reste les vôtres, ça tombe bien !

Small et Basique, mais sympa !

En fait c'est finalement très sérieux tout ça. Le Small Basic est un produit des Devlabs de Microsoft. Ca vient de sortir et c'est très sympa.

En gros il s'agit d'un BASIC servi par une interface ludique et un jeu de 15 instructions. Le tout repose sur .NET malgré tout, on ne mesquine pas avec les choses sérieuses !

Le Small Basic est directement destiné à former les jeunes et les moins jeunes à la programmation. Boucles, branchements, sous-routines, tout le nécessaire de base est là, même une console graphique et un mode Tortue. L'EDI (un grand mot, mais c'est pourtant comme ça qu'il faut l'appeler) utilise un procédé de type Intellisense pour faciliter la prise en main (c'est plus le MS Basic sous CP/M il faut avouer). Of course, c'est en english, mais comme il est indispensable de former les djeuns' à cette belle langue que les français pratiquent si peu et si mal, vous ferez d'une pierre deux coups !

Pour les plus vieux, allez voir le site et lisez la doc, ça vous tirera une larme, pour les plus jeunes qui ont encore des enfants en âge de croire que leur Papa sait tout, courrez télécharger le soft pour parfaire votre statut de héro apportant la connaissance à sa progéniture !

C'est dans les Devlabs Microsoft, c'est mêmepour être plus précis.

Bonne soirée à expliquer à vos enfants ce qu'est un GOTO !

Et Stay tuned !

 

Debug ou Cracking ? Des outils .NET à la frange des deux mondes...

Un debugger comme celui de Visual Studio n'est que rarement comparé à un outil de cracking pour la bonne raison que son utilisation s'effectue systématiquement (ou presque) sur des applications en cours de développement / maintenance, impliquant que l'opérateur du debug a le droit d'accéder aux sources. Mais comment catégoriser les outils qui suivent ?

Les trois outils dont je vais vous parler aujourd'hui se situent tous à la limite entre debugging et cracking, non pas forcément par la volonté de leur concepteur mais bien par leur nature. Il s'agit en fait d'applications autonomes capable de percer les secrets d'applications .NET en cours de fonctionnement (2 outils sur les 3 pour être précis, l'un est un visualisateur pour VS).

Outils de debug très intéressants ne nécessitant pas forcément l'installation de VS sur la machine, ces applications sont des compagnons à mettre dans votre boîte à outils. Utilitaires autonomes pouvant être utilisés par n'importe qui, l'existence même de ces outils ouvre la voie à un cracking autrement plus simple que l'utilisation d'outils comparables pour Win32. La haute cohérence de .NET et sa "lisibilité" rendant l'opération moins ardue.

Anges ou Démons ?

Les objets n'ont pas d'âme (si tant est que les êtres vivants en aient une) mais surtout ils n'ont pas de conscience. De tels outils ne peuvent donc être taxés en eux-mêmes d'être "diaboliques". C'est l'Homme qui appuie sur la gâchette que l'on juge et condamne, non les particules de poudre et l'amorce ayant permis à la balle de sortir de l'arme... A vous d'en faire bonne usage donc. Le plus important étant même de savoir que de tels outils existent pour éventuellement réfléchir, pour des applications sensibles, à comment rendre inopérantes des attaques qui utiliseraient cette approche.

Les outils

Crack.NET

Ecrit par Josh Smith, cet outil est un "logiciel de débogage et de scripting qui vous donne accès à l'intérieur de toute application .NET desktop" (d'après la traduction de la présentation de l'auteur). Une fois lancé l'utilitaire permet de choisir l'application .NET à cracker (selon les termes mêmes du bouton de lancement). Visualiser la mémoire, traverser les grappes d'objets, il est ainsi possible de tracer l'état de l'application "victime". Imaginons un mot de passe de connexion à une base de données ou à un Service Web, même si l'exécutable est obfusqué, même si les valeurs sont cryptées sur disque, il devient possible de lire ces dernières en clair une fois en mémoire de l'application.

On flirte avec la limite cracking / debugging, mais encore une fois l'intention coupable ou non est du ressort de la conscience de l'utilisateur de l'outil.

Un outil à posséder donc.

http://joshsmithonwpf.wordpress.com/cracknet/

Mole

Mole est un outil un peu différent, c'est un visualisateur pour Visual Studio qui permet de plonger dans les arborescences d'objets, de visualiser les valeurs mais aussi de les modifier.

En tant qu'outil pour VS la frontière du cracking s'éloigne, celle du debugging étant plus clairement visible.

"Mole a été conçu pour permettre au développeur non seulement d'afficher des objets ou des données, mais aussi de percer et visualiser les propriétés de ces objets, puis de les modifier. Mole permet un nombre illimité d'objets et de sous-objets en cours d'inspection. Quand Mole trouve un objet IEnumerable, les données peuvent être visualisées dans une DataGridView ou dans une grille de propriétés. Mole gère facilement les collections qui contiennent plusieurs types de données. Mole permet aussi au développeur de voir les champs non publics de tous les objets. Vous pouvez apprendre beaucoup sur le framework. NET en inspectant ainsi les données de vos applications."

http://karlshifflett.wordpress.com/mole-for-visual-studio/

Snoop

"Snoop est un utilitaire conçu pour simplifier le débogage visuel des applications WPF à l'exécution."

Un peu comme Crack.NET il s'agit ici d'un utilitaire autonome permettant d'inspecter une application WPF lors de son exécution. Cela peut s'avérer très utile en debug, mais peu présenter certains risques entre de mauvaises mains...

 

En tout cas, si vous développez des applications WPF, il faut avoir Snoop, il peut fournir une aide appréciable en plus du debug sous VS.

http://blois.us/Snoop/

Conclusion

Objets inanimés avez-vous une âme ? Questionnait Lamartine. Les objets numériques qu'il n'a pas connus n'en ont ni plus ni moins que les objets physiques en tout cas. Cracker ou debugger, c'est à vous de voir avec votre conscience, mais dans tous les cas, il est important de connaître l'existence de tels outils qui peuvent s'avérer bien pratiques dans certaines circonstances.

Stay Tuned !

Snippet Designer : un plugin VS 2008 à posséder !

Les snippets de code Visual Studio vous connaissez certainement. Ce sont des modèles (petits ou grands) de code qui peuvent contenir des zones personnalisables et qui économisent beaucoup de frappe...
Créer des Snippets n'est en revanche pas toujours très simple ou très commode.

C'est pourquoi je vous conseille un petit plugin bien sympathique, "SnipperDesigner".
Cet outil est téléchargeable sur CodePlex :


http://www.codeplex.com/SnippetDesigner

Les étapes pour son utilisation une fois l'outil installé se trouvent résumées ici.



image

C'est tout simple, facile, gratuit, et ça peut faire gagner beaucoup de temps...

Bon Dev ... Et Stay Tuned !


Silverlight à l'épreuve du marché : 1 personne sur 4 possède déjà le plugin !

Silverlight 2 vient tout juste de sortir mais les bêta ont longtemps ronronné sous le capot de nos machines et des sites ont même utilisé la version 1.0 (ce qui vaut un coup de chapeau car malgré tout c'était un peu léger pour bosser!). Microsoft a profité des jeux Olympiques en Chine pour utiliser Silverlight et le mettre à l'épreuve d'une utilisation intensive, notamment pour ses capacités particulièrement efficaces de diffusion de flux video.

Il résulte de tout cela que selon un rapport Microsoft un consommateur sur quatre possèderait déjà le plugin sur sa machine !

Dans certains pays la pénétration du plugin serait de l'ordre de 50% (je regrète que MS n'ait pas juger bon de préciser les pays en question cela eut été intéressant, par exemple 50% de l'Inde ne représente pas forcément la même chose que 50% de Tuvalu !). Quoi qu'il en soit le plugin a été téléchargé 200 millions de fois ce qui n'est pas mal... Surtout que la vraie version intéressante, la 2.0 finale est sortie il y a 24 ou 48h maintenant et qu'elle n'est pas compatibilisée alors que nous savons tous que c'est elle qui va réellement ouvrir le marché à ce plugin et donner envie aux développeurs de produire des site s'appuyant dessus.

Rien que les jeux de Beijing ont fait monter le compteur de 9 millions de téléchargements rien qu'aux USA. Les sites Silverlight utilisés pour les jeux ont reçu 50 millions de visiteurs différents pour un total de 1,3 milliard de pages vues, 70 millions de flux vidéo et 600 millions de minutes de vidéo surveillance. C'est en soi un joli test de monté en charge pour ce qui n'était que des bêta (ou bien des V 1.0).

Bon, je suis d'accord, cette annonce MS est avant tout marketing. Beaucoup de chiffres sans précision des sources et pouvant être interprétés un peu comme on veut, ça sent un truc écrit par des marketeux et pas par des informaticiens :-)

Le vrai cock-a-doodle-do (hmm oui, cocorico en anglais quoi...) pourra être poussé dans quelques mois quand nous verrons éclore plein de sites utilisant Silverlight 2.0 pour son côté Flash killer et pas uniquement pour les capacités de traitement de flux video de SL 1.0. Restons sereins, car l'outil est tellement chouette (serin/chouette vous avez vu l'humour que j'ai ce matin!) que le raz de marée va forcément arriver. Laissons le temps à la masse laborieuse des informaticiens de se former à ce nouvel outil et de se trouver de nouveaux potes graphistes ce qui va les obliger à sortir de chez eux (c'est pas gagné ! :-) ) et qui va surtout nécessiter quelques arrangements entre une population plutôt PC et une autre plutôt Mac. La paix dans le monde entre ces deux factions en guerre depuis des lustres grâce à Silverlight ? C'est bien possible... Si on pouvait régler tous les autres conflits dans le monde juste avec la sortie d'un nouveau soft...

Bon développement sous Silverlight !

 

 

Un générateur de code C#/VB à partir d'un schéma XSD

Générer du code C# depuis un schéma XSD est un besoin de plus en plus fréquent, XML étant désormais omniprésent. On trouve dans le Framework l'outil "xsd.exe" qui permet une telle génération toutefois elle reste assez basique. C'est pour cela qu'on trouve aussi des outils tiers qui tentent, chacun à leur façon, d'améliorer l'ordinaire.

XSD2Code est un de ces outils tiers. Codé par Pascal Cabanel et releasé sur CodePlex, c'est sous la forme d'un add-in Visual Studio que se présente l'outil (le code source contient aussi une version Console).

Son originalité se trouve bien entendu dans les options de génération qui prennent en compte INotifyPropertyChanged ainsi que la création de List<T> ou ObservableCollection<T>. D'autres options comme la possibilité de générer le code pour C# ou VB.NET, le support des types nullable, etc, en font une alternative plutôt séduisante à "xsd.exe". La prise en compte des modifications de propriété (et la génération automatique du code correspondant) autorise par exemple le DataBinding sous WPF ou Silverlight... A ne pas négliger surtout que Silverlight 2 est releasé officiellement depuis hier !

Comme Pascal suit ce blog il pourra certainement m'éclairer sur le pourquoi d'un petit dysfonctionnement (j'ai aussi laissé un message dans le bug tracker du projet): lorsque l'add-in est installé, et après l'avoir activé dans le manager d'add-in je ne vois hélas pas l'entrée de menu apparaître sur le clic-droit dans l'explorateur de solution (sur un fichier xsd bien sûr). Heureusement, le code source étant fourni sur CodePlex et le projet intégrant une version console de l'outil j'ai pu tester la génération de code C# en ligne de commande. Il est vrai que l'intégration de l'outil dans l'IDE est un sacré plus que je suis triste ne n'avoir pu voir en action :-( Peut-être s'agit-il d'un problème lié au fait que ma version de VS est en US alors que mon Windows est en FR ? Cela trouble peut-être la séquence qui insère la commande dans le menu contextuel ?

Un petit détail à régler donc, mais dès que j'ai des nouvelles je vous en ferai part (Pascal tu peux aussi laisser la solution en mettant un commentaire à ce billet si tu veux).

Le projet XSD2Code est fourni en deux versions, code source et setup près à installer. Pascal a même créé une petite vidéo montrant l'add-in en action.

Un outil qui, même en version console, remplace avantageusement "xsd.exe" et qui a donc toutes les raisons de se trouver dans votre boîte à outils !

Bon dev

Et Stay Tuned ! 

XAML Power Toys mis à jour pour WPF .NET 3.5 SP1 et Silverlight 2 !

Les XAML Power Toys sont des petits outils bien pratiques qui s'intègrent à Visual Studio 2008, leur mission : générer du code XAML pour des tas de situations et ainsi simplifier le codage.

Laissons l'auteur des XAML Power Toys dire à quoi ils servent :

"L'objectif principal de XAML Power Toys est de fournir des outils qui permettent aux développeurs de rapidement mettre en page et maintenir des formulaires de type business en utilisant les contrôles d'I.U. livrés avec Visual Studio."
(The primary goal of XAML Power Toys is to deliver tools that enable developers to quickly layout and maintain Line of Business Application forms using the UI controls that ship with Visual Studio.)
Bon, c'est pas forcément plus clair dit comme ça... Alors le mieux, vous savez quoi ? ... et bien c'est d'aller sur le site de ce bon Karl et de regarder les captures d'écran et les exemples qu'il y commente !
XAML Power Toys est en tout cas un add-in à posséder, il rend vraiment service lorsqu'on travaille sous VS. On préfèrera certainement l'aspect visuel de Expression Blend pour modifier du XAML mais lorsqu'on développe une application WPF ou Silverlight on a de toute façon VS et Blend ouverts en même temps, l'un pour le visuel, l'autre pour le code C# et quand on est sous VS, il est parfois plus rapide de modifier le code XAML "à la main" pour certaines choses que de switcher sur Blend. Donc même quand on travaille avec les deux EDI à la fois, ces petits "jouets puissants" (Power Toys !) sont des aides à ne pas négliger !
Bon XAML
... Et Stay Tuned !

Silverlight 2 Final est enfin là (sous-titré : Youpi!)

Bon, on l'attendait, on mitonnait des petites pages avec la beta 2, on rongeait notre frein, et on attendait... Mais voilà ça y est, enfin un vrai concurrent pour Flash est né : Silverlight 2.0 finale est enfin releasée !

Silverlight 2.0 c'est tout Silverlight 1.0 avec un petit plus qui tranforme un joujou sympa en une vraie bombe : SL 2 embarque un mini framework .NET et peut donc être programmé en C# et non en Javascript (beurk!) qui est à la programmation ce que les plats congelés sont à la gastronomie.

Si SL 1.0 était du même tonneau que Flash ou Flex avec leur ActionScript (enfant adultérin de JavaScript et d'un Basic des années 70), SL 2.0 relève le débat en proposant un plugin portable (PC/Mac) multi-browser (FireFox, IE, Safari..) doté d'un vrai langage de programmation et d'une vraie plateforme de développement. Adobe a un grand savoir-faire en matière de graphisme mais pour les outils de développement et les langages ils n'ont jamais réussi a dépasser le niveau des macros de Excel, - et encore c'est très puissant les macros de Excel !

Microsoft n'a, de ce côté là, aucun souci à se faire, ils disposent aujourd'hui de l'une des plus belles et plus cohérentes plateformes jamais créées (.NET) servie par des outils de luxe comme Visual Studio 2008, SQL Server 2008, la suite Expression, etc..., le tout piloté par C# 3.0 dont on ne fait plus l'apologie.

Il reste néanmoins que MS n'a pas vraiment encore l'expérience d'un Adobe en ce qui concerne le graphisme. Rome ne s'est pas faite en un jour. Il serait mentir qu'affirmer que SL 2 est aussi bien doté que Flash ou Flex à ce niveau. Potentiellement oui bien sûr, dans la pratique pas tout à fait. Par exemple SL 2 ne sait pas appliquer d'effets aux images, il faut "pré traiter" les images sous un autre logiciel (Design ou ... Photoshop) et exporter un PNG, juste pour faire un drop shadow par exemple c'est pas encore le top, il faut l'avouer.
[EDIT]Il faut malgré tout ajouter que Microsoft travaille sur un Pack de composants additionnels pour Silverlight, pack qui devrait compter à termes environ 100 contrôles supplémentaires, et, cerise sur le gateau, ce pack sera mis en ligne via CodePlex avec tout son code source ! Il ne faut pas oublier non plus que SL 2 ajoute à SL 1 des contrôles de base indispensables comme la Datagrid. SL 2 est, de par le fait, la vraie version 1 utilisable sérieusement de Silverlight[/EDIT]

Mais tout cela sera de l'ordre du souvenir d'ici quelques versions cela ne fait aucun doute. Et ne termissons pas ce jour de joie, on peut dès maintenant créer des applications graphiquement alléchantes avec SL 2 (dont la force est le vectoriel plus que le bitmap précisons-le), il suffit d'avoir un bon graphiste sous la main, le look c'est une question d'art bien plus que d'outil...

Il n'en reste pas moins vrai que le jour est historique car Silverlight 2 est une solution intelligente, puissante et crédible qui offre enfin une alternative à la domination de Adobe sur ce créneau et qui permet d'échapper aux usines à gaz de type Ajax ou Javascript juste pour avoir quelque chose de moins laid qu'une page HTML de base !

Longue vie à Silverlight !

L'annonce officielle pour les anglophones : http://www.microsoft.com/presspass/press/2008/oct08/10-13Silverlight2PR.mspx

[EDIT]Le site web pour télécharger tout ce qu'il faut pour développer est là, sur la page Get Started du site officiel de Silverlight, faites chauffer vos connexions ![/EDIT]

Bon Web tout animé et haut en couleurs avec SL 2 et Stay Tuned !

 

Upgrade du site blog

Je viens d'upgrader le blog qui fonctionne sous BlogEngine. Forcément cela ne se fait pas sans qu'il n'y ait quelques retouches à faire de ci de là...

Je m'excuse donc d'avance auprès des lecteurs qui pourraient connaître des petites perturbations de service durant les interventions de maintenance du site à venir.

Bonne lecture et Stay Tuned !