ADB Komutu ile Cihaz IP'sini Öğren

Aşağıdaki komutu çalıştırarak android cihaz ip’sini öğrenebilirsiniz. > adb shell ip -f inet addr show wlan0

July 20, 2019 · 1 min · Aykut Asil

Android File System

Internal Storage vs External Storage Internal Storage Her zaman erişilebilir. Sadece uygulamanın kendisi tarafından erişebilir. Buraya kaydedilen dosyalar başka bir uygulama tarafından görünmez. USB ile bilgisayara bağlanıldığında bu dosyalara erişim sağlanamaz. Uygulama silindiğinde internal storage temizlenir. External Storage Her zaman erişilebilir durumda olmayabilir. External storage cihaza dahili olarak bulunabileceği gibi USB cihazı olarak sonradan takılmış bir cihaz da olabilir. Bu nedenle erişebilir olup olmadığı kontrol edilmelidir (getExternalStorageState()). External Storage’a kayıt edilen dosyalar başka uygulamalar tarafından okunabilir ve görülebilir durumda olabilir....

June 27, 2019 · 2 min · Aykut Asil

ASP.NET Core Filters

Not: Bu makale hazırlanırken kullanılan .net core versiyonu: 2.2 ASP.NET Core‘daki filter yapısı, middleware bileşenine benzer fakat bazı farklılıkları vardır. Filter’lar ile sadece request-response süreci arasına girilerek istenilen kod blokları çalıştırılabilir. Filter tipine göre request-response sürecinin hangi aşamasında çalıştırılacağı belirlenebilir. Oldukça özelleştirebilir bir yapı sunar bize Filter’lar. Filter Tipleri Authorization Filters İlk çalışan filter‘dır. İlgili mvc action metoduna erişmek için user‘ın yetkisi olup olmadığını kontrol eder. Eğer koşullar sağlanıyor ise ilgili mvc action metodu çalışır....

April 29, 2019 · 2 min · Aykut Asil

ASP.Net Core app.Run() Middleware

ASP.NET Core Run Method ASP.NET Core ile birlikte gelen middleware konsepti sayesinde request-response süreçleri arasına girerek kendi mantıksal devremizi yazmamız çok kolay hale gelmiştir. Yukarıda ki gibi Startup.cs sınıfı içerisindeki Configure fonksiyonuna app.Run() diyerek middleware‘ımızı ekleyebiliriz. Peki tam olarak app.Run() metodu nasıl çalışıyor? app.Run() middlaware’ı ile istenilen bir kod bloğunu çalıştırabilir ve uygulamamıza kısa devre yaptırabiliriz. Yani pipeline akışı eğer Run() içerisine girerse, sonraki kod blokları çalışmayacaktır. Yukarıda ki kodun çıktısı sadece Response 1 olacak ve sonraki kod bloğu çalışmayacaktır....

April 15, 2019 · 1 min · Aykut Asil

Android DataBinding

Android DataBinding 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 Uygulamanın arayüzünü tasarlamak için kullandığımız layout dosyamızın içerisine 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....

February 25, 2019 · 4 min · Aykut Asil

Android Service

Android’in temel bileşenlerinden biri olan Service’ler kısaca UI(arayüz) olmayan Activity’lere benzetebiliriz. Tabi ki kendine göre ek özellikleri bulunmaktadır. Service tanımlaması AndroidManifest.xml içerisinde tanımlı olmalıdır. Aksi takdirde çalışmaz. <service> elementinin alabileceği özellikler aşağıdaki gibidir. Niçin kullanılır? Temel olarak ifade etmek gerekirse Service’lerin kullanım amacı uzun süren ve arka planda(background) çalışan taskler oluşturmaktır. Bununla birlikte diğer uygulamalar tarafından çağırılabilen iletişim imkanı sağlar. Service tanımlanması <service android:description="string resource" android:directBootAware=["true" | "false"] android:enabled=["true" | "false"] android:exported=["true" | "false"] android:icon="drawable resource" android:isolatedProcess=["true" | "false"] android:label="string resource" android:name="string" android:permission="string" android:process="string" > ....

February 14, 2019 · 3 min · Aykut Asil

Android Kotlin Test - Final Type Problem

Sorun Kotlin dili ile geliştirilen Android projelerinin test yazımı sırasında sınıfların veya metodların mocklanması, Java ile geliştirilen projelere göre bazı farklılıklar göstermektedir. Bu farklılığın sebeplerinden biri Kotlin ile oluşturulan sınıf veya metodların default olarak final olarak işaretlenmiş olmasıdır. Ve final tipindeki sınıfların mocklanması bazı sorunlar çıkarmaktadır. Çözüm Final tipindeki sınıfların veya metodların mocklama işlemi sırasında çıkan sorunu çözmenin birkaç farklı yöntemi vardır. Çözüm 1 (open ClassName) Test edeceğimiz sınıf ve metodun başına open ifadesini ekleyerek extend edilebilir hale getirmek....

January 29, 2019 · 2 min · Aykut Asil

Server Ip

Problem Domain’i barındıran server’ın IP’sini bulmak istiyoruz. Çözüm Linux Terminali aç host www.aykutasil.com şeklinde istediğin domain’i yaz Server IP: www.aykutasil.com has address 104.24.114.254 www.aykutasil.com has address 104.24.115.254 www.aykutasil.com has IPv6 address 2606:4700:30::6818:73fe www.aykutasil.com has IPv6 address 2606:4700:30::6818:72fe Windows Komut penceresini aç. (cmd.exe) nslookup www.aykutasil.com şeklinde istediğin domain’i yaz Server IP: Name: www.aykutasil.com Addresses: 2606:4700:30::6818:73fe 2606:4700:30::6818:72fe 104.24.115.254 104.24.114.254

January 8, 2019 · 1 min · Aykut Asil

Bash Scripts

cat «EOF cat <<EOF komutu ile multiline bash script yazabiliriz. Son satır EOF oluncaya kadar satır oluşturulmaya devam eder. EOF yerine herhangi bir belirteç yazılabilir. Genelde EOF veya STOP yazılır. $ sql=$(cat <<EOF SELECT foo, bar FROM db WHERE foo='baz' EOF ) $ cat <<EOF > print.sh #!/bin/bash echo \$PWD echo $PWD EOF Yukarıda ki bash çalıştırıldığında print.sh adında ve içeriği #!/bin/bash echo $PWD echo /home/user olan bir dosya oluşur....

December 10, 2018 · 1 min · Aykut Asil

Android CircleCI Configuration

CircleCI Android Yapılandırması .circleci/config.yml version: 2 jobs: build: working_directory: ~/code docker: - image: circleci/android:api-28-alpha environment: JVM_OPTS: -Xmx3200m steps: - checkout - run: name: Initialize Keystore File command: echo $KEYSTORE_BASE64 | base64 --decode > app/aykutasilkeystore - run: name: Initialize Fabric Properties command: |echo "apiKey=$FABRIC_API_KEY" >> app/fabric.properties echo "apiSecret=$FABRIC_API_SECRET" >> app/fabric.properties cat app/fabric.properties - run: name: Initialize Keystore File command: |echo "signingKeyAlias=$KEYSTORE_KEY_ALIAS" >> keystore....

December 1, 2018 · 3 min · Aykut Asil