알고리즘 채점 서버 구조, 구현 방식 조언을 구합니다.

  • siegbk52
    siegbk52

    질문과 답변 게시판은... 문제에 대한 질문을 하는 곳 같아서
    여기에 문의 드립니다.

    제가 개인적으로 알고리즘 채점 서버를 구현 하려고 하는데요.

    우선 제가 구현한 방식은 아래와 같습니다.

    • 알고스팟의 문제 제출 형식처럼 웹에서 텍스트 에어리어에 Source 를 입력 서블릿으로 넘김.
    • 해당 내용을 서블릿자바에서 *.java 파일로 만든 후,
    • Runtime.getRuntime()을 이용해서 compile
    • 컴파일한 클래스를 실행해서 나온 output.txt를 정답과 비교.
    • 비교 결과에 따른 점수 리턴.

      우선 로컬PC에서 지인들과 사용할 예정이어서, 채점 결과에 대한 기능에 초점을 맞추어서 구현을 우선적으로 생각하고 만들었습니다.
      위 결과, 간단한 알고리즘 문제를 풀어서 소스를 웹에 복사해서 submit을 하면 채점 결과가 리턴은 되고 있습니다.

      기능적인 부분에 결과를 빨리 구현하다 보니,
      보안이나 로그인등은 배제하였습니다...

      혹시 이러한 채점 서버를 구현하는 방식이나 기본적인 구조도를 제공하거나 설명하는 사이트가 있나요?
      혹은 아시는 부분이나 위에 구현방식의 문제점(Cpu, Mem)에 대해 조언 부탁 드립니다.!

      소스 Validation 부터 공격적인 부분 체크(System, Thread)에 대해서도 조언에 주시면 향후 추가적으로 기능은 보완할 예정입니다.


    9년 전
2개의 댓글이 있습니다.
  • JongMan
    JongMan

    알고스팟 소스 코드 참조하실 수 있을 것 같습니다. 비교적 쉽게 알고스팟 카피본을 로컬에서 돌리실 수 있으니, 간단한 용도면 그렇게 사용하셔도 문제없을 것 같고요.

    시스템 접근을 막는 샌드박싱은 꽤 어렵기 때문에 알고스팟에서는 일종의 가상화 기술인 LXC를 이용합니다. 자바의 경우 Security manager 설정으로 시스템 접근을 막을 수 있다고는 하던데 자세히는 안봐서 모르겠네요.


    9년 전 link
  • siegbk52
    siegbk52

    감사합니다. 해당내용 참조하도록 하겠습니다. ^^


    9년 전 link
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.