GoOnlineJudge is an ACM/ICPC online judge platform.
GoOnlineJudge works best on GNU/Linux and has been tested on Ubuntu 14.04+. Windows and Mac OS X are not recommended because RunServer cannot be built on both of them.
If you are Windows or Mac OS X user, you can try out docker-oj, based on docker image and works out of the box.
Be careful! This section might be out-of-date. Always check the Manual Installation guide for your safety.
GoOnlineJudge is installed by running the following commands in your terminal. You can install it via the command-line with
curl -sSL https://raw.githubusercontent.com/ZJGSU-Open-Source/GoOnlineJudge/master/install.sh | sh
- GoOnlineJudge is mainly written in Go.
- Get Go from golang.org
- MongoDB is a cross-platform document-oriented databases.
- Get MongoDB from MongoDB.org
- mgo.v2 offers a rich MongoDB driver for Go.
- Get mgo.v2 via
go get gopkg.in/mgo.v2
- API documentation is available on godoc
- flex is the lexical analyzer used in RunServer.
- Get flex using following command if you are running Ubuntu.
sudo apt-get install flex
- SIM is a software and text similarity tester. It's used in RunServer.
- SIM is shipped along with RunServer.
- The GNU compiler Collection.
- Get GCC from GNU or using following command if you are running Ubuntu
sudo apt-get install build-essential
- OpenJDK is Oracle's implementation of the next version of the Java SE platform.
- OpenJDK is used to judge Java code.
sudo apt-get install openjdk-7-jdk
- iconv-go provides iconv support for Go.
- Get iconv-go via
go get github.com/djimenez/iconv-go
Obtain latest version via
git, source codes will be in your $GOPATH/src.
git clone https://github.com/ZJGSU-Open-Source/GoOnlineJudge.git $GOPATH/src/GoOnlineJudge git clone https://github.com/ZJGSU-Open-Source/RunServer.git $GOPATH/src/RunServer git clone https://github.com/ZJGSU-Open-Source/vjudger.git $GOPATH/src/vjudger git clone https://github.com/sakeven/restweb.git $GOPATH/src/restweb
# Set $OJ_HOME variable export OJ_HOME="yourself oj home" #e.g. export OJ_HOME=/$GOPATH/src export DATA_PATH=$OJ_HOME/Data export LOG_PATH=$OJ_HOME/log export RUN_PATH=$OJ_HOME/run export JUDGE_HOST=your_judge_host #e.g. export JUDGE_HOST="http://127.0.0.1:8888" export MONGODB_PORT_27017_TCP_ADDR=127.0.0.1 export PATH=$PATH:$GOPATH/bin # directory for MongoDB Data mkdir $OJ_HOME/Data # directory for problem set mkdir $OJ_HOME/ProblemData # directory for running user's code mkdir $OJ_HOME/run # directory for log mkdir $OJ_HOME/log
Make sure you have these directories in your $GOPATH/src:
github.com/ GoOnlineJudge/ RunServer/ gopkg.in/ restweb/
And these directories in your $OJ_HOME:
ProblemData/ run/ log/
Now, it's time for compilation.
cd $GOPATH/src/restweb go install ./... cd $GOPATH/src restweb build GoOnlineJudge cd $GOPATH/src/RunServer ./make.sh
RunServer& cd $GOPATH/src restweb run GoOnlineJudge &
Now,you can visit OJ on http://127.0.0.1:8080.
You should always run MongoDB first then followed by OJ.
Running web server at 80 port requires administrator privileges. For security reasons, do not run our OJ at 80 port.
If you want to visit OJ at 80 port, nginx, the HTTP and reverse proxy server is recommended.
- Binary packaging on mainstream distributions
- Maybe a built-in simple blog
- Rebase RESTful API
- Modern design front-end
We are open for all kinds of pull requests!
Just please follow the Golang style guide.