Image for post
Image for post

First of all, this article is the beginning of a series which fundamental testing strategies and contains lots of java testing topics.

What are the unit and unit testing?

Firstly, we need to describe unit keyword. Unit is the smallest structure in software, it is also called function/method, all of this production code contains the business logic. So what is the unit test?

Why should we write unit test?

1. Feel free to add the new feature or refactor

You can be beware to add a new feature or refactor when working on any complex domain that contains several long methods.

if I affected the running of existing code?

This worry can bother us and it can be needed to review all methods, this situation may take us a long time. Whereas we can feel free if we had written unit test and a hundred percentage branch coverage. You can see what is the coverage in the last section of this post. …


Image for post
Image for post

Garbage Collection is a mechanism provided by Java Virtual Machine. All garbage collection algorithms run/process in the background. We will take a look at one of those algorithms bellow.

Why is there garbage collector and what is it doing on JVM?

Memory Management

First of all, developers who wrote C or C++ in the past may remember malloc and free functions. malloc function provides memory allocation, free function frees the memory space. However there is it who does this instead of us in JVM.

The fundamental task of the garbage collector is memory management and reclaim to heap space which eligible objects. Java developers only care about creating objects. They don’t care about cleaning up. In java there are methods like System.gc() and Runtime.gc() which can be used to request of garbage collector from JVM. …


Image for post
Image for post
Config Server Infrastructure

Bu konuyla birlikte aslında iki yazıdan oluşan bir seri düşündüm; ilkinde yani bu yazıda, config server nedir? neden ihtiyaç duyulur? ve beraberinde ise projeyi dockerize hale getirip, Spring ile implementasyonundan bahsedip bir sonraki yazıda Gitlab’de CI/CD Pipeline ile birlikte AWS’ye deploy kısmına değineceğim. Merak edenler için amazon kısmındaki stack şu şekilde olacak. Dockerize edilmiş image’ı ECR (Elastic Container Registry)’ye pushlayıp ECS(Elastic Container Service) ile yöneteceğiz.

Neden Config Server Kullanmalıyız?

Büyük ölçekli bir monolitik api uygulamanız olduğunu düşünün ve bütün gerekli config bilgileri (postgre - elasticsearch - redis vs.) uygulamanın içerisinde tanımlı.

  • Herhangi bir config bilgisini değiştirmek için deploy çıkmak zorunda kalacaksınız ve deploy süreniz uzun ise bu sizin için eziyet olacak. …


Veri Madenciliği alanında Birliktelik Kuralları Yönetimi(Association Rule Mining) konusu altında yer alan ve sıkça kullanılan apriori algoritmasının ismi, tümdengelim ile edinilen anlamına gelir; tam türkçesi önsel (bilgi) “prior” anlamına gelmektedir. Bir veri kümesini adım adım keşfetmeye ve veri kümesi içerisinde bulunan verilerin birliktelik kurallarını incelemeye yarayan bu algoritmayı yakından tanıyalım.

Apriori algoritmasının en bariz örneği alışveriş sepetidir.

Image for post
Image for post

Yukarıdaki resimden de anlaşılacağı üzere bir alışveriş sepetinde bulunan ürünlerden ya da alışveriş fişlerinden yola çıkarak hangi ürünün ne sıklıkla satıldığı ve hangi ürünlerin birlikte satıldığını öğrenmemiz mümkündür.

Algoritma da kullanılan destek değeri (support value) veri kümesinin eşik değeridir. Örneğin şunu diyebiliriz. Bir ürün veri kümesinde 3'ten az satıldıysa bu ürünü kampaya veya herhangi bir işleme tabi tutmamıza gerek yoktur. …


Image for post
Image for post

Çok sert bir başlık oldu sanki 🙂 Aslında anlatılmak istenen kendi değerimizi biliyor muyuz? Biz yazılımcıları değerli kılan şeyler neler? Üstad Yegor Bugayenko kendisinde gelen maillerde ne gibi kriterlere dikkat ettiğini maddeler halinde ele alıyor ve bu maddelerin tamamen kişisel düşüncesi olduğunu, hiçbir standart iddiasında bulunmadığını da ekliyor. Bu arada yazının kaynağına buradan erişebilirsiniz. Bazı önemli kısımları not aldım ve bunları sizlerle paylaşmak istiyorum. Bu noktada ilham aldığım Ufuk Uzun’a teşekkürlerimi sunuyorum.

Açık Kaynak Projelere Katkı

Kullanmakta olduğunuz açık kaynak üründe bir hata bulamıyor veya bir bug’ı düzeltebiliyor musunuz?

Image for post
Image for post

Açık kaynak projelere katkı sağlamak bir yazılım geliştiricinin ilk ve en önemli özelliğidir. Açık kaynak projelere katkıda bulunuyor musunuz? Yazdığınız bir kütüphaneyi topluluklar kullanıyor mu? …


Image for post
Image for post

Düşünün bir yazılım takımınız var ve bir projeye başladınız. Projeyi modüllere ayırdınız ve her kişiye ilgili görevi atandı. Takım halinde çalışabilmeniz için bir yönetim aracı gerekli ve bir kitabın baskıları gibi bir baskı da hata çıktığı zaman hemen versiyonu değiştirip eski haline getirmeniz lazım. Burada imdadınıza (birçok iş ilanında da gördüğünüz üzere) git koşuyor. En büyük avantajlarından birisi ise merkezi yapıda bulunmamasıdır. (Dağıtık Sistem)

Git’in Versiyonlama Mantığı

Az önce dağıtık yapıda bulunur dedik. Ne demek bu şimdi ?

