Android SMS User Consent API Kullanımı

Problem? Android işletim sisteminin ilk versiyonlarında SMS’lere erişim oldukça kolaydı. Fakat şimdi sadece özel izne sahip uygulamalar bu izne sahip olabiliyor. Google’a bir form doldurarak ve neden SMS okuma özelliğine kesin olarak ihtiyacınız olduğunu anlatarak bu izni talep ediyorsunuz. Peki bizim amacımız tek seferlik bir SMS okumak ise yine bu süreçten geçmeli miyiz? Hayır! Google tek seferlik SMS okuması yapabilmek için çeşitli API’ler çıkardı. Bu API’lere sayfanın en altında bulunan Kaynaklar bölümünden erişebilirsiniz....

November 2, 2021 · 1 min · Aykut Asil

.Net Sqlite Konfigürasyonu

CLI ile Entity Framework işlemleri gerçekleştirmek için dotnet-ef toolunu yüklemelisiniz. dotnet tool install --global dotnet-ef dotnet add package Microsoft.EntityFrameworkCore.Design SQLite provider’ı için ilgili paketi yüklemelisiniz dotnet add package Microsoft.EntityFrameworkCore dotnet add package Microsoft.EntityFrameworkCore.Sqlite SQLite konfigürasyonu için startup.cs dosyasını aşağıdaki gibi güncellemelisiniz. public void ConfigureServices(IServiceCollection services) { services.AddDbContext<MainDbContext>(x => x.UseSqlite("DataSource=app.db")); services.AddControllers(); services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { Title = "ws_agt_ext_api", Version = "v1" }); }); } Users tablosunu oluşturmak için aşağıdaki gibi ilgili sınıfları oluşturmalısınız....

June 24, 2021 · 2 min · Aykut Asil

Teamcity Slack Entegrasyonu

Senaryo Kendi sunucunuz üzerine kurmuş olduğunuz Teamcity’e Slack entegrasyonu yaparak, build > deploy adımlarını Slack üzerinden nasıl izleriz? Çözüm Öncelikle Slack yapılandırmaları ile başlayalım. https://api.slack.com/apps adresine giriyoruz ve yeni bir App oluşturuyoruz. OAuth & Permissions tabına geçerek ilgili yetkilendirmeleri yapıyoruz. Botumuza, ihtiyaç duyacağı tüm izinleri verdikten sonra Install to Workspace diyerek yetkilendirmeyi tamamlıyoruz. Oluşan tokenı Teamcity tarafında kullanıcaz. Slack tarafında App‘imizi oluşturduktan sonra şimdi Teamcity tarafında gerekli ayarlamaları yapabiliriz....

January 5, 2021 · 1 min · Aykut Asil

PowerShell Invoke-Command ile Uzak Bilgisayarda Komut Çalıştırma

Senaryo Şu anda çalışmış olduğum şirkette, kendi local sunucularımız üzerine kurmuş olduğumuz Teamcity ile projelerin derlenip sunulma aşamasını otomatize etmeye çalışıyoruz. Teamcity kurmuş olduğumuz sunucu ile projelerin deploy olacağı sunucular farklı. Biz şimdilik bu deploy sürecini teamcity built-in FTP özelliğini kullanarak hallediyoruz. Fakat .net core projelerinin deploy olma sürecinde yaşanan bir problem var. Eğer .net core projeniz IIS arkasında konuşlanma şeklinde ayarlanmış ise IIS, projenizin .exe dosyasını çalıştıyor olacak ve bu çalışma süresince siz bu dosyayı değiştirme, silme vb....

December 21, 2020 · 2 min · Aykut Asil

Düzeltilmiş .gitignore ile Projenin Yeniden Yapılandırılması

Problem Zaten halihazırda .gitignore dosyası eklenmiş şekilde bir git repunuz var. Sonradan .gitignore dosyasınızı yapılandırdınız fakat yine de bu dosyalar track(izlenmeye) devam ediyor. Sebep Proje dosyalarını ilk commit yaptığınızda mevcut .gitignore yapılandırmanız baz alınarak dosyalar cachelenir. Ve sonrasında bu dosyalarda yapılan tüm değişikler izlenmeye devam eder. Sonradan .gitignore dosyanızda değişiklik yapsanız dahi cachelenmiş dosyalarda değişiklik olmaz. Çözüm git cache’ini temizleyerek izlenenen tüm dosyaları yeni .gitignore yapılandırmanıza göre tekrardan cachelenmesini sağlayabilirsiniz....

December 7, 2020 · 1 min · Aykut Asil

