ptr-yudai / JokenPC

情報処理研究会プログラミングコンテストのジャッジサーバー

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

JokenPC BETA

情報処理研究会用プログラミングコンテストのサーバー

Description

プログラミングコンテストの参加者、問題、スコア、判定などを管理するためのPHP + Pythonサーバーです。

VS.

Requirement

PHP5.xくらい MySQL / MariaDBなど Python 2.7

Usage

Install

プログラミングコンテスト用にSQLのデータベースを作成します。データベースの名前は何でも良いですが、データベース名、ホスト名は/jpc/config.phpに設定してください。 ここではlocalhostにjoken_proconを作成します。

CREATE DATABASE joken_procon DEFAULT CHARACTER SET utf8;

また、データベースにアクセスできる権限を持ったユーザーを作成します。 ここではpc_masterをdebug_passwordというパスワードで作成します。

CREATE USER 'pc_master'@'localhost' IDENTIFIED BY 'debug_password';  
GRANT ALL PRIVILEGES ON joken_procon.* TO 'pc_master'@'localhost';

次に、アカウント(account)と問題(problem)のテーブルを作成します。

USE joken_procon;

CREATE TABLE account(
    id INT NOT NULL AUTO_INCREMENT,
    user CHAR(64) NOT NULL,
    team CHAR(64) NOT NULL,
    pass CHAR(128) NOT NULL,
    image MEDIUMBLOB,
    mime TINYINT NOT NULL,
    score INT NOT NULL,
    solved TEXT NOT NULL,
    PRIMARY KEY (id)
) DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

CREATE TABLE problem(
    id INT NOT NULL AUTO_INCREMENT,
    title CHAR(128) NOT NULL,
    problem TEXT NOT NULL,
    note TEXT NOT NULL,
    ie_input TEXT NOT NULL,
    ie_output TEXT NOT NULL,
    limit_time INT NOT NULL,
    limit_memory INT NOT NULL,
    input_code CHAR(64) NOT NULL,
    output_code CHAR(64) NOT NULL,
    exec_time INT NOT NULL,
    score INT NOT NULL,
    category CHAR(64) NOT NULL,
    solved INT NOT NULL,
    solved_user TEXT NOT NULL,
    last_date DATETIME,
    PRIMARY KEY (id)
) DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

設定を/jpc/config.phpに記述します。

次に、チェックサーバーの設定をします。

まず、/jpc/lang.jsonに使用可能にする言語とそのコンパイルスクリプト、拡張子を記述します。

また、標準では/server/に入っているconfig.jsonを編集し、config.phpに合わせた設定をします。

完了したら、server.pyを必ずHTTP経由でアクセスできない場所に設置してください。

問題を追加するにはJokenPCのデータベース上で

INSERT INTO problem(title, problem, note, ie_input, ie_output, limit_time, limit_memory, input_code, output_code, exec_time, score, category)
VALUES(
	"問題タイトル",
	"問題文(html記法)",
	"備考(html記法)",
	"入力例",
	"出力例",
	制限時間(ミリ秒),
	制限メモリ(キロバイト),
	"入力を生成するコードのパス",
	"入力から出力を生成するコード(解答)のパス",
	入力チェック回数,
	得点,
	"カテゴリ"
);

のように実行します。 なお、入出力のコードはHTTP経由で閲覧できない場所に設置する必要があります。 また、入出力のコードは直接実行するので、実行可能ファイルもしくはシェバンなどを用いて起動できる状態にしておいてください。 もちろんchmod等で実行可能な状態にしておく必要があります。(例 : # chmod +x output.py)

Note

  • 入力スクリプトおよび出力スクリプトはPHPのルートディレクトリに設置しないこと。
  • スティッキービットの立っているディレクトリには注意すること。

Screenshots

Licence

MIT Lisence

Author

ptr-yudai

About

情報処理研究会プログラミングコンテストのジャッジサーバー

License:MIT License


Languages

Language:PHP 69.4%Language:Python 25.1%Language:JavaScript 5.5%