AtCoder-NoviSteps / AtCoderNoviSteps

【非公式】 AtCoder 上の問題について、取組み状況を記録していくサイトです。各問題が細かく難易度付けされており、必要な知識を段階的に習得できます。
https://atcoder-novisteps.vercel.app/
MIT License
34 stars 8 forks source link

ABS?の詳細ページを表示しようとするとInternal Errorと表示されると報告を受けたので、AtCoderへの問題リンクと解答状況ボタンが表示されるようにしましょう #299

Open KATO-Hiro opened 11 months ago

KATO-Hiro commented 11 months ago

Summary / 概要

Steps to reproduce / 再現方法

  1. xxx
  2. yyy
  3. zzz

environments

Expected behavior / 期待される挙動

Actual behavior / 実際の挙動

Screenshots

Other notes / その他

prettyhappycatty commented 11 months ago

ABS_X で来たら、実体としてはABC_Yに飛ばす、みたいな感じでしょうか? taskのデータベースに代替(実体)となるtask_xxx_idみたいに保持しておくのでしょうかねえ。 (昔のARCが、ABCのC以降だったのもありますよね)

KATO-Hiro commented 11 months ago

@prettyhappycatty

ABS_X で来たら、実体としてはABC_Yに飛ばす、みたいな感じでしょうか? 私はそのように認識しています。 ABSに関しては問題数も少ないので、UI側で対処しても差し支えないように思っていますが、いかがでしょうか? 例えば、ハッシュテーブルで処理するとよいのではないかと考えています。

taskのデータベースに代替(実体)となるtask_xxx_idみたいに保持しておくのでしょうかねえ。 (昔のARCが、ABCのC以降だったのもありますよね) 現状ではtask_idにunique制約を設けてしまっため、同じidで登録するのは難しいと思います。 スキーマを変更するか、UI側で処理をする必要がありそうです。

ABC・ARC同日開催の問題(#174)に関して、初回リリースの時点では公開の対象外なので、やや優先度が低めだと認識ですが、2回目以降のリリースでは対処したいですね。

prettyhappycatty commented 11 months ago

@KATO-Hiro ありがとうございます! ARC後回しの件承知しました! 最初思っていたのは、問題集機能で、ABSとか通常のABCとかARCを問題集として作ればいいのかなあなんて思っていました。 ハッシュテーブルも良さそうですね!

KATO-Hiro commented 11 months ago

@prettyhappycatty

ありがとうございます!

問題集機能で、ABSとか通常のABCとかARCを問題集として作ればいいのかなあなんて思っていました

ABS誕生の経緯を考えると、おっしゃる通りですね!! 長期的な視点で考えると、問題集機能として実装したほうが良さそうです。

ハッシュテーブルによる実装は、早期のレビュー・フィールドバックを受ける段階までの一時的的な扱いで、問題集機能として実装するまでのつなぎにするとよいのかもと思っています。

KATO-Hiro commented 11 months ago

Internal Errorが毎回発生するわけではなさそうですが、1回リロードすると正しく表示されるようです。

念のため、ローカルサーバで表示されたエラーを掲載しておきます。

TypeError: Cannot read properties of undefined (reading 'find')
    at Module.getTaskResult (/usr/src/app/src/lib/services/task_results.ts:61:16)
    at load (/usr/src/app/src/routes/problems/[slug]/+page.server.ts:8:33)
    at Module.load_server_data (/usr/src/app/node_modules/.pnpm/@sveltejs+kit@1.29.1_svelte@4.2.8_vite@4.5.1/node_modules/@sveltejs/kit/src/runtime/server/page/load_data.js:51:41)
    at /usr/src/app/node_modules/.pnpm/@sveltejs+kit@1.29.1_svelte@4.2.8_vite@4.5.1/node_modules/@sveltejs/kit/src/runtime/server/data/index.js:62:13
    at async Promise.all (index 1)
    at async Module.render_data (/usr/src/app/node_modules/.pnpm/@sveltejs+kit@1.29.1_svelte@4.2.8_vite@4.5.1/node_modules/@sveltejs/kit/src/runtime/server/data/index.js:100:17)
    at async resolve (/usr/src/app/node_modules/.pnpm/@sveltejs+kit@1.29.1_svelte@4.2.8_vite@4.5.1/node_modules/@sveltejs/kit/src/runtime/server/respond.js:394:17)
    at async Object.handle (/usr/src/app/src/hooks.server.ts:9:10)
    at async Module.respond (/usr/src/app/node_modules/.pnpm/@sveltejs+kit@1.29.1_svelte@4.2.8_vite@4.5.1/node_modules/@sveltejs/kit/src/runtime/server/respond.js:274:20)
    at async file:///usr/src/app/node_modules/.pnpm/@sveltejs+kit@1.29.1_svelte@4.2.8_vite@4.5.1/node_modules/@sveltejs/kit/src/exports/vite/dev/index.js:510:22
TypeError: Cannot read properties of undefined (reading 'find')
    at Module.getTaskResult (/usr/src/app/src/lib/services/task_results.ts:61:16)
    at load (/usr/src/app/src/routes/problems/[slug]/+page.server.ts:8:33)
    at Module.load_server_data (/usr/src/app/node_modules/.pnpm/@sveltejs+kit@1.29.1_svelte@4.2.8_vite@4.5.1/node_modules/@sveltejs/kit/src/runtime/server/page/load_data.js:51:41)
    at /usr/src/app/node_modules/.pnpm/@sveltejs+kit@1.29.1_svelte@4.2.8_vite@4.5.1/node_modules/@sveltejs/kit/src/runtime/server/data/index.js:62:13
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async Promise.all (index 1)
    at async Module.render_data (/usr/src/app/node_modules/.pnpm/@sveltejs+kit@1.29.1_svelte@4.2.8_vite@4.5.1/node_modules/@sveltejs/kit/src/runtime/server/data/index.js:100:17)
    at async resolve (/usr/src/app/node_modules/.pnpm/@sveltejs+kit@1.29.1_svelte@4.2.8_vite@4.5.1/node_modules/@sveltejs/kit/src/runtime/server/respond.js:394:17)
    at async Object.handle (/usr/src/app/src/hooks.server.ts:9:10)
    at async Module.respond (/usr/src/app/node_modules/.pnpm/@sveltejs+kit@1.29.1_svelte@4.2.8_vite@4.5.1/node_modules/@sveltejs/kit/src/runtime/server/respond.js:274:20)
TypeError: Cannot read properties of undefined (reading 'find')
    at Module.getTaskResult (/usr/src/app/src/lib/services/task_results.ts:61:16)
    at load (/usr/src/app/src/routes/problems/[slug]/+page.server.ts:8:33)
    at Module.load_server_data (/usr/src/app/node_modules/.pnpm/@sveltejs+kit@1.29.1_svelte@4.2.8_vite@4.5.1/node_modules/@sveltejs/kit/src/runtime/server/page/load_data.js:51:41)
    at /usr/src/app/node_modules/.pnpm/@sveltejs+kit@1.29.1_svelte@4.2.8_vite@4.5.1/node_modules/@sveltejs/kit/src/runtime/server/page/index.js:141:19
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)