MiSawa / library-checker-judge

Home Page:https://judge.yosupo.jp/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Library Checker Judge

ジャッジ / API のソースコードです

Requirements

  • Ubuntu 18.04(Judge Server)
  • docker, docker-compose(API, SQL)

Launch API & SQL

./launch_local.sh

dockerグループに自分を登録することでsudoなしでdockerが使えるようになる Reference sudoをつけて実行してもいいが、色んなところにrootでフォルダが作られて面倒な事になるので、非推奨

APIサーバー(localhost:50051)とSQL(Postgre SQL)がdocker-composeで立ち上がり、aplusb, unionfindがデプロイされる。

APIサーバーへは gRPC でアクセスします。例えばクライアントとして evans を使うなら、以下のようにアクセス

evans --host localhost --port 50051 api/proto/library_checker.proto
evans --host apiv1.yosupo.com --port 443 library-checker-judge/api/proto/library_checker.proto -t

Launch Judge Server

sudo apt install postgresql-client libpq-dev python3 python3-dev python3-pip g++ cgroup-tools libcap2-bin

pip3 install termcolor toml psycopg2 psutil

cargo test -- --test-threads=1 --nocapture

など

cgroupでmemory swapを管理する

/etc/default/grubに以下を書き、reboot

GRUB_CMDLINE_LINUX="swapaccount=1"

ジャッジ用のシステムユーザーを作成する

sudo useradd library-checker-user -u 990 -r -s /sbin/nologin -M

ジャッジはpkill -u library-checker-user(このユーザーのプロセスを全部消す)を使用するため、UIDが他のユーザーと被ってはいけない。 特にpostgreコンテナはデフォルトで999をUIDとして使うため注意。

どちらかを変更すること

Local Test

  • library-checker-problems / library-chcker-judge は同じディレクトリにcloneしておくこと

APIのテスト(今のgo sourceではなく、今立ち上がってるAPIサーバーに対してテストすることに注意)

cd library-checker-judge/api
go test . -v

Launch Judge

cd library-checker-judge/judge
sudo go run *.go

各種機能をガンガン使うのでrootじゃないと動かない 多分

Contribution

なんでも歓迎

library-checker-project

About

https://judge.yosupo.jp/

License:Apache License 2.0


Languages

Language:C++ 54.3%Language:Go 33.5%Language:Rust 8.7%Language:Shell 2.4%Language:Haskell 0.5%Language:Java 0.3%Language:D 0.1%Language:Dockerfile 0.1%Language:C# 0.1%Language:Python 0.1%Language:NewLisp 0.0%