C# etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
C# etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

21 Haziran 2020 Pazar

Sonarlint ile Refactoring

      S.A. Arkadaşlar,
      Bugünkü yazımız statik kod analizi yapan sonarqube alt yapısına bağlanan ve benzer kuralları işleten bir araç olan SonarLint'i inceleyeceğiz. SonarLint microsoft visual studio üzerine kurulan bir extention olup bunu rahatlıkla microsoft visual studio içinde kurabilir veya buradan da indirip kurabilirsiniz. Resmi sitesinde C# ile ilgili yaklaşık 390 kural görünmektedir, fakat biz sadece kendi karşılaştıklarımızı ele alacağız. Bunların bazılarını çözmek biraz daha kolay iken bazılarını çözmek ise biraz vakit alabiliyor. Tüm kurallar için ise buraya göz gezdirebilirsiniz. Karşılaştığım kuralları hangi kritere göre sıralamak konusunda çok düşündüm. En sonunda hata kodlarını küçükten büyüğe sıralamaya karar verdim. Bu yazıyı güncelle tutmaya özen gösterip karşılaştığımız hataları eklemeye devam edeceğiz.

23 Mayıs 2020 Cumartesi

C# 9.0 ile Gelen Yenilikler


    S.A. Arkadaşlar,
    Bugün C#'in en son yayımlanan sürümü olan 9.0 sürümünü ele alacağız. Yapılan yenilikler nelerdir, neler değişmiş onları anlatmaya çalışacağız. Daha önceki sürümlerde olduğu gibi Microsoft yine çok güzel özellikler geliştirmiş, fakat bu sefer veri şekillerini kısaltmak(okunurluk) ve veri şekillerinin değişmezliğine(performans) odaklanmışlar. Bunun yanı sıra fonksiyonel programlamayı anımsatan değişiklikler de var. Tüm bunları elimizden geldiğince incelemeye çalıştık.

23 Nisan 2020 Perşembe

Type-Safe Configuration (IOptions - IOptionsMonitor - .Net Core)

      S.A. Arkadaşlar,
      Bugün .NET Core ile uğraşanların genelde bildiği ve kullandığı bir konuyu ele alacağız. Bu konu her ne kadar bilinse de, birlikte bir miktar daha ileriye taşımaya çalışalım.
Bazı değişken bilgilerini genellikle .config dosyası içinde tutmaktayız. Bu dosyayı çoğu zaman development ortamı için ayrı, test ortamında ayrı ve production ortamlarında ayrı tutmaktayız. Tabi ki bu örnekler çoğaltılabilir. Asıl aktarmak isteğim mevzu, config değerleri string olarak tutulduğundan dolayı hataya açık bir durum oluşmaktadır zaman zaman. Gelin hep birlikte bunu type-safe bir yapıya taşıyalım.

16 Nisan 2020 Perşembe

Health Check and Monitoring - .Net Core ( Servislerin Durumunu Kontrol Etme ve Görüntüleme)

     S.A. Arkadaşlar,
     Bugün .net core 2.2 ile gelen ve 3.1 ile olgunlaşan bir kavramı ele alacağız. Dağıtık bir yapınız var ve bunun içinde onlarca belki yüzlerce servis bulunmaktadır. Her bir servis kendi içinde çalışacağı için de hepsini kontrol etmek zor belki imkansız olacaktır. İşte bu ihtiyaçtan meydana çıkmış ve tüm servislerin durumlarını kontrol eden yapıya Health Check denmektedir. Bu yapıyı kullanıcı ara yüzü ile birlikte ayağa kaldıracağız. Hazırsak başlayalım.

11 Nisan 2020 Cumartesi

Birim(Unit) Test ile Veri Kümeleri - xUnit (Inline - Member - Class Data)

    S.A. Arkadaşlar,
    Bugün unit/xunit (birim) test ile bir konuya odaklanmak istedim. Bu konunun amacı, birim test nedir? Neden yazılır? Faydaları nelerdir? vb. gibi bilgiler olmayacak. Odaklanacağımız konu birim testler de çoğu zaman olması gereken girdi değerleri üzerine yoğunlaşacağız. Bazen bir kereye mahsus bir sabit değer, bazen de birden fazla ve farklı değerler girdi ihtiyacı olabilmektedir. Şimdi adım adım olması gerekene doğru ilerlemeye çalışalım, buyurun birlikte ilerleyelim..

6 Şubat 2020 Perşembe

