Articles

Conception logicielle en 2024

On commence par les bases de la conception logicielle, avec les Principes SOLID  et notamment le Principe de Responsabilité Unique . De nombreux  modèles de conception  existent et il faut savoir reconnaitre leur cas d'utilisation et les utiliser à bon escient, les  Modèles de Conception Comportementaux , les  Modèles de Conception de Construction  et les  Modèles de Conception Structuraux . La  Conception Pilotée par le Domaine (DDD)  d'une solution fondée sur une  Architecture Hexagonale est aujourd'hui l'approche recommandée. En utilisant de vieux modèles comme le  Modèle EBI , le  CQRS , le  Modèle d'Approvisionnement en Evènements , l' Inversion de Contrôle (IoC) et l'Injection des Dépendances (DI) . La  Méthode ITIL et Gestion des Incidents  n'ont pas toutes été oubliées par les décideurs. Développement Le développement piloté par les tests (TDD)  reste une approche fondamentalement positive. Le...

Azure Functions

Les fonctions Azure permettent d'utiliser la technologie sans-serveur pour déployer facilement des applications sans-état. Elles peuvent être déclenchées par l'intermédiaire de différents types de déclencheurs; comme une requête HTTP, une modification de données dans un conteneur, ou encore un message. Les fonctions sont associées à un Plan de Service, qui détermine les capacités techniques du système. Le code de la fonction sera lui même déployé dans un compte de stockage Azure. Sécurité d'accès des fonctions Parlons d’abord des niveaux d’autorisation dans les fonctions Azure. Le premier paramètre de l'attribut HttpTrigger dans la fonction Azure est le type d'autorisation requis pour appeler la fonction. AuthorizationLevel est une énumération et peut prendre les valeurs suivantes.  Anonyme : aucune authentification requise Fonction : Autorisation au niveau de la fonction Utilisateur : autorisation au niveau de l'utilisateur Système : Autorisation au niveau de l...

.NET9 Release Notes

La version 9 de .NET a été lancée. .NET 9, le successeur de .NET 8 , met l’accent sur les applications sur les applications natives Cloud et les performances. Il sera pris en charge pendant 18 mois en tant que version avec prise en charge à terme standard (STS). Mise à jour du .csproj <PropertyGroup>   <TargetFramework> net9.0 </TargetFramework> </PropertyGroup> Azure DevOps If you use Azure YAML CI/CD pipelines, you may need to download the .NET 9 SDK onto your Azure agent. This is particularly important if .NET 9 has just been released as the Azure agent may not have the .NET 9 SDK installed. You can do that by including this task in your YAML pipeline: - task : UseDotNet@2 name : 'UseDotNet9SDK' displayName : '.NET 9 SDK install' inputs : packageType : sdk version : 9.x installationPath : $(Agent.ToolsDirectory)/dotnet Ressources https://learn.microsoft.com/fr-fr/dotnet/core/whats-new/dotnet-9/overview https://lear...

LoRaWAN

Introduction LoRa est l’acronyme de Long Range (Grande portée). c’est une technologie radio (sans fil) dans laquelle un émetteur à très faible consommation envoie de petits paquets de données à faible vitesse (0.3kb/s à 5,5kb/s) à un récepteur situé à grande distance. LoRaWAN est un protocole de télécommunication permettant la communication à bas débit, par radio. Il est utilisé pour des objets à faible consommation électrique communiquant selon la technologie LoRa et connectés à l’Internet via des passerelles, participant ainsi à l’Internet des objets (IoT). ( source Wikipedia ) Ressources https://www.framboise314.fr/une-passerelle-lorawan-pour-le-raspberry-pi-chez-elecrow/ https://fr.wikipedia.org/wiki/LoRaWAN https://www.linuxembedded.fr/2017/12/introduction-a-lora/ https://www.elecrow.com/thinknode-g1-indoor-8-channels-lorawan-gateway-powered-by-sx1302-chip.html https://en.wikipedia.org/wiki/Calypso_%28electronic_ticketing_system https://github.com/ElDavoo/Mifare-Windows-Tool-Rebor...

Pratiques Nuget C#

Votre projet étant amené a grandir et à se complexifier autant mettre en place des mesures qui supportent la mise à l'échelle. Gestion unifiée des packages Gestion des packages au niveau de la solution Utilisez un fichier Directory.Build.props pour inclure des références à la majorité des packages dans les projets. Les analyseurs de code seront systématiquement présents. Pour les projets de test, ajoutez votre pack de packages par exemple : xUnit nSubstitute nSubstitute.Analyzers FluentAssertions FluentAssertions.Analyzers Ainsi les nouveaux projets référenceront automatiquement les packages requis. Chaque projet pourra bien sur référencer directement des packages spécifiques. <!--Add Test Packages in Test projects.--> <ItemGroup Condition="$(IsTestProject) == 'true'"> <PackageReference Include="FluentAssertions" /> <!--Microsoft--> <PackageReference Include="Microsoft.NET.Test.Sdk" /> <Packag...

Les Types en Solidity

  Types de données Documentation : https://docs.soliditylang.org/en/v0.8.3/types.html Solidity est un langage typé de manière statique, les types de données doivent être spécifiés. Types de Valeur Booléens De type bool ou les valeurs possibles sont des constantes, true ou false. Entiers Le mot-clé int :*désigne un entier signé et uint un entier non signé. La taille de l'entier peut être spécifiée par incrément de 8 (uint8, uint16...) jusqu'a 256. int et uint sont des alias qui font respectivement référence à int256 et uint256. Obtenir un nombre aléatoire : https://ethereum.stackexchange.com/questions/191/how-can-i-securely-generate-a-random-number-in-my-smart-contract Normalement, il n'y a pas d’intérêt à utiliser ces sous-types car Solidity réserve 256 bits de stockage indépendamment de la taille du uint. Par exemple, utiliser un uint8 à la place d'un uint (uint256) ne vous fera pas gagner de gas. Mais il y a une exception : dans les struct. Si vous avez plusieurs uint...

C# Version 10

  C# 10 C# 10 ajoute les fonctionnalités et améliorations suivantes au langage C# : Structures d’enregistrement Améliorations des types de structure Gestionnaires de chaînes interpolées Déclaration d’espace de noms de portée de fichier Modèles de propriété étendus Améliorations des expressions lambda Autoriser  les chaînes interpolées Les types d’enregistrements peuvent sceller Assignation définie améliorée Autoriser l’assignation et la déclaration dans la même déconstruction Autoriser  l’attribut sur les méthodes Attribut CallerArgumentExpression Pragma amélioré C# 10 est pris en charge sur  .net 6 . Pour plus d’informations, consultez contrôle de  version du langage C# .

C# Version 11

  C# 11 Littéraux de chaîne bruts Les  littéraux de chaîne brute  constituent un nouveau format pour les littéraux de chaîne. Ils peuvent contenir du texte arbitraire, y compris des espaces blancs, de nouvelles lignes, des guillemets incorporés et d’autres caractères spéciaux, sans nécessiter de séquences d’échappement. Un littéral de chaîne brute commence par au moins trois caractères guillemets doubles ("""). Il se termine par le même nombre de guillemets doubles. En règle générale, il utilise trois guillemets doubles sur une seule ligne pour démarrer la chaîne, et trois guillemets doubles sur une ligne distincte pour la terminer. Les nouvelles lignes qui suivent le guillemet d’ouverture et qui précèdent le guillemet de clôture ne sont pas incluses dans le contenu final : string longMessage = """ This is a long message. It has several lines. Some are indented more than others. Some should start at the first colum...