Image for post
Image for post

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. Bunun için container’ımızın arka planda sürekli çalışır modda yani detach modda çalışması gerekmektedir. Aşağıdaki komut satırı ile bunu gerçekleştirebiliriz.

docker run -d --name my-nginx-container nginx

Image for post
Image for post

Docker ile ilgili bir çok temel fonksiyonu docker run komutu ile sağlayabilirsiniz.

Yukarıda ki komutu yazdığınızda ilk önce ilgili image dosyasının makinenizde olup olmadığına bakılır ve sonrasında eğer varsa zaten inmiş olan image çalıştırılır. Eğer yoksa ilk önce docker hub ‘dan indirilerek makinenize kurulur ve sonrasında çalıştırılır.

Eğer sadece docker run ubuntu şeklinde komutumuzu yazacak olursa aslında bu komut default olarak ubuntu:latest versiyonunu indirecektir. Yani docker run ubuntu:latest ile aynı işlevi görecektir. Ama biz belli bir versiyonu indirip kurmak istiyorsak o zaman versiyon adını( tag) belirtmemiz gerek. …


Source Control sisteminizi otomatize edin.

Image for post
Image for post

Kısa bir Git tanımı sonrası gelelim asıl mevzumuza. Git Hooks!

Git Hooks

Eğer source control olarak git kurmuş isek, bize sağlayacağı birçok önemli özelliklerden biri de hooks yapısıdır. Hooks mekanizması ile belli başlı git komutları öncesi veya sonrası istediğimiz herhangi bir şeyi çalıştırabiliriz. …


Android dünyasında temiz kod(Clean Code) günümüzde çokça konuşulan konular arasında yer almakta ve neden temiz kod yazmalıyız ile alakalı bir çok makale yazılmaktadır.

Temiz kod yazmak için MVP, MVVM vs. kod tasarım mimarilerinden birini seçerek yazılan kodların ve etkileşimlerinin birbirinden ayrımını sağlamaktayız. Bu kod tasarım kalıpları ile beraber bize çok faydası olacak bir mimari daha bulunmakta: DataBinding

DataBinding

Uygulamamızın arayüzünü oluşturmak için kullandığımız layout xml dosyalarına gerekli datayı doğrudan entegre ederek, arayüz değişikliği ile ilgili tüm akışların harici müdahaleye gerek kalmadan otomatik olarak gerçekleşmesini sağlayabiliriz. …


Kısaca açıklamak gerekirse, İnternet Servis Sağlayıcılarının, hangi siteye erişmek istediğimizi görmesini/izlemesini engelleyen bir yapıdır diyebiliriz.

TLS/SSL protokolü zaten bunu yapmıyor mu?

TLS/SSL protokolüne sahip siteler üzerinden yapılan veri alış verişleri şifreli yapılır fakat hala hangi siteye erişmek istediğimiz açık/şifresiz bir şekilde bellidir ve internet servis sağlayıcıları bunu görebilir.

Bunu engellemek için DNS over TLS kullanılır.

Özet

  • TLS üzerinden DNS, tüm DNS isteklerinin güvenli bir şekilde yapılmasını sağlayan bir protokoldür.
  • Bu uygulama, İnternet Servis Sağlayıcılarının hangi web sitelerine erişmeye çalıştığınızı görmesini engeller.
  • DNS’yi TLS üzerinden kullanmak için DNS servisinizin bunu desteklemesi gerekir.

TLS (Transport Layer Securtiy) , SSL(Secure Sockets Layer)‘ın modernize edilmiş halidir diyebiliriz. Yani günümüzde SSL den bahsedildiğinde aslında TLS den bahsediliyor olduğunu söyleyebiliriz.

TLS protokolü, makinelerin web üzerindeki iletişimini kimlik doğrulama ve şifreleme mekanizmaları ile güvenli hale getirem bir standarttır. Günümüz dijital dünyasında güvenliğin önemi her geçen gün arttığı için iletişim yöntemleri ve güvenliği de beraberinde değişmekte ve gelişmektedir. Bu nedenle web iletişiminin güvenli hale gelmesi zorunluluk ve ihtiyaçtır.

TLS/SSL Gelişim Süreci

  • 1995: SSL v2 ilk olarak Netscape firması tarafından yayınlandı. v1 nerede diye soracak olursak hiç yayınlanmadı diyebiliriz. Neden? > Google :)
  • 1996: SSL v3 v2 nin çeşitli açıklarının kapatılmış sürümü,
  • 1999: TLS v1.0 SSL v3 ün çeşitli açıklarının kapatılmış…


Image for post
Image for post

Kotlin ile uygulama geliştirmeyi teşvik eden en büyük etkenlerden biri şüphesiz Java dili uyumlu yapısıdır. Her iki taraftan 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.from(context).inflate(resId, this, attachToRoot) }

Artık LinearLayout gibi bir viewgroup nesnemizden direk olarak inflate fonksiyonunu çağırabiliriz. …


Dagger nedir ne değildir kısmına hiç girmiyorum. Ve başlamadan önce itiraf etmem gereken birşey var. Gerçekten anlaması/kavraması sıkıntılı bir yapı. Lakin ‘la bu muymuş ya’ kısmına gelebilirseniz gerçekten öğrenmesi/kullanması yararlı yapılardan biridir diyebiliriz.

Örnek Proje Yapısı

Image for post
Image for post
Project Structure

Neler var?

@Module annotations ı ile oluşturulan bir sınıfımız var. Bu sınıfın görevi @Inject edilecek objeleri belirlemek. Bu sınıfta yapılması gereken şey @Provides annotations ı ile işaretlenen fonksiyon içerisinde @Inject edilecek nesneyi oluşturup döndürmek.

@Component annotations ı ile oluşturduğumuz bir interface var. Bu interface ile Dagger arka tarafta bir Dependency Graph oluşturur. …


Thread kullanımı, Java ile multi-threading yazılım geliştiriyorsanız mutlaka ama mutlaka bilmeniz gereken konulardan biridir.

ThreadPool

Gün geldi çattı ve uygulamanız ilk kurulduğu amacın evrimleşmesi sonucu bambaşka bir hale büründü 🙂

Yani birçok uygulamada gidişat bu yöndedir ve olması gerekende budur.

Aynı anda 1000 den fazla kullanıcıya cevap verme gereksinimiz var artık. Sadece patron kullanmıyor sonuçta. Ya da patron öyle bir uygulama istemişki ağır işler gerektiriyor. Uzun süreler gerektiren işlemler sonucunda akış tamamlanıyor vs.

Sözün kısası;

Uygulamamız içerisinde ki akışları ayrı parçalara bölerek daha hızlı çalışmasını ve aynı anda birden fazla iş yapmamızı sağlayan yapıdır bu Thread ler.

Peki en basitinden nasıl kullanırız bu yapıyı ? …

About

Aykut Asil

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