Articles

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

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

C# Version 12

 C# 12 C# 12 intègre les nouvelles fonctionnalités suivantes. Vous pouvez essayer ces fonctionnalités à l’aide de la dernière version de  Visual Studio 2022  ou du  Kit de développement logiciel (SDK) .NET 8 . Constructeurs principaux Vous pouvez désormais créer des constructeurs principaux dans n’importe quel class et struct. Les constructeurs principaux ne sont plus limités aux types record. Les paramètres de constructeur principal se trouvent dans l’étendue de l’ensemble du corps de la classe. Pour garantir l’affectation définitive de tous les paramètres de constructeur principal, tous les constructeurs explicitement déclarés doivent appeler le constructeur principal à l’aide de la syntaxe this(). L’ajout d’un constructeur principal à class empêche le compilateur de déclarer un constructeur sans paramètre implicite. Dans struct, le constructeur sans paramètre implicite initialise tous les champs, notamment les paramètres de constructeur principal selon le modèle 0...

Les Types en Python

Les Types en Python Listes https://docs.python.org/fr/3/tutorial/datastructures.html Dans Python, on utilise des crochets [ ] pour indiquer une liste En particulier dans Python, vous pouvez aussi accéder aux éléments en sens inverse, en utilisant des nombres négatifs. Pour accéder au dernier élément de la liste, utilisez l’indice -1. Accédez aux caractères d’une chaîne comme un élément d’une liste Les indices fonctionnent aussi avec les chaînes de caractères ! En fait, les chaînes de caractères sont juste des listes de caractères. Chaque caractère correspond à un indice qui va de zéro à la longueur de la chaîne. append() remove() sort() : Le tri se fait alphabétiquement pour les listes de chaînes et numériquement pour les listes de nombres. pop() : Supprimez le premier élément de la liste grâce à la méthode pop. P.S.: pour supprimer un élément à un index donné, on écrit liste.pop(index) len(liste) Tuples Les tuples sont une autre structure de Python qui sert à enregistrer des donné...

Machine Learning

Le Machine Learning est à bien des égards le croisement de deux disciplines : la science des données et le génie logiciel. L’objectif du Machine Learning est l’utilisation des données pour créer un modèle prédictif pouvant être incorporé dans une application logicielle ou un service. Pour atteindre cet objectif, il faut une collaboration entre les experts en science des données qui explorent et préparent les données, avant de les utiliser pour entraîner un modèle Machine Learning, et les développeurs de logiciels qui intègrent les modèles dans des applications où ils servent à prédire de nouvelles valeurs de données (processus connu sous le nom d’inférence).L’idée fondamentale du Machine Learning est d’utiliser les données des observations passées pour prédire des résultats ou des valeurs inconnus. Machine learning supervisé Le Machine Learning supervisé est un terme général pour des algorithmes de Machine Learning dans lesquels les données d’apprentissage comprennent à la fois des va...