5 puan yazan day1swhan 2025-10-17 | Henüz yorum yok. | WhatsApp'ta paylaş

Geliştirme arka planı ve uygulama fikri

  • Velog üzerinde yazdığım gönderilerin görüntülenme sayılarını merak ediyorum ama her seferinde giriş yapıp kontrol etmek zahmetli
  • Velog'un dahili görüntülenme API'sini reverse engineering ile çözmek de mümkün ama uğraştırıcı olur gibi görünüyor ve genişletilebilirliği (örn. ziyaretçi bildirimi) düşük
  • Eskiden yerel e-posta servislerinin piksel görseller kullanarak okunma onayı özelliği sunması aklıma geldi
  • Velog, Markdown sözdizimiyle gönderi yazmayı destekliyor
  • Tarayıcılar, cross-site alan adlarında bile basit görsel çağrılarını engellemez
  • Gönderiye 1x1 piksellik şeffaf bir görsel eklenirse, gönderi her görüntülendiğinde sunucu tarafında çağrı kaydı bırakılabilir
  • Çoğu Velog kullanıcısının gönderileri günde 1.000'den fazla ziyaretçi almaz. Bu seviyedeki trafik için Workers KV kullanmak yeterli
  • Yalnızca Velog ile sınırlı değil; Markdown ile görsel eklemeyi destekleyen (kullanıcı alan adından görsel sunulabilen) tüm platformlarda kullanılabilir

Çalışma şekli

  • Görsele bir tanımlayıcı değer (slug) verip yanıtı CDN yerine programlanabilir Workers ile sunarsanız ve çağrı kayıtlarını saklamak için bu tanımlayıcı değeri KV'nin Key prefix değeri olarak kullanırsanız, sayfa görüntülenme sayısını basitçe elde edebilirsiniz
  • Tarih, ip, userAgent, görsel tanımlayıcı değeri bilgilerini Hash fonksiyonuyla key değerine dönüştürürseniz, asgari düzeyde yinelenen ziyaret ayıklaması yapılabilir
    • HASH: SHA-256 tabanlı 128 bit hash'in base64url (22 karakter) olarak kodlanmış hali.
    • KEY: view:${slug}:${hash}.
    • VALUE: UserAgent, Date...
  • Workers KV ücretsiz planı günde 1.000 adet PUT ve LIST destekler.
    • PUT: Günde 1.000 ziyaretçi sayım bilgisini kaydedebilir
    • LIST: Günde 1.000'den fazla sayfa görüntülenme bilgisini sunabilir
  • Sayfa görüntülenmesi sorgu isteğinde LIST komutu kullanılır; tanımlayıcı değer (slug) bilgisini prefix olarak kullanıp sonuçları aldıktan sonra basitçe saymak yeterlidir
    • Sayfa görüntülenmesi sorgusunda gerçek zamanlılık çok kritik olmadığından, yanıt değerini uygun şekilde cache'lerseniz günde 1.000'den fazla isteği işlemek mümkün olur

Sınırlamalar

Hızlı geliştirme için basit bir depo olan KV kullanıldığı için doğal olarak şu sınırlamalar var.

  • Eventual consistency: Workers KV PUT istekleri gerçek zamanlı değildir. Gerçek zamanlılık mutlaka gerekiyorsa Durable Objects(DO) kullanılmalıdır.
  • LIST bağımlılığı: LIST komutuyla yapılan sayım yöntemi, (sayfa görüntülenmelerinin düzenli geldiği varsayımıyla) zaman geçtikçe alınması gereken KEY değerleri arttıkça yavaşlar. Cron işleriyle depolama yapısını düzenli güncellemek ya da DO veya Analytics Engine kullanımını değerlendirmek gerekir.

Planlanan destekler

Mümkün olan en kısa sürede aşağıdaki özelliklerin eklenmesi planlanıyor.

  • Tarihe göre sıralama: Sunucusuz blog yorum API'sini 30 dakikada yapmak yazısında en yeni yorumları sıralamak için kullanılan yöntem olan Unix Time ile, en yeni oturuma göre sıralanmış liste sunulabilir
  • API güvenliği: Middleware eklenerek desteklenecek. HTTP Authorization header kullanılması planlanıyor
  • Rate Limit: Popüler bir Velog kullanıcısıysanız, kıskançlık ve dönemsel öfkeyle hareket eden kullanıcılar kötü niyetli istekler gönderebilir; buna karşı önlem gerekli. Muhtemelen bana pek denk gelmeyeceği için en son eklenecek...
  • Arama: Ek API ile desteklenecek
    • Tarih: Belirli tarih veya tarih aralığına göre arama. KEY yapısının değiştirilmesi gerekli
    • Oturum: Belirli oturum etkinlik bilgilerini arama. Mevcut oturum bilgisi her gönderi için bir gün geçerlidir. Kişisel veri koruma politikasının incelenmesi gerekir
    • Tarayıcı/OS: UserAgent'tan parse edilen bilgilerle sunulacak. Çok hassas olmasa da kabaca fikir verir
  • Hizmet API'si: Herkesin kolayca e-posta doğrulama + kişisel anahtar oluşturma ile kullanabilmesi için API'nin servis olarak sunulması planlanıyor
    • Webhook: Sayfa görüntülenme olayı oluştuğunda POST isteği sunulacak. Geliştiricilerin sevdiği Slack ile bildirim mümkün olacak
    • E-posta: Webhook işlemesiyle uğraşmak istemeyen kullanıcılar için klasik ama kullanışlı bildirim özelliği
    • Custom campaign: Ayarlanmış olaylar (örn. belirli bir görüntülenme sayısına ulaşma) için birleşik görsel tanımlayıcı değeri (slug) sunulacak

Ek

Henüz yorum yok.

Henüz yorum yok.