Skip to content

sundyloveme/RunCppOline

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 

Repository files navigation

RunCppOline

介绍

一个在线运行C++代码的web程序预览

软件架构

  • Python3.5
  • Django2.2
  • Judger 运行环境沙盒

快速部署教程

1.使用本仓库的 Dockerfile 构建一个新镜像

2.运行 docker run -it -p 本地端口:8080 镜像名称 或者 docker run -it -P 镜像名称

3.访问 0.0.0.0:8080或者0.0.0.0:-P指定的端口

4.返回如下界面表示成功 11

5.运行单元测试 python3 manage.py test 返回类似如下,表示功能正常

Ran 6 tests in 1.132s

OK
Destroying test database for alias 'default'...

开发环境搭建

1.安装docker

2.拉取镜像。该镜像为该项目的开发环境。sudo docker pull registry.cn-shanghai.aliyuncs.com/sundy-allstar/run_cpp_app:env

3.运行镜像并且将代码文件挂载入容器中。 挂载文件 注意使用绝对路径

docker run -it -p 8080:8080 \
  -v /Users/mac/Desktop/new_run_cpp/RunCppOline/judgerserver:/home/judgerserver \
  registry.cn-shanghai.aliyuncs.com/sundy-allstar/run_cpp_app:env

在容器中运行代码,在本地中修改代码即可。

Ubuntu下部署教程

1.安装依赖

sudo apt-get install libseccomp-dev
mkdir build && cd build && cmake .. && make && sudo make install

2.运行

sudo python manage.py runserver 0:8080

使用说明

1.请求和返回

通过post请求向服务器发送代码和输入数据,post请求格式如下:

{
    "user_code": "your_code",
    "user_input": "your_input_data"
}

返回两个字段,status表示代码运行的结果,error表示代码运行错误,success表示代码运行成功;output表示代码运行输出结果。

{
    "status": "",
    "output": "",
}

2.举例

在本地有个文本文件main内容如下:

#include<cstdio>
#include<iostream>
using namespace std;
int main(){
    string input;
    cin>>input;
    cout<<"Hello "<<input<<endl;
}

发送post请求:

file = open(os.path.dirname(__file__) + '/main', "r")
user_code = file.read()
file.close()
client.post('/', {"user_code": user_code, "user_input": "World"})

返回:

{
    "status": "success",
    "output": "Hello World",
}

如有问题请发Issues谢谢。

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published