DOFOTT

Yol bloklarını canlı tutmayı nasıl başarıyoruz?

Yayın: 13 Ekim 2026

DOFOTT figürü haritada bir rota çiziyor, yanında oyuncak bir araba ve bir saat

DOFOTT'un yazdığı bir yol bloğu, o saatte yolun genelde ne kadar sürdüğünü söyler. Salı 14:00'te Kavacık'ta bir toplantınız varsa ve Maslak'tan oraya bir salı öğleden sonrası genelde 25 dakika sürüyorsa, blok 13:35'te başlar. Bu, "normal bir günde" sorusunun cevabı. Toplantının olduğu salı normal bir gün değilse — köprüde kaza varsa, yağmur başladıysa — blok yanlış saatte başlar ve telefonunuzun hatırlatması da onunla birlikte geç gelir.

Artık öyle değil. Çıkmanıza yaklaşık bir buçuk saat ve yarım saat kala DOFOTT yolu bugün için yeniden soruyor. Fark yeterince büyükse blok kayıyor ve başlığı ne yapmanız gerektiğini söylüyor. Bu yazı ne gördüğünüzü, sonra da arkada ne olduğunu, kodun verdiği kararlarla birlikte anlatıyor.

Takviminizde ne görürsünüz

Aynı toplantı, köprüde trafiğin olduğu bir gün. Saat 12:05'te DOFOTT yolu yeniden soruyor ve Google Haritalar™ bugün 41 dakika diyor. Blok 13:35'ten 13:19'a çekiliyor, başlığı şöyle oluyor:

Açıklamanın ilk satırı neden olduğunu söylüyor: "Trafik: şu an 41 dk, planlanan 25 dk." Yolda belirli bir sebep varsa altına bir satır daha ekleniyor, örneğin "Yolda kaza var." Sıradan yoğunluk için cümle yok; dakikalar zaten söylüyor.

Ayrıca bir bildirim gelmiyor; bildirim bloğun kendisi. Google Takvim™'in hatırlatması bloğun başlangıcına bağlı olduğu için blok öne kayınca hatırlatma da öne kayıyor. Yeni bir uygulama, e-posta ya da izin yok.

Yol beklenenden belirgin biçimde açıksa ters yönde de çalışıyor: "· 10 dk geç çıkın". Eve dönüşte de: dönüş yolu toplantı bitince başlar ve o an değişmez, bugünün trafiğinin değiştirdiği şey varış saatinizdir. Blok sonundan uzar, başlığı "🚗 Yol → Ev · 15 dk geç varırsınız" der.

Ne zaman bakılıyor

Her yolculuğa en fazla iki kez bakılıyor. Sunucuda on dakikada bir çalışan bir iş, önümüzdeki üç saatte yola çıkılacak araba bloklarını topluyor ve her biri için hangi kontrolün sırası geldiğine bakıyor:

KontrolNe zamanNeden o an
BirinciÇıkışa ~90 dk kalaProgramınızı değiştirecek kadar erken
İkinciÇıkışa ~35 dk kalaTelefonun hatırlatmasından önce, trafik en doğru haliyle

İş on dakikada bir çalıştığı için "90 dakika" aslında 80 ile 90 arası, "35 dakika" da 25 ile 35 arası demek. İkinci kontrolün zamanı, birinci kontrolün kaydırdığı yeni çıkış saatine göre hesaplanıyor: blok 16 dakika öne çekildiyse ikinci kontrol de 16 dakika önce geliyor.

Neden iki, neden on beş dakikada bir değil? Çünkü kontrol sayısı bir maliyet değil, bir güven meselesi. Her on beş dakikada bir oynayan bir blok, kimsenin inanmadığı bir bloktur. İki kontrol, karar verebileceğiniz bir anla son bir düzeltmeyi kapsıyor. Bloğun başlamasından sonra ise hiç dokunulmuyor: yoldaysanız takviminizin sizinle tartışmasına gerek yok.

Ne zaman kayıyor: eşikler

Google'ın her cevabı bloğu oynatmıyor. Fark bir eşiği geçmezse blok olduğu yerde kalıyor:

EşikEk şart
Yol uzadıysa (erken çıkın)en az 5 dkYok
Yol kısaldıysa (geç çıkın)en az 10 dkÇıkışa 45 dakikadan fazla varken

İki eşik bilerek eşit değil. Geç kalmanın bedeli, erken varmanın bedelinden büyük; "erken çıkın" uyarısı beş dakikada gelir, "geç çıkabilirsiniz" ancak on dakikada ve ancak hâlâ vakit varken. Son yarım saatte gelen "biraz daha oturabilirsiniz" mesajı, çoktan hazırlanmış birine pek bir şey kazandırmaz; yanlış çıkarsa da çok şey kaybettirir.

Yüzde eşiği yok. Yüzde, on dakikalık bir yolda iki dakikalık oynamayı duyururdu; bir saatlik yolda ise beş dakika zaten yüzdeden önce gelir. Sabit dakika, insanın gerçekten fark ettiği şeye daha yakın.

Önceki örnekte ikinci kontrol 12:44'te geliyor ve Google bu kez 38 dakika diyor. Bu, bloğun yeni haline göre 3 dakikalık bir açılma; eşiğin altında. Blok 13:19'da kalıyor, başlık değişmiyor.

Arkada ne oluyor

