Mennan Köse

Software Developer

.NET Core'da Custom Feature Flag Provider Geliştirme
.Net Core

.NET Core'da Custom Feature Flag Provider Geliştirme

Merhabalar 👋 Bu yazımda .NET Core'da feature'ları yönetebildiğimiz kütüphane olan FeatureManagement kütüphanesinden ve feature ayarlarımızı saklayabileceğimiz farklı alanlardan bahsedeceğim. Bazen geliştirdiğimiz özellikleri canlı ortama almışken o özelliklerin kapalı gelmesini ve zamanı geldiği zaman açmak isteyebiliriz. Bu tip operasyonları yönetmek için .NET Core'da FeatureManagement kütüphanesinden yararlanıyoruz. FeatureManagement'ı Kullanarak Feature'ların Yönetimi Bu yazıda

Mountebank ile API Dönüşlerinin Mocklanması
Test

Mountebank ile API Dönüşlerinin Mocklanması

Merhabalar. Bu yazımda geliştirmiş olduğumuz uygulamaların iletişime geçtiği API'ların dönüşlerinin (response) nasıl mocklanacağından bahsedeceğim. Şöyle bir senaryoyu düşünelim. Bir Front-End uygulaması üzerinden (React, Vue veya Angular ile geliştirilmiş) bir API uygulamasına istek atıyoruz. Front-End uygulamamızın testlerini yazarken API uygulamasının da ayakta ve istediğimiz cevapları vermesini beklemekteyiz. Ancak Front-End uygulaması üzerinden

.NET Core  ile RESTful API Design Sunumum
ASP.NET Core

.NET Core ile RESTful API Design Sunumum

15 Mayıs 2020 günü dotnet istanbul'da .NET Core ile RESTful API Design isimli online bir etkinlik gerçekleştirdik. Kısacası sunumda bahsettiğim konular şu şekilde; API standartları Kullanılması gereken HTTP metodları Hangi HTTP durum kodu (Status Code) nerede kullanılır Güvenlik standartları Versiyonlama nasıl yapılır API test için kullanabileceğiniz araçlar API dokümantasyonu nasıl

QA Wolf ile Hızlıca Puppeteer Testleri Oluşturma
E2E

QA Wolf ile Hızlıca Puppeteer Testleri Oluşturma

Önceki yazılarımda Puppeteer ve Jest ile nasıl E2E testlerinin yazılacağından bahsetmiştim. Bu yazımda ise QA Wolf'u kullanarak hızlıca Puppeteer testlerinin yazılacağından bahsedeceğim. QA Wolf, testlerinizi ekrana gelen Chromium penceresi üzerinden aksiyonlar alarak otomatik olarak test dosyalarını oluşturan bir araçtır. Kendisi arkaplanda Puppeteer ve Jest'i kullanarak testleri oluşturmaktadır. QA Wolf'u daha

Puppeteer'da Bir Web Uygulamasına Giriş Yapmak ve Giriş Bilgilerini Saklamak
Puppeteer

Puppeteer'da Bir Web Uygulamasına Giriş Yapmak ve Giriş Bilgilerini Saklamak

Merhabalar. Önceki 2 yazımda Puppeteer'a giriş yapıp, setup ve teardown durumlarını incelemiştik. Puppeteer ile bir test yazarken bazı durumlarda web uygulamasına giriş yapılması gerekebilir ve giriş bilgilerinin (örneğin cookie veya token bilgileri) bir yerde saklanıp kullanılması gerekebilir. Bu yazımda ben bir web sitesine login olup ilgili cookie değerlerini nasıl saklayabileceğimizden

Puppeteer'da Setup, Teardown ve Test Environment'ın Kullanımı
Jest

Puppeteer'da Setup, Teardown ve Test Environment'ın Kullanımı

Merhabalar. Bir önceki yazımda Puppeteer ve Jest'in kurulumu ve testlerin nasıl yazılacağından bahsetmiştim. Bu yazımda ise birçok test aracında da bulunan Setup ve Teardown yapılarının Puppeteer'da nasıl yapılabileceğinden bahsedeceğim. Öncelikle Setup, Teardown ve Test Environment kavramlarından bahsedelim. Setup, tüm testler yazılmadan önce yapılması gereken işlerin yapıldığı bölümdür. Setup test işlemi

Puppeteer ve Jest Araçları ile E2E Testlerinin Yazılması
Test

Puppeteer ve Jest Araçları ile E2E Testlerinin Yazılması

Bu yazımda Puppeteer ve Jest araçlarını kullanarak nasıl E2E (End-to-End) test yazılacağından bahsedeceğim. Puppeteer, Headless Chrome çözümlerinden biridir. Puppeteer'ı kullanarak Chrome veya Chromium tabanlı herhangi bir tarayıcı kullanarak sağlanan API'lar vasıtasıyla tarayıcıyı kontrol edebilirsiniz. Örneğin DOM'u manipüle etme, sayfa boyutunu değiştirerek tarayıcının verdiği tepkileri ölçme v.b. gibi işlemleri yapabiliriz.

.NET Core ile Yazılan Testlerin Coverage Raporlarının Oluşturulması
.Net Core

