31 Aralık 2020 Perşembe

Eleştiri mi Linç mi?

      S.A. Arkadaşlar,

      Beni az çok tanıyanlar bilir, teknik olmayan konular pek yazmıyorum. Bu benim bu tarzdaki belki de ikinci yazımdır. Dolaylı olarak da olsa pek  uzaklara gidemiyoruz. Başlıktan da anlaşıldığı üzere konu linç kültürü üzere olacaktır. Bu yazıyı yazmamı tetikleyen iki olaydan biri, Youtube'da karşılaştığım 45 dakikalık bir videonun altına bir arkadaş "bu nasıl video, tamamen vakit kaybı, böyle yapacaksan yapma kardeşim" diye yorumlara yazmış, diğeri ise interface ve abstract sınıfları birbirinden ayıramayan bir arkadaşın sorumlusu olarak içerik üreticilerinin tutulmasıdır. İçerik üreticiler olarak yarım yamalak bilgiler verdiğimizden veya daha çok göz önünde bulunmak amacıyla yazdığımız düşünüldüğü için bu arkadaş konuyu eksik anlamış.

Yaklaşımını Seç - WET mi DRY mi ?

    S.A. Arkadaşlar,

    Uzun süredir üzerine düşündüğüm bir konu olan bazı yaklaşımlardan bahsetmek ve bu konuda hem kendi fikirlerimi hem de konu üzerinde tartıştığımız arkadaşlarımın da fikirlerini toparlayıp paylaşmak istiyorum. Kıvılcımı çakan Osman Yavuz'a bu konuda özel bir teşekkür geçmeliyim. Birlikte bilgilerimizi paylaştığımız discord kanalımızda kendisi güzel bir soru sordu ve konu bu şekilde ortaya çıktı. Konuyu genelleştirmek gerekirse bir yazılım geliştirirken onu hangi ölçüde parçalara bölmenin doğru olacağı ile ilgiliydi. Aşağıya yazdıklarım tamamen kendi düşüncelerimdir. Bu konuda her türlü fikre açık olduğumu belirtmek isterim. Hazırsak başlayalım.

25 Kasım 2020 Çarşamba

C# Erişim Operatörleri ve İfadeleri

      S.A Arkadaşlar,

       Bugünkü yazımızın konusu C# ile erişim operatör ve ifadelerini ele alacağız. Aslına bakıldığında herkesin bildiği bir konu olmasına rağmen özellikle yeni sürümlerin gelmesiyle birlikte bu konularda eksik kaldığımız, kendimizi güncellemediğimiz ifadeler oluyor. Bu yüzden C#'in daha önceki sürümlerinde olan konulara kısaca değinip geçerken sonradan eklenen ya da daha az gördüğümüz operatör ve ifadelere daha fazla odaklanacağız.

20 Eylül 2020 Pazar

Benzer Tip, Fonksiyon, Nesne ve Anahtar Kelimeler

    S.A. Arkadaşlar,
    Bugün bir derleme yazısı ile karşınızda olacağız. Daha önce yazdığımız ne nedir, sonarlint ile kod analizi, yazılımcılar için mülakat soruları gibi derleme yazılarımız olmuştu. Bugün onlara yeni bir tanesini ekleyeceğiz. Diğer yazılarda olduğu gibi bunu da mümkün mertebe güncel tutmaya çalışacağız. Bugünkü yazımız birbirine benzeyen tip, fonksiyon, nesne ve keyword gibi yapıların aralarındaki bazı önemli farkları kısaca açıklamaya çalışacağız. Ayrıca her birinin sonunda konuyu daha ayrıntılı okuyabileceğiniz yazılar da koymaya gayret ettik. Hazırsak başlayalım...

5 Eylül 2020 Cumartesi

Void Metodları Test Etmek

    S.A. Arkadaşlar,
      Bugün yine unit(birim) test ile ilgili bir yazı ile karşınızdayım. Unit testlerden öyle hemen vazgeçmek ya da önemsememek mümkün değil. Zira birim testler çok daha kararlı kod geliştirmemize olanak sağlar hatta bizi SOLID yapılara zorlayan bir yanı da vardır...  

       Daha önce birim testlerle ilgili bir yazı kaleme almıştık, fakat o yazıda daha çok veri kümelerini incelemiştik, bu defa ise void olan metodların nasıl test edileceği üzerinde duracağız. Bunun için bazı yöntemler olsa da malesef void metodları test etmek için sınırlı seçeneklerimiz bulunuyor. Bu yüzden mümkün mertebe kodunuzu düzgün dizayn etmeniz ve test edilebilir metodlar yazmak giderek önem kazanıyor.

