ライブラリを使う上でのあれこれ
それ
関連(?): GitHubを用いた自作ライブラリ管理 - ei1333の日記
清書する気が起きなかった ごめん
GitHub と GitHub Pages 間の移動
GitHub から GitHub Pages への移動
競プロライブラリに自動で verify をしてくれる CI を簡単に設定できる Web ページ | verification-helper の下の6.が行われていないと存在しない場合がある やってくれ
GitHub Pages から GitHub への移動
画面の幅が狭いと最上部に追いやられる
bundle ボタン
依存しているライブラリを展開してくれる
例えば 円 (整数幾何) | comp-library だと
↑展開前
↑展開後 (circle が依存している point が依存している vector も展開されています)
主に適当に検索して出てきたものをその場しのぎで使う場合に使う
よく使う他人のライブラリとかは手元にあったほうがぐちゃぐちゃにならなくてきれいだと思う(後述)
ローカルでのコンパイル/展開
わざわざ展開してコピーして貼り付けて……みたいなことをしなくても適切な運用をすれば include するだけで済むようになります
path
リポジトリのルートディレクトリからそのファイルへのパス(を include しているtext)は GitHub Pages からコピーできます
以降では bundle して copy して paste する代わりにこれが貼られているものとしている
コンパイル
C++ の話をすると、-I
で include ファイルを検索するディレクトリを追加することができます。ここにライブラリのローカルリポジトリのルートディレクトリへの絶対パスを書いておけば良いです。
それ以外の言語は知らん さすがに適切にやれば同じことができるだろうとは思う
oj-bundle
verification-helper には、ジャッジに提出するために実際にライブラリを展開する機能も提供されています: verification-helper/README.ja.md at master · online-judge-tools/verification-helper · GitHub
よけいな行の削除
bundle すると
#line 2 "src/geometry/Z2/class/circle.hpp"
みたいなものが大量に出てくるのですが、個人的には邪魔なので消して submit しています。
grep -v '^#line '
とかやると消えると思うので、これをやった上で別のファイルに吐くなどするとよさそうです。
#pragma once
とか空行とかも邪魔なので、実際には
grep -v '^#line ' | \ grep -v '^#pragma once' | \ cat -s > .bundled.cpp
みたいなものを用意している。
提出
↑ みたいな感じで一時ファイルに bundle したあとに提出して一時ファイルを消すまでを行うコマンドも用意している。
参考: oj/getting-started.ja.md at master · online-judge-tools/oj · GitHub
oj s .bundled.cpp -y -w=0
とかやっているけど非推奨なんだよな でもせっかちなオタクなんだ
手元での verify 実行
おまけ編
開発するときにわざわざリポジトリのルートディレクトリに戻って oj-verify run
やってまた戻って…………みたいなことをしていたんですが、
(cd $(git rev-parse --show-toplevel) && oj-verify all)
でよいことに気がついてきた
まあ submodule とかの中でやると多分こわれるけど
活エントリ
就活してました 書けることだけ書きます
こちらも大変参考になります : https://ei1333.hateblo.jp/entry/2022/04/01/225854
Twitter やめる前に書けや
続きを読むTwitter やめた
ファーストペンギン
続きを読む所得税を非負にする方法 - ei1333の日記
就職すると良いです。
こちらも大変参考になります : https://ei1333.hateblo.jp/entry/2022/04/27/195802
PCK2022 Final - 12
一体誰がこんな問題を!?
続きを読む