简介
KodeRunr (读作 code runner) 是款我在闲暇时间用Go语言编写的应用。顾名思义,你可以用它在网页上、命令行里写程序,贴代码,与此同时无需在本地安装任何编程语言。
网址:http://koderunr.tech/ Github: https://github.com/jaxi/koderunr
截图
KodeRunr 具有以下几个特色:
持编程多种流行编程语言
- Ruby - 2.3.0
- Ruby - 1.9.3-p550
- Python - 2.7.6
- Python - 3.5.0
- Swift - 2.2
- C - GCC 4.9
- Go - 1.6
- Elixir - 1.2.3
Unbuffered IO
支持即使输入输出 - 在截图中你可以看到 stdin 和 stdout 都是异步发生的 (无需像 Online Judge 平台那样一次性输入 input)
跨平台
- 可在 Chrome, Firefox, Safari 中流畅运行 (因为使用 EventSource 的浏览器技术,现暂不支持 IE 浏览器)
- 跨平台命令行 - 采用了 Go 强大的交叉编译技术,即使在你的电脑上没有安装编程语言,也可以通过 kode 在命令行中即时运行各种程序。现支持在 OS X, Linux (x86 & ARM), FreeBSD, OpenBSD 下的二进制命令行,可以在 https://github.com/jaxi/koderunr/releases 上找到打包的二进制文件
基于 Docker
使用Docker容器作为untrusted code的运行环境。其原理是,在程序运行前创建相对应编程语言的Docker容器,然后在Docker中运行相对应的代码,同时通过 Docker API的streaming和Redis队列,将stdin, stdout, stderr 在 Docker容器和宿主之间传导,与此同时通过Server Sent Events将数据传输到客户端。
出于对安全和性能的考虑,限定了容器的CPU quotas和内存的使用率;在容器中禁网; 每个容器限15秒内运行;程序运行完毕后自动销毁容器。
现使用 Docker 1.11 和 4.3.0-040300-generic 内核对 pids 数量进行限定,以此应对 fork bombing.
现只支持4台容器同时运行(毕竟部署在低配 DigitalOcean 服务器上)
部署环境
- DigitalOcean $ 5/mo VPS
- Nginx 做静态页面服务,以及 Go web 应用的代理服务
- 授权协议:
- MIT
- 开发语言:
- Go 查看源码»
- 操作系统:
- Linux, OS X, OpenBSD 以及FreeBSD