Dot.Blog

Consulting DotNet C#, XAML, WinUI, WPF, MAUI, IA

XML/XAML pretty printer gratuit

Il arrive souvent que du code XML soit produit "au kilomètre" sans mise en forme particulière. Même si Internet Explorer sait afficher un tel fichier en le mettant en forme automatiquement, on souhaite parfois disposer d'une version formatée lisible par un humain.

ODPrettyXml, un utilitaire console très simple qui ne fait que ça... Il traite les fichiers XML, mais aussi du XAML sans souci. Toutefois vous remarquerez que ODPrettyXml travaille toujours sur un fichier de sortie différent de l'original, certaines transformations pourraient avoir des effets non souhaités. L'utilitaire est donc avant tout conçu comme un "pretty printer" dont la vocation est de rendre le document plus lisible pour un humain. Les fichiers produits, même s'ils restent fonctionnels, n'ont pas vocation a être utilisé en programmation.

Pour le mode d'emploi, tapez ODPrettyXml sous console, l'aide sera affichée. Le programme ne demandant aucune saisie, il est possible de l'utiliser dans des fichiers de commandes (ou des batchs).

La syntaxe la plus habituelle est "ODPrettyXml <nom du fichier>" qui fabriquera automatique un fichier de sortie de même nom se terminant par "pretty" suivi de l'extension du fichier original (par exemple: toto.xml donnera toto.pretty.xml).

Si vous tapez "ODPrettyXml ?" vous obtiendrez la liste de tous les encoders connus et utilisables avec leur code page. C'est le nom qu'il faut utiliser en 3eme paramètre de ODPrettyXml. Par exemple pour utiliser unicode il faut taper "ODPrettyXml <source> <sortie> utf-16". Quand un encodeur est spécificé, il faut aussi saisir le nom du fichier de sortie (2d paramètre).

Dernière remarque, ODPrettyXml ne fait qu'encoder le fichier et le mettre en forme avec des indentations, notamment il ne contrôle pas si l'encodage demandé est conforme à celui déclaré dans le fichier source. Un fichier indiquant qu'il est codé en UTF-8 peut être encodé en UTF-16, son entête indiquera toujours UTF-8, le fichier n'est pas modifié par ODPrettyXml.