Operatörlere Aşırı Yükleme (implicit - explicit)

    S.A. Arkadaşlar,
    Bugün operatörlere aşırı yükleme işlemine göz atacağız. Metodlara aşırı yükleme ile benzer mantıkta olsa da farklı işlemlerdir. Genel kullanımı +, - gibi operatörlere aşırı yükleme yapılır. Normal koşullarda 2 nesne toplanamaz, fakat biz operatörlere aşırı yükleme yaparak artık bu operatörleri istediğimiz gibi kullanabiliyoruz. Burada implicit and explicit diye 2 tür dönüştürme vardır. Implicit aritmetik işlemleri içerir ve veri kaybı olmadığından cast işlemi de gerektirmez. Explicit ise cast işlemi gerektirir, veri kaybı olma ihtimali de vardır.

17 Ekim 2019 Perşembe

Birbirine Benzeyen 3 İfade: const, static ve readonly

     S.a. Arkadaşlar,
     Bugün herkesin bildiği ama aslında aralarında farklar bulunan 3 keywordü inceleyeceğiz: const, readonly ve static. Bu yazının çıkış noktası mülakatta bana sorulan readonly ile const arasındaki fark nedir sorusuydu. Buna ek olarak bugün const olarak tanımladığım değişkeni değiştirmek istediğimde (.net core - vs - debug mode) kodu tekrardan derlememi istedi, değişkeni daha sonra readonly yaptığımda buna gerek kalmadığını gördüm. Böylece bu konuda güzel bir toparlama yazısı yazmak istedim. Hazırsak başlayalım.

8 Eylül 2019 Pazar

Tip Kontrolü (Type Checking)

       S.a. Arkadaşlar,
       Uzun süren bir aradan sonra nihayet gelebildim. İnsan yazmaya alışınca yazmadan edemiyor artık. Ben de not aldığım konulardan biri olan tip kontrolünü ( Type Checking) ele almaya çalışacağım. typeof, GetType, is ve as kavramların inceleyeceğiz. Şahsım adına kullandığım yapıların sadece kullanımını değil; nerelerde ve ne zaman kullanılır, alternatifleri nelerdir gibi soruların cevaplarını bulmaya çalışıyorum. Ortaya çıkan şeyleri de elimden geldiğince paylaşmak istiyorum. Bu da bu şekilde orta çıkan bir yazı oldu.  Bu kısa girişten sonra yazıya başlayalım.

26 Kasım 2018 Pazartesi

Mvc'de Filtrleme İşlemleri - Attribute Kullanımı - AOP

    S.a. Arkadaşlar,
    Bugünkü yazımız üye yetki kontrolü ile ilgili olacaktır. Bir sisteminiz var ve bu burada bulunan sayfalara herkes giriş yaptığında girebilecek mi, yoksa bazı sayfalara sadece belirlediğiniz kullanıcı tipleri mi erişebilecektir. Eğer böyle bir sisteminiz varsa doğru yere geldiniz. Burada her metodu ayrı ayrı kod yazıp kontrol etmeyeceğiz. Burada devreye attribute'leri devreye sokacağız.

11 Ekim 2018 Perşembe

MVC Sürecinde Karşılaştığım Problemler

     S.a. Arkadaşlar,
     Bir süredir üzerinde çalıştığım projede kullandığımız ASP MVC konusunda yaşadığım kendimce ciddi problemleri ve onları nasıl hangi kaynaklardan çözdüğümü kısaca bir toparlamak istedim. Zaman zaman çok zorlandığım anlar da oldu. Hem lazım olursa tekrardan dönüp bakmak açısından hem de belki başkalarına yardımcı olur düşüncesiyle bu yazıyı yazıyorum.

18 Eylül 2018 Salı

Canlı Destek Entegrasyonu (MVC)

     S.a. Arkadaşlar,
     Üzerinde çalıştığım proje için canlı destek ihtiyacı doğdu. Bu yüzden ben de bir ön araştırma yaptım. İlk başlarda farklı bir kaç araç buldum. Bunlardan bazıları tawk, ondestek, zopim oldu. Bu araçların 3ü de güzel olan araçlar fakat uğraşılması gerekebilir. Biraz daha araştırdığımda bu iş için SingnalR diye gerçek zamanlı uygulamalar geliştirmek için kullanılan bir framework olduğunu öğrendim. Araştırmaya devam ettiğimde Github'dan bununla ilgili güzel bir proje buldum  ve o proje üzerinden devam etmek istiyorum.

6 Ağustos 2018 Pazartesi

