如题, 很好奇在 web 给个输入框写代码, 然后执行展示结果是如何实现的呢?
|
1
OJ 系统嘛,就是把代码发到服务器上保存为文件,然后编译执行喽。
难点主要在于隔离,就是确保用户提交的代码即使包含恶意功能,也不能真正破坏服务器或窃取资料;以及用户代码不会用光服务器资源,确保并发能力。 |
|
hongchAug 6, 2020
2
如 1 楼所说,就是保存为文件然后用对应的环境编译就完事了
|
|
meiyoumingzi6Aug 6, 2020 via Android
3
以下是在 golang 官网执行在找代码的时候提示
Waiting for remote server... 正如 1 楼所说,需要将代码发送到远端执行 |
|
shylockhgAug 6, 2020
4
1. server
2. wasm |
|
5
有个类似 jupyter 的简单项目,zmq-pykernel, 就几个文件,比较好读,推荐看一下
|
|
no1xsyzyAug 6, 2020
6
有基于 wasm 的,在浏览器里实现一个解释器的做法。
但没什么地方在用,实现难维护难成本高,反而不如弄堆服务器做好隔离。 |
|
7
可以参考廖雪峰老师的 Remote Code Runner
https://mp.weixin.qq.com/s/IdgWJBgogK7oHXZCkv0Ivg |
|
8
常见的是发到服务器上编译执行。
推荐一篇博客 https://blog.golang.org/playground 介绍 go playground 是怎么实现的,非常有趣。 包含如何伪造文件系统和网络,如何伪造时间(甚至跳过 sleep ),规避副作用使得结果可以复用。 |
|
aguesukaAug 6, 2020 via Android
9
不一定,js kotlin 直接在浏览器里跑
|
|
10
@whileFalse
@hongch @meiyoumingzi6 @vhysug01 @shylockhg @no1xsyzy @foil2 @caviar @aguesuka 感谢各位回复, 小弟去了解一下。 |