기존의 운영중인 부산대학교 온라인 저지 웹페이지를 개선하는 프로젝트입니다.
베타 사이트는 현재 부산대학교 내부 네트워크에서만 접속이 가능합니다.
부산대학교 코딩역량강화플랫폼의 백엔드 레포지토리입니다.
이 프로젝트는 기존 QingdaoU의 OnlineJudge를 기반으로 개발되었습니다.
Python 3.8.0
기본 QingdaoU의 Online Judge에 사용된 Python 버전은 3.8.0 입니다. 이 프로젝트는 3.8.0 버전으로 개발되었습니다.Django 3.2.9
기존 QingdaoU Online Judge에 사용된 버전인 3.2.9 버전을 사용합니다.Django Rest Framework 3.12.0
기존 QingdaoU Online Judge에 사용된 버전인 3.12.0 버전을 사용합니다.2023.12 ~ 2024.3 (현재 진행 중)
| github | 사진 | 역할 | 이메일 주소 | 소속 |
|---|---|---|---|---|
| hunsy9 | PM, 백엔드 개발 및 배포 | juniper0917@gmail.com | 정보컴퓨터공학부 | |
| Boksam | 프로젝트 기획 및 백엔드 개발 | boksam1017@gmail.com | 정보컴퓨터공학부 |
CSEP BE는 기본적으로 Docker, Docker-Compose에 기반합니다.
Docker Desktop을 미리 설치해두고 프로젝트를 설치하는 것을 권장합니다.
# 의존 라이브러리 설치
cd deploy
pip3 install -r requirements.txt
# 데이터베이스 배포 스크립트 실행
sh init_db.sh
# md5sum secret key 초기화 및 django migrate 실행
# 초기 super admin 계정 생성(username: root, email: root@pusan.ac.kr, password: rootroot)
sh init_db.sh --migrate
# 프로젝트를 실행합니다. localhost:8080으로 접속할 수 있습니다.
python3 manage.py runserver
아래는 문제 채점 및 제출과 같은 비동기 작업을 처리하는 celery를 실행시키는 방법입니다.
# 1. 터미널을 하나 더 생성합니다.
# 2. celery worker를 실행합니다.
celery -A oj worker -l info
# 3. 스케줄링 작업도 실행하고 싶은 경우, celery beat를 실행합니다.
celery -A oj beat -l infoPython Package 구성은 다음과 같습니다.
├── account/ # 회원 관련 패키지
├── announcement/ # 공지사항 관련 패키지
├── community/ # 커뮤니티 관련 패키지
├── contest/ # 컨테스트 패키지
├── problem/ # 문제 관련 패키지
├── submission/ # 문제 제출 관련 패키지
├── utils/ # 기타 util용 패키지
├── conf/ # JudgeServer Heartbeat, SMTP등 환경 구성
├── fps/ # 문제 등록 시 사용되는 데이터 파싱
├── judge/ # 문제 채점 시 사용되는 비동기 태스크
├── oj/ # 개발환경 설정(Dev, Production)Python Package를 제외한 폴더 구조는 다음과 같습니다.
├── deploy/ # 배포 설정 파일
├── docs/ # 문서 파일
├── data/ # static 파일 및 로그 저장