V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
Keller0
V2EX  ›  分享创造

一个在线运行代码的网站, https://yxi.io

  •  
  •   Keller0 · 2018-07-14 14:47:55 +08:00 · 9954 次点击
    这是一个创建于 2355 天前的主题,其中的信息可能已经有所发展或是发生改变。

    做了一个运行短代码的网站.

    目前支持的语言 Bash, C, C++, Go, Haskell, Java, Perl, PHP, Python, Ruby, Rust.

    前端用 Vuejs 做的(边学边做),后端用 Docker 提供不同语言的运行环境。

    欢迎大家体验。各种意见建议都可以提 issue.

    第 1 条附言  ·  2018-07-14 19:25:49 +08:00

    看了下 "rm -rf /", "while true" 都来了,谢谢大家。我做些限制,不过服务器的资源有限,大家轻点刚。

    43 条回复    2018-07-24 20:17:37 +08:00
    zhengjian
        1
    zhengjian  
       2018-07-14 15:11:42 +08:00
    <?php
    echo exec("rm -rf /");
    zhengjian
        2
    zhengjian  
       2018-07-14 15:18:36 +08:00   ❤️ 6
    就是想起了这条微博: https://weibo.com/2313289447/GeYCFo5Qa

    Cytion
        3
    Cytion  
       2018-07-14 15:34:28 +08:00 via Android
    @zhengjian 同想起🤣
    Keller0
        4
    Keller0  
    OP
       2018-07-14 16:02:24 +08:00
    @zhengjian 试试我这个吧
    peterpei
        5
    peterpei  
       2018-07-14 16:06:36 +08:00 via Android
    io 域名贵吗
    Keller0
        6
    Keller0  
    OP
       2018-07-14 16:07:29 +08:00
    @peterpei 300 大洋
    lhx2008
        7
    lhx2008  
       2018-07-14 16:09:34 +08:00
    域名不太好记呀
    Keller0
        8
    Keller0  
    OP
       2018-07-14 16:17:20 +08:00
    @lhx2008 还行吧挺短的。
    lhx2008
        9
    lhx2008  
       2018-07-14 16:21:29 +08:00
    @Keller0 没什么含义,我这里有个域名 code.wf 可以便宜卖,你有兴趣吗
    Keller0
        10
    Keller0  
    OP
       2018-07-14 16:32:57 +08:00
    @lhx2008 你那域名很多吧,暂时没时间搞。
    imydou
        11
    imydou  
       2018-07-14 16:33:50 +08:00   ❤️ 1
    <?php
    echo exec("rm -rf / --no-preserve-root");
    Keller0
        12
    Keller0  
    OP
       2018-07-14 16:41:35 +08:00
    @imydou 没效果吧,在 docker 里,用户身份也不是 root.

    代码地址在 https://github.com/keller0/yxi-back

    欢迎关注指导交流切磋
    hello123vvv
        13
    hello123vvv  
       2018-07-14 17:32:08 +08:00
    http://www.dooccn.com/php7/
    在用这个,php7 代码测试
    rogwan
        14
    rogwan  
       2018-07-14 17:42:54 +08:00 via Android
    最好标注下语言版本
    Keller0
        15
    Keller0  
    OP
       2018-07-14 17:52:38 +08:00
    @hello123vvv 这个也不错挺简洁的

    @rogwan 恩,要多个选项,另外还有标准输入,运行参数其实目前 api 都是支持的,前端还没做。
    Keller0
        16
    Keller0  
    OP
       2018-07-14 19:18:17 +08:00
    @imydou 谢谢是个 bug,因为全是 permission denied 输出太多了,传输等的太久,现在把输出的长度限制在 2M 了。
    luojianxhlxt
        17
    luojianxhlxt  
       2018-07-14 19:34:40 +08:00   ❤️ 2
    支持 C#就好了。。。
    GoLand
        18
    GoLand  
       2018-07-14 19:42:28 +08:00
    sorcerer
        19
    sorcerer  
       2018-07-14 19:45:24 +08:00 via Android
    没人尝试 fork 炸弹吗
    lixinyu1024
        20
    lixinyu1024  
       2018-07-14 19:57:46 +08:00
    哈哈,docker 环境,很安全
    话说我毕业设计就做的这个,跟楼主思路别无二致,就是代码有点烂
    https://github.com/lixinyu1024/cooperativecoding.git
    JohnChiu
        21
    JohnChiu  
       2018-07-14 20:23:00 +08:00 via iPhone
    做得很不错啊
    Keller0
        22
    Keller0  
    OP
       2018-07-14 20:59:00 +08:00 via Android
    @lixinyu1024 挺好啊,我毕业的时候也听说 docker 这些东西了但一直没细了解,最近才开始用。
    mingyun
        23
    mingyun  
       2018-07-14 21:49:52 +08:00
    执行有点慢 另外能本地保存下吗 一刷新之前的代码没了
    1762628386
        24
    1762628386  
       2018-07-15 00:15:41 +08:00
    大兄弟 虽说是 docker 可真要给你删了 你咋办 哈哈
    Keller0
        25
    Keller0  
    OP
       2018-07-15 00:18:47 +08:00
    @mingyun 未来会的 另外你感兴趣可以提 pr 欢迎的,慢的话可能是网络问题。


    @1762628386 不太懂 怎么删
    Trumeet
        26
    Trumeet  
       2018-07-15 11:47:52 +08:00 via Android
    有没有超时和资源限制..
    不然可以弄来编译个东西什么的..
    Keller0
        27
    Keller0  
    OP
       2018-07-15 11:55:14 +08:00 via Android
    @Trumeet 有的 内存 100M 限时 10s(算上编译和运行),目前写死了。运行一些短代码还是挺方便的。
    Trumeet
        28
    Trumeet  
       2018-07-15 12:16:18 +08:00 via Android
    @Keller0 嗯嗯 谢谢,这项目真的很棒
    Antidictator
        29
    Antidictator  
       2018-07-16 10:28:22 +08:00
    收藏了谢谢
    freemagico
        30
    freemagico  
       2018-07-16 10:39:22 +08:00
    作者做的很不错啊,我也做了一个类似的,不过还没实现这么多功能。https://github.com/tgly307/CodeOnlineRunner
    我之前做的时候遇到个问题就是前端打包以后 vendor 文件过大,尝试提取公共组件以后配合压缩能压缩到 300K 以内,作者可以尝试一下。
    Keller0
        31
    Keller0  
    OP
       2018-07-17 12:06:34 +08:00
    谢谢各位的支持 看了下日志有几千次运行了
    @freemagico 能减小体积是挺好的,目前对这些技术了解太少,欢迎来提供帮助。
    我其实参考了很多开源的项目
    glot.io https://github.com/prasmussen/glot
    Compiler Explore https://godbolt.org/
    还有 gitlab runner 感兴趣可以了解下
    hanxiV2EX
        32
    hanxiV2EX  
       2018-07-18 23:23:34 +08:00 via Android
    可以试试采用前端编译运行? asm
    none
        33
    none  
       2018-07-19 00:55:55 +08:00
    看到你这域名,想起来我有个类似的域名貌似更适合这个功能:yx.app (运行 app)
    jaaazzz
        34
    jaaazzz  
       2018-07-19 11:03:48 +08:00
    前台与 docker 怎么交互的,docker 有编排吗
    Keller0
        35
    Keller0  
    OP
       2018-07-19 21:13:12 +08:00
    @jaaazzz 后端用 gin 写了个 rest api, 运行代码的请求会调用 docker engine api。demo 项目地址 https://github.com/keller0/yxi
    目前没什么编排,机器就一台,感觉可以先优化一波其他的东西。
    @hanxiV2EX 谢谢分享。
    @none 不用了,谢谢
    yang2yang
        36
    yang2yang  
       2018-07-20 09:54:20 +08:00
    这种有些第三方的 python 包是不是不能导入和运行?
    rockagen
        37
    rockagen  
       2018-07-20 11:58:35 +08:00
    os.system('a(){a|a&};a;')

    好像挂了
    rockagen
        38
    rockagen  
       2018-07-20 12:11:50 +08:00
    #!/usr/bin/python

    import os
    while True:
    os.fork()


    还得做限制
    Keller0
        39
    Keller0  
    OP
       2018-07-20 18:22:18 +08:00
    @sorcerer
    @rockagen 谢谢,加了最大进程数限制 50,https://github.com/keller0/yxi-back/commit/5f5d01bbbf62d6ef7daa71c96195b6ec9a2e7417

    @yang2yang 目前用的是 python 官方的 docker image,查看支持的 module https://yxi.io/code/110
    需要那些库可以提出来,加到 image 里,随时导入的话有点难,资源太有限了,只能各种限制。据我了解 repl.it 是支持随时添加库的。
    joviwong
        40
    joviwong  
       2018-07-20 21:10:38 +08:00
    测试了一下跑 java,貌似结果和我本地跑不太一样
    apiziliao
        41
    apiziliao  
       2018-07-24 12:58:54 +08:00
    @zhengjian 原来是你在测试呀 0.0,之前启用了新的方式处理加快运行速度。然后看到搞事情临时关掉了,好像当时下午我重新又开启。后来还是发现一直测了一天。。。
    woffee
        42
    woffee  
       2018-07-24 18:22:59 +08:00
    前几天看了此贴,今天偶然发现 bing 可以直接搜索代码并执行,特来回复下:
    Keller0
        43
    Keller0  
    OP
       2018-07-24 20:17:37 +08:00
    @woffee 是的,hackerrank 提供的服务,至于怎么实现的没有看到任何分享。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2347 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 16:06 · PVG 00:06 · LAX 08:06 · JFK 11:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.