Giter Site home page Giter Site logo

qryxip / library-checker-judge Goto Github PK

View Code? Open in Web Editor NEW

This project forked from yosupo06/library-checker-judge

0.0 0.0 0.0 629 KB

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

License: Apache License 2.0

Python 0.07% Shell 2.37% C++ 54.23% Go 33.62% Java 0.26% D 0.14% Rust 8.67% Haskell 0.45% C# 0.08% Dockerfile 0.10% NewLisp 0.01%

library-checker-judge's Introduction

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

library-checker-judge's People

Contributors

yosupo06 avatar asi1024 avatar primenumber avatar privet-kitty avatar yang-33 avatar key-moon avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.