Mert Özen Her Satırda Daha İleri

Blog

Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.

Seriler
75 yazı bulundu
Yeni Makineyi Tek Komutla Kurmak: Brewfile, WinGet Configuration, mise ile Runtime Sürümleri ve Bootstrap
Geliştirici Araçları SERİ 05

Yeni Makineyi Tek Komutla Kurmak: Brewfile, WinGet Configuration, mise ile Runtime Sürümleri ve Bootstrap

Yeni bir makineyi tek komutla kurmanın yolu işi katmanlara ayırmak: makine araçlarını Brewfile ya da WinGet Configuration kurar, proje sürümlerini global.json ve mise.toml ile mise sabitler, dotfiles'ı chezmoi uygular, projeyi just setup hazırlar. Bookstore'un tekrar çalıştırılabilir bootstrap script'lerini, WinGet dosyasının şema doğrulamasını, mise'nin trust sorusunu ve eksik araçları kendiliğinden kuran mise exec'i gösteriyoruz.

15 Kas 2026 13 dk 0
Dotfiles: Ayarlarını Git'te Tutmak, chezmoi veya Stow ile Senkronlamak ve Secret Sızdırmamak
Geliştirici Araçları SERİ 04

Dotfiles: Ayarlarını Git'te Tutmak, chezmoi veya Stow ile Senkronlamak ve Secret Sızdırmamak

Dotfiles'ı Git'te tutmanın üç yolu var: bare repo, GNU Stow ve chezmoi; birden çok işletim sistemi ve secret varsa chezmoi en az elle iş bırakanı. Üçünü sahte bir home klasöründe deniyoruz: bare repo'da add -A tuzağı, Stow'un .config klasörünü katlaması ve --adopt'un repo'yu ezmesi, chezmoi'de template, .chezmoiignore, Windows çıktısını --override-data ile görmek, age şifrelemesi ve gitleaks'in yakalamadığı uydurma token.

15 Kas 2026 10 dk 0
Proje Komutlarını Tek Yerde Toplamak: justfile, Makefile, npm scripts, dotnet tool ve C# file-based app
Geliştirici Araçları SERİ 03

Proje Komutlarını Tek Yerde Toplamak: justfile, Makefile, npm scripts, dotnet tool ve C# file-based app

