İçeriğe geç
Can Uğurlu

Arşiv

Tarihe göre tüm yazılar.

202612
Ağustos2
  • Bu blogu neden ve nasıl kurdum

    canugurlu.dev'i Astro ile kurdum: neden statik site seçtim, AstroPaper temasını nasıl Türkçeleştirdim ve siteyi Coolify üzerinde nasıl deploy ediyorum.

  • Coolify'da build exit code 137 ile neden ölüyor

    Coolify'da build exit code 137 ile ölüyorsa sebep OOM. dmesg ve OOMKilled ile nasıl doğrulanır, build belleği neden runtime'dan farklı boyutlandırılır.

Temmuz1
  • Statik site mi, SSR mi

    Varsayılan statik olmalı, SSR'ı seçmek için bir sebep gerekir. Doğru soru içeriğin dinamikliği değil, yanıtın ziyaretçiye göre değişip değişmediğidir.

Haziran2
  • Entegrasyon logunu nereye yazmalı

    Sipariş gönderilemedi yazan log satırı hiçbir şey anlatmaz. İstek ve cevabı correlation id'yle, redaksiyonla ve saklama süresiyle tabloya nasıl yazmalı.

  • LCP'yi bozan şey genelde font

    Metin ağırlıklı sayfalarda LCP'yi geciktiren şey görsel değil, font zinciri. font-display, self-host, preload, subset ve fallback metrikleriyle çözüm sırası.

Mayıs1
Nisan2
  • Lock dosyasını commit'leyin

    package.json bir aralık kaydeder, lock dosyası gerçek sonucu. Lock yoksa build makinesi siz test etmediğiniz bir sürümü kurar, hatayı üç hafta sonra bulursunuz.

  • GitHub Actions'ta cache ile build süresi

    CI süresinin çoğu değişmeyen bağımlılığı yeniden kurmakla geçiyor. Doğru cache anahtarı, restore-keys ve Docker layer cache'i ile build dakikadan saniyeye iner.

Mart1
  • MySQL'de utf8 değil utf8mb4 kullanın

    MySQL'in utf8'i aslında utf8mb3, dört baytlık emoji'yi saklayamıyor. Düzeltme veritabanı, tablo, sütun ve bağlantının dördünde birden utf8mb4 gerektiriyor.

Şubat2
Ocak1
20259
Aralık2
  • Tarihi UTC sakla, gösterimde çevir

    Server, veritabanı ve uygulama saat dilimini karıştırmak, günün belirli saatlerinde çıkan hatalar üretir. Kural tek: UTC sakla, çevirmeyi gösterime bırak.

  • Queue worker'ı Supervisor ile çalıştırın

    Terminalde php artisan queue:work çalıştırmak bir dağıtım değil. Worker çöktüğünde kimse fark etmez, Supervisor'ın autorestart ayarı bu boşluğu kapatır.

Kasım1
  • Liquid'de döngü maliyeti

    Liquid Shopify'ın sunucusunda render olur, yavaş bir döngü cache ile gizlenemez. Nested for, all_products ve paginate kullanımı sayfa süresini belirler.

Ekim2
  • Docker imajınız neden 1,2 GB

    Docker imajı şiştiğinde sebep genelde tek aşamalı dockerfile'dır. Build araçlarını runtime'dan ayırmadan imaj küçülmez, katman silip eklemek de işe yaramaz.

  • failed_jobs tablosuna bakmıyorsanız kuyruğunuz yok

    Kuyruk kurmak worker çalıştırmak değil. Başarısız işleri kimse görmüyorsa kuyruk bir sistem değil, verinizin sessizce kaybolduğu bir kuyudur. Bildirim şart.

Eylül1
  • Shopify Admin API'de sayfalama ve maliyet

    Shopify Admin API'de sayfa numarası yok, cursor var. GraphQL tarafında da istek sayısı değil sorgu maliyeti sayılıyor. İkisini bilmeden katalog çekilmiyor.

Ağustos2
  • Sipariş durum eşlemesini tek yerde tutun

    Her pazaryeri sipariş durumunu farklı adlandırıyor. Bu adları kodun içine dağıtırsanız üçüncü entegrasyonda yirmi ayrı dosyaya dokunmak zorunda kalırsınız.

  • Pazaryeri stok senkronunda hız limiti

    Beş bin ürünü tek tek güncellerseniz hız limitine takılırsınız. Çözüm daha hızlı istek atmak değil, daha az istek atmak. Toplu uç nokta ve delta senkron.

Temmuz1
  • Webhook'u önce kabul edin, sonra işleyin

    Webhook endpoint'i iş yapmaz, iş kaydeder. Shopify 5 saniyede cevap bekler; işi request içinde yaparsanız timeout alır ve aynı olayı tekrar tekrar gönderir.