Les liens de la semaine – Édition #179

Développement

.NET

Technologie

Web

Science et autres

 

 

Les liens de la semaine – Édition #152

Développement

.NET

Web

Technologie

Science et autres

Utiliser scriptcs et C# pour analyser le contenu d’une URL en .NET

Si vous me demandiez de choisir un défaut et de vous en parler, je choisirais certainement ma mémoire. Il y a des gens, comme ma conjointe, qui est capable de souvenir de recettes ou de la liste d’épicerie par coeur.

Moi, c’est le contraire.

Je n’ai pas une très bonne mémoire. Afin de pallier à ceci, je prends des notes et je m’invente des mécanismes pour me souvenir de détails. Après tout, une bonne partie de mon travail réside sur ma capacité à me remémorer ces détails et de mettre en place une solution basée sur ces détails.

Ceci étant dit, je suis très visuel. Comme dirait l’autre: on ne veut pas le savoir, on veut le voir!

Chaque fois que je dois manipuler une URL dans l’un de mes projets, j’ai toujours un trou de mémoire sur quelle propriété à utiliser pour mes fins. Certes, je sais faire la distinction entre Uri.DnsSafeHost et Uri.Scheme. Cependant, j’aime toujours avoir la certitude que ce que j’utilise est bien ce dont j’ai besoin.

La documentation MSDN sur les propriétés de la classe Uri répond au besoin. Ce n’est pas le point. Il s’avère juste que je suis un peu paresseux. Alors, qui dit développeur paresseux dit automatisation possible. C’est ainsi que je suis arrivé avec l’idée d’un script scriptcs qui exposerait les propriétés de la classe Uri pour une URL donnée.

Je suis un génie comme dirait l’autre. En même temps, c’est assez maigre comme concept. Peu importe, je le trouve bien utile!

Le code


using System;
var uri = new Uri(Env.ScriptArgs[0]);
Console.WriteLine("AbsolutePath – " + uri.AbsolutePath);
Console.WriteLine("AbsoluteUri – " + uri.AbsoluteUri);
Console.WriteLine("Authority – " + uri.Authority);
Console.WriteLine("DnsSafeHost – " + uri.DnsSafeHost);
Console.WriteLine("Fragment – " + uri.Fragment);
Console.WriteLine("Host – " + uri.Host);
Console.WriteLine("HostNameType – " + uri.HostNameType);
Console.WriteLine("IsAbsoluteUri – " + uri.IsAbsoluteUri);
Console.WriteLine("IsDefaultPort – " + uri.IsDefaultPort);
Console.WriteLine("IsFile – " + uri.IsFile);
Console.WriteLine("IsLoopback – " + uri.IsLoopback);
Console.WriteLine("IsUnc – " + uri.IsUnc);
Console.WriteLine("LocalPath – " + uri.LocalPath);
Console.WriteLine("PathAndQuery – " + uri.PathAndQuery);
Console.WriteLine("Port – " + uri.Port);
Console.WriteLine("Query – " + uri.Query);
Console.WriteLine("Scheme – " + uri.Scheme);
foreach(var segment in uri.Segments)
{
Console.WriteLine("Segment – " + segment);
}
Console.WriteLine("UserInfo – " + uri.UserInfo);
Console.ReadKey();

view raw

uri.cs

hosted with ❤ by GitHub

Trente lignes en incluant les lignes vides. Enregistrez le contenu sous un nom de fichier ayant l’extension .csx (c’est l’extension de scripts scriptcs).

Exécutez le script en utilisant la commande suivante: uri.csx — https://frenchcoding.com/2015/03/09/les-liens-de-la-semaine-edition-122/ et le tour est joué!

uri

Une introduction à l’outil de scriptage .NET/C# scriptcs

Scriptcs scriptcs-logo est un petit bijou de technologie que j’utilise occasionnellement depuis ses premiers moments. J’ai démarré l’aventure French Coding depuis avril 2012 et je m’étonne encore de ne pas avoir mis en place un billet au sujet de scriptcs.

Qu’est-ce que scriptcs? Il s’agit d’un utilitaire permettant d’exécuter du C# et de bénéficier de la puissance de .NET sans avoir recours à Visual Studio. Vous pouvez écrire du code directement à partir de votre éditeur texte préféré et l’exécuter à la demande. Génial, n’est-ce pas?

Je me suis souvent servi de scriptcs pour tester certaines conditions d’exécution. Là où je m’en suis servi le plus fréquemment c’est pour de l’affichage de dates, ironiquement. Il est vraiment facile de tester un bout de code de cette façon.

La façon la plus simple (et recommandée par l’équipe de développement) est de passer par Chocolatey en utilisant la commande choco install scriptcs. Si vous ne voulez pas utiliser Chocolatey (il n’y a pas de bonnes raisons de le faire, je vous le dis), il y a des façons alternatives d’installer scriptcs sur votre machine.

Suggestion de lecture: mon billet au sujet de Chocolatey.

Mettre à main à la pâte

Il y a deux façons de travailler avec scriptcs.

  1. Le mode REPL (Read-Eval-Print-Loop) permet d’interagir avec le compilateur de C# en lui envoyant du code. D’ailleurs, si vous avez déjà fait du Ruby dans votre vie, vous allez remarquer que cette fonctionnalité de scriptcs ressemble à IRB.scriptcs
  2. Avec des fichiers de script vous permet d’écrire des classes C# et de les exécuter en ligne de commande. Ce qui est intéressant avec ce mode est l’éventail de possibilités qui vous est offert.
    Vous pouvez, par exemple, référencer d’autres scripts (csx) et, notamment, avoir recours à NuGet pour installer des modules pour votre script.

Ensuite, c’est quoi la suite?

Après tout cela, qu’est-ce qui vous reste à voir? Ma seule recommandation serait d’aller jeter un coup d’oeil à la liste des exemples de scripts laissés par l’équipe de développement de scriptcs.

Au pire, les exemples risquent de certainement vous donner des idées. Les bouts de codes vont de RavenDB à créer un client/serveur utilisant System.Net.