Skip to content
This repository has been archived by the owner on Mar 11, 2023. It is now read-only.
chiro edited this page Apr 12, 2015 · 17 revisions

ドキュメント

Ruby

http://www.rubydoc.info/github/SoftwareFoundationGroupAtKyotoU/automata/master

環境設定

apt

# apt-get install shared-mime-info vim curl zip

もしもapacheを使ってCGIとして動作させる場合には mod_rewrite が必要です。

Ruby

$ bundle install               # 依存ライブラリをインストール(Gemfile が変更されたらやる)
$ bundle exec rake test        # テスト実行
$ bundle exec rake dummy       # ダミーユーザ追加
$ bundle exec rackup --help    # rackup のヘルプ
$ bundle exec rackup [-p port] [-o host] [-E environment] # サーバ起動(ポート番号 port) (ホスト host) (環境 environment デフォルトで development)

JavaScript

$ npm i         # js の依存パッケージをインストール(package.json が変更されたらやる)
$ gulp build    # js ファイルをビルド(js ファイルが変更されたらやる)

提出処理の設定

/config/master.ymlcheck:エントリで設定します。 check:直下のdefault:エントリで個別の設定のない課題のデフォルト値を指定します。 各課題に対して別の設定を与えたい場合は、default:と同じレベルにscheme.ymlで設定した課題idのエントリを追加してください。 課題別の設定とデフォルトの設定は浅いマージが行われます。

check:
  default:
    ignore:
      - \.o$
    test:
      run: echo
      input: solved.in
  report1:
    test:
      run: pwd

上記の設定があった場合、report1に使用される設定は以下のようになります。

ignore:
  - \.o$
test:
  run: pwd

test:以下がreport1の設定で置き換わってinput:が消えることに気をつけてください。

自動ビルドの設定

提出処理設定のbuild:エントリでビルドの設定を行います。

check:
  default:
    build:
      command:
        - build.sh
      file_location:
        - location: default

上記のような設定があった場合、以下のようにサーバーで処理が行われます。(ビルド用の作業ディレクトリをtmpとします)

  1. 提出されて展開されたファイルをすべてtmp/src以下にコピーする。
  2. /build/default以下のファイルをtmp以下にコピーする。(check.default.build.file_locationで指定したディレクトリからコピーされます)
  3. build.shコマンドが実行されます。(check.default.build.commandで指定したコマンドが上から順番に実行されます)

システム側で用意するビルド用ファイルの詳細設定

file_location以下の設定では、解いた問題によってコピー元に使用するディレクトリを変更することが可能です。

- location: base
- exercise:
  - Ex1
  location: ex1
- exercise:
  - Ex1
  - Ex2
  location: ex1-2

上記のような設定をすると、Ex1と2を解いていればbase,ex1,ex1-2ディレクトリのファイルがビルド用ディレクトリにコピーされます。Ex4だけを解いていればbaseディレクトリのみが使われます。 コピーは上から順に行われるので、例えばEx1だけを解いていてbase/hoge.txtex1/hoge.txtがあればビルド用ディレクトリに残るのはex1/hoge.txtからコピーされたファイルだけになります。

自動テストの設定

提出処理設定のtest:エントリで設定を行います。

check:
  default:
    test:
      sandbox: "http://sandbox.example.com/tester.cgi"
      files:
        - test.sh
        - solved.txt
      run: ./test.sh
      input: solved.txt
      output: :argument

上記のような設定があった場合、以下のような処理が行われます。(自動ビルド時に使用された作業ディレクトリをtmpとします)

  1. 提出時にチェックされた回答済みの問題の一覧がsolved.txtに出力されます。(check.default.test.inputで指定したファイルに出力されます)
  2. http://sandbox.example.com/tester.cgiにテストに必要なファイルと実行するコマンドが送られます。(check.default.test.sandboxで指定したURLが使用されます)
  3. tester.cgiにアップロードされるファイルはcheck.default.test.filesで指定します。この例の場合はtmp以下のtest.shsolved.txtがアップロードされます。
  4. tester.cgiで実行されるテストコマンドはcheck.default.test.runで指定します。

check.default.test.outputについて

この設定はtester.cgiで実行されるテストコマンドの出力先ファイルの指定に用いられます。具体的にはこのファイル名のファイルを生成した後に、テストコマンドの実行引数としてこのファイル名が渡ります。

:argumentを指定するとランダムなファイル名が使用されます。

Java Appletの使い方

Appletの設定

実行に必要なライブラリとappletの表示サイズの指定のみで、いずれも必須項目ではないです。 ライブラリは、/public/jar以下に置いてください。

check:
  default:
    applet:
      java_library: ["objectdrawV1.1.2.jar"]
      width: 800
      height: 400

動かし方

提出された.classファイルを選択することで、テキスト等と同様に内部HTMLとして表示されます。 ただしJavaの例外サイトに追加しなければ動作しません. https://www.java.com/ja/download/help/java_blocked.xmlなどを参考にしてください

Clone this wiki locally