17 Nisan 2014 Perşembe

Çok Parametre Alan Metotlar ve Builder Pattern


Merhaba Arkadaşlar,

Bildiğiniz üzere java'da optional parameter ve named arguments desteği yok dolayısıyla bazen çalıştığımız sınıflar içerisinde çok parametre alan constructor ve metotlarla karşılabiliyoruz, bu da ilgili sınıfın kullanımını ve okunabilirliğini zorlaştıran bir durum. Özellikle nesne inşası sırasında istenen parametrelerden çoğu kez 2-3 tanesi bizi ilgilendiriyor fakat ihtiyaç duyduğumuz parametreler için uygun overload olmaması yüksek ihtimal, üstelik ilgi parametrelerin çeşitli kombinasyonları için overlaod'lar yazmak başlı başına bir yük.

24 Mart 2014 Pazartesi

Widget'i AlarmManager'la Yenileme


Herkese Selam,

Bildiğiniz gibi android widget yenileme sıklığı(updatePeriodMillis), batarya ömrünü uzun tutmak adına minimum 30 dk ile sınırlı. Fakat gün geldi bir sebepten daha düşük periyotta widgeti yenileme ihtiyacınız oldu, nasıl bir çözüm giderdiniz? Bu durumda biraz düşününce eminim aklınıza AlarmManager sınıfını bu iş için kullanmak gelecektir.

12 Mart 2014 Çarşamba

Android Service'den Activity'e Deger Dondurme (Haberlesme)


Merhaba Arkadaşlar,

Android komponentleri arasında haberleşme genellikle intent'ler üzerinden gerçekleşir. Intent tipinin bol overload'lu putExtra() metoduyla, primitive tipler veya kendi oluşturduğunuz sınfların serilize edilebilir(parcelable, serializable) nesne örnekleri, iki android komponenti arasında taşınmasıyla haberleşme sağlanmış olur. Misal activity içerisinden service başlatırken intent ile service'e bir takım veriler aktarılabilir. Ne var ki aksi yönde bir iletişim bu denli basit değildir, zira service'ler genelde artalanda takılan ve önyüzle mümkün mertebe muhattap olmayan gizli kahramanlardır.

10 Aralık 2013 Salı

Distinct İslemi Yapmanin 4 Yolu


Merhaba Arkadaşlar,

Yazılım geliştirirken zaman zaman eldeki koleksiyon tipindeki veriler üzerinde kolon(lar) bazında distinct(farklı, ayrı) işlemiyle benzer kayıtları filtrelememiz gerekebilir. Sql tarafında bu işlem için "distinct" komutu vardır; .net tarafında Enumerable sınıfı içerisindeki Distinct() genişletme metoduyla veya çeşitli linq sorgularıyla bu işlem kotarılabilir. İşin özünde nesnelerin farklılığını saptama olduğundan, eldeki çözümler artalanda nesnelerin kimlik niteliği olan hasCode'a dayanır. Tüm sınıflar örtülü olarak Object sınıfından kalıtıldıkları için de her nesnenin Object sınıfı üzerinden gelen GetHashCode() metoduyla nesnenin hash koduna ulaşılıp eş(it)lik kontrolü yapılabilir.

30 Ekim 2013 Çarşamba

Farkli Bir Assembly'deki Internal Metodu Reflection Ile Cagirma


Merhaba Arkadaşlar,

Bildiğiniz üzere nesne yönelimli programlamada, bir sınıfın private erişim belirleyecisi(access modifiers) ile tanımlanmış öğelerine(class, struct, method, property, field) kapsülleme mantığı gereği o sınıf dışında ulaşamıyoruz. Yine hatırlarsanız internal erişim belirleyicisi ile tanımlanmış öğeler ise bulunduğu assembly’nin dışında erişime kapalıdır. Fakat gün geldi erişime kapalı bir öğeyi kullanmaya ihtiyacınız oldu ya da sırf gıcıklığına buna yeltendiniz; o zaman okumaya devam edin :]

15 Ağustos 2013 Perşembe

Asp.net MVC CheckBoxList(Helper) Kullanimi


Merhaba,

Bildiğiniz gibi asp.net mvc'nin etkili ve geliştirme sürecini kısaltan özelliklerinden birisi de, textbox, label, dropdownlist vs gibi html komponentlerini kolayca oluşturmamızı sağlayan geniş html helper kütüphanesi. Fakat çoklu seçim işlevselliğini sağlayan "CheckBoxList" komponenti için, html helper kütüphanesinde herhangi yardımcı genişletme metodunun varlığı söz konusu değil. Bu problemi çözmek için yazılımcılar olarak kolları sıvayıp view üzeride razor'un da yardımıyla döngüye girip istenen html çıktısını elde edebiliriz:

1 Ağustos 2013 Perşembe

Kendi AutoMapper'ımızı Yapalım


Merhaba Arkadaşlar,

Veri merkezli uygulamalarda, katmanlar arasında veri alışverişi yarparken kullanıcı katmana veriler çoğu kez aracı tipler(DataTransferObject) vasıtasıyla taşınır. Özellikle veri katmanında orm teknolojilerinin kullanıldığı projelerde aracı servis katmanında, transfer objesi(dto) ve veritabanı objesi(entity) arasında kolonsal(properties) eşleştirmeyi tek tek yapmak yazılımcı için sıkıcı bir süreç. Konuyu koda dökerek somutlaştırılam: