2014年9月

使用docker作为沙盒

背景

其实早就想做个在线代码运行的,但是 CentOS6 对 Docker 的支持不是很好,坑比较多。待 CentOS7 出来后思考了一段时间,最终还是决定做起来了。

怎么做

最初考虑的时候就是想着可以扩展性比较好的解决方案,建立一个socket sever可以把文件分发到不同的机器上,再后来便想着还是直接用rsync吧,然后...神马都没弄,就直接本地 mount 到 docker container 里面去了,做了个池子,最多只能开50个docker container

Dockerfile

FROM centos:latest

RUN yum install gcc gcc-c++ php golang -y

ADD entrypoint.sh entrypoint.sh
ADD run-code.sh run-code.sh

ENTRYPOINT ["/bin/bash", "entrypoint.sh"]

至于前端的东西,是用的CodeMirror,给他加了个命令和快捷键(mac 和 pc 区分)

preview

代码在线运行

Screenshot 2014-09-21 at 22.22.18.png

嵌入演示

<iframe src="http://tool.lu/coderunner/embed/3eV.html"; width="650" height="550" frameborder="0"></iframe>

nginx兼容%23

问题起源

在 tool.lu 上,将分享服务改为百度分享的时候,pc 上的分享链接都正常,但是微信二维码扫描之后就会出现下面的 url,%23也就是一个#

http://tool.lu/news/%2310006-weixin-1-6358-0629b82e8bd20c82f766611c23eca2f9

即使是在其提供的 api 中关闭#回流统计的功能,对二维码来说还是不起作用的。为对此url做兼容,修改 nginx 配置文件如下

解决方案

# hack for baidu share weixin
    rewrite ^(.*)\#(.*)$ $1#$2 redirect;
# end hack¬