Releases: Twil3akine/atcoder-random-picker
Releases · Twil3akine/atcoder-random-picker
Release Note v1.2.0
🚀 v1.2.0 - 2025-08-31
概要
- 入力キャッシュ機能の追加によるユーザビリティ向上
新機能・改善点
フロントエンド
- 入力キャッシュ機能の追加
- 直前に入力した Diff 範囲をキャッシュし、再訪時やページ更新時に復元可能に
- ユーザが繰り返し同じ範囲で問題を探す際の利便性が向上
- 不正入力判定の改善
- 不正な範囲指定に対して即座にエラーフィードバックを返却
注意事項
- 入力キャッシュはローカル環境に保存されるため、環境が変わるとリセットされます
- 不正入力判定の強化により、従来許容されていた一部入力が弾かれる場合があります
What's Changed
New Contributors
Full Changelog: v1.1.0...v1.2.0
Release Note v1.1.0
🚀 v1.1.0 - 2025-08-27
概要
- フロントエンド・バックエンド双方のユーザビリティ向上と API エラー処理の改善
新機能・改善点
フロントエンド
-
エラーメッセージの改善
- HTTP 404 エラー時に JSON 形式で理由を明示的に返却
errorMessageに表示される内容を分かりやすく変更
-
UI改善
- 「Pick」ボタンに固定幅を設定
loading時のスピナー表示を最適化- 不正入力時のフィードバック表示を改善
-
バグ修正
- Fetch API での 404 JSON パース時のエラー (
JSON.parse: unexpected character) を修正
- Fetch API での 404 JSON パース時のエラー (
バックエンド
-
404 レスポンス改善
- 指定した Diff 範囲内で問題が存在しない場合に、JSON 形式で理由を返却
- 従来のプレーンテキストより API 利用者に分かりやすく
-
テスト更新
- フロントエンドや API クライアント向けのテストを更新
- 404 レスポンスの JSON 検証を追加
注意事項
- 404 エラー時は JSON
{ "message": "指定Diff範囲に該当する問題がありませんでした" }が返却されます - API 利用時は 1 秒レート制限が適用されます
What's Changed
- Patch by @Twil3akine in #36
Full Changelog: v1.0.0...v1.1.0
Release Note v1.0.0
🚀 v1.0.0 - 2025-08-19
概要
AtCoder Random Picker(atrp) v1.0.0 は、AtCoder の未解決または未提出問題の中から、指定した難易度範囲に合致する問題をランダムに提示する初期リリースです。
「次にどの問題を解くか迷う」ときに、手軽にランダム問題を取得できるサービスです。
新機能
フロントエンド
- 難易度範囲(最低 Diff / 最高 Diff)の入力フォームを実装
- 負の値や範囲不正時にエラーメッセージを表示
- 「Pick」ボタン押下でランダムに問題を取得
- ボタン押下時に 2 秒間の
loading表示(Loader 回転 + ボタン無効化) loadingが解除されるまで問題の表示を待機
- ボタン押下時に 2 秒間の
- 取得した問題の表示
- 問題記号・名前・URL を表示
- 「Show Difficulty」ボタンで Diff を確認可能
- エラー表示対応(APIエラーなど)
バックエンド
- 単一エンドポイント API
/を提供- クエリパラメータ:
under/over - JSON 形式で問題情報 (
Problem型) を返却
- クエリパラメータ:
- IP ごとの 1 秒レート制限を実装
- HashMap + Mutex による簡易制限
- 古い IP 情報を TTL に基づき自動削除
- 単一サーバー運用で安定稼働確認済み
注意事項
- 1 IP につき 1 秒 1 回のリクエスト制限があります
- 入力値のバリデーションに違反した場合は問題を取得できません
- 複数サーバーでの分散運用は未対応(将来の v1.x.x 以降で検討予定)
技術スタック
- フロントエンド: Svelte + Rabee UI + TypeScript
- バックエンド: Rust + Hyper
- デプロイ: Frontend → Cloudflare Pages / Backend → Fly.io
使用方法
- ブラウザでアプリにアクセス
- 難易度範囲を入力
- 「Pick」ボタンを押下
- 表示された問題の URL から AtCoder にアクセス
What's Changed
- Backend/develop by @Twil3akine in #2
- フロントエンドのプロトタイプの作成 by @Twil3akine in #3
- update: CORSの設定を追加 by @Twil3akine in #4
- chore: npm-run-allの追加 by @Twil3akine in #5
- UIが大方完成した by @Twil3akine in #6
- update: ページの名前をAtCoder Random Pickerに変更 by @Twil3akine in #7
- data/下のJSONファイルを一旦masterに置きたい by @Twil3akine in #8
- recommit: ac1efec by @Twil3akine in #9
- Backend側は完成した(と思う) by @Twil3akine in #10
- fix: 単一の値を指定できるように by @Twil3akine in #12
- UI側完成(多分) by @Twil3akine in #13
- Dataを作成 by @Twil3akine in #14
- fix: working_directoryの記述を削除した。 by @Twil3akine in #15
- fix: fetch.json.yml完成形 by @Twil3akine in #16
- Fe/dev by @Twil3akine in #17
- Be/dev by @Twil3akine in #18
- update: working_directoryの変更 by @Twil3akine in #20
- feat: 1req/sを実装 by @Twil3akine in #21
- feat: レート制限追加 by @Twil3akine in #22
Full Changelog: https://github.com/Twil3akine/atcoder-random-picker/commits/v1.0.0