View Code? Open in Web Editor
NEW
This project forked from dmoj /judge-server
Judging backend server for the DMOJ online judge.
Home Page: https://dmoj.ca
License: GNU Affero General Public License v3.0
Python 50.12%
C 1.16%
C++ 47.54%
Dockerfile 0.18%
Makefile 0.07%
Shell 0.14%
Java 0.59%
Pascal 0.03%
Go 0.05%
C# 0.07%
Assembly 0.05%
Roff 0.01%
jota-dmoj-judge-server's People
Stargazers
Watchers
jota-dmoj-judge-server's Issues
현재 JOTA는 정답 코드 및 제출 코드를 모두 하나의 소스 코드로만 작성하여야 함
이는 헤더 파일을 따로 관리하거나, 규모가 큰 프로그램을 채점하기에 부적잘함
먼저 정답 코드를 여러 소스 파일로 제출할 수 있도록 수정. 내부 구조 및 인터페이스 수정
제출 코드 또한 수정. 내부 구조 및 인터페이스 수정
배포 프로세스 정리 및 메뉴얼 작성
JCloud instance 생성 부터 github clone 후 진행 방법
기존 문서를 토대로 전체 과정을 정리
가장 중요한 부분은 기존 문제들과 사용자 정보를 가져오는 것
수업 과제 관리
과제 제출 마감 시한을 입력하고, 데드라인에서 얼마나 지났는지 쉽게 확인하는 기능 필요
학생들에게 보여주는 화면도 해당 내용을 잘 확인할 수 있도록 수정
학생 별로 각 수업에서의 제출 현황을 쉽게 알 수 있도록 변경
2021년 1학기 운영체제 과제 수행 중 발견한 오류
정답코드의 stdout 이 제출코드의 stdin 으로 연결되어 입력값을 전달하는데,
이때 stdout 에서 "3" 이 포함된 경우, 다른 값으로 변경되어 전달되는 현상을 발견함
이러한 현상을 검증하고,
원인을 분석, 파악하여 수정함
Issue #2 의 1단계 내용을 토대로, 주요한 소스코드 내용에 대한 분석
제출, 채점 알고리즘, 결과 반환 등에 대한 소스 코드 분석 및 주석 추가
전체 구조도 및 주요 컴포넌트에 대한 간략한 설명
주요한 기능 (채점) 에 대한 동작 방식 설명 (call chain 포함)
현재 JOTA 에서는 정답코드, 제출코드에서 각각 생성된 output 을 출력해서 보여주며,
두 결과가 같은 경우 정답, 다른 경우 오답으로 처리된다.
이때, output data가 많은 경우에는 어느 부분이 다른지 확인하기가 어려우므로
두 문자열 간의 다른 부분을 하이라이트하거나 diff 를 활용해서 보여주는 기능이 필요하다.
목표
C (gcc) Judge 한정하여 구현
Grader(채점자) 측에서 additional & multiple 소스(.c)와 헤더(.h)를 추가한다.
Submitter(제출자) 측에서 부분적으로 Grader가 업로드한 소스 파일의 일부를 include 한다.
e.g.
Grader는 문제와 함께 LinkedList 를 구현한 소스코드를 첨가한다.
Grader가 업로드한 LinkedList 코드를 자동으로 Submitter 코드가 include 하기만 하면, Submitter는 LinkedList 구현코드까지 함께 제출할 필요가 없으며, LinkedList 관련 연산을 사용한 코드만 제출하면 된다.
signature_grader
노드 멤버 entry
, header
가 gcc 컴파일 옵션과 관련돼있는가?
참고할 주제
JCode 에서 작성 중인 코드를 JOTA 에 바로 채점 요청할 수 있는 기능 만들기
JCode-side: JOTA judge-sever 와 통신할 수 있는 extension 을 작성하고, 프로토콜에 맞추어 통신하는 모듈 작성
JOTA-side: Judge-server 의 통신 프로토콜을 파악하고, JOTA web 이 아닌 다른 주체가 judge 요청을 할 경우 발생하는 문제 상황을 분석, 수정하기