Dot.Blog

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

20 Ko pour une mire bien pratique

Tous les environnements de développement sérieux permettent de connaître et de fixer la taille des objets, notamment des fenêtres. Mais dans certains cas il est important de tester l'aspect d'une application dans différentes résolutions écrans.

Il existe cent façons de faire, personnellement je me suis fait une petite mire qui va de 800x600 à 1680x1050 qu'il suffit de placer en image de fond du bureau. Ensuite il n'y a plus qu'à caler l'application en test sur les lignes pour avoir immédiatement, sans calcul et visuellement, le résultat escompté.

Tout bête. Mais comme ça peut rendre service je vous offre la mire (un png de 23Ko, ça n'encombrera pas les Tera de vos disques durs !) : MireResoEcranOD.png (22,97 kb)

Pour un petit aperçu (déformé, par force):

Contre la riposte graduée, secouez vos sénateurs (1 minute et 1 clic)

Si vous lisez ce billet régulièrement vous savez que j'aime de temps en temps gueuler un coup contre des choses qui me scandalisent. Aujourd'hui il s'agit de la riposte graduée qui se décide dans notre dos. Il ne faut pas laisser faire le gouvernement qui transforme notre démocratie en dictature : une peine appliquée sans jugement est un acte non plus de république bananière mais de simple dictature !

L'association ODEBI, vous la connaissez certainement, a organisé une pétition par email qui arrive directement chez les sénateurs. Il faut la signer, c'est un acte citoyen élémentaire.

L'adresse de la pétition est là : http://www.odebi.org/new2/?page_id=493

Le texte de la pétition pour que vous puissiez vous rendre compte du sérieux de la démarche avant de cliquer sur le lien plus haut pour vous engager dans cette lutte:

Les sénateurs français doivent réaliser que la riposte graduée est un mécanisme répressif totalement contraire aux droits les plus élémentaires des citoyens:

- Chaque citoyen a droit à un procès équitable avant toute sanction: c’est le juge indépendant et impartial, et lui seul, qui est le gardien des libertés.

- La liberté d’expression et d’information est un droit fondamental: il est scandaleux que la commission des affaires culturelles du sénat tente de le nier en affirmant qu’aucun texte communautaire n’affirme que l’accès à internet serait un droit fondamental. L’accès à internet permet d’exercer cette liberté d’expression et d’information: supprimer cet accès est donc à l’évidence une atteinte majeure à cette liberté. Cette sanction est totalement disproportionnée.

- La commission des affaires culturelles précise que la suspension ne concerne que l’accès à domicile, c’est à dire l’accès familial: il s’agit donc bien de punir les familles, et elles seules. Aucune démocratie ne peut accepter d’infliger des punitions collectives, ce qui a été rappelé par Michel Rocard le 22 avril 2008: « Pour moi, la coupure éventuelle de l'Internet est une punition collective, principe interdit par tous nos systèmes de droit. La lettre des textes est claire et il n’y a aucun problème sophistiqué de compréhension là derrière. »

Les sénateurs français doivent donc garantir:

- que seul le juge peut décider d’une sanction.

- que la suspension d’accès d’une famille, punition collective, soit clairement prohibée.

C'est simple, court, je pense que vous pensez la même chose, alors signez la pétition et faite la circuler autour de vous !

 

Vous et le framework .NET

Dans la jungle des technologies .NET il est intéressant de savoir ce que vous utilisez déjà en production et ce que vous prévoyez d'utiliser dans ce contexte. Je parle bien de production, pas des essais que nous faisons tous et qui remplissent nos machines, non, uniquement ce qui est installé chez des clients (ou utilisateurs) ou en cours de développement.

Comme je ne vais pas vous demander de laisser un message à ce billet et puis faire le tri après, pour faire plus simple j'ai mis en place un petit sondage. D'ici quelques temps je "relèverai les compteurs" et je les publierai ici. Répondre à ce sondage est ainsi un moyen simple pour que nous sachions les uns les autres ce qui est utilisé (ou en prévision d'utilisation). 

Merci d'avance de prendre une minute pour réponse au sondage qui se trouve ici :

Cliquez ici pour lancer le sondage.

Stay Tuned pour les résultats (et pour bien d'autres news entre temps...) !

.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 !