January 2008
COGS (CmYkRgB123 Online Grading System) is an online judge system for students dedicated in Olympiad in Informatics or ACM/ICPC. It implements not only online compile and run, but also a community, competitions and user rank.
COGS derived from my previous internet name CmYkRgB123. It was inspired by USACO training system and PKU Judge Online. In the first half of 2008, I was a senior high school student, who had participated in NOIP so that knew how useful an OJ is. Therefore I started to develop COGS, my first web application. I learned ASP, Linux, PHP, SQL, HTML, JavaScript and even some knowledge about operating system and process. Then I decided to develop a new OJ from scratch using LAMP. The code below was the most primitive core of COGS:
<?php
$timeout=1;
$process = proc_open("./a.out", $descriptorspec, $pipes);
$time_start = getmicrotime();
do {
$status = proc_get_status($process);
if (!$status['running'])
break;
$time_now = getmicrotime();
$rtime = $time_now-$time_start;
if ($rtime > $timeout)
proc_terminate($process);
} while (true);
?>
There was a time even I spent 6 hours at average a day developing my system. After about 2 months, the system was finally available (though with a lot of bugs). Then I recommended the system to my computer teacher. It was accepted and became the official OI training platform of my high school.
Two years later, after I had graduated from my high school, the system was still being used (http://cojs.tk/cogs/). Now it has been modified and refactored by successors.
Last modified on 2017-05-17