Proje komutlarını README yerine repo'daki bir justfile'da topla ve CI'ın da aynı recipe'yi çağırmasını sağla. Bookstore'un justfile'ını (parametre, .env, [parallel] ile API ve Angular'ı birlikte başlatma, Windows için PowerShell), Makefile ve npm scripts karşılaştırmasını, yerel .NET tool manifest'ini, dnx'in -- tuzağını ve .NET 10 file-based app ile yazılmış seed aracını gerçek çıktılarla gösteriyoruz.

15 Kas 2026 13 dk 0
Kendi Proje Template'in: dotnet new ile Bookstore Şablonu ve Angular Schematics'e Kısa Bakış
Geliştirici Araçları SERİ 02

Kendi Proje Template'in: dotnet new ile Bookstore Şablonu ve Angular Schematics'e Kısa Bakış

dotnet new template'i, içinde .template.config/template.json olan sıradan bir .NET solution'ı; sourceName, parametreler ve koşullu içerikle yeni bir Bookstore servisini tek komutta üretir. Template'i paketlemeyi, yerel feed'den kurmayı, port generator'ı, NoDefaultExcludes eksikliğinin düşürdüğü .dockerignore'u, 1.1.0 güncellemesinin eski projeleri değiştirmediğini gösteren diff'i ve Angular'da özel bir schematic'i gerçek çıktılarla anlatıyoruz.

15 Kas 2026 11 dk 0
Snippet ve Live Template Yazmak: VS Code, Visual Studio ve Rider'da Kendi C# ve Angular Kısayolların
Geliştirici Araçları SERİ 01

Snippet ve Live Template Yazmak: VS Code, Visual Studio ve Rider'da Kendi C# ve Angular Kısayolların

Snippet, dilin syntax'ı yüzünden her seferinde yazdığın küçük iskeletler için doğru araç; tekrar eden mantık için değil. Bookstore'un xUnit v3 testi, minimal API endpoint group'u, EF Core configuration'ı ve Angular 22 component'i için VS Code snippet'lerini, namespace'i dosya yolundan üreten transform'u, Visual Studio .snippet ve Rider live template karşılıklarını ve snippet dosyasını sessizce ignore eden .gitignore satırını gösteriyoruz.

15 Kas 2026 12 dk 0
Localhost'u İnternete Açmak ve Mock Server'lar: Dev Tunnels, Cloudflare Tunnel, ngrok, Prism ve WireMock.Net
Geliştirici Araçları SERİ 07

Localhost'u İnternete Açmak ve Mock Server'lar: Dev Tunnels, Cloudflare Tunnel, ngrok, Prism ve WireMock.Net

Ödeme sağlayıcısının webhook'unu localhost'taki Bookstore.Api'ye almak için bir tünel gerekir, ama API'yi koruyan şey tünel değil imzadır. HMAC imzası ve zaman toleransıyla çalışan webhook endpoint'ini yerelde gerçek çıktıyla deniyor, Dev Tunnels, Cloudflare quick tunnel ve ngrok'u erişim ayarlarıyla karşılaştırıyor, Prism'le OpenAPI'den 401 ve 422 dönen bir mock, WireMock.Net'le senaryo ve gecikmeli kargo mock'u kuruyoruz.

15 Kas 2026 14 dk 9
HTTP Trafiğini Yakalamak: mitmproxy ve Fiddler ile Tarayıcının, HttpClient'ın ve Angular Dev Server'ın İsteklerini Görmek, Değiştirmek ve Tekrar Oynatmak
Geliştirici Araçları SERİ 06

HTTP Trafiğini Yakalamak: mitmproxy ve Fiddler ile Tarayıcının, HttpClient'ın ve Angular Dev Server'ın İsteklerini Görmek, Değiştirmek ve Tekrar Oynatmak

Bookstore.Api'nin kargo API'sine giden HTTPS isteğini görmek için mitmproxy'yi 127.0.0.1'de çalıştırıp HttpClient'ı HTTPS_PROXY ile ona yönlendiriyor, CA'yı sisteme değil yalnız o client'a veriyoruz. Python addon ile cevabı 3 saniye geciktirip timeout ve retry'ı gerçek çıktıyla izliyor (kullanıcı 503 alırken kargoda üç teklif oluşuyor), filtre, kayıt ve replay'i, Angular dev server ile Chromium'un loopback istisnasını ve Fiddler'ın modlarını karşılaştırıyoruz.

15 Kas 2026 15 dk 6
jq ve yq Derinlemesine: Komut Satırında JSON ve YAML Sorgulamak, Dönüştürmek ve Düzenlemek
Geliştirici Araçları SERİ 06

jq ve yq Derinlemesine: Komut Satırında JSON ve YAML Sorgulamak, Dönüştürmek ve Düzenlemek

jq olmayan bir alanı hata değil null olarak döndürür ve boş sonuçta da 0 ile çıkar; CI'da koşul olarak kullandığın her filter'a -e ekle. Bookstore.Api, kubectl, dotnet list package ve GitHub API çıktılarıyla select, group_by, reduce inputs, --arg/--argjson ve @csv'yi; yq ile image tag'ini yorumları koruyarak güncellemeyi, iki farklı yq'yu ve Windows tırnaklamasını gerçek çıktılarla gösteriyoruz.

15 Kas 2026 13 dk 10
JSON Schema ile Configuration'ı Doğrulamak: Editor IntelliSense, SchemaStore ve CI'da Validation
Geliştirici Araçları SERİ 05

JSON Schema ile Configuration'ı Doğrulamak: Editor IntelliSense, SchemaStore ve CI'da Validation

.NET binder yazım hatalı bir ayar key'ini sessizce yok sayar; JSON Schema'da additionalProperties: false bu hatayı dosyayı yazarken ve CI'da yakalar. Bookstore.Api için 2020-12 şeması yazıp SchemaStore, VS Code eşlemesi, YAML şema yorumu, check-jsonschema, ajv ve JsonSchema.Net ile doğruluyor; draft karışıklığını ve format'ın her yerde kontrol edilmediğini gerçek çıktılarla gösteriyoruz.

15 Kas 2026 12 dk 13
TOML, INI, .env ve Diğerleri: Hangi Configuration Formatı Ne Zaman?
Geliştirici Araçları SERİ 04

TOML, INI, .env ve Diğerleri: Hangi Configuration Formatı Ne Zaman?

Dosyayı kimin okuyacağına göre seç: tek okuyucu .NET ise JSON ve environment variable yeterli, aynı .env'i birden fazla araç okuyorsa en katı ortak alt kümeyle yaz. Aynı .env'i Compose, Node.js, dotenv, python-dotenv ve bash'le; aynı INI'yi .NET, Python ve git'le okuyup farkları, TOML 1.1'in tarih tiplerini ve Bookstore.Api ayarının beş formatta tek configuration'a dönüşmesini gösteriyoruz.

15 Kas 2026 12 dk 15
YAML 2: Multiline String'ler, Anchor/Alias, Merge Key, Çoklu Doküman ve KYAML
Geliştirici Araçları SERİ 03

YAML 2: Multiline String'ler, Anchor/Alias, Merge Key, Çoklu Doküman ve KYAML

Script'i | ile, uzun metni > ile yaz; secret gibi tek satırlık değerlerde |- kullan, yoksa sona \n eklenir. Merge key (<<) YAML 1.2'de yok: Compose, kubectl ve kubeconform destekliyor, GitHub Actions desteklemiyor, js-yaml 5 ise ayar istiyor. Çoklu doküman, anchor'ın doküman sınırı, güvensiz tag'ler, KYAML ve Bookstore için bir yamllint kural setini gerçek çıktılarla gösteriyoruz.

15 Kas 2026 14 dk 13
YAML 1: Syntax, Tipler ve "Norway Problem": Bir YAML Dosyasını Doğru Okumak
Geliştirici Araçları SERİ 02

YAML 1: Syntax, Tipler ve "Norway Problem": Bir YAML Dosyasını Doğru Okumak

Tırnaksız bir YAML değerinin tipini parser'ın uyguladığı kural seti belirler: YAML 1.1'de NO false, 12:30 sayı, 0755 sekizlik; YAML 1.2'de üçü de farklı. PyYAML, ruamel.yaml, js-yaml, YamlDotNet, yq, Docker Compose ve kubectl'i aynı dosyayla çalıştırıp Bookstore'un compose.yaml ve Kubernetes manifest'indeki üç gerçek tip hatasını gösteriyoruz.

15 Kas 2026 13 dk 13
Blog Haritası