Android Fastlane Kurulumu

Fastlane, mobil ile ilgili neredeyse tüm süreçleri (build,test,deploy vs.) otomatize etmeye yarayan bir araçtır. Fastlane kullanarak hangi CI/CD platformunu kullanıyor olursanız olun uygulama süreçleriniz tekil hale getirebilirsiniz. Kurulum brew install fastlane Fastlane aracının kurulumunu tamamladıktan sonra, ilk olarak projenizin root klasörüne gelip fastlane init komutunu çalıştırmalısınız. Komut satırında Package Name istenildiğinde uygulamamızın package name‘ini (com.example.myapplication) giriyoruz. Diğer adımları şimdilik es geçebilirsiniz. Proje yapılandırması tamamlandığında app klasörü ile aynı seviyede fastline isimli bir klasör oluşacak....

November 4, 2020 · 2 min · Aykut Asil

Android Fastlane Screengrab Kurulumu

Fastlane kurulumunu henüz tamamlamadıysanız sizi buraya alalım. Screengrab Mobil ekran görüntüsü alımını otomatize eden bu aracın kullanımı için öncelikle aşağıdaki komut ile ilgili aracı yüklüyoruz. sudo gem install screengrab Daha sonra AndroidManifest.xml dosyasına aşağıdaki bloğu eklemeliyiz. <!-- Allows unlocking your device and activating its screen so UI tests can succeed --> <uses-permission android:name="android.permission.DISABLE_KEYGUARD" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <!-- Allows for storing and retrieving screenshots --> <uses-permission android:name="android....

November 4, 2020 · 3 min · Aykut Asil

Android applicationId vs package name

Android projesi oluşturduğunuzda aşağıdaki gibi AndroidManifest.xml ve build.gradle dosyaları oluşur. AndroidManifest.xml içerisinde package tagı ve build.gradle içerisinde applicationId niteliği bulunur. Peki bu ikisi arasındaki fark nedir? package=“com.example.myapp” ile belirttiğimiz kısım aslında projemizin klasör yapısını ifade eder. Yani com > example > myapp şeklinde bir tree yapısı vardır. Ve biz proje dosyalarımızı bu dizin altında oluşturmaya başlarız. Örneğin MainActivity dosyası oluşturduğumuzda aslında bu dosyanın yolu com.example.myapp.MainActivity olur. Projemiz derlenme sırasında package değerine bakar ve dosyaları bu adrese göre bulur....

June 21, 2020 · 2 min · Aykut Asil

Asp.Net Core launchSettings.json Kullanımı

launchSettings.json dosyası sadece local‘de development yaparken kullanılan bir dosyadır. Visual Studio veya dotnet cli ile birlikte kullanılır. Not: Eğer uygulamamızı sunucuyu deploy ettikten sonra ulaşmak istediğimiz ayarlar var ise bunun belirtilmesi gereken yer launchSettings.json dosyası değildir. Bu tür ayarlar genelde appSettings.json dosyası içerisinde tanımlanır. launchSettings.json dosyası { "iisSettings": { "windowsAuthentication": false, "anonymousAuthentication": true, "iisExpress": { "applicationUrl": "http://localhost:59119", "sslPort": 0 } }, "profiles": { "IIS Express": { "commandName": "IISExpress", "launchBrowser": true, "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } }, "FirstCoreWebApplication": { "commandName": "Project", "launchBrowser": true, "applicationUrl": "http://localhost:5000,https://localhost:5000", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } } } Yukarıdaki dosyayı inceleyecek olursak profiles tagı altında IIS Express ve FirstCoreWebApplication tagları olduğunu görürüz....

April 17, 2020 · 2 min · Aykut Asil

Javascript Hoisting

Javascript dilinin nasıl yorumlandığı ile alakalı bir durum olan Hoisting kavramını bilmekte fayda var diye düşünüyorum. Örneğin aşağıdaki gibi bir kod yazdığımızda; console.log(username); var username = "aykuttasil"; alacağımız çıktı undefined şeklinde olur. Normal şartlarda beklediğimiz sonuç hata fırlatmasıdır. Çünkü username değişkeni tanımlanmadan önce yazdırılmaya çalışılmıştır. Ama beklediğimiz şekilde olmaz ve ekrana undefined yazılır. Peki Neden? Yukarıdaki gibi bir kod bloğu çalıştırılmadan önce javacsript tarafından hoisting işlemi uygulanır ve tüm var değişkenleri kod bloğunun(scope) en üstüne taşınır ve default olarak undefined atanır....

April 3, 2020 · 2 min · Aykut Asil