Retour sur 2019, articles et posts

Le post “Comment Devenir un Expert Microsoft” est certainement celui qui a eu le plus de succès. Je vous joint le dossier complet paru dans Programmez n°234 de Novembre 2019. Download sur : http://netazurerangers.com/Articles/Article234.pdf

Le post “Comment devenir un Expert Windows” a aussi eu sont petit succès. Il est prévu d’en faire un article pour Programmez. A suivre.

Le post “Code review le diable se cache dans le détail” aussi a des visiteurs.

Le poste “C++ unsafe et unsecure ?” a aussi eu de l’impact…

Liste de mes derniers articles dans le magazine Programmez :

  • N°234: Comment devenir un expert Microsoft ? – PDF
  • N°233: Windows Subsystem for Linux 2 (WSL 2) – PDF
  • N°232: Docker et Containers : Introduction et Concepts – PDF
  • N°231: Reverse Engineering et analyse de virus – PDF
  • N°230_1: XAML Islands : incorporez les contrôles XAML Windows 10 dans vos Apps WinForms et WPF – PDF
  • N°230_2: Introduction à ASP.Net Core 3.0 – PDF
  • N°229: C++ et Containers Docker sur Azure – PDF
  • N°228: LMDB : la base NoSQL la plus rapide du monde – PDF
  • N°227: Détection et reconnaissance faciale avec OpenCV4 en C++– PDF
  • N°226: Rootkit Partie II : Module Command & Control – PDF
  • N°225: Rookit key Logger – PDF
  • N°224: Space Invaders 1978 en C/C++ avec SFML – PDF
  • N°223: Windows Le Multithreading en C/C++ – PDF
  • N°222: Linux Le Multithreading en C++ – PDF
  • N°221: Au coeur d’un Service Windows NoSQL – PDF
  • N°220: Créer un service Windows – PDF
  • N°218: Migrer son code C/C++ en 64 bits – PDF
  • N°217: Les Tests en C++ – PDF
  • N°216: La Programmation Orientée Objet en C++ – PDF
  • N°215: Utiliser shared_ptr<T> en C++ pour la gestion des ressources – PDF
  • N°214: Développez un IDE en C++ Partie II – PDF
  • N°213: Développez un IDE en C++ Partie I – PDF
  • N°212: Un serveur REST Web API en C++ – PDF
  • N°211: Pourquoi C++ en 2017 ? – PDF

Mes résolutions Microsoft pour 2020.

(EMail envoyé à mes anciens collègues Microsoft)

Amis Softies,

Voici mes bonnes résolutions pour 2020…

Je vous fais une annonce: je souhaite retravailler pour Microsoft et plus particulièrement pour Corp. Cela passera peut-être par du Services avant, je ne sais pas mais j’y travaille. Comme je le disais à mes copains Alain et les zEric, travailler chez Microsoft était un rêve mais qui s’est arrêté brusquement. Je ne reviendrais pas sur cet épisode et les raisons de cet arrêt, la page est tournée.

Depuis que je suis MVP, j’ai accès à pleins de choses et c’est génial. Microsoft est the number 1 software company, ça ne fait aucun doute. Vous y travaillez et vous le savez. Cette entreprise est magnifique, les produits sont nickel et surtout la technologie est fantastique. Qui ne se prend pas de passion pour un SDK ou un produit ? Notre métier est fait de passion, de rire et de larmes. Les échecs d’aujourd’hui seront les succès de demain.

