https://github.com/dnek/atcoder-lf-submit
AtCoderでCRLF (\r\n) ではなくLF (\n) で改行したソースコードを提出するボタンを追加します。また、LFで改行した場合のコード長(Byte単位)をソースコードエディタの下に表示します。
https://github.com/dnek/atcoder-lf-submit
atcoder code-golf userscript
Last synced: about 1 month ago
JSON representation
AtCoderでCRLF (\r\n) ではなくLF (\n) で改行したソースコードを提出するボタンを追加します。また、LFで改行した場合のコード長(Byte単位)をソースコードエディタの下に表示します。
- Host: GitHub
- URL: https://github.com/dnek/atcoder-lf-submit
- Owner: dnek
- License: mit
- Created: 2025-10-06T08:56:56.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2025-10-20T09:19:33.000Z (7 months ago)
- Last Synced: 2026-04-09T22:29:56.729Z (about 1 month ago)
- Topics: atcoder, code-golf, userscript
- Language: JavaScript
- Homepage: https://dnek.net/ja/atcoder-lf-submit
- Size: 5.86 KB
- Stars: 3
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# atcoder-lf-submit
## 概要
[AtCoder](https://atcoder.jp/)でCRLF (`\r\n`) ではなくLF (`\n`) で改行したソースコードを提出するボタンを追加します。
また、LFで改行した場合のコード長(Byte単位)をソースコードエディタの下に表示します。
特に512 KiBの提出制限を超過する場合はそのByte数を表示してボタンを押せなくします。
## 詳細
AtCoderのソースコードエディタは改行をLFとして処理する実装になっています。
しかし、ジャッジサーバーにソースコードを送信する過程で、ウェブブラウザが[HTMLの仕様](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#converting-an-entry-list-to-a-list-of-name-value-pairs)に従ってLFをCRLFに正規化してしまいます。
これは特に[コードゴルフ](https://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%BC%E3%83%89%E3%82%B4%E3%83%AB%E3%83%95)をする上で煩わしい挙動です。
この問題を解決するため、2018年に[AtCoder dos2unix UserScript](https://github.com/kmyk/atcoder-dos2unix-userscript)が作られました。
これはソースコード文字列のURLエンコード処理をJavaScriptで代替することでCRLF正規化を回避するものでした。
しかし、dos2unixは2025年に[AtCoderがソースコード提出時の認証を導入した](https://atcoder.jp/posts/1456)影響で動作しなくなりました。
既にGitHubリポジトリもアーカイブされていたため修正の見込みもありませんでした。
そこで、代わりにこのatcoder-lf-submitを作ることにしました。
より現代的かつシンプルな実装を目指して一から作り直し、コード長表示も追加しましたが、根本的なアイデアは同じです。
これまで利用させていただいたことと合わせて感謝申し上げます。
ちなみに、AtCoderのコードテストはジャッジへの提出とは異なり、元からJavaScriptで処理してLFのままテストサーバーへ送信する実装になっています。
そのため、コードテストページにLF用ボタンは追加せず、コード長表示のみとしています。
## 注意
AtCoderが導入した認証手段は[Cloudflare Turnstile](https://www.cloudflare.com/ja-jp/application-services/products/turnstile/)というものです。
atcoder-lf-submitは、ブラウザ上で正規に取得したTurnstileのトークンを含むフォームの内容をそのまま送信しています。
特にAtCoder運営の意に反する挙動はしていないと思いますが、各々自己責任でご利用ください。
## インストール
- Greasy Fork https://greasyfork.org/ja/scripts/551938-atcoder-lf-submit
## ソース
- https://github.com/dnek/atcoder-lf-submit/raw/main/atcoder-lf-submit.user.js
## 関連
- AtCoderで画像をPiet提出用に変換し、提出結果を画像に変換するUserScript https://github.com/dnek/atcoder-piet-image-converter