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?
Bootstrap 4 - Grid Sistemi
Çoğunlukla yazılımcılar için ön yüz geliştirmek bir baş belası haline gelir. Asıl işimiz bu olmadığı için bir türlü derinlemesine öğrenmeyiz.
Eğer üzerinde çalışmakta olduğumuz proje geniş bir kitleye hitap etmiyorsa, arayüzünün başkalarından farklı ve daha şık olmaya ihtiyacı yoksa, önemli olan kullanılabilirlikse; ben genellikle Bootstrap üzerine geliştirilmiş ücretsiz bir tema bulup özelliklerimizi onun üzerine entegre ediyorum. Böylece ön yüz geliştirmedeki zamandan ettiğimiz tasarruf ile daha sağlam bir backend geliştirebiliyoruz.
Docker ile WordPress Kurulumu ve Https
Yakın zamanda blogumda bir takım radikal değişiklikler yaptım. Bunlardan en önemlisi wordpress altyapısına geçmem oldu. Yaklaşık 12-13 yıldır kullandığım Blogger hizmetinden ayrılmanın burukluğu ile bu kadar özgür olduğum bir platformda blog yazmanın sevinci birbirine karıştı. Hem wordpress ile yazı yazmaya elim alışsın hem de wordpress’e geçiş tecrübelerimi paylaşayım amacıyla bu yazıyı yazıyorum.
Data Abstraction Nedir, Nerede Bulunur?
Yazılım geliştirme prensiplerinin en önemlilerinden birisi olan abstraction, yani soyutlama, kendi içinde iki çeşide ayrılıyor. Bunlar procedural abstraction ve data abstraction. Bu yazıda kısaca data abstraction‘ın ne olduğundan bahsetmeye çalışacağım.
Öncelikle abstraction ve encapsulation terimleri ne anlama geliyor ondan bahsetmek istiyorum çünkü bu terimler tanımları çok yakın olduğundan genellikle birbiri ile karıştırılıyorlar.
Visitor Design Pattern
Bu gece de çirkin kod yazmaktan bıkmış haldeyken kendime bir süredir temiz kod yazmak ile ilgili ahkam kesmediğimi hatırlattım. Hepimiz inheritance, polymorphism, abstraction, encapsulation gibi nesne tabanlı programlama konseptlerini geliştirdiğimiz projelerde bolca kullanıyoruz. Belki bir iş mülakatında sorsalar bunlar ne diye bülbül gibi anlatırız da. Peki yazılımın kalite çıtasını Allahuekber dağlarına kadar çıkartabilecek olan bu güçlü araçları yeterince doğru kullanabiliyor muyuz?
Adapter Pattern: Farklı Sistemler, Aynı Arayüz
Bir sistem geliştirirsiniz ve bu sistemin işlevini görebilmesi için başka sistemlere entegre olması gerekir. Bazen o kadar eski teknolojiler ile geliştirilmiş sistemlere entegre olmak zorundasınızdır ki, bu amaç için yazdığınız kod geliştirmekte olduğunuz projeye hiç yakışmaz, sürekli gözünüzü tırmalar. Özetle, elinizde başka bir sisteme ait bir interface vardır ve bu interface’in yapısı sizin projenizin yapısına uygun değildir.
Builder Pattern Kullanarak Daha Temiz Kod Yazmak
Yazılım geliştirirken sık sık onlarca parametre alan metodlar geliştirmek zorunda kalmışsınızdır. Eğer temiz kod yazma konusunda özen sahibiyseniz bu tarz metodlar yazmak sizi oldukça rahatsız etmiş ve zamanla çeşitli alternatif çözüm yolları edinmişsinizdir.
Bu yazıda bu soruna “Builder Pattern” kullanarak bir çözüm bulmaya çalışacağız. Bu yazıyı yazarken Uzi Landsmann‘ın blogunda yazdığı “Builder pattern with a twist” yazısından esinlendim. İngilizce ile aranız iyiyse o yazıyı da okumanızı tavsiye ederim.
Shell Scripts: Case Komutu
Linux Shell Script Geliştirmek diye başladığım yazı dizisinin
bir diğer yazısında daha birlikteyiz. if/elif/else
komutlarını sık sık kullanmaya başladığınızda farkedeceksiniz ki,
bir çok zaman tek bir değişkenin değerini kontrol ediyoruz.
Örneğin komut satırından gelen parametrenin değeri 1 ise şunu yap, 2 ise bunu yap, 3 ise başka birşey yap.
Böyle tek bir değişkeni kontrol etmemiz gerektiğinde if/elif/else
yazmak çok sıkıcı bir hale dönüşebiliyor.
Peki değişkenin ismini sadece bir kere yazsak ve alabileceği her değer için sadece çalışacak kodları söylesek?