omeryanbas.com

Ömer Yanbaş

Genel Müdür, Ticofab Yazılım

Günlük

Üretimde karşıma çıkan problemler, sebepleri ve çözümleri. Ayda iki yazı, Türkçe ve İngilizce.

2026

  1. Teknik borcu ödenecek kadar görünür kılmak

    Kimsenin göremediği borca bütçe ayrılmaz. Her kaleme maliyet ve faiz yazın, özellik listesinin içine koyun ve borcu özellik işinin içinde ödeyin.

    Yöntem6 dk okuma

  2. Ekibin kararlarını nereye yazdığı

    Kararlar sohbet kanallarında ve insanların aklında yaşar, ikisi de buhar olur. Tek paragraflık karar kaydı gerekçeyi kodun yanında tutar.

    YöntemOperasyon6 dk okuma

  3. Müşteriyle ilk toplantıda sorulacak beş soru

    Başarı hangi sayı, şu an ne çalışıyor da bozulmamalı, hesaplar kimde, daha önce ne denendi, anlaşmazlıkta kim karar veriyor. Sonra hepsini yazın.

    Yöntem6 dk okuma

  4. Hata ayıklama: önce ölç, sonra tahmin et

    Hatayı bulan sıra şudur: üret, daralt, ölç, en son teori kur. Değişiklikte ve veride bisect, ve ilk teorinin neden en pahalı teori olduğu.

    Yöntem6 dk okuma

  5. Uzun işler küçük ve geri alınabilir adımlarla biter

    Büyük bir işi, her biri tek başına çıkabilen ve geri alınabilen adımlara bölmek: feature flag, expand and contract migration ve önceden yazılmış rollback.

    Yöntem5 dk okuma

  6. Lab ölçümü, saha verisi ve gerçek bir telefon

    Sentetik denetim, gerçek kullanıcı verisi ve elinizdeki telefon üç ayrı soruyu yanıtlar. Hangisi ne zaman yanıltır ve bir değişiklik nasıl düzgün ölçülür.

    PerformansYöntem6 dk okuma

  7. On bir kilobaytlık ana sayfa: statik siteler hâlâ iyi fikir

    Önceden üretmenin size kazandırdıkları, karşılığında verdikleriniz ve siteyi küçük tutan build hattı, sayfa ağırlığı bütçesi ile cache kuralları.

    PerformansWeb6 dk okuma

  8. Gece yarısı hiç çalışmayan zamanlanmış iş

    Bir zamda yazılan schedule, başka zamanda koşan makine ve yılda iki kez değişen saat: gecelik iş neden geç, iki kez ya da hiç çalışmıyor.

    OperasyonVeri5 dk okuma

  9. Yedeğiniz sıfır baytlık bir dosya ve kimse fark etmedi

    Yedekler sessizce düşer: container'da eksik araç, yetki sorunu, dolan disk. Boyutu ve satır sayısını kontrol edin, geri yüklemeyi programa bağlayın.

    OperasyonVeri5 dk okuma

  10. Log’ları okunmaya değer kılan üç alan

    Çoğu log, olay anında sorulan tek soruya cevap veremez. Bir correlation id, işlenen kaydın kimliği ve sebebiyle birlikte sonuç bunu çözer.

    OperasyonYöntem5 dk okuma

  11. Kredi bittiğinde yapay zekâ özelliğiniz ne yapıyor

    Model sağlayıcısı bakiye, kota veya kesinti yüzünden hata döner. Fallback yoksa herkes aynı genel hatayı görür. Kademeli düşüş nasıl tasarlanır.

    Yapay zekâOperasyon4 dk okuma

  12. Yapay zekâ özelliğini üretimde makul maliyette tutmak

    Çalışan bir yapay zekâ özelliği de kimsenin planlamadığı bir fatura üretir. Token nereye gidiyor, ne cache'lenir, kullanıcı başına limit nasıl konur.

    Yapay zekâPerformans5 dk okuma

  13. Ödeme webhook’ları: imza, tekrar oynatma ve idempotency anahtarı

    İmzayı ham gövde üzerinden doğrulayın, eski timestamp'i reddedin, event id'yi saklayın, tutara güvenmeyin. Kompakt handler ve çevresindeki kontroller.

    EntegrasyonGüvenlik4 dk okuma

  14. Yavaş sorgudan doğru indekse

    Önce sorguyu bulun, sonra planı okuyun, kolon sırasını ondan sonra seçin. Yavaş bir sayfadan gerçekten kullanılan bir indekse giden pratik yol ve bedeli.

    VeriPerformans5 dk okuma

  15. Idempotent işler: işi tam olarak bir kez yapmak

    Kuyruklar ve webhook'lar en az bir kez teslim eder, her handler er geç iki kez çalışır. İkinci çalıştırmayı zararsız kılan şey: anahtar ve unique kısıt.

    VeriEntegrasyon5 dk okuma

  16. Neredeyse her sitenin yaptığı iki erişilebilirlik hatası

    Başlık seviyelerinin tasarıma göre seçilmesi ve görünen metni gizleyen aria-label. İkisi de klavye ve ses kullanıcısını engeller, ikisinin de çözümü ucuz.

    WebYöntem5 dk okuma

