Unit Test 05: Test Edilebilir Yazılım Nasıl Geliştirilir?
“Unit Test” yazı dizisinin bir önceki yazısında kaliteli unit test nasıl yazılır konusunu incelemiştik. Bu yazıda da test edilebilir yazılımlar nasıl tasarlanır sorusuna cevap arayacağız.
Unit Test 04: Kaliteli Unit Test Nasıl Yazılır?
“Unit Test” yazı dizisinin bir önceki yazısında neden unit test yazarız sorusuna cevaplar arayıp unit testlerin faydalarına değinmiştik. İkna olduysak artık test yazmaya başlayabiliriz. Peki unit test nasıl yazılmalı? Unit test yazarken nelere dikkat etmeliyiz? Unit testlerimizin kaliteli, faydalı ve amaca yönelik olması için takip etmemiz gereken kurallar nelerdir? Bu yazıda da konunun bu boyutunu ele alıyor olacağız.
Unit Test 03: Neden Unit Test Yazarız?
“Unit Test” yazı dizisinin bir önceki yazısında unit test ve diğer test çeşitlerini birbirinden ayıran temel farkları incelemiştik. Bu yazıda neden unit test yazmalıyız sorusuna cevap arayacağız. Bu soruya bulduğumuz cevaplar bize aslında unit test yazmanın faydalarını anlatıyor olacak.
Unit Test 02: Unit Test'in Diğer Test Çeşitlerinden Farkları Nedir?
“Unit Test” yazı dizisinin bir önceki yazısında unit test nedir kısaca onu incelemiştik. Şimdi diğer bazı test çeşitleri nelerdir ve unit testleri diğer test çeşitlerinden ayıran temel özellikler nelerdir bunları inceleyeceğiz.
Unit Test 01: Unit Test Nedir?
Yazılımcılar ikiye ayrılır. Unit test yazanlar ve unit test yazmayanlar. Bazen vakit yok deriz, bazen zor gelir, bazen proje/kod test yazmaya uygun değil deriz. Unit test yazmak istemediğimizde bu saydıklarım gibi çok fazla miktarda bahaneler üretebiliriz ve üretebileceğimiz bahanelerin de hemen hemen hepsini daha önce başkalarından da duymuşuzdur. Bu yazı dizisinde unit test konusu ile ilgili birçok soruya cevaplar arayarak kaliteli yazılım geliştirme basamaklarından birkaç tanesini hep birlikte tırmanmaya çalışacağız.
Gradle: Spring Boot & Angular Uygulamalarını Birlikte Build Edelim
Yeni bir projeye başlamanın en sıkıcı maddelerinden birisi de projeyi oluşturup her projede kullandığımız basmakalıp (boilerplate) kodları yazmaktır. Build aracını (maven, gradle, vs) seçmek, bağımlılıkları build aracına eklemek, kullanılan frameworklerin (spring, angular, vs) konfigürasyonlarının yapılması gibi her projede tekrar tekrar yaptığımız işler vardır ve bir kişi o işi yapıp projeyi repository’ye atmazsa ekibin geri kalanı projede yazılım geliştirmeye başlayamaz. Genellikle bu işlem varolan bir projeyi kopyalayıp içinde yeni projeye lazım olmayan ne var ne yok silmek şeklinde yapılsa da bazen yeni bir proje yapısını gerektiren durumlar oluşabilir. 2018 yılında backend için Spring Boot ve frontend için Angular framework’lerini kullanmaya karar verdiğimizde ekip için bu yeni bir proje yapısıydı ve biraz araştırıp bu iki arkadaşı bir arada kullanmanın proje için en uygun yolunu bulmam gerekmişti. O günden beri ekip olarak birçok projede kullandığımız bu proje yapısını sıfırdan bir proje oluşturarak anlatmaya çalışacağım.
Dağıtık Uygulamada Büyük Veri Okumak
2020 senesi içerisinde Inomera‘da Telekom sektörü için geliştirdiğimiz devasa bir projeyi başarıyla canlıya aldık. Oldukça güncel teknolojiler kullandığımız ve mikroservis mimarisi ile geliştirdiğimiz bu sistem Kubernetes ortamı üzerinde çalışmakta. Bu yazıda bu sistemde yaklaşık 22 milyon satır kullanıcı verisini veritabanından okuyup dağıtık bir cache Map’ine dolduran küçük bir mikroserviste uyguladığımız dağıtık veri okuma yöntemini anlatmaya çalışacağım.
Daha Tatlı Bir Git Log
git log
, Git versiyon kontrol sisteminde oluşturulmuş
commit geçmişini tarihsel olarak sondan başa doğru sırasıyla
konsola yazan bir Git komutudur.
Tek başına kullanıldığında oldukça sıkıcı bir görünüme sahip olan
git log
komutunu birkaç parametre ile daha tatlı bir hale getirebiliyoruz.
Git Commit Mesajı Nasıl Yazılmalı
Kaynak kodda yaptığımız bir değişikliği versiyon kontrol sistemine kaydederken yapmamız gereken en önemli maddelerden bir tanesi bu değişikliği iyi yazılmış bir mesaj ile açıklamaktır. Peki iyi bir commit mesajını diğerlerinden ayıran özellikler nelerdir? Bu yazıda dünya genelinde kabul görmüş bazı standartları göreceğiz.
Thread Local Nedir?
Bu yazıda Java dünyasında sıkça kullanıldığına
veya bahsedildiğine şahit olduğumuz ThreadLocal
sınıfını inceleyeceğiz.
ThreadLocal
sınıfı belirlediğimiz nesnelerin sadece aynı thread tarafından erişilebilir olmasını sağlar.
Bu sayede thread safe olmayan nesneleri thread safe kullanmış oluruz.
Bir ThreadLocal
nesnesi içerisine yazdığımız nesne,
ThreadLocal
‘e yazan thread tarafından çalıştırılan tüm methodlar tarafından okunabilir olacaktır.
Gelin bu güçlü aracı avantajları ve dezavantajları ile inceleyelim.
Slf4j: MDC Kullanarak Log Takibini Kolaylaştırma
Bu yazıda birden fazla sınıfın log yazdığı bir log dosyasında spesifik bir HTTP isteğine ait logları nasıl buluruz sorusuna kolay uygulanabilir bir cevap paylaşacağım.
User Threads vs Daemon Threads
Java’da birden fazla görevi eş zamanlı gerçekleştirmek istediğimizde
Thread
‘lerden faydalanırız.
Yeni bir Thread
nesnesi oluşturur,
constructor argümanı olarak bir Runnable
geçeriz veya
Thread
sınıfını extend eder,
void run()
methodunu override ederiz.
Bunları daha önce yaptıysanız belki Thread
sınıfının üzerindeki
setDaemon(boolean on)
methodunu da farketmişsinizdir.
Peki kimdir bu daemon?