.NET Core ile Yazılan Testlerin Coverage Raporlarının Oluşturulması

Code Coverage, yazılmış olan testin kodunuzun ne kadarını kapsadığını belirten bir ölçümdür. Bu ölçüm sayesinde kodunuzda testi yazılmamış kısımlar bulunuyorsa analizini yaparak ilgili satırların veya bölümlerinin testini yazmaya karar verebilirsiniz. Mümkün olduğunca code coverage yüzdesinin yüksek olmasına önem verilmelidir. .NET Core'da dahili olarak code coverage raporunu oluşturabilecek bir araç bulunmamaktadır.

Swagger UI'da Authorization Bilgilerinin Girilmesi
ASP.NET Core

Swagger UI'da Authorization Bilgilerinin Girilmesi

ASP.NET Core'da oluşturuşmuş bir Web API'ın dökümantasyonu için Swagger ve Swagger UI kullandığınızda varsayılan olarak güvenlik ile ilgili HTTP header'larını arayüz üzerinden girememektesiniz. Örnek vermek gerekirse geliştirmiş olduğunuz API güvenliğini sağlayabilmek için Client-Id ve Client-Secret isminde iki tane HTTP header'ından gelen bilgileri kontrol ettiğini varsayalım. using Microsoft.AspNetCore.Builder;

ASP.NET Core Web API'da Swagger ile Dökümantasyon Oluşturma
ASP.NET Core

ASP.NET Core Web API'da Swagger ile Dökümantasyon Oluşturma

ASP.NET Core ile geliştirmiş olduğumuz Web API’ları kullanarak uygulama geliştirecek olan kişiler için dökümantasyon oldukça önemlidir. API’ın hangi endpointlere sahip olduğu, hangi HTTP metoduyla iletişim kuracağı, endpoint’in almış olduğu parametreler ve body içeriği, API’dan dönecek olan cevabın içeriğinin nasıl olduğu gibi bilgileri vermek uygulama geliştiricilerin

Visual Studio Code API'da Context Menu Alanına Menü Ekleme
Visual Studio Code

Visual Studio Code API'da Context Menu Alanına Menü Ekleme

Visual Studio Code eklentisi geliştirirken ekranın sol tarafında bulunan Explorer alanına menü eklemek isteyebiliriz. Bunu yapabilmek için eklenti projemizin ana dizininde bulunan package.json‘ın menus bölümüne ekleme yapmamız gerekmektedir. Öncelikle aşağıdaki komutu kullanarak yeni bir Visual Studio Code projesi oluşturalım. yo code Oluşturmuş olduğumuz projeyi Visual Studio Code ile

ASP.NET Core'da ile Farklı Configuration Provider Geliştirme
.Net Core

ASP.NET Core'da ile Farklı Configuration Provider Geliştirme

ASP.NET Core ile oluşturmuş olduğunuz bir uygulamaya ait belli başlı ayarları olabilir. ASP.NET Core’da varsayılan olarak File Configuration Provider (INI, JSON ve XML dosyaları) kullanılmaktadır. Ancak bazı durumlarda ayarlarımızı farklı ortamlarda saklayıp yüklememiz gerekebilir. Örneğin Redis’te, Vault’ta veya environment variable’da (ortam değişkenleri) saklayabiliriz. Bu

.Net Core'da HttpClient ile Proxy Kullanımı
.Net Core

.Net Core'da HttpClient ile Proxy Kullanımı

.Net Core ile geliştirdiğimiz uygulamalarda HttpClient sınıfını kullanarak uç noktalara istek atmamız gerekebilir. Örnek olarak kurumsal firmalarda çalışacak olan uygulamanız internet ortamındaki bir adrese istek göndermek isteyebilir. Ancak uygulamanızın çalışmış olduğu sunucunun internet erişimi kısıtlandığından dolayı ilgili adrese erişemeyebilirsiniz veya HttpClient sınıfı kullanarak göndermiş olduğunuz isteği ve gelen cevabı Charles

.Net Core

Entity Framework Core'da Global Query Filters Kullanımı

Global Query Filters, entity nesnelerinde özellikle Where sorgu operatörüyle gönderdiğimiz sorguların her sorguya otomatik olarak eklemek için kullanılır. Kullanım senaryolarına örnek vermek gerekirse soft delete veya multi tenancy sorguları verilebilir. Bu yazıda örnek olması açısından soft delete senaryosu üzerinden ilerleyeceğiz. Global Query Filter tanımları DbContext sınıfının virtual olan OnModelCreating metodunda

Extension Development

Visual Studio Code API'da Decorators Kullanımı

Visual Studio Code, kod editörüne tasarımsal olarak bazı eklemeler veya düzenlemeler için bize Decorator API isminde bir ortam sunmaktadır. Örnek olması açısından Visual Studio Code’da en çok kullanılan eklentilerden biri olan GitLens‘in kod editörüne yaptığı değişikliği gösterebiliriz. Bu yazımda biz de buna benzer bir eklenti geliştireceğiz. Geliştireceğimiz eklenti

Windows Server 2016 üzerine Active Directory Domain Services Kurulması ve SSL Ayarlarının Yapılması
Active Directory

