AtCoderProblems icon indicating copy to clipboard operation
AtCoderProblems copied to clipboard

feat: デイリーバチャの開催

Open tajima738 opened this issue 3 years ago • 6 comments

いつもお世話になっております。 「あさかつ」「くじかつ」が有志により開催されていますが、この2つを公式に自動開催されるようにしてはどうか、というご提案です。 常に一定数以上の参加者がおりますし、需要はあるかと思います。 (個人的にも、典型テクニックの習得や早解きの訓練にかなり有効だと思っております)

※より汎用的に、バチャの定期開催機能をユーザーに提供してはどうかとも思ったのですが、乱立したり放置されたりすると嫌な感じになりそうなんですよね。

tajima738 avatar Jan 21 '22 00:01 tajima738

ありがとうございます!個人的にたまに「あさかつ」に出ますし、大変良いことだと思っています。

この機能の一番重要な点は毎日行われていることで、例えば何かしらの不具合が発生してバチャが開催できなかった時に、できるだけ早く直して、翌日や翌々日には再開できていることが期待されているかと思います。例えば私は1-2週間全く時間が取れないことがよくあるので、もし「あさかつ」「くじかつ」の運営を引き受けてくれる人が見つかったら、すぐにでもやりましょう。

kenkoooo avatar Jan 21 '22 03:01 kenkoooo

賛同いただきありがとうございます〜 確かに毎日行われていてほしいですね。まあでも、無理のない程度のラフな運営でよいのではないかなと私は思います。 仮にしばらく止まってしまったとしても、ユーザーの誰かが何かしら代替策を講じてくれるのではないかな〜と。 (今までも、あさかつが登録されていないときには誰かが代行で立ててくれたりしていました) もちろんkenkooooさんの思いが第一だと思いますけれども。

tajima738 avatar Jan 21 '22 13:01 tajima738

@tajima738 ちなみに、もし良ければ運営やりませんか?

kenkoooo avatar Jan 21 '22 15:01 kenkoooo

率直に言ってしまいますと、継続的な対応をしなければいけない立場になるのは二の足を踏みますね・・・😅 スポット的なお手伝いでしたら・・・と言うお気持ちです。すみません🙇

tajima738 avatar Jan 22 '22 00:01 tajima738

ですよね、僕も継続的にやるのはちょっと難しい気持ちです……

kenkoooo avatar Jan 22 '22 00:01 kenkoooo

誰もやりたい人がいないので一旦閉じますね。誰かやりたい人がいたら開いてください。

kenkoooo avatar Apr 03 '22 15:04 kenkoooo

ちょうど一年前ぐらいからあさかつを主催している hibit という者です。 毎日とてもお世話になっています。ありがとうございます。 現状、一週間に一度まとめて手動入力している感じで、それ自体は特に負担ではないのですが、やはり自動化できた方がいいですし、他にも色々なコンテストを定期開催したいという声は聞きます。

①公式開催について プログラム側で自動開催して、もしトラブルがあった時には手動開催して補填するという感じでしょうか。それでしたら、私がしばらくの間責任者的なものになっても大丈夫です(いままで一年ぐらい手動対応していますし)。じゃあいつまで対応できるのかと言われたら難しいですが、ぶっちゃけトラブルがあって一週間ぐらいできなくても、文句を言うユーザーはあまりいないと思うので、そこまで完備性にこだわらなくても……?とは思います。

②API化 もしくは、バチャの作成を API 化することは可能でしょうか? もしそれが可能なら、責任問題を気にすることもなく、好きなユーザーが好きな定期コンテストを開催することが可能になると思います。濫用によってバチャが荒れる可能性もありますが、例えばいちユーザーあたり開催中+開催予定は 7 を上限にするとかになれば、そういったことも防げるのではないかと。

どちらかというと②をメインに検討していただきたい感じですが、よろしくお願いいたします。

hibit-at avatar Feb 20 '23 15:02 hibit-at

@hibit-at ブラウザからは https://kenkoooo.com/atcoder/internal-api/** を呼んでいるだけなので、以下の要領でできます。

  1. GitHub にログインしてここにアクセスする: https://github.com/login/oauth/authorize?client_id=162a5276634fc8b970f7
  2. リダイレクトされて https://kenkoooo.com/atcoder/internal-api/authorize が token を Set-Cookie してくる
  3. 手に入れたトークンを使ってコンテストを作成する
curl 'https://kenkoooo.com/atcoder/internal-api/contest/create' -X POST -H 'Accept-Encoding: gzip' -H 'Content-Type: application/json' -H 'Cookie: token=さっきのトークン' --data-raw $'{"title":"\u3066\u3059\u3068","memo":"","start_epoch_second":1676946000,"duration_second":0,"mode":null,"is_public":false,"penalty_second":300}' --compressed
  1. 上のコマンドでコンテスト作成に成功するとコンテストidが手に入るので、以下のコマンドで問題を追加する
curl 'https://kenkoooo.com/atcoder/internal-api/contest/item/update' -X POST -H 'Accept-Encoding: gzip' -H 'Content-Type: application/json' -H 'Cookie: token=トークン' --data-raw '{"contest_id":"コンテストid","problems":[]}'

kenkoooo avatar Feb 21 '23 02:02 kenkoooo

API があったのですね。 詳しく教えていただいてありがとうございます。 早速試してみます。

hibit-at avatar Feb 21 '23 06:02 hibit-at

あさかつが登録されていないときには誰かが代行で立ててくれたりしていました

のおそらく「誰か」であり、それからhibitさんに交代するまで毎日「あさかつ」を立てるようになったKowerKointです。 いつもお世話になります。

バーチャルコンテスト作成用のAPIがあることを認知していませんでした。 ありがとうございます。

https://github.com/KowerKoint/ac-problems-contest-builder トークンの入力は手動ですが外部プロジェクト用として毎日のバチャをかんたんに立てることができるCLIツールを作ったので一応共有しておきます。

KowerKoint avatar Feb 21 '23 11:02 KowerKoint

同じく、こちらは任意のコンテストではなくあさかつを定期的に立てるためのプログラムですが、それを実装することができました。 あさかつもこれまで以上に安定して運営できるようになると思います。 ありがとうございました。

hibit-at avatar Feb 21 '23 14:02 hibit-at

このIssueは確かKowerKointさんが「あさかつ」を立てる役を交代されようとしている頃に作ったもので、毎日立てるのは大変そうだもんな〜という思いからでした。 私の思いは満たされたので、kenkooooさんがよければクローズしてください。 いいアイディアが出て、実装もしていただけて、よかったです!

tajima738 avatar Feb 21 '23 22:02 tajima738

〜完〜

kenkoooo avatar Feb 22 '23 13:02 kenkoooo