2025

  1. Kendi sunucunuzda font, gizlilik mevzuatı ve bir eksik istek

    Dışarıdan gelen font stili, sayfanız çizilmeden önce her ziyaretçinin IP adresini başka bir şirkete verir. Kendi sunucunuza almak bunu ve bir turu siler.

    GüvenlikWeb5 dk okuma

  2. Responsive images denetimi size aslında ne söylüyor

    Denetim, gönderdiğiniz dosyayı cihazın ihtiyacı olan pikselle karşılaştırır: layout genişliği çarpı piksel oranı. Raporu okumanın ve düzeltmenin yolu.

    PerformansWeb6 dk okuma

  3. macOS’tan sunucuya giden görünmez ._ dosyaları

    Mac'te üretilen arşivlerde extended attribute'lar AppleDouble dosyasına dönüşür, web root'a düşer ve sunulur. Nasıl fark edilir, önlenir ve temizlenir.

    OperasyonYöntem6 dk okuma

  4. Sertifika yenilemeyi kıran rsync bayrağı

    Aynalayan bir deploy, build'de olmayan her dosyayı siler; sertifika doğrulamasının okuduğu yol dahil. Sorunu son kullanma tarihinden haftalar önce bulun.

    OperasyonGüvenlik6 dk okuma

  5. Blue green dağıtım: yeniden başlatmadan önce build çıkış kodunu kontrol edin

    Build hata verdiği hâlde süreci yeniden başlatan deploy scripti yarım dizini yayına alır. Çıkış kodu, atomik geçiş, smoke test ve çalışan bir geri alma.

    OperasyonYöntem6 dk okuma

  6. Kapatılmayan akış yanıtı yüz saniye asılı kalıyor

    Token'lar geliyor, cevap tamamlanıyor, istek açık kalıyor ve proxy onu kesiyor. Akışı doğru kapatmak ve gerçek alan adı üzerinden ölçmek.

    WebYapay zekâ6 dk okuma

  7. On saniye boşta kalınca ölen proxy tünelleri

    Boşta kalınca kapanan tünel, tek bir uzun oturumu binlerce yeniden bağlanmaya çevirir. Sayaçlı bant genişliğinde el sıkışma trafiği faturanın kendisi olur.

    EntegrasyonOperasyon6 dk okuma

  8. Yanlış kurulan root, .env dosyanızı internete nasıl açıyor

    Web root proje dizinini gösteriyorsa ve sunucu diskte var olan her dosyayı sunuyorsa, .env ve .git tek bir düz istek uzaklıktadır.

    GüvenlikWeb5 dk okuma

  9. Paylaşımlı sunucuda /tmp’ye genel adla dosya yazmayın

    Paylaşımlı makinede genel bir geçici dosya adı zaten var olabilir ve başkasına ait olabilir. Yazma düşer, okuma başarılı olur, yanlış içerik yayına gider.

    OperasyonYöntem5 dk okuma

  10. Log rotasyonu, saklama süresi ve dolan diskin sessiz maliyeti

    Dolmakta olan disk yavaş bir kesintidir: yazma reddedilir, build patlar, yedek sessizce kesilir. Neyin büyüdüğünü bulmanın ve tekrarını önlemenin yolu.

    OperasyonVeri6 dk okuma

  11. Forma yapıştırılan yüz bin satır: işi kuyruğa alın

    Senkron toplu içe aktarım proxy timeout'unda ölür, yarım yazılmış veri bırakır ve kullanıcıya iki kez ödetir. Kabul edin, saklayın, dönün, parçalayın.

    VeriPerformans5 dk okuma

  12. Her mesajı ikiye bölen görünmez sonek

    İki ayrı özellik, uzunluk hesabı yapıldıktan sonra beşer karakter ekledi. Her mesaj parça sınırını aştı ve maliyet sessizce ikiye katlandı.

    MesajlaşmaYöntem6 dk okuma

  13. Tek bir Türkçe karakter mesaj maliyetini neden ikiye katlayabilir

    Kısa mesaj ya 160 karakterlik 7 bitlik alfabeyle ya da 70 karakterlik 16 bitlik kodlamayla gider. Tek bir harf tüm mesajı ve faturayı değiştirir.

    MesajlaşmaVeri6 dk okuma

  14. Kayıttan önce gelen teslim raporu

    Asenkron bir callback, ilgili satır commit edilmeden önce gelebilir. Eşleşmeyen raporu saklayın, artan gecikmeyle tekrar deneyin, sonucu kaybetmeyin.

    MesajlaşmaVeri5 dk okuma

  15. Hız sınırını kalıcı hata saymanın bedeli

    429 ve protokol seviyesindeki throttle yanıtı sonra gel demektir. Bunu kalıcı hata yazan istemci, parası ödenmiş işi çöpe atar ve kapasiteyi gizler.

    EntegrasyonMesajlaşma5 dk okuma

  16. Saatte 300’den 19 bine: gönderim kapasitesi aslında nerede kayboluyor

    Saatte 300 mesajda takılan bir gönderici ne CPU'suz ne bant genişliğsizdir. Tek tek round trip bekler ve bu ölçülebilir bir sorundur.

    PerformansMesajlaşma5 dk okuma

  17. Hiç gönderilmeyen kampanya: veritabanında saat dilimi

    09:00'a kurulan iş hiçbir hata vermeden kuyrukta bekliyor. Uygulama yerel saati yazıyor, worker UTC okuyor, gerisini fark hallediyor.

    VeriOperasyon5 dk okuma

  18. Mailler spam’e düşüyor: kimsenin bakmadığı From hizalaması

    SPF ve DKIM geçerken de mailler spam’e düşebilir. Bunu açıklayan başlıkta üç ayrı alan adı vardır ve DMARC bunların eşleşmesini ister.

    EntegrasyonMesajlaşma6 dk okuma

  19. Satır içi ilk boyamayla katı bir içerik güvenlik politikası

    Kritik CSS'i ve küçük bir script'i satır içi gömmek ilk boyama için iyidir, katı CSP için yasaktır. Çözüm hash, ama doğru anda hesaplanırsa.

    GüvenlikWeb5 dk okuma

  20. Giriş animasyonunuz en büyük boyamayı geciktiriyor

    opacity sıfırla başlayan öğe boyanmış sayılmaz. Fade in animasyonu, Largest Contentful Paint değerini gecikme kadar ve fazlası kadar öteler.

    PerformansWeb5 dk okuma

  21. PNG’nin AVIF’i yendiği yer: sert noktalardan oluşan görseller

    Kayıplı codec'ler fotoğraf için tasarlandı. Tram noktalı bir görselde indexed PNG her genişlikte AVIF'i yendi; bunu bilmenin tek yolu ölçmek.

    PerformansWeb6 dk okuma

  22. Fontu alt kümele, yedek font metriğini eşle, kaymayı bitir

    127 karakter basan bir sayfa 889 glyph indirmemeli. Build'de alt kümeleyin, yedek fontun metriğini eşleyin, swap anındaki kayma sıfırlansın.

    PerformansWeb5 dk okuma

  23. Türkçe büyük harf tuzağı: kodda i, I ve noktalı İ

    Türkçede i büyürken İ, I küçülürken ı olur. Case folding, CSS text-transform ve veritabanı collation'ı bunu varsayılan olarak yanlış yapar.

    WebYöntem5 dk okuma

