AtCoderでCRLF (\r\n
) ではなくLF (\n
) で改行したソースコードを提出するボタンを追加します。
また、LFで改行した場合のコード長(Byte単位)をソースコードエディタの下に表示します。
特に512 KiBの提出制限を超過する場合はそのByte数を表示してボタンを押せなくします。
AtCoderのソースコードエディタは改行をLFとして処理する実装になっています。 しかし、ジャッジサーバーにソースコードを送信する過程で、ウェブブラウザがHTMLの仕様に従ってLFをCRLFに正規化してしまいます。 これは特にコードゴルフをする上で煩わしい挙動です。
この問題を解決するため、2018年にAtCoder dos2unix UserScriptが作られました。 これはソースコード文字列のURLエンコード処理をJavaScriptで代替することでCRLF正規化を回避するものでした。
しかし、dos2unixは2025年にAtCoderがソースコード提出時の認証を導入した影響で動作しなくなりました。 既にGitHubリポジトリもアーカイブされていたため修正の見込みもありませんでした。
そこで、代わりにこのatcoder-lf-submitを作ることにしました。 より現代的かつシンプルな実装を目指して一から作り直し、コード長表示も追加しましたが、根本的なアイデアは同じです。 これまで利用させていただいたことと合わせて感謝申し上げます。
ちなみに、AtCoderのコードテストはジャッジへの提出とは異なり、元からJavaScriptで処理してLFのままテストサーバーへ送信する実装になっています。 そのため、コードテストページにLF用ボタンは追加せず、コード長表示のみとしています。
AtCoderが導入した認証手段はCloudflare Turnstileというものです。 atcoder-lf-submitは、ブラウザ上で正規に取得したTurnstileのトークンを含むフォームの内容をそのまま送信しています。 特にAtCoder運営の意に反する挙動はしていないと思いますが、各々自己責任でご利用ください。