Mert Özen Her Satırda Daha İleri

Blog

Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.

Seriler
153 yazı bulundu #backend
C# String'ler: Interpolation, StringBuilder ve Türkçe I Tuzağı
Backend SERİ 05

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

7 Kas 2026 8 dk 10
C# Sayılar ve Aritmetik: int, double, decimal ve Overflow
Backend SERİ 04

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

7 Kas 2026 8 dk 8
C# Değişkenler ve Veri Tipleri: var, const ve Literal'ler
Backend SERİ 03

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.

7 Kas 2026 9 dk 11
C# Kurulum ve İlk Program: dotnet new console ve Proje Dosyası
Backend SERİ 02

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.

7 Kas 2026 8 dk 7
C# ve .NET Nedir? Dil, Platform ve Sürümler
Backend SERİ 01

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.

7 Kas 2026 9 dk 9
Dapper.AOT: Source Generator, Interceptor'lar ve Native AOT ile Dapper
Veritabanı SERİ 16

Dapper.AOT: Source Generator, Interceptor'lar ve Native AOT ile Dapper

PublishAot açıldığında vanilla Dapper neden dotnet run'da bile patlar? Dapper.AOT 1.1.0 ile kodu build sırasında üretmek: [module: DapperAot], InterceptorsNamespaces, üretilen interceptor kodu, Native AOT publish ve 49,8 ms'den 4,3 ms'ye başlangıç süresi, attribute ile type handler, DAP analyzer'ları ve QueryMultiple gibi kısıtlar.

6 Kas 2026 10 dk 18
Dapper Performansı: Query Cache, GetRowParser ve SqlBulkCopy, COPY ile Bulk Alternatifleri
Veritabanı SERİ 15

Dapper Performansı: Query Cache, GetRowParser ve SqlBulkCopy, COPY ile Bulk Alternatifleri

Dapper'ın query cache'i neyi saklar ve neden testere dişi çizer, CommandFlags.NoCache ne zaman gerekir, GetRowParser ile satır başına tip seçmek ve Dapper'da olmayan bulk işlemler için SQLite'ta transaction, SQL Server'da SqlBulkCopy, PostgreSQL'de COPY — hepsi gerçek ölçümlerle, sonunda BenchmarkDotNet.

6 Kas 2026 11 dk 15
Dapper ile Dinamik SQL: SqlBuilder, Güvenli Filtreler ve Contrib, Dommel, Dapper Plus
Veritabanı SERİ 14

Dapper ile Dinamik SQL: SqlBuilder, Güvenli Filtreler ve Contrib, Dommel, Dapper Plus

Opsiyonel filtreleri string birleştirmeden kurmak: Dapper.SqlBuilder'ın template ve placeholder mantığı, aynı builder'la sayım ve sayfa sorgusu, whitelist ile güvenli sıralama ve OrWhere'in sürprizi. Ardından Dapper.Contrib, Rainbow, Dommel ve ticari Dapper Plus için Kasım 2026 itibarıyla dengeli bir değerlendirme.

6 Kas 2026 10 dk 16
Dapper ve SQL Server: TVP, ANSI String'ler, {=literal} ve Parameter Sniffing
Veritabanı SERİ 13

Dapper ve SQL Server: TVP, ANSI String'ler, {=literal} ve Parameter Sniffing

Doğru sonuç veren ama index'i baştan sona tarayan sorgular: nvarchar parameter'ların varchar kolonlarda yarattığı implicit conversion, Dapper'ın 4000 karakter kuralı, IN listelerinin plan çoğaltması, table-valued parameter'lar, {=literal} ile filtered index ve parameter sniffing — hepsi gerçek logical reads ölçümleriyle.

6 Kas 2026 11 dk 20
Dapper ile Stored Procedure: Output, Return Value ve 2.1.11'in Otomatik Algılama Tuzağı
Veritabanı SERİ 12

Dapper ile Stored Procedure: Output, Return Value ve 2.1.11'in Otomatik Algılama Tuzağı

SQLite'ta stored procedure olmadığı için docker'daki SQL Server'a geçiyoruz: CommandType.StoredProcedure, DynamicParameters ile output ve return value, SET NOCOUNT'un Execute'a etkisi, 2.1.11'den beri tek kelimelik command'ların procedure sanılması ve PostgreSQL'de function ile procedure farkı.

6 Kas 2026 10 dk 13
Dapper Type Handler'ları ve Custom Mapping: Guid, DateTimeOffset ve CustomPropertyTypeMap
Veritabanı SERİ 11

Dapper Type Handler'ları ve Custom Mapping: Guid, DateTimeOffset ve CustomPropertyTypeMap

SQLite'ta Guid, DateTimeOffset ve TimeSpan okurken Dapper neden patlar? SqlMapper.TypeHandler<T> ile tercüman yazıyor, SetValue'nun neden çağrılmadığını kaynak koddan görüyor, DateOnly/TimeOnly'nin 2.1.86 hikâyesini ve CustomPropertyTypeMap ile kolon mapping'ini ele alıyoruz.

6 Kas 2026 11 dk 16
Dapper ile Buffered ve Unbuffered Okuma: Büyük Result Set'leri Akıtmak
Veritabanı SERİ 10

Dapper ile Buffered ve Unbuffered Okuma: Büyük Result Set'leri Akıtmak

Dapper'da buffered ve unbuffered okumanın farkını ölçüyoruz: unbuffered sonucun her enumerate'te sorguyu yeniden çalıştırdığını, bir milyon row'da 191 MB'a karşı sıfıra yakın belleği, QueryUnbufferedAsync ile IAsyncEnumerable stream'ini, WithCancellation ile iptali ve dispose edilmiş connection tuzağını gerçek çıktılarla görüyoruz.

6 Kas 2026 9 dk 10
Blog Haritası