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

Echelle de l'Expertise

  1: C'est la première fois que j'entends ce mot, je suis à présent expert 2 : J'ai déjà entendu ce mot, je suis expert 3 : j'ai déjà entendu ce mot et j'ai une petite idée du concept derrière 4: Je connais ce mot et le concept derrière 5 : Je connais le mot et suis capable d'expliquer le concept 6 : Je connais le mot, capable d'expliquer le concept et je l'ai déjà vu en application 7 : J'ai déjà mis en œuvre le concept une fois (j'ai copié le code d'exemple et j'ai poussé en PRD) 8 : J'ai déjà mis en œuvre le concept une fois (j'ai modifié le code d'exemple et j'ai poussé en PRD) 9 : j'ai rédigé presque tout seul du code qui marchait 10 : j'ai copié collé des fonctionnalités avancées du système 11 : je suis capable d'expliquer le concept en détails 12 : je rédigé presque tout seul du code compliqué 14: expert 15 : expert experimenté 16 : enseignant 18 : contributeur au concept 1...

Terraform Lifecycle block

Lifecycle is a nested block that can appear within a resource block. The lifecycle block and its contents are meta-arguments, available for all resource blocks regardless of type. The arguments available within a lifecycle block are create_before_destroy, prevent_destroy, ignore_changes, and replace_triggered_by. Ressources: https://developer.hashicorp.com/terraform/tutorials/state/resource-lifecycle https://developer.hashicorp.com/terraform/language/meta-arguments/lifecycle https://dev.to/pwd9000/terraform-understanding-the-lifecycle-block-4f6e https://github.com/hashicorp/terraform-provider-azurerm/issues/4321

Azure Cosmos DB Fun Facts

How to Use Azure Cosmos DB Create an Azure Cosmos DB account (Account Name: A unique name to identify your Azure Cosmos account. The name can only contain lowercase letters, numbers, and the hyphen (-) character. It must be between 3-31 characters in length.) Add a database and a container Add data to your database You can use the Data Explorer in the Azure portal to create a database and container.With Azure Cosmos DB, you pay for the throughput you provision and the storage you consume on an hourly basis. Throughput must be provisioned to ensure that sufficient system resources are available for your Azure Cosmos database always. Consistency levels Azure Cosmos DB approaches data consistency as a spectrum of choices and offers five well-defined levels. You can configure the default consistency level on your Azure Cosmos DB account at any time. The default consistency level configured on your account applies to all Azure Cosmos DB databases and containers under that account. From stro...

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. Déclencheurs (triggers) Schedule The code segment that includes Run([TimerTrigger("0 */15 * * * 1-5") executes the function every 15 minutes from Monday to Friday.  The code segment that includes Run([TimerTrigger("*/15 * * * 0-4") is missing the second part, and it is not using the proper range for days of the week.  The code segment that includes Run([TimerTrigger("0 15 * * * ") executes only once at 15:00 (3 PM). The code segment that includes Run([TimerTrigger("* ...

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