Ali Özgür


Coding and other software development stuff

Git ile Tarihi Yeniden Yazmak

Commitleri derleyip toplamak

Uzun süre üzerinde çalışılan git branch’leri (long lived branch) için doğal olarak çok fazla sayıda commit yapılıyor. Commit sayısının fazla olmasının temel nedenleri

  1. Gün sonunda veya güvenli anlarda yapılan değişikliği kalıcı hale getirmek olabilir
  2. Yapılan çalışmanın doğası gereği küçük ve anlamlı parçalar halinde geliştirilmesi olabilir.

Bu ipucu yazımızda özellikle 1. maddede belirttiğim durumda ortaya çıkan git history kirliliğini nasıl ortadan kaldırabileceğimizi paylaşıyorum.

Read More ...

XML ve HTML Auto Merge ve Hatalı Conflict Sorunları

Diff algoritmalarının başımıza açabileceği dertler

Aynı proje üzerinde devam eden iş sayısı artınca XML formatında olan resx, csproj ve sln uzantılı dosyalarda auto-merge nedeniyle yapısal hatalar veya normalde olmaması gereken conflictlerin oluşması ve bunların manul çözülmesi gerekn durumlar ile karşılaşabiliyoruz. Bu sorunların nedeninin Git olduğunu düşünenler olabilir ama konu tüm VCS sistemlerinin kullandıkları genel kabul görmüş diff algoritmalarının eksikliğinden kaynaklanıyor.

Read More ...

C# 7.0 Yeni Dil Özellikleri

Daha Basit ve Daha Yüksek Performanslı Kod

Microsoft, yayınladığı her majör C# versiyonu için genel bir tema belirliyor ve bu tema çerçevesinde yeni C# dil özelliklerini bizlere sunuyor. C#’ın Mart 2017‘de yayınlanan 7.0 versiyonun teması aşağıdaki üç konuya odaklanıyor;

  • Alışılagelmiş bazı dil yapılarının daha basit kod ile ifade edilebilmesi
  • Performans optimizasyonu yapmamıza imkan sağlayacak yapılar
  • Mikroservisler ve sunucusuz uygulama (serverless) mimarileri gibi yeni yapılar ile veri alış verişini kolaylaştırmak

Bu yazımda yukarıdaki tema çerçevesinde C# 7.0 ile birlikte gelen yeni dil özelliklerini örnekler ile ele alıyorum.

C# 7.0

Read More ...

SOLID Prensiplerine Bakış

Nesne Yönelimli Programlama'yı İyi Yapmanın Sırrı

SOLID kısaltması Robert C. Martin (Uncle Bob - Bob Amca olarak da bilinir) tarafından ortaya atılan bir dizi Nesne Yönelimli Programlama (OOP - Object Oriented Programming) prensiplerinden 5 tanesinin baş harflerinden oluşturulmuş ve ilk defa Michael Feathers tarafından ortaya atılmış bir kısaltmadır. Hem Bob Amca hem de Michael Feathers OOP yaklaşımının yaygınlaşmasında ve doğru bir şekilde kavranmasında önemli rolleri olan kişilerdir. Bu yazımda iyi bir yazılım geliştiricinin mutlaka bilmesi gerektiğini düşündüğüm SOLID prensiplerini en yalın hali ile ve kısa C# örnekleri ile size aktarmayı hedefliyorum.

SOLID Prinsiples

Read More ...

F# ile Fonksiyonel Programlama Kitabı

Yazım Süreci

Yazılım geliştirme profesyonelleri, fonksiyonel programlama kavramlarına ve ilkelerine ağır akademik yönleri ve ihtiyaç duyulan matematiksel alt yapı nedeni ile genelde çok mesafeli yaklaşırlar. Ben de 17 yılı bulan profesyonel kariyerimin bazı dönemlerinde fonksiyonel programlamaya ilgi duymama rağmen kimi zaman tembellikten kimi zaman da incelediğim fonksiyonel programlama dilinin aşırı matematiksel yaklaşımı ve kısıtlamaları nedeni bu mecarada kendimden istediğim verimi alamadım.
Read More ...