İngilizce Kelime Getirme - Oxford API (Dictionary, not Translation)

    S.a. Arkadaşlar,
    Geçenlerde sözlükle ilgili bir api arıyordum. Sürekli translate tarzı apiler ve componentlerle karşılaştım, fakat benim aradığım kendi dilinde çeviri yapan , bildiğimiz ilk okullarda kelime baktığımız sözlüktü. Önce bunun Türkçe için olanını aradım, onla ilgili tam bir sonuca varamadım, ama daha sonra tekrar bakacağım, bunla ilgili yardımlarını beklerim, ama yabancı diller için bir çok api denedim, en sonunda oxford apide karar kıldım. Onun da bir sürü dil seçeneği vardı ama C# yoktu. Bugünkü konumuz bununla ilgili.

7 Mayıs 2018 Pazartesi

Delegation Dictionary ile Sınıfları Koşulsuz Çağırma

     S.a. Arkadaşlar,
     Bugünkü yazacağımız konu, kodun düzenlenmesiyle ilgilidir. Farklı sınıfları çağırırken if veya switch case yapısı yerine nasıl bir yöntem izleyebiliriz ona bakacağız. Öncelikle switch case yapısını inceleyeceğiz, daha sonra reflection ile düzenleme yapacağız, en son da delegate dictionary ile kodu düzenleyeceğiz. Aradaki farkı gördükten sonra istediğiniz yapıyı kullanmak size kalmış, fakat sanki tercihiniz belli gibi olacak. Hazırsak başlayalım.

25 Mart 2018 Pazar

Null-coalescing (? ?), Ternary (? :), Monadic Null-Checking (?)

      S.a. Arkadaşlar,
     Bugün yazacağımız konu soru işaretinin(?) ne işe yaradığı ile ilgili olacaktır. Aslında basitçe bir if-else görevi görmektedir, fakat bununla birlikte bazı işlerde gayet kısa işlemler de yaptırıyor bize. Biz bugün ? , ? : , ?? işleçlerini ele almayı deneyeceğiz. Şimdi başlayalım.

19 Mart 2018 Pazartesi

SFTP ile Dosya Gönderme

      S.a. Arkadaşlar,
      Bugün C# ile stfp ile dosya göndermeyi işleyeceğiz. Daha önce Java'da yazmış olduğum bir blog yazım vardı konuyla ilgili, fakat şuan C# ile örnek yazacağız. Java ile yazdığımız ftp ile ilgiliyken  örneğimiz güvenli ftp manasındaki sftp olacak. Burada dahili kütüphane yeterli gelmiyor, bu nedenle nuget'ten ssh.net indirdik. Eğer siz de hazırsanız başlayabiliriz :)

11 Mart 2018 Pazar

App.config Dosyasından Okuma (Github Projesi)

     S.a. Arkadaşlar,
     Bugün C# ile app.config dosyasından okuma yapacağız. Daha sonra okuduğumuz verileri kullanacağımız bir projemiz var. Onu kısaca açıklayacağız. Bu projeyi github üzerinden yayımladık, daha sonra buraya eklemeler yapmayı düşünüyoruz. Şimdi başlayalım. 

11 Şubat 2018 Pazar

Visual Studio ile Github Bağlantısı

       S.a. Arkadaşlar,
Bugün Visiual Studio 15 ile oluşturduğumuz projeyi githuba yüklemeyi yapacağız. Normal koşullarda studio içinde github eklentisi gelmiyor. Bunu kendimiz manuel olarak eklememiz gerekiyor. Nuget içerisine baktım fakat orada yoktu. Küçük bir araştırma ile .vsix dosyasını indirdim. Siz de buradan indirebilirsiniz. Daha sonra ileri ileri deyip işlemi tamamlayabilirsiniz. Bu arada studio kapalı olursa iyi olur. Şimdi kurulumu yaptıktan sonra artık studioyu açabiliriz.

9 Ocak 2018 Salı

Foreach ve Linq Kullanımı

      S.a. Arkadaşlar,
      Bir önceki yazıda belirttiğim gibi bu aralar kodun kalitesi ile ilgili ufak tefek şeyler okumaya çalışıyorum. foreach kullanımın ile ilgili örneklere göz atarken karşıma burada sorulan bir soru çıktı. Soru şöyle :
foreach (var item in items)
{
    if (item.Field != null)
        continue;

    if (item.State != ItemStates.Deleted)
        continue;
    
     //kod
}

foreach (var item in items.Where(i => i.Field != null && i.State != ItemStates.Deleted))
{
    //kod
}