2024

  1. Heceleme sözlüğü olmadan iki yana yaslı Türkçe metin

    Chrome'da Türkçe heceleme sözlüğü yok, bu yüzden iki yana yaslı Türkçe sütunda boşluk nehirleri açılıyor. Çözüm: build sırasında yumuşak tire.

    WebYöntem5 dk okuma

  2. Yeniden başlatmanın siteyi düşürmesi: süreç yöneticisi ve açılışta kalıcılık

    Süreç yöneticisi uygulamaları ancak service unit'i enable ve süreç listesi kayıtlıysa geri getirir. İkisi nasıl kontrol edilir, nasıl kanıtlanır.

    Operasyon5 dk okuma

  3. Kontrol paneli ile nginx dosyanız çeliştiğinde

    Kontrol panelleri vhost dosyasını kendi şablonundan üretir, elle yapılan değişiklik sertifika yenilemesinde silinir. Değişikliği nereye yazmak gerekir.

    OperasyonWeb6 dk okuma

  4. Güvenlik başlıklarınızı sessizce düşüren nginx kuralı

    nginx'te add_header yalnızca alt seviyede hiç add_header yoksa miras alınır. Bir location'a eklenen tek cache başlığı HSTS ve nosniff'i oradan siler.

    WebGüvenlik5 dk okuma

  5. Olmayan her sayfayı ana sayfaya yönlendirmek aramada neye mal oluyor

    Olmayan sayfaları ana sayfaya yönlendirmek soft 404 üretir, tarama bütçesini yer ve kırık linkleri gizler. Bunun yerine gerçek 404 dönün.

    AramaWeb6 dk okuma

  6. Tarayıcıda önbelleğe alınan 301, yeniden tasarımdan sonra siteyi nasıl kırıyor

    Tarayıcılar kalıcı yönlendirmeyi süresiz saklar. Yeni site eski 301'i ters çevirirse geri dönen ziyaretçi döngüye girer. Teşhisi ve kalıcı çözümü.

    WebArama4 dk okuma