Quand je lis le code de Windows, c’est complexe mais c’est beau. Le code C++ contient quelque chose que ne possèdent pas les autres langages. Le style Microsoft à base de COM est très spécial. Le mix entre les types Windows (COM strings, VARIANT, UINT, DWORD, UNICODE LPWSTR, wchar_t et char *) et les types C++ (wstring et string) fait que le code est fait avec plusieurs styles. On trouve le code business fait la plupart du temps en composants COM ou en code C++ ISO et la glue spécifique en API Win32. Don Box disait « COM is love ». C’est vrai. Une coclass d’un composant COM, c’est une classe C++. On a une classe en mode shared_ptr, un ctor ambigu AddRef, un dtor ambigu Release, un cast QueryInterface pour obtenir les différentes interfaces (une classe C++ peut implémenter plusieurs interfaces et peut hériter de plusieurs classes contrairement à C# qui lui ne peut hériter que d’une seule classe).

Dans le code de Windows Terminal, il y par exemple le code WinUI du cadre (tabbed et Window et popup menu et menu) écrit en pure Windows API et XAML Islands, le code du cmd avec son char buffer engine, son interpreter et le code Windows ancestral réécrit en moderne C++. Le code est amélioré. C’est comme un bon Bourgogne, il se bonifie avec le temps. Le code C++98/03 est amélioré en code C++11/14 et progressivement ce Modern C++ fait que le code est nickel, il est beau ! Par exemple, j’ai fait une contribution avec PR (pull-request acceptée le 19 June 2019 https://github.com/microsoft/terminal/pull/1161 ) qui consistait à mettre un shared_ptr sur un raw pointer et à faire la plomberie qui va avec pour y jouer avec une référence derrière. La mémoire est libérée automatiquement via le pointeur intelligent (smart pointer). C’est beau. Il y a plein de TODO et FIXME dans le code pour améliorer le code legacy Windows. J’ai vu que cela fait 4 ans que le code du CMD est refactoré et amélioré. C’est peut-être ma mémoire qui me trahie mais je crois que c’est ça ; vu dans les commentaires de code. On ne se rend pas compte de la puissance des outils de Windows. Rien que l’archive de code GitHub du Windows Terminal (https://github.com/microsoft/terminal) fait 9.3 MB. Il y en a pour 6.3 MB de fichiers .h et .cpp. C’est pas mal déjà. Enorme pour un seul individu à comprendre. Le CMD est un outil complexe qui va au-delà d’un simple dir c:\ ! C’est un pilier de Windows. Nos admins système le savent bien.  Je compte bien continuer de m’investir encore un peu sur Windows Terminal car c’est passionnant. C’est ma première résolution.

Ensuite, il y a le CoreCLR (https://github.com/dotnet/runtime) qui est le runtime NET. Là je m’y mettre à fond car c’est une partie de mon avenir qui se joue la dessus. Je vais apprendre et potasser la bête pour bien comprendre comment ça marche. L’archive fait 99MB et unzipped ça fait 777MB. C’est énorme mais bon, y a les tests unitaire & co mais bon le code C++ fait environ une taille de 76MB sans les tests. Autant vous dire que c’est énorme de chez énorme. OK Windows fait 1 GB de source code mais la on parle juste du folder Windows\NET Framework mscoree.dll et compagnie… avec les DLL de la BCL system.xxx. & co. J’en ai pour 3 mois à naviguer, explorer et comprendre le code. C’est ma seconde résolution. Ensuite, je tente l’Issue… Faut que je me trouve un truc facile au début, un FIXME ou TODO basic pour rentrer dedans.

Ensuite il y a le code de Windows via le NDA Shared Source Initiative et là, c’est mon kiffe régulier : lire le code source de Windows. Pour ceux qui ne connaissent pas le C++, c’est l’occasion de s’y mettre. Achetez mon livre « Aide-Mémoire C++ » et demandez à avoir accès au code source de Windows et admirez la qualité du code des Ingénieurs Windows. J’ai énormément de respect pour le code de Windows. Depuis que j’ai mis la main sur le leak Windows NT4 et Windows 2000 (2 GB de source code) dans les années 2000/2002, j’ai passé de nombreuses heures à étudier ce code. Le kernel, les dlls RTL NTUser & co, le Shell, le File Explorer. C’est un roman de Star Wars en 350 Volumes. C’est beau. C’est complexe mais à la fois subtile et organisé. Putain, c’est bon ! C’est pour cela que je voue une admiration sans faille à Bill Gates. Windows est un fleuron de technologies. OK des fois c’est du bon vieux C/C++ mais ça marche vite et bien.

Quand j’ai découvert Windows Internals (7th edition Part 16th Edition Part 16th Edition Part 2). dans les années 2000, j’ai vu la vierge car cela m’a aidé à comprendre les sources Windows puis quand j’ai découvert les Windows Protocols (https://docs.microsoft.com/en-us/openspecs/protocols/ms-protocolslp/9a3ae8a2-02e5-4d05-874a-b3551405d8f9), ça a été le graal. Quand j’étais au Services en 2017, j’ai été surpris, les gens ne connaissent pas ça. La culture du NET fait que les gens sont très peu cultivés sur Windows alors que c’est le fleuron de la companie. OK, maintenant y a Azure mais bon Azure c’est Windows Server et Service Fabric et tout ça c’est Windows. Je fais abstraction de la partie Linux… Chaque Microsoftie devrait se voir offrir le livrer Windows Internals pour son arrivée dans l’entreprise !

Bref vous l’aurez compris, mon objectif c’est de bosser pour Corp. J’y travaille. Je vais trouver un moyen de tirer mon épingle du jeu via GitHub et mes relations avec l’équipe Visual C++ aux US. Mon pote Simon Brand est bien advocate C++ et vie pourtant à Edinburg, UK. La France c’est très spécial… Le C++ est limité. Les entreprises pour Services font, pour le développement avec les Technologies Microsoft, du C# / NET.

Bonne Année à toutes les copines.

Bises à mon mentor EricV. Bises à EricMitt. Bises à Alain.

Bises à Agnes , ma Directrice de Projet HEXV2 de OBS en 2006…. On se marrait bien avec GGray, PCP, Nicolas. Je suis toujours en relation avec les ex-collègues de OBS pour qui on devait remplacer leur système Linux (700.000) BAL POP/IMAP par Exchange Server via HMC… On se revoit régulièrement autour d’une bière avec Gael Roualland, le petit génie de OBS qui nous donnait du fil à retordre et ses potes de l’époque. Depuis que je suis passé aussi à Debian Linux et Ubuntu (C++ oblige), ils m’acceptent mais me chambrent en me disant que Microsoft est mon meilleur ennemi façon je t’aime moi non plus. Ils me disent de tout plaquer de builder que sur Linux et que j’aurais plus de succès qu’avec Microsoft… Je ne suis pas d’accord. 25 ans de C++ Microsoft, ça ne s’abandonne pas, au contraire, ça se monnaie. Et quand on aime, on ne compte pas ses efforts.

Christophe | www.christophepichaud.com

Le code source de Windows (C++)

Windows est fait en C/C++.

A partir de là, on peut rentrer dans le détail. Les plus jeunes pourraient penser que Windows utilise NET mais il n’en ai rien. La lutte entre l’ancienne Windows Division et la Developer Division n’est pas terminée. Pour ceux qui veulent des détails, voici l’article qu’il faut lire:

https://arstechnica.com/information-technology/2011/06/windows-8-for-software-developers-the-longhorn-dream-reborn/

Windows est entièrement fait en C/C++ avec une légère précision:

  • le kernel est fait en C
  • le reste est fait en C++

Pourquoi ?

Pour Microsoft et ce depuis 25 ans, le C++ c’est naturel, c’est l’électricité. On veut faire un logiciel, un produit, on utilise C++. Microsoft fait 95% de ses produits en C++ car c’est fiable, robuste, puissant et rapide.

En tant que MVP, j’ai signé avec Microsoft un NDA pour avoir accès au code source de Windows 10 et Windows Server 2019. le code est clean, truffé de C++ Moderne et ce n’est pas près de s’arrêter.

C++ renaissance dixit Channel 9. https://channel9.msdn.com/Shows/Going+Deep/Craig-Symonds-and-Mohsen-Agsen-C-Renaissance

Avec l’avènement des technologies dites productives comme NET ou Java, les légendes urbaines se multiplient. Windows fait en NET, Linux en Java… Des foutaises ! Linux est faite en C/C++. Windows est fait en C/C++. Le reste c’est de la littérature.

Les grands logiciels sont faits en C++ ! Vive C++ !

J’étudie le code de Windows depuis 2001 date à laquelle j’ai mis la main sur le leak de Windows NT4 puis en 2003 sur le leak de Windows 2000. 2GB de source code, la mine d’or. Puis j’ai eu accès au Windows Research Kernel XP et Windows Server 2003. j’ai rebuildé le kernel et monté une VM Windows Server 2003. Génial!

Windows Research Kernel était une initiative pour les universités qui faisaient des cours sur les systèmes d’exploitation. Fabuleux. Et livré avec Windows Internals, la bible.

Le job de mes rêves : Développeur Windows chez Corp. Mais bon je suis français, faut pas rêver ! 🙂

Développer comme un pro en France, c’est possible

En tant que développeur C/C++/NET et plus généralement Microsoft, il est possible de participer à des projets open-source tout en restant en France. Il n’y a pas besoin de s’expatrier pour participer à des projets complexes. Exemple:

  • Windows Terminal
  • Microsoft NET CoreCLR
  • Microsoft NET CoreFx
  • Windows UI

Le portail GitHub.com et sa section Microsoft contient des dizaines de projets. De plus, il existe ailleurs de nombreux autres projets open-source de classe internationale comme :

  • Google Chromium
  • Mozilla Firefox

Il y a de quoi étudier et contribuer. Vous allez me dire, ah oui mais il faut du temps pour rentrer dedans ! Ben oui, tout à un prix.

Dans le cadre de mon partenariat avec Programmez, je vais essayer de faire un ou deux articles sur les contributions open-source de ce style. Pour mon MVP, le plus important pour moi est de creuser le projet Microsoft NET CoreCLR. Pour Microsoft c’est un projet important et cela peut permettre d’avoir une bonne visibilité de contribuer. Il y a des étapes à franchir pour NET et la roadmap va nous mener de NET Core 3 à NET 5.0 en 2021. Il va y avoir des évolutions.

L’avantage des projets open-source C++ tient dans le fait que les librairies third-party ne sont jamais deprecated. Les projet grandissent et avancent. Il n’y a pas de Marketing qui impose telle ou telle feature ou telle lib qui change tout. Le langage ISO C++ évolue, la STL évolue mais les fondamentaux sont toujours là. Le style “Modern C++” s’est imposé partout et c’est super pro.

En comparaison dans le monde C#/NET, avant il n’y avait pas Linq, avant il n’y avait pas async/await. Quand vous regardez le code des nouveaux projets .NET, c’est n’importe quoi avec leur async/await. Le Marketing a essayé de nous faire croire que async/await était la panacé car ça exploitait mieux la batterie. C’est une arnaque intellectuelle.

Rappel sur cette arnaque: Pour vendre des tablettes Surface sous ARM, Microsoft nous explique qu’il faut économiser la batterie et que les programmes actuels consomment trop de CPU donc de batterie et que la solution c’est WinRT et les API async. Moralité, on nous bride la possibilité de faire du Win32 en ARM. On a vu le succès de l’effet. Pas de tablettes à la vente, fiasco de WinRT. Ensuite, on nous dit disponibilité que des applications du store mais pas C++. Donc il n’y a que des applications de misère… Résultat: Le fiasco, again. Ensuite on ouvre à Win32. Trop tard, le store et WinRT sont à la ramasse. L’utilisation des API WinRT est de 2% dans les applications Windows. WinRT étant un subset des API Win32 qui n’apportent rien et qui est async/await avec un modèle d’état fini mêlé de threading et de blocage qui est pénible à utiliser et qui ne résout en rien l’usage de la batterie. Oui pour les programmes de bourrin en C# mal écrit, ça peut poser problème mais pour les vrai développeurs C++, on sait ce qu’on fait, on n’a pas besoin de créer un thread à chaque fonction. On sait faire pipi sans en foutre partout sur la cuvette !

Moralité, les petits jeunes y croient et développe de la m…. en barre. Ils créent des fonctions qui créées 3 strings qui se battent en duel et retourne une Task et la méthode est marquée async/await ! C’est n’importe quoi. La programmation C#, c’est devenu un truc très bizzard. Au niveau de la plateforme, les CoreFX et le CoreCLR c’est nickel mais les développeurs C#/NET sont instables. Ils utilisent les nouveautés du langage a chaque nouvelles évolutions, il changent de librairies de bases tous les ans, un coup c’est ADO.NET, un coup c’est Dapper, un coup c’est EF, un coup c’est EF Core ; ils se laissent balader par le Marketing et ne réfléchissent pas par eux-mêmes. Ils font du code jetable qui est réécrit à chaque changement de framework ou de Visual Studio. Y a rien de pérenne. Bref, la roadmap NET va secouer le cocotier j’espère. A croire que ce n’est pas assez technique et compliqué. Il sont besoin ce complexifier les choses. Je vois énormément de développeurs C# qui sont frustrés car il n’y a rien à optimiser en C# ou si peu. Il sont sur une boite noire. Ils ne voit pas l’OS, le processeur. Il ont un Framework et ils jouent avec. Venez faire du C/C++, chez nous on build on the metal, on n’a pas besoin de complexifier le code pour se rendre intéressant.

Pour bien mener sa barque en développement C#/NET, il ne faut pas écouter le marketing et se poser les bonnes questions:

  • ais-je besoin de cette Nème nouvelle fonctionnalité du langage C#
  • ais-je besoin de mettre mon logiciel en risque pour utiliser la dernière libraire à la mode ?
  • qu’elle est l’intérêt de mettre à niveau ces satanés paquets Nuget qui sont tous plus incompatibles les uns que les autres avec leur dépendances foireuses ?
  • est-ce utilise que je mette le doigt dans le monde UWP quand on sait le succès (c’est de l’humour) que cela a ?
  • on me dit que l’avenir c’est le cloud ? Dois-je tout casser et tout réécrire ?
  • j’ai une interface UI faite en WinForms ; on me dit de passer à WPF ; ça casse tout. Dois-je y passer ?
  • j’ai une application UI WinForms ou WPF qui fonctionne nickel. On me dit que Angular c’est la mode ; dois-je y passer ? Angular c’est du TS/JS.

Pour toutes ces questions, il faut s’entourer de gens d’expériences qui sauront pour éviter les pièges. Il faut des experts en développement logiciel : des Architectes.

Le développement logiciel, c’est un métier.

Applications: Managed vs Native

Disclaimer: cet article n’engage pas le point de vue de mon employeur ou de Microsoft. Je travaille dans le monde du Services Microsoft, je fais du développement .NET/C# et C++, des audits, de la formation ; je contribue en C/C++ à Windows, mais je ne fais pas de Java. Question de principes.

Les années 2000 ont vu l’explosion des langages dit “Managed” comme Java ou NET. Leurs caractéristiques sont les suivantes:

  • Productivité accrue
  • Compilation du code en un langage intermédiaire (bytecode ou MSIL) avec des méta-data
  • Langage dérivé de C++
  • Environnement d’exécution securisé sous forme de machine virtuelle qui emet du code à la volée (JIT ou Just In Time Compilation) à partir du bytecode ou du MSIL quelque soit l’architecture matérielle, l’OS ou le processeur
  • Suppression automatique de la mémoire allouée (Garbage Collector)
  • Framework (super boite à outils) qui contient des packages pour coder l’accès aux données, les Web Services, les structures de données, la crypto, la sécurité, l’UI, le support XML, JSON, etc.

Ces systèmes “managed” existent depuis 20 ans environ et ont bati leur réputation en dénigrant les langages traditionnels à base de compilation native qui ciblent une architecture matérielle ou processeur ou OS distinct.

L’application “Managed” est par nature “safe et secure” car le code ne peut être modifié par une main extérieure. La langage contient des exceptions et le code est déterministe et le code intermédiaire généré contient des met-data et checksum qui assurent que le code généré est sécurisé.

Comparé au code C++ qui était pointé du doigt (car code majoritairement utilisé par les développeurs dans les années 90-2000) qui permettait d’être attaqué par buffer overflow, etc. Le message était le suivant: C++ est unsafe et unsecure. Venez faire du Java/.NET à la place.

Pour bien charger la mule, on ne parle plus de code compilé ou code C/C++ mais de code “Unmanaged”. C’est une escroquerie intellectuelle. On n’est pas ici pour se raconter des histoires: C’est complètement faux de dire qu’un code C/C++ est unsafe et unsecure. L’OS est fait avec ! le Shell, etc.

Ces systèmes Managed ont expliqué qu’il n’y aurait jamais de virus fait avec. Avec le recul, on s’aperçoit qu’il n’y a jamais eu autant de logiciels malveillants faits avec ses technologies car très faciles à utiliser pour coder de la socket bas niveau par exemple, faire des outils d’attaque DOS.

Revenons au comparatif de fonctionnalités pour un code “Unmanaged”:

  • Compilation du code C++ en assembleur optimisé (code pour pipelines parallèles et code vectorisé, support des instructions étendues pour les processeurs Intel ou AMD) => “Power and Performance”
  • Support des APIs de l’OS hôte : accès illimité aux API du système d’exploitation
  • Gestion automatique de la mémoire en C++ Moderne (C++11) via les smart pointers
  • Code syntaxiquement compatible à 90% avec Java ou C# en C++ Moderne

La vérité du terrain: Regardons la liste des applications que nous faisons tourner au quotidien sur nos PC par exemple:

  • Windows, Linux: OS en C/C++.
  • Suite Office: Word, Excel, Outlook, PowerPoint : C/C++
  • Outils: 7zip, Adobe reader, Chrome, VLC : C/C++

Bref, les vrais logiciels sont faits en C/C++. Pourquoi ? Parce que c’est rapide, fiable et que l’expérience utilisateur est maximum. Je fais une action, le logiciel répond immédiatement.

N’avez vous jamais eu la frustration de clicker dans une application et d’attendre 3 secondes avant que cela répondent…. ?

Le monde du mobile a revu l’essence du monde Unmanaged car les devices ont un petit processeur, peu de mémoire et peu de stockage. Et là, l’utilisateur veut de la performance et du répondant. Une application qui met 30 secondes à se lancer est swappée rapidement. Le mobile a besoin de traiter les images de la caméra, par exemple, il lui faut du natif ! Pas le choix…

Quel est le bilan des systèmes du “Managed” depuis 2000 ?

Java a sorti son épingle du jeu et est massivement utilisé sur les systèmes Linux comme Red Hat. De la guerre .NET/Java, il est clair que Microsoft n’a pas su gagné le combat. D’une part en interne, Microsoft a une relation schizophrène avec .NET, Microsoft propose la technologie mais ne fait pas ses logiciels avec. Microsoft fait 95% de ses logiciels en C/C++ avec la stack C++ Moderne.

Vous allez me dire oui mais pour les entreprises ? OK, dans le monde du Services, les sociétés Gold Partners font du .NET. Mais les systèmes d’informations faits en NET sont rares comparés aux SI Java. Les entreprises réservent leurs applications d’entrée gamme aux technologies Windows et .NET mais dès qu’il faut attaquer le coeur de métier, aller sur les gros serveurs Linux ou Unux, Java est utilisé. Microsoft a du mal à se faire une place dans les grosses sociétés pour le SI stratégique. OK on vend des WS en .NET, un peu de SQL Server à droite à gauche, du SharePoint, mais ça reste de taille moyenne en général. Microsoft est le choix des petits et moyens systèmes. Oui, cela fait des milliers de clients mais de petites structures. Quelques appz clients lourds mais pas de SI stratégiques… Microsoft perse dans les entreprises avec Windows Server, Active Directory, la suite Office, la messagerie mais à l’époque du Web, le discours du développement Microsoft est très flou. On nous parle de .NET Framework 5.0, de .NET Core 3.0 Preview 6 , de .NET Standard 2.2, c’est très flou et assez compliqué…Dans le monde des services public, Java est utilisé massivement. Dans les banques, c’est 50/50 avantage Java.

Avec le cloud, la donne change un peu… On peut héberger pleins de petits serveurs et la guerre n’est plus Java./NET mais Web/JS vs le reste du monde.

Dossier .NET Core 3 pour Programmez de Juin 2019

La communauté des NET Azure Rangers contribue activement au dossier NET Core 3 de programmez de Juin 2019. En théorie, on partirait sur les bases suivantes:

  • Hamza : C# 8
  • Jean-Pierre : Support WinForms et WPF
  • Cédric M. : EF Core
  • Christophe P : ASP.NET Core
  • Christophe P : XAML Islands

Les NET Azure Rangers participent aussi sur 2 autres articles:

  • Laurent G. : Serverless
  • Jean-Nicolas B. : SQL Server, les indexes

A suivre…

Anniversaire de Cédric Michel

Happy B, Cédric…

void hb()
{
    std::vector<std::string> Rangers = {
        "[MVP Developer Technologies] Anthony Giretti <anthony.giretti@gmail.com>",
        "[MVP Azure] Cédric GEORGEOT <cgeorgeot@e-novatic.fr>",
        "Cédric TUMELAIRE <tumelaire@gmail.com>",
        "Eva Delord <eva.delord@gmail.com>",
        "François Merand <fmerand@hotmail.fr>",
        "Jean Noel GERARD <jeannoel.gerard@prymarys.com>",
        "Jean - Baptiste Bron <diveandbytes@gmail.com>",
        "Keelan CLECH <keelan.clech@gmail.com>",
        "Michel Foucault <mmarsu@gmail.com>",
        "Alexis Delee <alexisdelee@protonmail.com>",
        "[MVP FoxProx] Frédéric Steczycki <frederic@steczycki.net>",
        "Guilhem Mares <g.mares@live.fr>",
        "Jean - Nicolas Berger <jnberger@sqlserver.fr>",
        "Jean - Remy Durafour <jr.durafour + dotnetrangers@gmail.com>",
        "[MVP Azure] Laurent Grangeau <laurent.Grangeau@gmail.com>",
        "Louis GERARD <contact@lgerard.com>",
        "Jean - Pierre Gervasoni <jean.pierre.gervasoni@gmail.com>",
        "Hamza Azzouz <hamza_azzouz@outlook.com>",
        "Alain Metge <alain.metge@hotmail.fr>",
        "Cédric Michel <cedric.michel@outlook.be>",
        "[MVP Azure] Cédric Leblond <c.leblond@libertysurf.fr >",
        "[MVP Azure] Cédric Derue <cedric.derue@gmail.com>",
        "[MVP Developer Technologies] Christophe Pichaud <christophepichaud@hotmail.com>"
        };

    std::for_each(Rangers.begin(), Rangers.end(), [](const std::string& ranger) {
        std::cout << "Happy B. une fois, Cédric Michel from " << ranger << std::endl;
    });
}

Retour d’expérience sur C++ & Containers

Pour le compte d’un Gold Partner, j’ai passé un an ou presque sur une vitrine pour Azure. Il s’agissait de mettre en œuvre un cache NoSQL pour des applications ASP.NET MVC.

L’histoire commence avec la récupération de sources C++, le code d’une base de données non terminée sur laquelle je devais voir si on pouvait en tirer quelque chose… Apres quelques tentatives d’incursion dans la bête, j’en arrive a la conclusion que le code est spaghetti et cochon et que y a rien a reprendre si ce n’est le moteur de stockage. Or il se trouve que c’est une lib open-source nommée OpenLDAP-LMDB. C’est une lib Linux qui est en fait un filesystem en mémoire…

Je décide de porter cette lib sous Windows sous forme de DLL.

Ensuite, mon patron veut que l’on fasse bonne figure auprès de Microsoft car on est à la ramasse sur Azure… On réfléchie et on décide qu’on va faire des containers Windows et exposer le service de stockage comme une base NoSQL en tant que concurrent direct de DocumentDB, MongoDB, etc.

En 6 mois, je développe le service C++ Windows qui contient le web server, le service Web REST API JSON qui sert le cache, le binding .NET P/Invoke sur la DLL C et la structure de container et sa registry sur Azure. Je fais quelques articles pour Programmez sur le sujet et voilà, nous avons redoré notre blason auprès de Microsoft. Nous sommes Azure compatible.

Cette expérience C++ Docker sous Azure et très enrichissante. Pour mon patron, avec un CIR et surtout pour moi en connaissance Azure… La prochaine étape consiste à pousser cela sur le Market Place Azure.

Pour la petite histoire j’ai migré le service C++ REST SDK en C# NET avec System.Web. Ça marche aussi. Ca consomme plus de mémoire, c’est pas du C++ mais c’est aussi robuste… 😊.

Prochaine étape, migration sous .Net Core et container Linux. Stay tuned.

 

MVP Summit 2019

Le MVP Summit s’est tenu à Redmond, Seattle, WA, USA sur le campus de Microsoft.

Les informations de cette conférence sont confidentielles et font l’objet d’un NDA donc nous ne pouvons rien partager par contre les informations sont presque déjà toutes présentes sur les blogs Microsoft… Il faut fouiller et lire entre les lignes dans les blogs suivants :

  • Microsoft .NET Core et .NETFx
  • Azure
  • Visual Studio 2019
  • Visual C++

MVP SUMMIT 2019

Download image: HERE