{"id":13714255,"url":"https://github.com/taizod1024/vscode-ac-ts-extension","last_synced_at":"2025-05-07T01:33:02.741Z","repository":{"id":51614016,"uuid":"294851807","full_name":"taizod1024/vscode-ac-ts-extension","owner":"taizod1024","description":"atcoder/yukicoder vscode extension for c/c++/java/python/go/javascript/typescript","archived":false,"fork":false,"pushed_at":"2023-11-04T23:39:00.000Z","size":3742,"stargazers_count":6,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-04-15T00:14:30.688Z","etag":null,"topics":["atcoder","c","go","javascript","python","typescript","vscode-extension","yukicoder"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/taizod1024.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-09-12T02:11:25.000Z","updated_at":"2024-05-18T02:03:19.445Z","dependencies_parsed_at":"2023-11-05T00:23:15.344Z","dependency_job_id":null,"html_url":"https://github.com/taizod1024/vscode-ac-ts-extension","commit_stats":null,"previous_names":[],"tags_count":105,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taizod1024%2Fvscode-ac-ts-extension","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taizod1024%2Fvscode-ac-ts-extension/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taizod1024%2Fvscode-ac-ts-extension/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taizod1024%2Fvscode-ac-ts-extension/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/taizod1024","download_url":"https://codeload.github.com/taizod1024/vscode-ac-ts-extension/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224551200,"owners_count":17330097,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["atcoder","c","go","javascript","python","typescript","vscode-extension","yukicoder"],"created_at":"2024-08-02T23:01:55.760Z","updated_at":"2024-11-14T01:30:53.344Z","avatar_url":"https://github.com/taizod1024.png","language":"TypeScript","funding_links":[],"categories":["Repositories"],"sub_categories":[],"readme":"# AtCoder Extension\n\nC/C++/Java/Python/Go/JavaScript/TypeScript での [AtCoder](https://atcoder.jp/?lang=ja)/[Yukicoder](https://yukicoder.me/) への参加をサポートする Visual Studio Code の拡張機能です。\n\n## 変更\n\n- 2024/6/15\n  - リファクタ\n    - 認証情報の格納先を SecretStorage に変更しました。認証情報を格納したファイルがあれば SecretStorage に移動してから元のファイルを削除します。\n    - 認証情報の格納先を変更したことに起因して内部的に非同期処理が増加しました。\u003cspan style=\"color:red;font-weight:bold\"\u003e問題があれば連絡願います。\u003c/span\u003e\n- 2023/9/9\n  - 機能強化\n    - atcoder のジャッジアップデートに対応しました。\n      - atcoder の場合には submitTask 時に提出可能な言語を動的に取得するようになりました。\n      - [dakanat](https://github.com/dakanat) さんの[PR](https://github.com/taizod1024/vscode-ac-ts-extension/pull/58)を取り込みました。ありがとうございます。\n- 2023/04/05\n  - 機能強化\n    - \u003cspan style=\"font-weight:bold\"\u003eC++の場合に Init Task/Test Task/Debug Task で[AtCoder Library](https://atcoder.jp/posts/517)を自動ダウンロードするようにしました。\u003c/span\u003e\n      - AtCoder Library は`$projectpath/lib/atcoder`に格納します。\n      - AtCoder Library のドキュメントに従い C++コンパイルコマンドを以下のとおり変更しました。\n        - 変更前：`g++ -g $taskfile -o $execfile`\n        - 変更後：`g++ -g $taskfile -o $execfile -std=c++17 -I $projectpath/lib`\n    - C++のテンプレートファイルを修正しました。Init Task してから AtCoder の場合はコメントアウトを元に戻します。Yukicoder の場合は行を削除します。\n      - 追加行：`// #include \u003catcoder/all\u003e`\n    - パラメタを拡張しました。\n      - `$projectpath`\n    - 作業フォルダを変更しました。\n      - 変更前：`C:\\Users\\...\\AppData\\Local\\Temp\\ac-ts-extension`\n      - 変更後：`C:\\Users\\...\\AppData\\Local\\Temp\\.ac-ts-extension`\n- 2022/12/08\n  - 機能強化\n    - \u003cspan style=\"font-weight:bold\"\u003eLinux でのデバッグ実行に対応しました。\u003c/span\u003e\n      - \u003cspan style=\"color:red;font-weight:bold\"\u003e問題があれば連絡願います。\u003c/span\u003e\n      - 現時点でデバッグ実行に対応していないのは Windows/Linux ともに Go だけです。\n- 2022/12/04\n  - 機能強化\n    - \u003cspan style=\"font-weight:bold\"\u003eWindows での Java/C/C++のデバッグ実行に対応しました。\u003c/span\u003e\n      - C/C++はデバッグ実行のためコンパイルオプションに\"-g\"を追加しています。\n      - 現時点では Go のみデバッグ実行に対応していません。\n      - Linux は未検証のためエラーにしています。\n- 2022/08/29\n  - 機能強化\n    - \u003cspan style=\"font-weight:bold\"\u003eGo に対応しました。\u003c/span\u003e\n    - \u003cspan style=\"font-weight:bold\"\u003eローカルでタスクを登録できるようにしました。\u003c/span\u003e\n      - 競技プログラミングサイトに関係なく問題を登録することができます。\n- 2022/08/24\n  - 機能強化\n    - \u003cspan style=\"font-weight:bold\"\u003eLinux 環境に対応しました。\u003c/span\u003e\n    - \u003cspan style=\"font-weight:bold\"\u003e任意の言語に対応しました。\u003c/span\u003e\n      - 設定の\"User1\"に対して以下を参考に設定します。\n        - 拡張子、例：`.bat`\n        - チェックコマンド、例：`cmd /c`\n        - コンパイルコマンド、例：空文字列\n        - 実行コマンド、例：`$taskfile`\n      - パラメタを拡張しました。\n        - `$site`, `$contest`, `$task`, `$extension`\n\n## 機能\n\nC/C++/Java/Python/Go/JavaScript/TypeScript での Visual Studio Code から AtCoder/Yukicoder への参加をサポートします。\n\n- AtCoder/Yukicoder へのログイン\n- C/C++/Java/Python/Go/JavaScript/TypeScript のソースコードの生成\n- テストデータのダウンロード\n- 解答のテスト実行、デバッグ実行\n- 解答の提出\n- ブラウザでの問題ページの表示\n\n![testtask](https://github.com/taizod1024/ac-ts-extension/blob/main/images/testtask.gif?raw=true)\n\n## 制限\n\n- マルチルートワークスペースには対応していません。\n- Linux でのデバッグ実行はサポートしていません。\n- Python/JavaScript/TypeScript のデバッグ実行時は以下の場合の NG 判定ができません。\n  - 戻り値が 0 以外による NG 判定\n  - 例外が発生したことによる NG 判定\n\n## 動作確認環境\n\n- Windows\n  - Windows 10 (21H2)\n  - Visual Studio Code (1.70.2)\n  - [x] C (mingw 11.2.0.07112021) 実行＋デバッグ\n  - [x] C++ (mingw 11.2.0.07112021) 実行＋デバッグ\n  - [x] Java (AdoptOpenJDKjre 16.0.1.901) 実行＋デバッグ\n  - [x] Python (3.10.6) 実行＋デバッグ\n  - [x] Go (1.19) 実行のみ\n  - [x] JavaScript (Node.js 16.13.0) 実行＋デバッグ\n  - [x] TypeScript (Node.js 16.13.0) 実行＋デバッグ\n- Linux\n  - Ubuntu (WSL2)\n  - [x] C (gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0) 実行＋デバッグ\n  - [x] C++ (g++ (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0) 実行＋デバッグ\n  - [x] Java (openjdk version \"1.8.0_342\") 実行＋デバッグ\n  - [x] Python (Python 3.8.5) 実行＋デバッグ\n  - [x] Go (go version go1.13.8 linux/amd64) 実行のみ\n  - [x] JavaScript (Node.js 12.22.12) 実行＋デバッグ\n  - [x] TypeScript (Node.js 12.22.12) 実行＋デバッグ\n\n## 準備\n\n[AtCoder](https://atcoder.jp/?lang=ja) および [Yukicoder](https://yukicoder.me/) でユーザ登録します。Yukicoder の場合はプロフィール画面の API キーを確認しておいてください。\n\n### vscode\n\nvscode の [拡張機能] から `AtCoder Extension` を検索してインストールします。\n\n### C/C++/Java\n\ngcc/g++/clang/jdk 等をインストールします。  \n環境に合わせて設定からコマンドを変更します。\n\n### Python\n\n[Python](https://www.python.org/) をインストールします。\n\n### Go\n\n[Go](https://go.dev/) をインストールします。\n\n### JavaScript\n\n[Node.js](https://nodejs.org/ja/) をインストールしてから TypeScript の初期設定をします。\n\n1. vscode の [ファイル] \u003e [フォルダを開く] からフォルダを選択します。\n2. [ターミナル] \u003e [新しいターミナル] から以下のコマンドを実行します。入力を求められたらすべて Enter キーを押して進めてください。\n   ```shell\n   npm init\n   ```\n\n### TypeScript\n\n[Node.js](https://nodejs.org/ja/) をインストールしてから TypeScript の初期設定をします。\n\n1. vscode の [ファイル] \u003e [フォルダを開く] からフォルダを選択します。\n2. [ターミナル] \u003e [新しいターミナル] から以下のコマンドを実行します。入力を求められたらすべて Enter キーを押して進めてください。\n   ```shell\n   npm init\n   npm install --save-dev typescript ts-node @types/node\n   ```\n\n![npminit](https://github.com/taizod1024/ac-ts-extension/blob/main/images/npminit.gif?raw=true)\n\n## 使い方\n\nvscode で `F1` を押下（もしくは [表示] \u003e [コマンド パレット] を選択、`Ctrl+Shift+P` を押下）して [コマンド パレット] から機能を選択します。\n\n### AtCoder/Yukicoder へログインする\n\nはじめに `AtCoder Extension: Login Site` でユーザ名とパスワードを入力して AtCoder にログインします。\nYukicoder の場合はプロフィール画面の API キーを入力します。\n\n![loginsite](https://github.com/taizod1024/ac-ts-extension/blob/main/images/loginsite.gif?raw=true)\n\n### 問題をはじめる\n\nまずはじめに `AtCoder Extension: Init Task` で問題名を入力して提出用のソースコードの生成と問題用のテストデータのダウンロードをします。\n\n- サイトを`atcoder`,`yukicoder`から選択します。\n- コンテスト名は AtCoder の場合は `abc190`の形式、Yukicoder の場合は`351`の形式で入力します。いずれも URL から確認してください。\n- 問題名は AtCoder の場合は `abc190_a` の形式、Yukicoder の場合は`1692`の形式で入力します。いずれも URL から確認してください。\n- 解答する言語は`.py`,`.ts`, `.js` から選択します。\n- ソースコードは `src/atcoder/abcXXX/abcXXX_X.ts` に生成されます。\n- テストデータは `src/atcoder/abcXXX/abcXXX_X.txt` にダウンロードされます。\n- フォルダは自動的に作成されます。\n- 既にソースコードやテストデータがある場合はスキップされます。\n\n![inittask](https://github.com/taizod1024/ac-ts-extension/blob/main/images/inittask.gif?raw=true)\n\n### 問題に解答する\n\n生成されたソースコードの main()を修正します。\nソースコードのひな型にカスタマイズしたい場合は、後述の[設定](#設定)を参照してください。\n\n#### C ひな型\n\n```c\n#include \u003cstdio.h\u003e\n\nint main(void)\n{\n  /* TODO edit this code */\n\n  /* param */\n  int n;\n  scanf(\"%d\", \u0026n);\n\n  /* solve */\n  int ans;\n  ans = n;\n\n  /* answer */\n  printf(\"%d\", ans);\n\n  return 0;\n}\n```\n\n#### C++ ひな型\n\n```C++\n#include \u003cstdio.h\u003e\n#include \u003ciostream\u003e\n\nint main()\n{\n  /* TODO edit this code */\n\n  /* param */\n  int n;\n  std::cin \u003e\u003e n;\n\n  /* solve */\n  int ans;\n  ans = n;\n\n  /* answer */\n  std::cout \u003c\u003c ans;\n\n  return 0;\n}\n```\n\n#### Java ひな型\n\n```Java\nimport java.util.Scanner;\n\npublic class template {\n\n  public static void main(String[] args) {\n\n    // TODO edit this code\n\n    // param\n    Scanner sc = new Scanner(System.in);\n    int n = Integer.parseInt(sc.next());\n    sc.close();\n\n    // resolve\n    int ans = n;\n\n    // answer\n    System.out.println(ans);\n  }\n\n}\n```\n\n#### Python ひな型\n\n```Python\n# TODO edit this code\n\n# param\nn = int(input())\n\n# solve\nans = n\n\n# answer\nprint(ans)\n```\n\n#### Go ひな型\n\n```Go\npackage main\n\nimport (\n\t\"fmt\"\n)\n\nfunc main() {\n\n\t// TODO edit this code, this code is for https://atcoder.jp/contests/practice/tasks/practice_1\n\n\t// param\n\tvar a int\n\tvar b, c int\n\tvar s string\n\tfmt.Scanf(\"%d\\n\", \u0026a)\n\tfmt.Scanf(\"%d %d\\n\", \u0026b, \u0026c)\n\tfmt.Scanf(\"%s\\n\", \u0026s)\n\n\t// answer\n\tfmt.Printf(\"%d %s\\n\", a+b+c, s)\n}\n```\n\n#### JavaScript ひな型\n\nTypeScript と同様です。\n\n#### TypeScript ひな型\n\n```TypeScript\nimport * as fs from \"fs\";\n\n// util for input\nconst lineit = (function* () { for (const line of fs.readFileSync(process.stdin.fd, \"utf8\").split(\"\\n\")) yield line.trim(); })();\nconst wordit = (function* () { while (true) { let line = lineit.next(); if (line.done) break; for (const word of String(line.value).split(\" \")) yield word; } })();\nconst charit = (function* () { while (true) { let word = wordit.next(); if (word.done) break; for (const char of String(word.value).split(\"\")) yield char; } })();\nconst readline = () =\u003e String((lineit.next()).value);\nconst read = () =\u003e String((wordit.next()).value);\nconst readchar = () =\u003e String((charit.next()).value);\n\n// main\nconst main = function () {\n\n    // TODO edit this code\n\n    // param\n    let n: number;\n\n    // init\n    n = Number(read());\n\n    // solve\n    let ans;\n\n    // answer\n    console.log(ans);\n\n    return;\n\n};\nmain();\n```\n\n### 問題の解答をテストする\n\n問題の解答を作成したら、ソースコードを開いてから `AtCoder Extension: Test Task` でテスト実行します。\n\n- 処理が 5 秒以上続くと自動的に中断します。\n- 誤差が許容される問題の多くは NG になります。目視で判断してください。\n- bigint での出力が必要な問題は文字列化して末尾の `n` を除去して出力してください。\n\n![testtask](https://github.com/taizod1024/ac-ts-extension/blob/main/images/testtask.gif?raw=true)\n\nテストデータの例です。テストデータを追加する場合は `--------` で区切って入力値・出力値を追加します。\n\n```text\n2 1 0\n--------\nTakahashi\n--------\n2 2 0\n--------\nAoki\n--------\n2 2 1\n--------\nTakahashi\n--------\n```\n\n### 問題の解答をデバッグする\n\n問題の解答をデバッグするには、ソースコードを開いてから `AtCoder Extension: Debug Task` でデバッグ実行します。\n\n- テストデータの個数だけデバッグ実行が繰り返されます。\n\n![debugtask](https://github.com/taizod1024/ac-ts-extension/blob/main/images/debugtask.gif?raw=true)\n\n### 問題の解答を提出する\n\n解答の作成が完了したら、ソースコードを開いてから `AtCoder Extension: Submit Task` で解答を提出します。\n\n- 言語を選択します。\n- 構文エラーがあっても提出されます。テスト実行が失敗していても提出されます。注意してください。\n\n![submittask](https://github.com/taizod1024/ac-ts-extension/blob/main/images/submittask.gif?raw=true)\n\n### 不要なソースコードとテストデータを削除する\n\n`AtCoder Extension: Remove Task` を実行すると、問題のソースコードとテストデータを対で削除します。\n\n### ブラウザで問題ページを開く\n\n`AtCoder Extension: Browse Task` を実行すると、ブラウザで問題ページを開きます。\n\n## 設定\n\n### ソースコードのひな形\n\n独自のソースコードをひな形に使用する場合はフォルダ配下の `template/template.c`, `template.cpp`, `template.java`, `template.py`, `template.js`, `template.ts` に格納してください。\n\n### C/C++/Java 設定\n\n自身の環境に合わせて vscode の設定を変更します。\n\n| 設定名        | 内容                                   | 補足                        |\n| ------------- | -------------------------------------- | --------------------------- |\n| C Checker     | `gcc --version`                        | C コンパイラ存在チェック    |\n| C Compiler    | `gcc $taskfile -o $execfile -lm`       | C コンパイラ                |\n| C Executor    | `$execfile`                            | C 実行ファイル              |\n| C++ Checker   | `g++ --version`                        | C++コンパイラ存在チェック   |\n| C++ Compiler  | `g++ $taskfile -o $execfile`           | C++コンパイラ               |\n| C++ Executor  | `$execfile`                            | C++実行ファイル             |\n| Java Checker  | `javac --version`                      | Java コンパイラ存在チェック |\n| Java Compiler | `javac -J-Duser.language=en $taskfile` | Java コンパイラ             |\n| Java Executor | `cd $tmppath \u0026\u0026 java Main`             | Java 実行ファイル           |\n\nパラメタを使用できます。\n\n| パラメタ名           | 記法           | 展開例                                                     |\n| -------------------- | -------------- | ---------------------------------------------------------- |\n| タスクファイル       | `$taskfile`    | `C:\\Users\\...\\project\\src\\atcoder\\practice\\practice_1.c`   |\n| 実行ファイル         | `$execfile`    | `C:\\Users\\...\\project\\src\\atcoder\\practice\\practice_1.exe` |\n| タスクフォルダ       | `$taskpath`    | `C:\\Users\\...\\project\\src\\atcoder\\practice`                |\n| プロジェクトフォルダ | `$projectpath` | `C:\\Users\\...\\project`                                     |\n| 一時フォルダ         | `$tmppath`     | `C:\\Users\\...\\AppData\\Local\\Temp\\.ac-ts-extension`         |\n| サイト               | `$site`        | `atcoder`                                                  |\n| コンテスト           | `$contest`     | `practice`                                                 |\n| タスク               | `$task`        | `practice_1`                                               |\n| 拡張子               | `$extension`   | `.c`                                                       |\n\n### Python 設定\n\n特にありません。\n\n### Go 設定\n\n特にありません。\n\n### JavaScript 設定\n\n特にありません。\n\n### TypeScript 設定\n\nTypeScript のテスト実行には ts-node を使用しています。\n\n- 起動時間の短縮のためにトランスパイルのみしています(環境変数`TS_NODE_TRANSPILE_ONLY=1`)。そのため、ts-node 起動時の型チェックは行いません。\n- `tsconfig.json` があればそれに従います。\n\nTypeScript のデバッグ実行には vscode のデバッグ機能から ts-node を呼び出しています。\n\n- `tsconfig.json` があればそれに従います。\n\n### プロキシ設定\n\nプロキシ環境では環境変数`HTTP_PROXY`および`HTTPS_PROXY`を設定します。\n\n```shell\nset HTTP_PROXY=http://proxy.server:8080\nset HTTPS_PROXY=http://proxy.server:8080\n```\n\n認証プロキシ環境では以下の形式で設定します。\n\n```shell\nset HTTP_PROXY=http://username:password@proxy.server:8080\nset HTTPS_PROXY=http://username:password@proxy.server:8080\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftaizod1024%2Fvscode-ac-ts-extension","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftaizod1024%2Fvscode-ac-ts-extension","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftaizod1024%2Fvscode-ac-ts-extension/lists"}