Téléchargement : odPrettyXml.exe (34,00 kb)
(exécutable .NET 3.5, mode console)
(projet VS 2008 complet. Le fichier de signature électronique est absent vous devrez en créer un autre).
Amusez-vous bien !
Et Stay Tuned pour d'autres nouvelles (notamment un gros article à venir les Splash screen sous Silverlight !)
(PS: l'aide du logiciel a quelques coquilles, à vous de les trouver et les corriger :-) )

F# et le "paradoxe de la secte"

F#, fils (ou frère ?) de OCaml, langage intégré à la prochaine version de Visual Studio, fait son buzz ...

Comme toute nouveauté, ne pas connaître c'est risquer de passer pour un idiot à la machine à café (voire à la cantine ou au chinois du coin le midi, l'effet est le même, juste qu'il est plus facile de quitter la machine à café en prétextant un truc urgent à faire que de se lever de table sans avoir fini son rouleau printemps).

De fait ne pas s'informer est en réalité un double crime : d'abord professionnel (rester au courant est un minimum syndical quand on est payé pour faire un job), ensuite social (passer pour un hasbeen est lourd à porter).

Heureusement je veille au grain et grâce à DotBlog vous ne commettrez pas ce double impair !

F# est un langage issu des labos de Microsoft. S'il est très proche de OCaml (au départ totalement compatible) il s'en éloigne par plusieurs points, ne serait-ce qu'en raison de sa parfaite intégration à l'édifice .NET.

Tout le problème avec un nouveau langage c'est qu'il place l'informaticien dans une situation embarassante. Car on attend d'un informaticien qu'il parle d'informatique et qu'il connaisse les outils propres à son métier. Jusqu'à là rien d'anormal. Mais concernant un langage on se retrouve vite devant ce que j'appelle le "paradoxe de la secte" : Soit vous n'y appartenez pas et toutes vos critiques et réserves seront balayées par ses partisans au principe que n'y appartenant pas vous n'en connaissez rien et que votre avis est totalement subjectif, soit vous y appartenez et le bien que vous en direz, tout comme le mal éventuellement, sera considéré comme sujet à caution par tous ceux qui n'appartiennent pas à la dite secte ...

Mais cela pose tout de même un sacré problème : peut-on dire du bien ou du mal d'un nouveau langage de programmation sans avoir écrit un vrai logiciel avec, ou doit-on forcément être capable de réécrire Excel en un week end avec un langage pour pouvoir prétendre donner son avis sur ce dernier ?

J'aime les paradoxes pour le jeu. Mais je n'aime pas l'inconfort intellectuel du "paradoxe de la secte" surtout appliqué à mon métier qui est en quelque sorte une apologie à la Logique et où le monde se règle à coups de If Then Else. Des If avec un Then mais sans Else c'est de la programmation risquée. Et d'ailleurs pour revenir au sujet, F# oblige l'utilisation de Else. Pour cette même raison (c'est risqué). Logique, mais peut-être casse pied à l'usage, il faut voir...

Souhaitant échapper au paradoxe de la secte, je ne vous donnerai pas un avis technique profond sur F#, mais je vous invite à lire une série de billets introduisant la syntaxe de F# pour vous faire vous-même une idée de la chose et je vous propose de venir laisser vos impressions en commentaires afin qu'on puisse en discuter. "Présentation de F#" par Laurent Le Brun

L'article est fait de petits billets, donc c'est facile à lire. En retour c'est un peu sommaire et pas forcément très expliqué, mais on ne peut pas tout avoir. En tout cas ça vous en dira suffisamment pour vous faire une idée, et surtout pour tester la syntaxe si vous téléchargez le langage (ce qui n'est pas nécessaire avec la bêta de VS2010, téléchargeable ici : http://www.microsoft.com/visualstudio/en-us/products/2010/default.mspx).

Je vous demandais plus haut de venir ajouter en commentaire votre avis sur F#, autant commencer par donner le mien penserez-vous. C'est oublier le "paradoxe de la secte" dans lequel cela me plongerait malheureux ! Mais comme c'est pour vous, j'ai testé un peu F#, échappant de justesse au paradoxe : ni je n'en connais rien, ni je n'en connais tout, en toute logique le paradoxe ne s'applique plus à mon cas :-) (c'est discutable, je sais, mais tout ce qui est discutable laisse chacun dans la possibilité de croire qu'il a raison !).

Bref, F# c'est jeune, c'est sympa, c'est de la "programmation fonctionnelle" (super classe et dans le vent), donc c'est bien. Peut-être. Ou peut-être pas. A petites doses, sous le couvert de LINQ, au d'extensions de C#, je ne dis pas. Exclusivement et en plat unique et principal, est-ce digeste ? J'ai un doute.

Si La syntaxe F# est "amusante" elle me semble peu lisible, peut-être par manque d'habitude. Toutefois quand on passe de C ou Java à C# on n'a pas cette impression, ni même de Delphi à Java ou réciproquement. Alors première "mauvaise impression" ou bien réalité ? Le problème c'est qu'il faudrait devenir bon en F# pour le comparer et savoir si on l'aime ou pas.. L'horrible et incontournable paradoxe de la secte qui revient ! Donc je suis obligé de rester au niveau subjectif et mon avis n'a rien de technique. De prime abord, je n'aime pas trop la syntaxe donc.

Par exemple il existe un mode "light" (devenant visiblement la "norme"). Dans ce mode la syntaxe devient plus "light" mais au prix que je trouve insensé de donner une valeur réelle à l'espace (le caractère espace, pas starwars hein..). C'est à dire que les blocs ne se déclarent plus avec des mots clés de début et de fin (ou les {} de C#), mais sont uniquement basés sur l'indentation du texte à l'espace près, les tabulations étant interdites.
Utiliser les espaces pour indenter c'est bien, ne pas pouvoir utiliser les tabulations c'est un peu embêtant, mais lorsque qu'on sait que ces espaces ont aussi un impact sur le code ça me dérange un peu. Que le nombre d'espaces devant une instruction puisse modifier son sens ou sa portée m'apparait un dangereux défaut. Mais ce n'est peut-être que par manque de pratique.

Quant à l'esprit du langage, dans la foulée des langages ML comme LISP, ce dernier m'a toujours paru trop abscons pour devenir populaire et jusqu'à lors, en 25 ans de métier aucun de ces langages n'a démenti cette impression et n'est devenu un blockbuster. F# sera-t-il celui qui me fera mentir ? Saura-t-il séduire les foules de développeurs en soif de nouveautés ? Ou bien restera-t-il juste un bel essai boudé par les mêmes informaticiens déjà gavés "jusqu'à là" de trucs nouveaux à apprendre sous .NET (et super géniaux comme Entity Framework, Silverlight, ASP.NET MVC, etc) ?

Wait and see dirais-je sagement pour ne pas trop me mouiller :-)

F# est plein de bonnes idées, mais sa syntaxe et son esprit me semblent difficilement compatible avec l'industrialisation du développement. Caml, OCaml, LISP et consors ne sont jamais sortis de leur cercle d'initiés. L'industrie du logiciel n'en a pas voulu. F# possède-t-il le petit "plus" qui lui permettra d'étendre son influence plus largement que ces prédécesseurs ? Nous verrons bien !

Alors j'attends vos avis et impressions !

Les propriétés de dépendance et les propriétés jointes sous WPF (article à télécharger)

En voilà un beau sujet ! Vous allez me dire qui irait investir deux jours à taper 25 pages sur ce sujet, il faut être totalement givré ! Et bien vous en avez un devant vous (par blog interposé) ... donc pas de remarques désobligeantes sur ma santé mentale, hein !

Certes les propriétés de dépendance et les propriétés jointes de WPF et Silverlight ne semblent pas être un sujet aussi exitant que quelques astuces LINQ ou la meilleure façon d'intégrer de la 3D dans Silverlight 3 (miam!)... Je vous le concède. Mais en revanche c'est un sujet capital car derrière ces propriétés bien particulières se cache l'un des piliers de la puissance de WPF, un mécanisme qui autorise la gestion des styles, des animations, du Data Binding et de bien d'autres choses sans lesquelles WPF ne serait pas ce qu'il est.

Savoir ce qu'est une propriété de dépendance ou une propriété jointe, savoir en déclarer et savoir les utiliser représente une base impossible à zapper.

Alors, pour tout savoir sur le sujet, téléchargez mon dernier article "Propriétés de dépendance et propriétés jointes (WPF/Silverlight)" !

L'article est fourni en PDF avec les sources du projet exemple (utilisable sous VS 2008 ou Blend 2).

NB: Pour mieux comprendre cet article si vous n'êtes pas encore un expert de WPF, je vous conseille la lecture de mon précédent article "10 bonnes raisons de préférer WPF".

Bonne lecture,

... Et Stay Tuned !

Techdays 2009, Le grand rush !

Les Techdays 2009, ce temple des annonces, cette grand'messe de la technologie, que dis-je, ce rendez-vous INCONTOURNABLE à la gloire de notre passion commune et de nous outils préférés, et bien les Techdays 2009 ont commencé depuis hier !

Plein de nouveautés et d'annonces croustillantes et plein de choses à voir et de conférences à entendre !

... bon... seulement voilà, j'aurai bien voulu vous en dire plus mais, hélas, mes obligations professionnelles m'ont interdites d'être sur Paris cette semaine :-( Du coup, et pour la première fois, ce n'est pas moi qui vais vous donner des informations toutes fraiches et exaltantes (même si je suis ce qui se trame de loin !), mais c'est à vous, qui êtes aux Techdays ou qui en revenez, de bien vouloir me tenir au courant, moi et les autres lecteurs de Dot.Blog bien entendu ! :-)

N'hésitez pas à laisser en commentaire ici ce qui vous a le plus marqué, ce que vous avez le plus aimé !

We need you ! Engagez-vous, rengagez-vous et commentez !

... et bonne balade aux Techdays !

Astuce du jour : chercher des ebook avec google

Légal / pas légal, that is the question... Sur le Web on trouve de tout, à vous de savoir ce que vous téléchargez.

Je ne suis pas là pour vous faire la morale mais plutôt pour vous donner une astuce sur la syntaxe de google qui permet de retrouver facilement des ebook.

Pour chercher des ebook ajouter tout simplement la ligne qui suit à votre recherche :

-inurl:htm -inurl:html intitle:"index of" +("/ebooks""/book") +(chm pdf zip)

La syntaxe peut être facilement adaptée. On voit que l'astuce consiste à cherche dans les URL la présence de certains mots comme ebook ou book et plus spécifiquement des répertoires de sites Web s'appelant comme ça. On remarquera aussi la fin de la recherche permettant de chercher chm pdf et zip. On peut supprimer zip ou chm si on ne veut que des pdf ou ajouter d'autres extensions qu'on recherche.

Bonne lecture !