LAN programming judge
Project description
<h1>OpenJudge</h1>
<p><a href=”https://travis-ci.org/theSage21/openJudge”><img src=”https://travis-ci.org/theSage21/openJudge.svg” alt=”Build Status” /></a> <a href=”https://coveralls.io/github/theSage21/openJudge?branch=master”><img src=”https://coveralls.io/repos/theSage21/openJudge/badge.svg?branch=master&service=github” alt=”Coverage Status” /></a></p>
<p>A judge I made to judge the programming competitions in college. It requires a web interface to function.</p>
<p>Language support is unlimited, as long as you can write a shell script for it. The interface I use is <a href=”https://github.com/theSage21/judge-interface”>judge-interface</a>. The interface ships with</p>
<ul> <li>python3</li> <li>python2</li> <li>gcc</li> <li>g++</li> </ul>
<h2>Why?</h2>
<ul> <li>Judging programs by hand quickly becomes an experience best forgotten</li> <li>Roll my own</li> </ul>
<h2>Setup</h2>
<p><code> cd ~ mkdir judge cd judge virtualenv -p python3 env source env/bin/activate pip install openjudge </code></p>
<p>In order to setup the interface one can do the following.</p>
<p><code> cd ~ git clone https://github.com/theSage21/judge-interface.git cd judge-interface ./setup.sh </code></p>
<ol> <li><code>./setup.sh</code> does most of the work for you.</li> <li>Set the SLAVE_ADDRESSES in settings.py by default it is set to 127.0.0.1:9000</li> </ol>
<p>The interface is set up as a standard django server. I prefer using Nginx,Gunicorn as a combination. Check my <a href=”http://arjoonn.blogspot.com/2015/05/django-gunicorn-and-nginx.html”>blog</a> for how to set that up. <code>setup.sh</code> does this for you.</p>
<p>Note that the judge will have to run on a linux like machine. I shamelessly used redirection and I have no idea how they translate on a windows box if they do at all. Besides that, the interface can run on another machine and the judge on another.</p>
<h2>Usage during the competition</h2>
<ol> <li>Run the interface with <code>./runserver.sh</code></li> <li>Register users: <ul> <li>Register users with <code>python add_user.py</code> using a python shell at the registration desk. the file can be found in <code>judge-interface/webserver/</code></li> <li>This can also be done via the Django Admin</li> </ul></li> <li>Run the judge with <code>python -c ‘from openjudge.slave import Slave;Slave().run()’</code></li> <li>Tell everyone to navigate to the webserver. It will be something like <code>192.168.1.45</code></li> <li>Enjoy the fruits of watching a hundred people program.</li> </ol>
<h2>Gotchas</h2>
<p>Some features are not available. If you want you can implement them yourself.</p>
<ul> <li>No sandboxing.</li> </ul>
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.