22 Ağustos 2020 Cumartesi

Action Func Predicate

    S.A. Arkadaşlar,

    Bugünkü yazımızda Action<T>, Func<TParam,TReturn> ve Predicate<T,bool> yapıları üzerinde durmak istiyoruz. Nedir, neden ve nasıl kullanılır gibi soruların cevabını arayacağız. Aralarında ne gibi farklılıklar ve benzerlikler olduğunu söyleyip yazıyı bitirmeyi düşünüyoruz.

30 Temmuz 2020 Perşembe

in ve out ile Generic Inteface Kullanımı

S.A. Arkadaşlar,
    Bugün generic interface kullanımını ilgilendiren bir yazıyı ele alacağız. Bu yazının çıkış noktası ise önceki yazımızda ele aldığım sonarlint’in verdiği uyarıları çözmek ile ilgiliydi. Burada karşılaştığım bu uyarıyı araştırırken güzel bilgiler öğrendim ve bunları bir yazıda toplamaya karar verdim. 

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.

18 Mayıs 2020 Pazartesi

Integration Test - (.Net Core - xUnit - Web Application Factory)

     S.A. Arkadaşlar,
     Bugün entegrasyon(integration) test konusuna odaklanacağız. Entegrasyon test, birim (unit) testten farklı olarak her bir metodu test etmekten ziyade metodların birbiriyle entegre çalışıp çalışmadığını kontrol eder. Örneğin, birim test yazarken bazı mock'lama objeleri kullanırız. Veri tabanını mock'layıp oradan doğru sonuç dönmüş gibi yaparız, ama entegrasyon test ile "mış" gibi yaptığımız şeyleri gerçekten yapıyoruz. Bunun için de alt yapımızı ayağa kaldırmamız gerekecek. Bunu nasıl mı yapacağız. Buyurun

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

30 Mart 2020 Pazartesi

Ne Nedir?

    S.A. Arkadaşlar,
    Evde sakince çalışabilmenin, sessiz bir ortamda düşünebilmenin dinginliği ile bu yazıyı yazıyorum. Çoğu zaman kendimce notlar alırım. Sonrasında zaman zaman dönüp tekrar bakıyorum notlarıma, eklemeler, düzenlemeler yaptıktan sonra, iyice olgunlaştığına kanaat getirdiğim an paylaşmaya özen gösteriyorum. Bu makalemde de araştırdığım ya da öğrenmeyi hedeflediğim konuları ele aldım. Herhangi bir sıralama bulunmuyor konularda. Eklemelere devam ederek bu makaleyi güncel tutmaya çalışacağım. Aşağıda ele aldığım konulara eklemeler yapmak isterseniz çok memnun olurum..

23 Şubat 2020 Pazar

SignalR Kullanımı (.Net Core - Angular)

     S.A. Arkadaşlar,
     Bugünkü yazımızda karşılaştığımız bir problemi ele alacağız. Bunun sonucunda bu problemin geçici çözümünü ve daha sonra nasıl daha doğru bir çözüme geçtiğimizi anlatacağım. Başlıktan da anlaşılacağı üzere konu web socket ile ilgilidir, biz de bu alt yapıyı kullanan SingalR kütüphanesini ele aldık. Buraya geçmeden önce başta uyguladığımız çözüm istemci tarafından sürekli olarak istek göndermekti, fakat bizim için geçici bir çözümdü, bunun yerine belirli bir sürede sürekli istemek atmak yerine, her hangi bir değişiklik olduğunda bunu tüm istemcilere göndermek olmalıydı ve biz bunu gerçekleştirdik.

16 Şubat 2020 Pazar

IQueryable - IEnumerable

     S.A. Arkadaşlar,
     Bugün birbirine benzeyen yapılarından IQueryable ve IEnumerable kavramlarını incelemeye çalışacağız. İki yapı aynı gibi dursa da birbirinden farkları var. Belki de en bariz olan farkı Burak Selim Hoca burada nokta atışı ile anlatmış, fakat ben genel olarak konuyu ele alıp bulduğum farkları derlemeye çalışacağım.

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.