diff --git a/README-CN.md b/README-CN.md new file mode 100644 index 00000000..49438764 --- /dev/null +++ b/README-CN.md @@ -0,0 +1,79 @@ +# OnlineJudge 2.0 + +[![vue](https://img.shields.io/badge/python-3.6.2-blue.svg?style=flat-square)](https://www.python.org/downloads/release/python-362/) +[![vuex](https://img.shields.io/badge/django-1.11.4-blue.svg?style=flat-square)](https://www.djangoproject.com/) +[![echarts](https://img.shields.io/badge/django_rest_framework-3.4.0-blue.svg?style=flat-square)](http://www.django-rest-framework.org/) +[![Build Status](https://travis-ci.org/QingdaoU/OnlineJudge.svg?branch=2.0)](https://travis-ci.org/QingdaoU/OnlineJudge) + +> #### 基于Python和Vue的在线评测系统。[Demo](http://v2.qduoj.com) + +[English Document](https://github.com/QingdaoU/OnlineJudge/blob/2.0/README.md) + +## 概览 + ++ 基于docker,真正一键部署 ++ 前后端分离,模块化编程,微服务 ++ ACM/OI 两种比赛模式、实时/非实时评判 任意选择 ++ 丰富的可视化图表,一图胜千言 ++ 支持Template Problem,可以添加函数题甚至填空题 ++ 更细致的权限划分,超级管理员和普通管理员各司其职 ++ 多语言支持:`C`, `C++`, `Java`, `Python`,题目可以选择使用的语言 ++ Markdown & MathJax支持 ++ 比赛用户IP限制(CIDR ranges) + + +主要模块均已开源: + ++ 后端(Django): [https://github.com/QingdaoU/OnlineJudge](https://github.com/QingdaoU/OnlineJudge) ++ 前端(Vue): [https://github.com/QingdaoU/OnlineJudgeFE](https://github.com/QingdaoU/OnlineJudgeFE) ++ 判题沙箱(Seccomp): [https://github.com/QingdaoU/Judger](https://github.com/QingdaoU/Judger) ++ 判题服务器(对Judger的封装): [https://github.com/QingdaoU/JudgeServer](https://github.com/QingdaoU/JudgeServer) + +## 安装 + +文档: [https://github.com/QingdaoU/OnlineJudgeDeploy/tree/2.0](https://github.com/QingdaoU/OnlineJudgeDeploy/tree/2.0) + +## 截图 + +### OJ前台 + +![problem-list](https://user-images.githubusercontent.com/20637881/33372506-402022e4-d539-11e7-8e64-6656f8ceb75a.png) + +![problem-details](https://user-images.githubusercontent.com/20637881/33372507-4061a782-d539-11e7-8835-076ddae6b529.png) + +![statistic-info](https://user-images.githubusercontent.com/20637881/33372508-40a0c6ce-d539-11e7-8d5e-024541b76750.png) + +![contest-list](https://user-images.githubusercontent.com/20637881/33372509-40d880dc-d539-11e7-9eba-1f08dcb6b9a0.png) + +Rankings 中可以控制图表和菜单的显隐 +![acm-rankings](https://user-images.githubusercontent.com/20637881/33372510-41117f68-d539-11e7-9947-70e60bad3cf2.png) +![oi-rankings](https://user-images.githubusercontent.com/20637881/33372511-41d406fa-d539-11e7-9947-7a2a088785b0.png) + +![status](https://user-images.githubusercontent.com/20637881/33372512-420ba240-d539-11e7-8645-594cac4a0b78.png) + +![status-details](https://user-images.githubusercontent.com/20637881/33365523-787bd0ea-d523-11e7-953f-dacbf7a506df.png) + +![user-home](https://user-images.githubusercontent.com/20637881/33365521-7842d808-d523-11e7-84c1-2e2aa0079f32.png) + + +### 后台管理 +![admin-users](https://user-images.githubusercontent.com/20637881/33372516-42c34fda-d539-11e7-9f4e-5109477f83be.png) + +![judge-server](https://user-images.githubusercontent.com/20637881/33372517-42faef9e-d539-11e7-9f17-df9be3583900.png) + +![create-problem](https://user-images.githubusercontent.com/20637881/33372513-42472162-d539-11e7-8659-5497bf52dbea.png) + +![create-contest](https://user-images.githubusercontent.com/20637881/33372514-428ab922-d539-11e7-8f68-da55dedf3ad3.png) + +## 特别感谢 + ++ 所有为本项目做出贡献的人 ++ [heb1c](#) 同学为我们提供了很多意见和建议 + +如果您觉得这个项目还不错,就给个star吧 :) + +## 许可 + +The [MIT](http://opensource.org/licenses/MIT) License + +Copyright 2015-present, Online Judge \ No newline at end of file diff --git a/README.md b/README.md index 02e975b8..ef034531 100644 --- a/README.md +++ b/README.md @@ -5,68 +5,73 @@ [![echarts](https://img.shields.io/badge/django_rest_framework-3.4.0-blue.svg?style=flat-square)](http://www.django-rest-framework.org/) [![Build Status](https://travis-ci.org/QingdaoU/OnlineJudge.svg?branch=2.0)](https://travis-ci.org/QingdaoU/OnlineJudge) -> ### 基于Python和Vue的在线评测系统。[Demo](http://v2.qduoj.com) +> #### A onlinejudge system based on Python and Vue, [Demo](http://v2.qduoj.com) -## 概览 +[中文文档](https://github.com/QingdaoU/OnlineJudge/blob/2.0/README-CN.md) -+ 基于docker,真正一键部署 -+ 前后端分离,模块化编程,微服务 -+ ACM/OI 两种比赛模式、实时/非实时评判 任意选择 -+ 丰富的可视化图表,一图胜千言 -+ 支持Template Problem,可以添加函数题甚至填空题 -+ 更细致的权限划分,超级管理员和普通管理员各司其职 -+ 多语言支持:`C`, `C++`, `Java`, `Python`,题目可以选择使用的语言 -+ Markdown & MathJax支持 -+ 比赛用户IP限制(CIDR ranges) +## Overview ++ Based on docker, one-click deployment ++ Separated backend and frontend, modularization programming ++ ACM/OI rule_type, real-time rank or not, choose as you like ++ Amazing charting and visualization ++ Template-Problem support ++ More reasonable permission control ++ Multi-language support: `C`, `C++`, `Java`, `Python2`, `Python3` ++ Easy use markdown editor && Nice codemirror editor ++ Contest Participants IP limit(CIDR) -主要模块均已开源: +The main modules are open source: -+ 后端(Django): [https://github.com/QingdaoU/OnlineJudge](https://github.com/QingdaoU/OnlineJudge) -+ 前端(Vue): [https://github.com/QingdaoU/OnlineJudgeFE](https://github.com/QingdaoU/OnlineJudgeFE) -+ 判题服务器(Judger): [https://github.com/QingdaoU/JudgeServer](https://github.com/QingdaoU/JudgeServer) -+ VirtualJuge(Golang): 正在开发中.. ++ Backend(Django): [https://github.com/QingdaoU/OnlineJudge](https://github.com/QingdaoU/OnlineJudge) ++ Frontend(Vue): [https://github.com/QingdaoU/OnlineJudgeFE](https://github.com/QingdaoU/OnlineJudgeFE) ++ Judger Sandbox(seccomp): [https://github.com/QingdaoU/Judger](https://github.com/QingdaoU/Judger) ++ JudgeServer(A wrapper for Judger): [https://github.com/QingdaoU/JudgeServer](https://github.com/QingdaoU/JudgeServer) -## 安装 +## Install -文档: [https://github.com/QingdaoU/OnlineJudgeDeploy/tree/2.0](https://github.com/QingdaoU/OnlineJudgeDeploy/tree/2.0) +Follow me: [https://github.com/QingdaoU/OnlineJudgeDeploy/tree/2.0](https://github.com/QingdaoU/OnlineJudgeDeploy/tree/2.0) -## 截图 +## Screenshots -### OJ前台 +### Frontend: -![problem-list](https://user-images.githubusercontent.com/20637881/33365524-78b74d3c-d523-11e7-939e-84123cd94ffa.png) +![problem-list](https://user-images.githubusercontent.com/20637881/33372506-402022e4-d539-11e7-8e64-6656f8ceb75a.png) -![problem-detail](https://user-images.githubusercontent.com/20637881/33365526-78f0c742-d523-11e7-8b0e-93120639d05c.png) -![chart-detail](https://user-images.githubusercontent.com/20637881/33365527-792de76c-d523-11e7-89ac-0e8b3ae59a73.png) +![problem-details](https://user-images.githubusercontent.com/20637881/33372507-4061a782-d539-11e7-8835-076ddae6b529.png) -![status](https://user-images.githubusercontent.com/20637881/33365519-7809982c-d523-11e7-9bc2-3e8b8a016ffd.png) +![statistic-info](https://user-images.githubusercontent.com/20637881/33372508-40a0c6ce-d539-11e7-8d5e-024541b76750.png) + +![contest-list](https://user-images.githubusercontent.com/20637881/33372509-40d880dc-d539-11e7-9eba-1f08dcb6b9a0.png) + +You can control the menu and chart status in rankings +![acm-rankings](https://user-images.githubusercontent.com/20637881/33372510-41117f68-d539-11e7-9947-70e60bad3cf2.png) +![oi-rankings](https://user-images.githubusercontent.com/20637881/33372511-41d406fa-d539-11e7-9947-7a2a088785b0.png) + +![status](https://user-images.githubusercontent.com/20637881/33372512-420ba240-d539-11e7-8645-594cac4a0b78.png) ![status-details](https://user-images.githubusercontent.com/20637881/33365523-787bd0ea-d523-11e7-953f-dacbf7a506df.png) ![user-home](https://user-images.githubusercontent.com/20637881/33365521-7842d808-d523-11e7-84c1-2e2aa0079f32.png) -![contest-list](https://user-images.githubusercontent.com/20637881/33365528-7966a16a-d523-11e7-8834-4be5e0f9471d.png) +### Backend: -Rankings 中可以控制图表和菜单的显隐 -![oi rank](https://user-images.githubusercontent.com/20637881/33366292-c657f904-d525-11e7-947e-c5a4b7606439.png) -![acm-rank](https://user-images.githubusercontent.com/20637881/33366293-c6c62a5a-d525-11e7-9e37-2a354cda5310.png) +![admin-users](https://user-images.githubusercontent.com/20637881/33372516-42c34fda-d539-11e7-9f4e-5109477f83be.png) +![judge-server](https://user-images.githubusercontent.com/20637881/33372517-42faef9e-d539-11e7-9f17-df9be3583900.png) -### 后台管理 +![create-problem](https://user-images.githubusercontent.com/20637881/33372513-42472162-d539-11e7-8659-5497bf52dbea.png) -![admin-user](https://user-images.githubusercontent.com/20637881/33365529-79b4513a-d523-11e7-97e4-5dc0144c3101.png) +![create-contest](https://user-images.githubusercontent.com/20637881/33372514-428ab922-d539-11e7-8f68-da55dedf3ad3.png) -![judge_server](https://user-images.githubusercontent.com/20637881/33365530-79ef72d8-d523-11e7-8094-3eb50ec74ad8.png) +## Special Thanks -![create-problem](https://user-images.githubusercontent.com/20637881/33365531-7a2a46ba-d523-11e7-9348-ce6f7a36b37d.png) ++ I'd appreciate a github star if you find this great ++ Thanks to all the people that have contributed to the project ++ A special thanks to [heb1c]() who gave us a lot of suggestions -![create-contest](https://user-images.githubusercontent.com/20637881/33365532-7a64026a-d523-11e7-965a-4ead1082b124.png) +## License -## 特别感谢 +The [MIT](http://opensource.org/licenses/MIT) License -+ [heb1c]()同学为我们提供了很多意见和建议 - -## 许可 - -[SATA](https://github.com/zTrix/sata-license) \ No newline at end of file +Copyright 2015-present, Online Judge \ No newline at end of file diff --git a/judge/languages.py b/judge/languages.py index e7f35ffb..a1d67485 100644 --- a/judge/languages.py +++ b/judge/languages.py @@ -138,6 +138,21 @@ _py2_lang_config = { "seccomp_rule": "general", } } +_py3_lang_config = { + "compile": { + "src_name": "solution.py", + "exe_name": "__pycache__/solution.cpython-35.pyc", + "max_cpu_time": 3000, + "max_real_time": 5000, + "max_memory": 128 * 1024 * 1024, + "compile_command": "/usr/bin/python3 -m py_compile {src_path}", + }, + "run": { + "command": "/usr/bin/python3 {exe_path}", + "seccomp_rule": "general", + "env": ["PYTHONIOENCODING=UTF-8"] + } +} languages = [ {"config": _c_lang_config, "spj": {"compile": _c_lang_spj_compile, "config": _c_lang_spj_config}, @@ -145,7 +160,8 @@ languages = [ {"config": _cpp_lang_config, "spj": {"compile": _cpp_lang_spj_compile, "config": _cpp_lang_spj_config}, "name": "C++", "description": "G++ 4.8", "content_type": "text/x-c++src"}, {"config": _java_lang_config, "name": "Java", "description": "OpenJDK 1.7", "content_type": "text/x-java"}, - {"config": _py2_lang_config, "name": "Python2", "description": "Python 2.7", "content_type": "text/x-python"} + {"config": _py2_lang_config, "name": "Python2", "description": "Python 2.7", "content_type": "text/x-python"}, + {"config": _py3_lang_config, "name": "Python3", "description": "Python 3", "content_type": "text/x-python"}, ] spj_languages = list(filter(lambda item: "spj" in item, languages))