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: 4 months 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 (4 months ago)
- Default Branch: main
- Last Pushed: 2025-10-08T11:57:03.000Z (4 months ago)
- Last Synced: 2025-10-08T13:37:52.720Z (4 months ago)
- Topics: atcoder, code-golf, userscript
- Language: JavaScript
- Homepage: https://dnek.net/ja/atcoder-lf-submit
- Size: 3.91 KB
- Stars: 0
- 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単位)をソースコードエディタの下に表示します。
## 詳細
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に正規化してしまいます。
これを回避するには、ソースコード文字列のURLエンコード処理をJavaScriptで代替する必要があります。
2018年にこれを実現する[AtCoder dos2unix UserScript](https://github.com/kmyk/atcoder-dos2unix-userscript)が作られましたが、2025年に[AtCoderがソースコード提出時の認証を導入した](https://atcoder.jp/posts/1456)影響で動作しなくなりました。
dos2unixは既に開発が終了していたため、代わりにこのatcoder-lf-submitを作りました。
より現代的かつシンプルな実装を目指して一から作り直し、コード長表示も追加しましたが、根本的なアイデアは同じです。
これまで利用させていただいたことと合わせて感謝申し上げます。
なお、AtCoderが導入した認証手段は[Cloudflare Turnstile](https://www.cloudflare.com/ja-jp/application-services/products/turnstile/)というものです。
atcoder-lf-submitは、ブラウザ上で正規に取得したTurnstileのトークンを含むフォームの内容をそのまま送信しています。
特にAtCoder運営の意に反する挙動はしていないと思いますが、各々自己責任でご利用ください。
また、コード長表示は提出ページ及びコードテストページに適用していますが、コードテストは元々JavaScriptで送信される実装になっておりCRLF正規化が行われないため、LF用ボタンは提出ページのみに追加しています。
## インストール
- 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