-
Rakamların düşerek değiştiği bir flip saat eklentisi
-
Geri sayım, saat vb. için kullanım
-
Bağımlılık yok, duyarlı/mobil uyumlu, hızlı animasyon
-
Sunucu saati senkronizasyonu
-
Saniyede birden fazla değişim ve üst üste bindirme mümkün
-
Zamanlayıcı algoritması, JS
setIntervaldrift'ini otomatik olarak düzeltir
4 yorum
Dahili olarak
tickmotorunu kullanıyor: https://github.com/pqina/tick/Flip, dijital nokta tipi, sayı animasyonu, çizgi (düz, daire), boom (ses çıkaran) vb. destekleyen bir kütüphane
setTimeoutsapmasını otomatik olarak düzelttiği kısmı ilginç geldiği için bunun hangi bölümde yapıldığına baktım;tickmotorundakitimer.jsbölümünde işleniyormuş. Basitçe anlatmak gerekirse, zaman ilk akmaya başladığındaDate.now() + intervalile bir sonraki tick'in doğru epoch zamanı (tickExpectedTime) hesaplanıyor; ardındansetTimeout()ile bir sonraki tick geldiğinde o andakiDate.now()değeri (currentTime)tickExpectedTimeile karşılaştırılarak sapmanın ne kadar olduğu bulunuyor.https://github.com/pqina/tick/blob/master/src/core/js/timer.js
Şimdi bakınca, sunucu saati senkronizasyonu için basit bir düzeltme de eklenmiş. İstek gönderildiğinde ve yanıt alındığında oluşan zaman farkını kontrol edip, bu farkın yarısını (= kabaca sunucudan istemciye gelirken geçen süreyi) sunucudan alınan saate ekliyor. Mümkün olduğunca doğru saati senkronize etmek için tabii. Ama HTTP header'ındaki zaman değeri saniye düzeyinde olduğu için, çoğu durumda büyük bir sapma olmayacak gibi de görünüyor…
Bunu sonradan öğrendim; sunucudan alınan zaman değerine gidiş-dönüş süresinin (RTT) yarısını ekleyen bu zaman senkronizasyonu yöntemine “Cristian algoritması” (Cristian's algorithm) deniyormuş.
https://en.wikipedia.org/wiki/Cristian%27s_algorithm
https://www.geeksforgeeks.org/cristians-algorithm/