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  Framework .NET (présentation)  est un cadre puissant

Meilleures 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 bit. Le compilateu

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

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