Blog
Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.
C# String'ler: Interpolation, StringBuilder ve Türkçe I Tuzağı
C#'ta string'in değiştirilemez oluşu, interpolation ve biçim belirteçleri, escape sequence'lar ve verbatim string, sık kullanılan method'lar, StringBuilder ile ölçülmüş bellek farkı, StringComparison ve Türkçe I/ı/İ tuzağı.
C# Sayılar ve Aritmetik: int, double, decimal ve Overflow
C#'ta tamsayı bölmesi ve kalan, int, long, double ve decimal arasında seçim, 0.1 + 0.2'nin neden 0.3 etmediği, para için decimal, overflow ve checked, sıfıra bölme, Math class'ı ve banker's rounding tuzağı.
C# Değişkenler ve Veri Tipleri: var, const ve Literal'ler
C#'ta statik tipli değişkenler, hazır tiplerin boyutları ve aralıkları, var'ın gerçekte ne yaptığı, literal sonekleri ve derleyici hataları, const ve C# 10'un sabit interpolated string'i, varsayılan değerler ve .NET isimlendirme gelenekleri.
C# Kurulum ve İlk Program: dotnet new console ve Proje Dosyası
.NET 10 SDK'yı kurmak, dotnet new console ile ilk proje, Main'i compiler'ın ürettiği top-level statements, csproj'daki TargetFramework, ImplicitUsings, Nullable ve LangVersion, dotnet run ve build, IDE seçimi ve ilk derleyici hatasını okumak.
C# ve .NET Nedir? Dil, Platform ve Sürümler
C# ile .NET arasındaki çizgi: compiler, IL ve JIT, CLR, BCL, SDK ile runtime farkı, .NET Framework'ten .NET'e geçiş, LTS/STS destek takvimi, C# ve .NET sürüm eşleşmesi ve yedi serilik C# ailesinin kurgusu.
.NET 10 Yenilikleri: ASP.NET Core'da AddValidation, OpenAPI 3.1 ve Server-Sent Events
.NET 10 LTS ile minimal API'de AddValidation, OpenAPI 3.1 ve YAML, TypedResults.ServerSentEvents, System.Text.Json tabanlı JSON Patch, dotnet run app.cs, C# 14 ve cookie auth 401/403 gibi breaking change'ler.
.NET 9 Yenilikleri: ASP.NET Core'da Yerleşik OpenAPI, Scalar ve HybridCache
.NET 9 ile Swashbuckle template'ten çıktı: AddOpenApi/MapOpenApi, transformer'lar, Scalar ve Swagger UI, stampede korumalı HybridCache, TypedResults.InternalServerError, StatusCodeSelector, C# 13 ve 24 aylık STS desteği.
.NET 8 ile ASP.NET Core Yenilikleri: Keyed DI, IExceptionHandler, Identity API ve Native AOT
.NET 8 ile gelen keyed DI, IExceptionHandler, MapIdentityApi, ShortCircuit, TimeProvider ve Native AOT'u .NET 6 karşılaştırmasıyla anlatıyor; C# 12'ye, geçiş notlarına ve 10 Kasım 2026 destek bitişine bakıyoruz.
.NET 7 ile ASP.NET Core Yenilikleri: MapGroup, TypedResults, Rate Limiting ve Output Caching
.NET 7 ile gelen MapGroup, TypedResults, endpoint filter'lar, AddProblemDetails, rate limiting ve output caching'i .NET 6 karşılaştırmasıyla anlatıyor; C# 11 required members'a ve geçiş notlarına bakıyoruz.
Eski .NET Core 3.1 ve .NET 5 Projelerini Okumak: Startup.cs'ten .NET 6'ya Geçiş
.NET Core 3.1 ve .NET 5 dönemindeki Startup.cs, Generic Host ve UseRouting/UseEndpoints yapısını okuyup aynı ASP.NET Core API'yi adım adım .NET 6'ya taşıyoruz; System.Text.Json farkları ve tuzaklar dahil.
ASP.NET Core Web API'yi Docker'a Almak ve GitHub Actions ile CI/CD Kurmak
ASP.NET Core Web API'yi multi-stage Dockerfile ile container'a alıyoruz: dotnet publish, layer cache'i, .dockerignore, port ve environment ayarları; ardından GitHub Actions ile test edip imajı ghcr.io'ya gönderen bir CI/CD pipeline'ı kuruyoruz.
ASP.NET Core Web API'de Integration Test: WebApplicationFactory ile Uçtan Uca Test
WebApplicationFactory ile ASP.NET Core Web API'yi bellekte ayağa kaldırıp HTTP seviyesinde test ediyoruz: public partial class Program, SQLite in-memory ile veritabanı değiştirmek, Location ve ProblemDetails testleri, test izolasyonu.