Windows Server 2016 üzerine Active Directory Domain Services Kurulması ve SSL Ayarlarının Yapılması

Merhabalar. Bu yazımda Windows Server 2016 işletim sistemi üzerine Active Directory Domain Services’ın (AD DS) nasıl kurulacağına ve gerekli SSL ayarlarının nasıl yapılacağına değineceğim. Kuruluma sunucunun bilgisayar adını ve IP adresini değiştirerek başlıyoruz. İlk önce bilgisayar adını değiştiriyoruz. bilgisayar adını değiştirmek için System > Computer name, domain and workgroup

ASP.NET Core

ASP.NET Core Uygulamalarında Remote IP Adresi Problemi

ASP.NET Core ile geliştirilmiş bir web uygulamasının load balancer arkasında çalışabilmesi için UseForwardedHeaders middleware’ının kullanılması gerekmektedir. Bu middleware load balancer’ın yönlendirdiği X-Forwarded-Proto ve X-Forwarded-For http headerlarından gelen değerin uygulamamız tarafından erişilebilmesini sağlar. Örnek kullanımı aşağıdaki gibidir. var forwardingOptions = new ForwardedHeadersOptions() { ForwardedHeaders = ForwardedHeaders.XForwardedAll }; app.UseForwardedHeaders(forwardingOptions); Bu

JavaScript

JavaScript'te Seçilmiş Metindeki Seçimi Kaldırmak

JavaScript’te input bir alanda olan seçili metindeki seçimi kaldırmak için aşağıdaki yöntemden faydalanabiliriz. if (window.getSelection) { window.getSelection().removeAllRanges(); } else if (document.selection) { document.selection.empty(); } window.getSelection Internet Explorer 9+ ve diğer tarayıcılar tarafından desteklenmektedir. document.selection ise Internet Explorer 8 ve altı tarayıcılar tarafından desteklenmektedir. Kaynak: https:

NoSQL

Windows'ta Redis Kullanımı

Merhabalar. Bu yazımızda Windows’ta Redis’i nasıl kullanacağımıza değineceğiz. Redis’in Windows desteği bulunmamaktadır. Sadece Linux’ta çalışabilmektedir. Ancak Microsoft Open Tech‘in 64 bit Windows sürümleri için portlamış olduğu bir Redis sürümü bulunmaktadır. Şimdi bunun nasıl kurulacağını ve çalıştırılacağını adım adım uygulayalım. İlk önce https://github.com/MSOpenTech/

JavaScript

Tarayıcıda Sekme Değiştirmenin Algılanması

Merhabalar, Tarayıcılarda bir sekmeden başka bir sekmeye geçişi Page Visibility API sayesinde anlayabiliriz. visibilityState özelliğinde sekmenin durumu tutulmaktadır. Örnek olarak aşağıdaki kodu inceleyebiliriz: document.addEventListener("visibilitychange", function() { console.log(document.visibilityState); }); Sekme değişikliklerini visibilitychange olayı yakalamaktadır. visibilityState özelliği aşağıdaki değerleri almaktadır: visible: Tarayıcı sekme aktiftir ve tarayıcı penceresi

Bootstrap

Bootstrap Popover Eklentisinin Ekran Görünümüne Göre Konumlanması

Bootstrap’in Popover eklentisini kullanırken tarayıcının ekran boyutlarında herhangi bir değişim olduğunda açılan Popover ekranda düzgün bir şekilde konumlanmamaktadır. Örneğin Popover’ın placement özelliğini top olarak atarsanız tarayıcı ekranını aşağı doğru kaydırdığınızda veya ekran boyutunu değiştirdiğinizde Popover ekranın dışında kalacaktır. Bu sorunu önlemek için **placement** özelliğini aşağıdaki şekilde düzenlememiz yeterlidir.

Entity Framework

Code-First ile Üretilmiş Migration'ların SQL Çıktısının Üretilmesi

Entity Framework Code-First yöntemi kullanılarak geliştirilmiş uygulamalarda add-migration ve update-database komutlarını Package Manager Console üzerinden çalıştırdığımızda uygulamamızın kullanmış olduğu Connection String üzerinden değişiklikleri veritabanına uygulayabiliyoruz. Ancak üretilen bu migrationları veritabanında herhangi bir değişiklik yapmadan SQL çıktısı olarak alabilmek için aşağıdaki komutu kullanabiliriz. Update-Database -Script -SourceMigration:0 Bu komut sayesinde yapmış

ASP.NET

ASP.NET'te Page_Load Olayının Master Page'deki Page_Load Olayından Önce Tetiklenmesi

ASP.NET’te bazı durumlarda sayfa yüklemeden önce bazı işlemlerin yapılması gerekebilir. Örneğin kullanıcı doğrulaması gibi. Bu gibi durumlarda hem sayfalarda hem de Master Page’lerde Page_Load olayı kullanılır. Ancak bu olayda sayfanın içeriği oluşturulmaktadır. Sayfanın içeriği oluşturulmadan önce bu kontrolleri yapabilmemiz için Page_Init ve Page_PreRender olayları