Git ile versiyonladığınız proje dosyaları her geliştirici de saklanır. Ve proje de bir değişiklik yapıldığı zaman sadece değişen kısım değil o an projeden bir snapshot alınır (projeyi bir bütün halinde saklar) ve böylelikle yapılan katkı bir bütün halinde kolaylıkla görülmüş olur. …


Image for post
Image for post

Firebase modül serisine kaldığımız yerden devam ediyoruz. Bu yazıda sizlere Firebase’in gözde modülü olan ve ilk çıktığı zamanlardan beri büyük ilgi gören bölümünden bahsedeceğim.

Firebase’in modülleri bazı seviyelere kadar ücretsiz buradan modül fiyatlandırmalarına bakabilirsiniz.

Neden mi Realtime Database ?

Şöyle düşünelim bir mimari tasarlıyorsunuz ve birçok client bulunmakta. Mobil , Web , Desktop vs. tüm istemciler aynı anda asenkron bir şekilde bilgi alışverişi yapabiliyor ve zaten ismi buradan geliyor. Bulutta çalışan bir NoSql veritabanı düşünün ve veritabanı olarak alışık olduğumuz tablo ve kolonlar yok.

Nasıl mı ?

Bu yapıyı bir json ağacı şeklinde düşünebilirsiniz. En önemli avantajlarından biri de şu; normalde veritabanını başka bir sunucuya aktarırken çoğunlukla yaptığımız şey dışarı bir sql dosyası aktarıp onu aktarmak istediğimiz sunucuya içeri aktar diyerek aktarmaktı. …


Image for post
Image for post

Öncelikle yazıya başlamadan önce birkaç kavramı açıklamak doğru olacaktır. Özgür Yazılım (Free Software) denilince (isimden de anlaşılacağı üzere) bedava yazılım algısı oluşmamalıdır ama bu özgür yazılımların çoğunun ücretsiz olduğu gerçeğini değiştirmez. Burada özgürlük dediğimiz kavram aslında işin tarihçesinde yatıyor.

Image for post
Image for post

Bu bir özgürlük meselesidir , ücret değil. Bu yüzden bedava bira değil konuşma özgürlüğünü düşünün. -Richard Stallman

Kişisel bilgisayar kullanımının yayılması ile birlikte güvenlik endişesi beraberinde doğmuştur. O zamanlar yaygın bir şekilde kullanılmakta olan unix işletim sistemine karşın , yukarıda resmini görmüş olduğunuz Richard Stallman adında bir abimiz GNU diye bir işletim sistemi projesi , beraberinde bir akım başlatmıştır. GNU (GNU is not unix) unix değildir sloganıyla tamamen açık kaynak kodlu bir işletim sistemi yapılmasını hedefleyen Stallman 1985 yılında Özgür Yazılım Vakfı adı altında bir yazılım hareketi başlatmıştır. O zamanlar GNU projesini tamamlamak için birçok modül yazılmış fakat bir türlü bütün halinde işletim sistemi olarak son bulmamıştır O zamanlar 22 yaşında olan Linus Torvalds isimli bir geliştirici GNU projesi kapsamında Linux adında bir işletim sistemi çekirdeği yazmıştır ve artık GNU ismi GNU/Linux şeklinde kullanılmaya başlanmıştır. …


Image for post
Image for post

Uzun zamandır aklımda olan bir konu , firebase serisine nihayet başlamış bulunmaktayım. İlk olarak Push Notification servisi olan cloud messaging den başlamayı uygun gördüm.

Image for post
Image for post

Kim lan bu firebase ?

Yazıya daşlamadan önce firebase hakkında kısa birkaç bilgi vermek yerinde olacaktır. Firebase , Google’ın biz geliştiricilere sunmuş olduğu (web ve mobil olmak üzere) bir servis sağlayıcıdır ve içerisinde ciddi anlamda yarar sağlayacak modüller barındırmaktadır ve günden güne artan geliştirme ortamları desteği ile bir çok platform da giderek yaygınlaşmaya başlamıştır.

Aşağıda firebase in modüllerini görebilirsiniz.

Image for post
Image for post

Firebase Console üzerinden yeni bir android projesi başlatıyorum.

Image for post
Image for post

Yukarı da adımlar genel olarak uygulamayı firebase servislerine hazır hale getirmek için yapılan rutin adımlardır. Şimdi ise cloud messaging için gerekli konfigürasyonları yapalım. …


Image for post
Image for post

Tasarım desenlerine kaldığımız yerden devam ediyoruz. diğer tasarım deseni yazılarımı buradan bulabilirsiniz. Ayrıca sizlerde tasarım deseni yazıları (okuduğunuz ya da yazdığınız) ekleyerek projeye katkıda bulunabilirsiniz. Peki gelelim konumuza Factory(Fabrika) tasarım deseni nedir ? Nelerde kullanılır ? bu ve benzeri sorulara cevap aramaya çalışıp bir örnek ile desteklemeyi düşünüyorum.

Factory (Fabrika) tasarım deseni sınıf yaratma üzerine kurulu bir yapıdır. Peki nelerde işimize yarayacak bu desen.

Image for post
Image for post

Ne yani komik mi şimdi bu ? fabrika resmi felan…

Yazdığınız program da birbirine benzeyen birden fazla sınıf olabilir. Bu tür sınıfları oluştururken her seferinde new operatörünü kullanmayın ya da o sınıflardan sanki birbirinden bağımsızmış gibi kod yazmayalım diye böyle bir örüntü tasarlamışlar. …

About

Yusuf Çakal

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store