Blog
Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.
Go'da Concurrency Pattern'leri: context, sync, errgroup, Worker Pool ve Goroutine Leak
Go'da eşzamanlı erişilen veri ya bir mutex ile korunur ya da bir channel ile sahibine bırakılır; korunmayan map process'i çökertir, korunmayan sayaç ise sessizce aynı sipariş ID'sini üretir. Bookstore'da concurrent map writes ve race detector, Service ile memstore'un mutex ile düzeltilmesi, context ile iptal ve deadline, WaitGroup.Go, errgroup ile 10.000 faturalık worker pool, Go 1.27'nin goroutineleak profili ve synctest ile 15 dakikalık testi anında çalıştırmak.
React'te Global State: Context'in Sınırları, Zustand ve Ne Zaman Redux Toolkit?
Çoğu "global state" aslında server, URL ya da form state'idir; gerçekten global olan küçük client state için Zustand'ın selector'lı store'u Context'in her okuyanı render etme sorununu çözer, Redux Toolkit ise action log ve büyük ekip kuralları gerektiğinde gelir. Bookstore'da son bakılan kitapları ve sepet id'sini persist edilen bir store'a taşıyıp selector'sız okumanın 1 yerine 13 render ürettiğini ve yeni object döndüren selector'ın Zustand 5'te sonsuz döngüye girdiğini gösteriyoruz.
useRef, Context ve Custom Hook'lar: DOM Erişimi, DI Yerine Context ve Hook Kuralları
useRef render tetiklemeyen bir kutudur (DOM node'u ya da timer id'si), Context ise bir değeri ağacın derinlerine props'suz taşır ve değişince onu okuyan her component'i render eder. Bookstore'da sepet, tema ve kullanıcıyı Context'e taşıyıp tema değişiminin 2 yerine 28 component render ettirdiği sürümü ölçüyor, inline ref callback'inin odak kaçırdığını, koşullu hook'un uygulamayı çökerttiğini ve aramayı custom hook'lara ayırmayı gösteriyoruz.
Copilot Chat ve Context: Ask, Edit, Agent ve Plan Akışları, #-referansları, Workspace Index'i ve Context'i Yönetmek
Copilot Chat'e bütün repoyu değil, cevabın olduğu dosyaları #-referanslarıyla verip yanlışlanabilir bir soru sormak gerekir: Bookstore'da context'in yarısı tek bir package-lock.json çıktı, iptal sorusunun cevabı ise beş bin token'lık dilimdeydi ve cevap 'iptal akışı yok'. Ask, Plan ve Agent; workspace index, search.exclude ve compaction.
Agent'a Doğru Context Vermek: AGENTS.md, copilot-instructions.md, CLAUDE.md ve Path-specific Talimatlar
Coding agent'a repo'yu anlatmanın araçtan bağımsız yolu kökte kısa bir AGENTS.md yazmaktır: build ve test komutları, klasör yapısı, ekip kuralları ve önce sorulacak konular. Hangi aracın hangi dosyayı okuduğunu, nested ve path-specific talimatları, Bookstore için gerçek bir AGENTS.md'yi, aynı görevin üç farklı context'le verdiği sonuçları ve talimat dosyasının bayatlamasını yakalayan bir kontrolü ele alıyoruz.