SW교육/Online Jugment System

온라인 저지먼트 시스템 구축하기 (Online Judgment System)

GrayrabbiT 2015. 2. 27. 20:25
반응형

알고리즘에 관련된 대회 준비를 위한 온라인 저지먼트 시스템을 구축하려고 합니다.

 

물론 저의 프로그래밍 실력이 워낙 미천한지라.. 이를 구현하기 위해서는 많은 준비가 필요할 듯 합니다.

또한, 미천한 실력으로 인하여 직접 시스템을 구축하는 것이 아니라 오픈소스로 이미 기존에 만들어진 시스템을 약간의 수정을 통해 구축해 보려고 합니다. 뻘짓이 되지 않으려구요.

이를 활용할 수 있는 방안을 생각해 보면 지역대회 운영하는 경우에 이 시스템을 통해서 문제의 출제와 채점을 자동화 할 수 있는 측면이 존재하며, 학생들이 학습할 수 있는 장을 마련해 보고자 합니다.

 

준비

 

준비의 과정에서 시스템을 어떻게 구축할지를 생각해 보았습니다. 일단 서버는 라즈베리파이를 이용하도록 하겠습니다. 우리가 사용할 시스템의 사용자가 많지 않을 것을 생각해 보면 가장 경제적인 방법은 시스템을 최대한 간소화 하도록 하는 것일 겁니다. 이를 위해서 라즈베리파이 (추후 시스템 검증도 필요할 것입니다. 우리가 구축할 시스템의 경우 실행파일을 직접 업로드 하는 것이 아니라, 소스 파일을 업로드 하고 이를 컴파일 후 실행경과를 반환하는 과정이 있어야 할 것입니다. 만약 라즈베리파이가 너무 느려 학생들의 결과를 제대로 반영할 수 있는지를 체크해 봐야 할 것 같습니다.)

 

OS는 라즈베리안으로 하죠 뭐. 다른 OS를 올리기도 그렇고 Docker를 사용하기에도 비루한 시스템 환경이기 때문에…

 

시스템은 어떻게 할지 사전 조사를 해보았습니다.

일단 가장 중요한 부분은 우리의 시스템이 프로그램으로 인하여 데미지를 입지 않도록 하는 것일 겁니다. 일단 가장 중요한 부분이겠지요? 이를 위해서 샌드박스가 필요할 것입니다. C/Cpp 나 Java의 경우에는 샌드박스를 통해서 시스템을 보호할 수 있을 것으로 파악됩니다. 따라서 샌드박스를 사용하는 오픈소스를 찾아보아야 합니다.

 

이를 위해서 구글링 구글링…

 

mjnaderi/Sharif-Judge · GitHub

 

https://github.com/mjnaderi/Sharif-Judge

제가 찾은 녀석입니다. 비교적 업데이트도 잘 되고 있는 상황인 것 같습니다. 오늘 날짜(2015.02.27.)기준으로 10일 전에도 업로드 한 것으로 보아서는 계속해서 제작중인 것으로 파악됩니다. 이 소스를 사용하기 위해서 필요한 요구 사항을 살펴보면 다음과 같습니다.

 

- WebServer with php ver.5.3 or later with Mysqli

- PHP CLI

- DB : Mysql or PostgreSql

- Tools for compiling and running ( gcc, g++, javac, java, python2, python3)

 

요 정도 입니다. 물론 샌드박스를 지원하고 있습니다만… 문제는 파이썬의 경우에는 아직까지 샌드박스가 지원되지 않는다는 군요. 그렇다면 파이썬 계열은 처음부터 제외시키고 시스템을 돌리고자 마음먹었습니다. 저의 시간은 소중하니까요. (사실 능력이 안됩니다.. -_-)

반응형