Docker Series - 2

Docker Container’ı Detach modda çalıştırmak Uygulamanızı yazarken eğer thread’ler ile biraz derin bir ilişki kurmuşsanız daemon kavramıyla karşılaşmış olabilirsiniz. Kısaca, “arka tarafa git ve sessiz sedasız çalışmaya devam et” demek diyebiliriz. Ayrıntılı bilgi için -> Google :) Aynı mantık ile container‘ımızın arka planda sesiz sedasız çalışmasını isteyebiliriz. Örneğin web sitemizi bir container’a kurduk, yerleştirdik ve belli bir port üzerinden dışarıya açtık. Ve artık bu container kapanmadan sürekli çalışması gerekiyor ki web sitemize erişebilelim....

April 3, 2020 · 2 min · Aykut Asil

Android Background Location

Android 10 ile birlikte gelen değişiklerden biri de Location dinleme ile alakalıdır. Uygulamamız arka plandayken (background) ve ön plandayken (foreground) konum dinleme şekilleri farklılık göstermektedir. Uygulamımız bize görünür vaziyette ise yani foreground‘da ise her hangi bir değişiklik yapmamıza gerek yoktur. Fakat Home tuşuna basarak veya başka bir uygulama açarak uygulamamızı arka plana atıyorsak ve bu sırada konum dinlemesinin devam etmesini istiyorsak bazı düzenlemeler yapmamız gerekmektedir. İki şekilde background konum dinlemesi yapılabilir....

January 17, 2020 · 2 min · Aykut Asil

Android Architecture Components

Android Architecture Components Öncelikle şu linkleri verelim: https://developer.android.com/topic/libraries/architecture/index.html Lifecycle LiveData ViewModel LifeCycle Daha önce Android uygulaması geliştirenler çok iyi bilirler ki bir activity veya fragment’ın yaşam döngüsünü yönetmek sıkıntılı bir süreçtir. Activity’nin arka planda mı yoksa görünür vaziyette mi oluşuna göre düzenlenen akışlar çoğu zaman yoğun dikkat gerektiren süreçlerdir. Yukarıda ki Lifecycle linkine tıklarsanınz çok güzel bir örnek ile durumu açıklamışlar. Oluşturduğumuz nesneler eğer activity’nin yaşam döngüsüne bağlı ise bunu yönetmek için activity’mizin genelde onCreate ve onStop metodları içerisinde bu nesnelere ait fonksiyonları çağırıyorduk....

August 27, 2017 · 2 min · Aykut Asil

Kotlin @JvmOverloads

Kotlin @JvmOverloads Kotlin ile uygulama geliştirmeyi teşvik eden en büyük etkenlerden biri şüphesiz Java dili uyumlu yapısıdır. Her iki tarafdan da birbirlerine referanslar verilebilir. Kotlin dilinin Java’dan ayıran özelliklerinden biri Java compiler ından daha zeki olmasıdır. Nitekim java dili yaşlanıyor :). Kotlin ile oluşturulan bazı yapıların Java tarafına uyumlu hale getirilmesi için bazen ufak düzenlemelere gerek duyulabiliyor. Bu düzenlemelerden bir tanesi de @JvmOverloads annotation kullanımı. fun ViewGroup.inflate(resId: Int, attachToRoot: Boolean = false): View { return LayoutInflater....

July 9, 2017 · 2 min · Aykut Asil

Kotlin Sealed Class

Kotlin Sealed Class Enum yapısına benzer bir yapıya sahiptir. Ve benzer görevler için kullanılır. Aradaki fark enum lar sabit değer ifade etmek için kullanılırken sealed yapısı normal sınıf gibi fakat enum mantığıyla kullanılır. Yani belli bir duruma ait fonksiyonları bir arada tutmak ve when() gibi fonksiyonlar ile birlikte kullanımını sağlamak için kullanılır. // Sealed class enum yapısına benzer // Bir durum için belli başlı akışları bir arada tutmamızı sağlar ve bu akışların yönetimini kolaylaştırır....

July 1, 2017 · 1 min · Aykut Asil

Kotlin Lambda

Kotlin Lambda Kullanımı Kotlin dili ile geliştirme yaparken fonksiyonel programlama nimetlerinden faydalanmamızı sağlayan lambda birçok konuda bize yardımcı olacaktır. Doğru kullanımını öğrendiğimiz ölçüde nimetlerinin farkına varabiliriz. Belli başlı lambda kullanımları için aşağıdaki örneği inceleyebilirsiniz. override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_kotlin_lambda) // Normal Kullanım ButtonPress.setOnClickListener(object : View.OnClickListener { override fun onClick(view: View?) { toast("Press Me Click") } }) // Yukarıda ki yapıyı lambda kullanarak bu şekle çevirebiliriz ButtonPress....

June 18, 2017 · 1 min · Aykut Asil

Kotlin apply Kullanımı

fun <T> T.apply(f: T.() -> Unit): T { f(); return this } apply() tüm tipler için belirlenmiş bir extension function dır. apply() fonksiyonu uygulanan nesnenin özelliklerine direk olarak apply kod bloğu içerisinden erişilebilir. var file = File(dir) file.mkdirs() veya Java ile yazacak olursak File makeDir(String path) { File result = new File(path); result.mkdirs(); return result; } Bu kodu aşağıdaki yapıya çevirebiliriz. File(dir).apply { mkdirs() }

June 6, 2017 · 1 min · Aykut Asil

Kotlin when kullanımı

Kotlin’de when operatörü işimizi oldukça kolaylaştıran operatörlerden biridir. if- else if yapısı yerine kullanılabileceği gibi bazı yardımcı operatörler ile birçok marifet kazanabilir. val i = 10 when { i < 7 -> println("first block") fooString.startsWith("hello") -> println("second block") else -> println("else block") } Yukarıda ki örnek if-else if-else yapısının aynısıdır. when (i) { 0, 21 -> println("0 or 21") in 1....

June 6, 2017 · 1 min · Aykut Asil

Kotlin Let Kullanımı

Kotlin fun <T, R> T.let(f: (T) -> R): R = f(this) let() temel olarak, belirli bir kapsam için bir değişken/kod bloğu oluşturmamızı sağlayan bir kapsamlayıcı işlevdir. Yani let() bir sarmalıyıcı fonksiyondur. Örneğin: private var mPhotoUrl: String? = null fun uploadClicked() { if (mPhotoUrl != null) { uploadPhoto(mPhotoUrl!!) } } Yukarıda ki if (mPhotoUrl != null) satırı ile null kontrolü yapılır ve eğer null değilse uploadPhoto(mPhotoUrl!!) kod bloğu çalıştırılır....

June 6, 2017 · 1 min · Aykut Asil

Retrofit Oauth

Retrofit Oauth Entegrasyonu Oauth, kısaca anlatmak gerekirse; Kullanıcı ile ilgili her türlü (izin,yetki,güvenlik vs.) etkileşimi standartlaştıran bir yapı diyebiliriz. Google amcaya sorarsanız neler yapabileceğiniz ile ilgili birçok kaynak bulabilirsiniz. Veya buraya bakabilirsiniz. Burada bahsedecek olduğumuz şey Android mobil uygulamanızdan bir istek yaptığınızda tüm bu oauth işlemlerinizi otomatize etmek üzerine olacak. Nasıl Çalışıyor? Kısaca anlatılan bu yazıyı okuduğunuzda günün sonunda elimizde bir token olduğunu ve bu tokenı request headerımıza ekleyerek backend kısmında kontrolünü sağladığımızı ve duruma göre cevap döndüğümüzü göreceksiniz....

May 17, 2017 · 4 min · Aykut Asil