İlkay İlknur

Hoşgeldiniz

Bloga yeni yazı eklendiğinde haberdar olmak için RSS veya email bazlı servisi kullanabilirsiniz.

Source Generatorlar İçin Kod Üretim Opsiyonları

Mart 31, 2021
Blogda daha önce yazdığım yazıda source generatorların ne olduğundan ve nerelerde kullanılabileceğinden bahsetmiştim. Source generatorlardaki en sıkıntılı noktalardan biri aslında kod üretme kısmı. Özellikle yazdığınız source generator karmaşık bir hal aldığında işler biraz karışabiliyor. Bu yazıda source generator implemente ederken kullanabileceğimiz üç farklı kod üretim yöntemini inceleyeceğiz....
Devamı →

C# 8.0 - Default Interface Methods

Mart 23, 2021
Herkese Selamlar, Bu yazıda C# 8.0 ile beraber ile gelen default interface metotları özelliğini inceleyeceğiz. Bu özelliği incelemeden önce varolan interface yapısını da kısaca inceleyip aradaki farkları öyle görmemizde fayda var. Default metotların olmadığı yani C# 7.0 versiyonunda bir interface içerisinde tanımladığımız üyeler her zaman abstract ve public olma özelliğini taşıyordu. Örneğin, ...
Devamı →

MemoryStream'in Optimize Versiyonu RecyclableMemoryStream

Şubat 14, 2021
Gerek blogda performansla ilgili yazdığım yazılarda gerekse .NET Conf'ta yaptığım "Yüksek Performanslı Uygulama Geliştirme" oturumunda memory allocationları azaltmakla ilgili pek çok yöntemden bahsettim. Özellikle LOH(Large Object Heap) allocationları konusunda oldukça dikkatli olmamız gerektiğinden çünkü LOH'da yer kalmadığı durumlarda uygulamalarımızda full GC tetiklendiğinden ...
Devamı →

IAsyncEnumerable<T> İle Asenkron Streaming

Şubat 04, 2021
Bu yazıda .NET Core 3.0 ile beraber gelen, asenkron streaming yapmamıza olanak sağlayan IAsyncEnumerable&lt;T&gt; interface'ini inceleyeceğiz. Aslında bu interface'in senkron versiyonu olan IEnumerable&lt;T&gt; interface'ine çok da yabancı değiliz. Hatırlamak amacıyla ufak bir örnek yaparsak, public IEnumerable&lt;string&gt; ReadLines(string filePath) { using var stream = File.OpenRead(fil...
Devamı →

.NET Runtime Eventlerine In-Process ve Out Of Process Erişmek

Ocak 24, 2021
Bir önceki yazıda .NET içerisindeki diagnostic araçlarından bahsetmiştik. Bu araçlardan biri olan dotnet-trace ile uygulamalarımızın tracelerini toplayıp sonrasında da bu traceleri çeşitli araçlarla analiz edip runtime eventlerini ve daha pek çok şeyi analiz edebiliyorduk. Bu yazıda ise işi biraz daha ileri götürüp bu runtime eventlerini uygulamalarımız içerisinde nasıl işleyebileceğimizi ve kendi...
Devamı →

.NET Uygulamalarında Kullanabileceğimiz Diagnostics Araçları

Ocak 17, 2021
Bu yazıda .NET uygulamalarımızı monitör ederken, memory ve performans problemeleriyle karşılaştığımızda kullanabileceğimiz diagnostics araçlarını inceleyeceğiz. Daha öncesinde yine bu kapsamda dotnet-counters isimli aracı blogda yazmıştım. Dilerseniz o yazıyı da okuyabilirsiniz. dotnet-trace dotnet-trace CLI toolu ile çalışan .NET uygulamaların tracelerini toplayabiliyoruz. Bu tool cross-platfor...
Devamı →

C# 8.0 İle Beraber Daha Kolay İndeksleme ve Slicing

Ocak 10, 2021
Herkese Selamlar, Bu yazıda C# 8.0 ile beraber gelen ve çok az bilindiğini düşündüğüm indexing ve slicing operasyonlarında kullanabileceğimiz bir özelliği inceleyeceğiz. Tabi öncelikle programlama dili tarafındaki kolaylıklara geçmeden önce .NET Standart 2.1 ve .NET Core 3.0 ile beraber gelen System.Index ve System.Range tiplerine bir bakalım. public readonly struct Index : IEquatable&lt;Index...
Devamı →

Lambda Expressionlarda Allocationlardan Kaçınmak

Aralık 19, 2020
Bir süre önce Twitter ve LinkedIn hesabımda CLR Heap Allocation Analyzer isimli bir Visual Studio extensionından bahsetmiştim. Bu extensionı kullanan çoğu kişi farkında olmadan yaptığı bazı allocationlardan kolayca kurtulabilirken özellikle tek bir noktada takılıp kalabiliyorlar. O da lambda expresionların neden olduğu allocationlar. Oldukça sinsice gerçekleşen bir allocation olduğu için farkedilm...
Devamı →

Source Generatorlar İle Kod Yazan Kod Yazma

Aralık 08, 2020
Bu yazıda beni de uzun zamandan beri heyecanlandıran bir özelliği inceleyeceğiz. C# 9.0 ile beraber gelen programlama dili yeniliklerinin yanında belki de yeterli ilgiyi görmeyen ama uzun vadede pek çok şeyi değiştirebilecek olan özelliklerden biri source generatorlar. Source generatorlar bizim derleme zamanı sırasında varolan kodları analiz edip yeni kodlar yaratmamızı ve bunları da derlemeye dah...
Devamı →

System.Text.Json API'larına .NET 5.0 İle Beraber Gelen Yenilikler

Ekim 25, 2020
Önceki yazılarımdan birinde .NET Core 3.0 ile beraber gelen yeni System.Text.Json API'larından bahsetmiştim. O yazıyı, bu API'ların mevcutta kullandığımız Newtonsoft.Json kütüphanesine göre oldukça yeni olduğundan bu nedenle de özellik bakımından arada farklar olabileceğinden, .NET 5.0 ile beraber bu farkın biraz daha kapanacağından bahsederek sonlandırmıştım. Bu yazının konusu da System.Text.Json...
Devamı →