### 简介
KodeRunr (读作 code runner) 是款我在闲暇时间用Go语言编写的应用。顾名思义,你可以用它在网页上、命令行里写程序,贴代码,与此同时无需在本地安装任何编程语言。
网址:http://koderunr.tech/
Github: https://github.com/jaxi/koderunr
### 截图
![命令行分享代码](https://camo.githubusercontent.com/bfb1c962177521dbb8faf9fe656bf45718988b56/687474703a2f2f672e7265636f726469742e636f2f4d4962614d56797169712e676966)
![命令行版本 KodeRunr](https://camo.githubusercontent.com/bbd6832d296396b31dc132c2dde829c4e50994de/687474703a2f2f672e7265636f726469742e636f2f475932786b53663136422e676966)
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