Skip to content

Instantly share code, notes, and snippets.

View bizouarn's full-sized avatar

Aymeric Bizouarn bizouarn

View GitHub Profile
@bizouarn
bizouarn / ToStringPropre.md
Last active July 16, 2025 15:02
Redéfinir ToString() proprement en .net

Redéfinir ToString() proprement en .net

Introduction

La méthode ToString() est une composante clé de l'écosystème .NET. Elle permet d’obtenir une représentation textuelle d’un objet. Bien que pratique pour l’affichage ou le débogage, sa redéfinition (override) est souvent mal utilisée : elle finit par porter une logique métier déguisée, compromettre la clarté du code et introduire des bugs subtils.

Dans ce document, on revient sur ce qu’est réellement ToString(), quand il est pertinent de la redéfinir et surtout quelles erreurs éviter.

1. ToString() n’est pas un getter métier

@bizouarn
bizouarn / ReadCredentialManagerToken.ps1
Last active July 15, 2025 06:41
Récupère un access_token en clair depuis le Credential Manager Windows
Install-Module -Name CredentialManager -Scope CurrentUser
if (-not $args[0]) {
Write-Error "Usage : ReadCredentialManagerToken.ps1 <NomDuCredential>"
exit 1
}
# Charge le credential
$credential = Get-StoredCredential -Target $args[0]
# Vérification
@bizouarn
bizouarn / CompressVMDK.md
Created May 15, 2025 13:08
Compression de disque virtuel VMware

Compression de disque virtuel VMware

Cette procédure permet d’optimiser la taille d’un disque virtuel avant archivage ou transfert, en utilisant VMware Workstation.

1. Réécrire l’espace libre avec des zéros (à l’intérieur de la VM Linux)

sudo dd if=/dev/zero of=/zerofile bs=1M
sudo rm /zerofile
sync
@bizouarn
bizouarn / DotnetOpenSourceEvolution.md
Last active April 8, 2025 06:16
L'Ére du "Tout Gratuit" Touche-t-elle à sa Fin dans l'Open Source .NET ? L'Ombre de l'IA Plane...

L'Ére du "Tout Gratuit" Touche-t-elle à sa Fin dans l'Open Source .NET ?

L'Ombre de l'IA Plane... 🤖

L'écosystème .NET est en pleine effervescence, et une onde de choc traverse la communauté : des piliers tels que MediatR et MassTransit annoncent une transition progressive vers des licences commerciales. Cette nouvelle, qui fait écho au modèle adopté par Prism par le passé, soulève une question fondamentale : l'âge d'or de l'open source entièrement gratuit est-il derrière nous ?

Avec des chiffres de téléchargement impressionnants (plus de 286 millions pour MediatR et 130 millions pour MassTransit), ces bibliothèques sont au cœur de nombreux projets .NET. Leur passage à un modèle payant n'est pas anodin et mérite une analyse approfondie.

MediatR et MassTransit : Un Tournant Nécessaire ?

L'annonce, bien que progressive pour MediatR, est plus concrète pour MassTransit, qui prévoit une sortie sous licence commerciale pour le premier trimestre 2026. Les raisons invoquées par les mainteneurs sont claire

@bizouarn
bizouarn / OverPass.md
Last active April 8, 2025 05:59
Synthèse sur le langage de requête Overpass QL

Synthèse sur le langage de requête Overpass QL

Introduction

Le langage Overpass QL est utilisé pour effectuer des requêtes sur la base de données OpenStreetMap. Ce langage permet de récupérer des objets géographiques en utilisant des critères spécifiques. Il est particulièrement utile pour extraire des données détaillées depuis les serveurs Overpass. (https://overpass-turbo.eu/)

Structure d'une requête

Une requête Overpass QL se structure de la manière suivante :

@bizouarn
bizouarn / Unsafe.Net.md
Last active March 31, 2025 13:41
Pourquoi le code unsafe existe-t-il ?

Code unsafe en C#

1. Pourquoi le code unsafe existe-t-il ?

Le mot-clé unsafe en C# permet de manipuler directement la mémoire à l'aide de pointeurs, ce qui est généralement interdit en programmation managée. Il existe pour :

  • Optimiser les performances : Accès direct à la mémoire peut être plus rapide dans certains cas.
  • Interopérabilité : Facilite l'intégration avec du code natif en C/C++.
  • Manipuler des structures mémoire spécifiques : Utile pour le traitement bas-niveau, comme les moteurs de jeu ou certaines applications système.
@bizouarn
bizouarn / InversionControle.md
Last active March 20, 2025 18:12
Inversion de Contrôle c'est quoi ?

Inversion de Contrôle (IoC)

Introduction

L'Inversion de Contrôle (IoC) est un principe de conception qui consiste à déléguer la gestion du flux de contrôle et de la création des objets à un conteneur ou framework, afin de réduire le couplage entre les composants d'une application.

Couplé au principe de DI, Cela permet de réduire le couplage entre les composants d'une application, améliorant ainsi la flexibilité et la testabilité du code.

Principe

@bizouarn
bizouarn / InjectionDépendances.md
Last active March 24, 2025 07:41
Pourquoi utiliser l'Injection de Dépendances ?

Injection de Dépendances (Dependency Injection - DI)

Introduction

L'injection de dépendances (DI) est un principe fondamental de l'architecture logicielle visant à découpler les composants d'une application. Elle permet de centraliser la gestion des dépendances en évitant la création d'instances directement dans les classes, améliorant ainsi la testabilité, la maintenabilité et la flexibilité du code.

Prérequis : Inversion de Contrôle (IoC)

Avant de comprendre pleinement l'injection de dépendances, il est essentiel de maîtriser le concept d'Inversion de Contrôle (IoC). IoC est un principe selon lequel le contrôle de la création des objets et de leur gestion de cycle de vie est transféré d'un programme à un conteneur externe. DI est l'une des implémentations de l'IoC, où les dépendances sont injectées dans une classe plutôt que créée en son sein. Comprendre IoC permet de mieux appréhender les mécanismes qui sous-tendent DI et

@bizouarn
bizouarn / BenchMarkBrushes.Net.md
Last active March 20, 2025 18:21
Benchmark qui compare l'instanciation d'un SolidColorBrush avec l'utilisation de l'instance statique Brushes.Red.

Benchmarking Brushes en .Net

Introduction

L'utilisation des objets graphiques en C# a un impact direct sur les performances et la gestion mémoire. Ce benchmark compare l'instanciation d'un SolidColorBrush avec l'utilisation de l'instance statique Brushes.Red.

Code du Benchmark

[ShortRunJob]
@bizouarn
bizouarn / MauvaisePratiqueIEnumerable.md
Last active July 3, 2025 21:32
Pourquoi éviter de stocker des IEnumerable<T> en propriété d’objet en C# ?

Pourquoi éviter de stocker des IEnumerable<T> en propriété d’objet C# ?

Introduction

L’interface IEnumerable<T> est très utilisée en C# pour représenter des collections, mais l’utiliser comme propriété d’un objet est une erreur courante, notamment chez les développeurs moins expérimentés. Cela peut entraîner des comportements inattendus, des problèmes de performance et compliquer le débogage. Voici pourquoi cette pratique est à éviter et quelles alternatives préférer.

1. Problème d'évaluation différée (Deferred Execution)

IEnumerable<T> ne stocke pas de données, mais représente une séquence qui s’évalue à la demande. Si la source sous-jacente change ou devient indisponible, cela peut provoquer des erreurs.

Exemple :