kenkoooo / AtCoderProblems

Extend your AtCoder
https://kenkoooo.com/atcoder/
MIT License
1.44k stars 151 forks source link

クローラなんですが、提出をクロールするとき提出日時昇順で走らせると都合が良くなったりしませんか? #632

Open kenkoooo opened 4 years ago

kenkoooo commented 4 years ago

https://twitter.com/koyumeishi_/status/1275090158543495168

koyumeishi commented 4 years ago

補足です。(現状のものでもそんなに困ってなさそうなのでプライオリティは低いと思います)

現在 (提出日時降順で) 提出の取りこぼしの原因になってそうなのが

  1. 新たな提出が多量にあったとき拾えていない未確認の物が奥に流れてしまうが、全件チェック済みと判断されクロールが打ち切られる
  2. クロール時にジャッジ中?
  3. 後日 writer/tester 解が公開される (過去の提出の中に突然出現するので拾われない)

といった感じだと思います。 (コード熟読したわけじゃないから全然違ってたらsorry)
多分この辺り?

https://github.com/kenkoooo/AtCoderProblems/blob/11559ada77b75524a63b69e0bfad306827398cb5/atcoder-problems-backend/src/crawler/recent_crawler.rs#L34-L42

提出日時昇順にすると基本的には提出数は単調に後ろに増えていくので、

contest_id, 確認した最終ページ, [ジャッジ中の提出があったページのリスト, ...]

みたいなものを追加で管理する必要がありますが、 1,2 が原因での取りこぼしは生えにくくなりそうです。
3 と、あと後日 BAN された提出があったりするとズレちゃいますが…。