Teknik tarafı merak edenler için, kontrolün bir yolculuk için attığı adımlar sırasıyla:

  1. Bloğu Google'dan kimliğiyle okur. Veritabanındaki satır yalnızca hangi bloğa bakılacağını söyler; karar Google'daki gerçek bloğa göre verilir. Bloğun üstünde DOFOTT etiketi, doğru tür (gidiş ya da dönüş) ve veritabanının hatırladığı aynı özet (hash) yoksa dokunulmaz. Özet değişmişse senkron o bloğu zaten yeniden yazmak üzeredir; trafik kontrolü ona bırakır.
  2. Yolun iki ucunu bloğun kendisinden alır. Veritabanı adres tutmuyor. Yolun başı bloğun gizli etiketinde (from), varış bloğun konum alanında. Ev ve iş adresinizin koordinatları ayarlarınızda olduğu için, bunlar metin değil koordinat olarak gönderilir; yani bugün sorulan nokta, plan yapılırken sorulan noktayla aynı.
  3. Google Routes API'ye şimdiki trafikle sorar. Çıkış saati olarak bloğun başlangıcı (ya da şimdiden bir dakika sonrası) gönderilir. Bu cevap önbelleğe alınmaz; planlarken kullanılan yedi günlük önbellek "normal bir gün" içindir, bu soru ise "bugün" için.
  4. Hedef saati hesaplar. Gidişte: toplantının başlangıcı eksi bugünkü süre eksi varsa sizin tampon süreniz, dakikaya aşağı yuvarlanmış. Dönüşte: bloğun başlangıcı artı bugünkü süre artı tampon, dakikaya yukarı yuvarlanmış. Yuvarlamanın yönü hep sizin lehinize.
  5. Eşiğe bakar ve gerekiyorsa bloğu yamar. Yalnızca bloğun başlangıcı (ya da dönüşte bitişi), başlığı ve açıklamasının ilk paragrafı değişir. Bir önceki kontrolün yazdığı paragraf yenisiyle değiştirilir, üst üste eklenmez.
  6. Durumu kaydeder. Bloğun yeni çıkış saati, hangi özete bakıldığı ve kaçıncı kontrolün yapıldığı. Toplantı sonradan değişirse senkron bloğu tipik süreyle yeniden yazar, özet değişir ve sayaç baştan başlar: sıradaki kontrol bugünün trafiğine göre yeniden düzeltir.

Başlıktaki dakika, bloğun ilk planlandığı yere göre hesaplanıyor; bir önceki kontrole göre değil. İkinci kontrol "16 dk" yerine "19 dk" diyorsa, bu, planlanandan 19 dakika erken çıkmanız gerektiği demek. Okuyan kişi için tek bir referans noktası var: blok ilk yazıldığında ne diyordu.

Haftalık toplantılar

Tekrarlayan bir toplantının yolları tekrarlayan tek bir blok serisi. Trafiğin kötü olduğu hafta, kontrol yalnızca o haftanın bloğunu Google Takvim™'de serinin bir istisnası olarak kaydırıyor; seri ve öteki haftalar olduğu gibi kalıyor. Senkron bu istisnayı bir sapma saymıyor ve geri almıyor.

Burada bir zorluk var: veritabanındaki satır serinin tamamını temsil eder, o haftanın hangi gün olduğunu bilmez. Bu yüzden serisi olan bir hesapta kontrol, önümüzdeki üç saatin DOFOTT bloklarını Google'dan listeliyor ve her haftanın kendi durumunu (planlanan saatleri, kaç kez bakıldığı) ayrı bir tabloda tutuyor. Eşikler, metinler ve iki kontrol, tek seferlik toplantılarla aynı.

"Yolda kaza var": sebep nereden geliyor

Süre Google'dan geliyor, sebep TomTom'dan. Sebep yalnızca bir blok daha erken çıkmanızı söylemek üzereyken sorulur. TomTom'a giden üç şey var: başlangıç adresinin ve toplantı konumunun sizin yazdığınız metni, bir de çıkış saati. Adınız, e-posta adresiniz, etkinliğin başlığı ya da hesabınıza ait bir kimlik gitmez. TomTom adresi kendisi bulur, yolu kendisi çizer.

Ters yönde de bir çizgi var: Google'ın hiçbir harita verisi TomTom'a gitmez. Google'ın çizdiği yol da, koordinatları da. Google Maps Platform şartları bunu yasaklıyor, biz de zaten istemiyoruz. İki cevap yalnızca bizim sunucuda, açıklamadaki tek bir cümlede yan yana geliyor. TomTom'un süresi Google'ınkini doğrulamak için de kullanılmıyor; TomTom yalnızca "neden" sorusunu cevaplıyor.

Sebep sorusu hiçbir zaman bloğun kaymasını durdurmaz. TomTom cevap vermezse blok yine kayar, yalnızca sebep satırı olmaz. Sebep yazıldığında altına "Trafik verisi © TomTom" satırı da eklenir. Bunların hepsi gizlilik sayfasında da yazıyor.

Bir şeyler ters giderse

Tasarımın ilkesi şu: trafik kontrolü başarısız olursa blok, planlandığı yerde kalır. Hiçbir hata bloğu silmez ya da yanlış bir yere taşımaz.

Neler yapmıyor

Güncel trafik her planda var; ücretli plana bağlı değil ve sayılan şeyi değiştirmiyor: sayılan yine konumu olan toplantılar, trafik kontrolleri değil. Bütün bunların çizimli halini DOFOTT nasıl çalışır sayfasında görebilirsiniz.

Google Takvim™ ve Google Haritalar™, Google LLC'nin ticari markalarıdır.