İlkay İlknur

Hoşgeldiniz

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

Source Generatorlara Nasıl Unit Test Yazarız?

Haziran 07, 2021
Bugüne kadar source generatorlar ile ilgili pek çok konuyu blogdaki yazılarda işledik. Hatta geçtiğimiz haftalarda bu konuyla ilgili Teknolot topluluğunun düzenlediği meetupta da detaylı olarak source generatorları anlatma fırsatı yakaladım. Gerek o meetupta gerekse blogdaki yazılarda bahsetmek isteyip ancak fırsat bulamadığım tek bir konu kaldı. O da source generatorlara nasıl unit test yazarız k...
Devamı →

.NET 6 Preview 4 İle Beraber System.Text.Json API'larına Gelen Yenilikler

Mayıs 25, 2021
Herkese Selamlar, Blogda bundan önce yazdığım yazılarda System.Text.Json API'larından uzun uzun bahsettim. Eğer yazıları görmediyseniz ve okumak isterseniz aşağıdaki linkleri kullanabilirsiniz. .NET Core'da JSON API'ları: https://www.ilkayilknur.com/net-coreda-json-apilari System.Text.Json API'larına .NET 5.0 İle Beraber Gelen Yenilikler: https://www.ilkayilknur.com/system-text-json-apilarin...
Devamı →

Teknolot Source Generatorlara Bakış Meetupı

Mayıs 25, 2021
Herkese Selamlar, 24 Mayıs 2021 tarihinde sevgili Teknolot'un YouTube kanalında Source Generatorlara Bakış başlıklı meetupda bir konuşma gerçekleştirdim. Meetup kaydına aşağıdan ulaşabilirsiniz. ...
Devamı →

.NET Uygulamalarında Trimming Kontrolü

Mayıs 10, 2021
Bundan önceki yazılarımdan birinde uygulamalarımızı yayınlarken kullanabileceğimiz opsiyonlardan bahsetmiştim. O yazıda .NET'in kurulu olmadığı yerlerde uygulamayı .NET runtime'ı ile birlikte deploy etme opsiyonunun deployment paketlerini ne kadar büyüttüğünü de görmüştük. Bu sorunun çözümü olarak uygulamanızı publish ederken sadece uygulamanın kullandığı ve uygulamanın çalışması için gerekli olan...
Devamı →

Params Kullanımında Oluşabilecek Allocationlar

Nisan 18, 2021
Bir önceki yazıda foreach döngülerinde oluşabilecek olan allocationlardan bahsetmiştik. Bu yazıda ise params kullanımını incelleyeceğiz ve oluşabilecek allocationlara bakacağız. Değişen sayıda parametre kabul eden metotlarda params keywordünü kullanıp, metodu çağıranların parametreleri kolay bir şekilde sırayla geçmesini sağlayabiliyoruz. Örnek yapmamız gerekirse... public void DoWork(params s...
Devamı →

Foreach Döngülerinde Oluşabilecek Allocationlar

Nisan 11, 2021
Herkese Selamlar, Bu yazıda konumuz foreach döngülerinin oluşturabileceği allocationlar. Biraz ilginç bir konu. :) Konuya hemen basitçe giriş yapalım. Bir foreach döngüsü yazdığımızda yazdığımız kod compiler tarafından yaklaşık olarak aşağıdaki gibi dönüştürülür. Foreach Döngüsü List<int> Collection = new List<int>(); foreach (var item in Collection) { }  Çevrilmiş ha...
Devamı →

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ı →