Java 创建一个运行代码的网站
我目前正在开发一个编程竞赛网站,希望实现对提交代码和在网站上运行代码的支持。在谷歌搜索了相当一段时间后,我仍然没有找到任何关于这方面的“指南” 有人知道一个网站(或其他来源)包含一些基本的指导方针或基本规则吗 感谢所有回复Java 创建一个运行代码的网站,java,php,javascript,html,css,Java,Php,Javascript,Html,Css,我目前正在开发一个编程竞赛网站,希望实现对提交代码和在网站上运行代码的支持。在谷歌搜索了相当一段时间后,我仍然没有找到任何关于这方面的“指南” 有人知道一个网站(或其他来源)包含一些基本的指导方针或基本规则吗 感谢所有回复 PS:如果有人想知道所有编程语言标签,我计划至少支持这些语言。对于Java,它非常简单: 您必须创建,以便将源代码上载到服务器(用于 例如,通过POST请求) 使用Java编译器API将源代码编译为字节码() 您正在编译的字节码可能会通过动态加载并启动它(您也可能会进行配置
PS:如果有人想知道所有编程语言标签,我计划至少支持这些语言。对于Java,它非常简单:
- 您必须创建,以便将源代码上载到服务器(用于 例如,通过POST请求)
- 使用Java编译器API将源代码编译为字节码()
- 您正在编译的字节码可能会通过动态加载并启动它(您也可能会进行配置)
- 不要忘记MVC架构:)
类似于Amazon的EC2可能会有所帮助——当您需要运行提交时启动VM,完成后将其丢弃。他们有一些预配置的映像,可能非常适合运行此代码,如果某些东西因为错误或恶意代码而出现问题,您不必太在意,因为您只需要在完成后将其扔掉。有一个网站已经这样做了,尽管是为了特定的目的:刮取数据 -与JSFIDLE不同,scraperwiki执行服务器端代码。据我所知,他们可能通过amazon实例对环境进行沙箱处理。考虑到他们所支持的语言和刮库的多样性,我不确定他们的代码是否可以被完全审计和清理 我认为大多数人对scraperwiki如何阻止黑客和垃圾邮件发送者滥用他们的资源感到困惑。他们对此相当缄默;要么他们手工审核了执行的每一段代码,要么黑客/垃圾邮件发送者还没有发现它们。由于站点具有特定功能,他们可能会检查数据利用率以确定可疑活动。。。但是,一个人的网站抓取是另一个人通过get/post进行的骚扰和注射 我的直觉是,他们永远不会公开说明他们的安全审计过程是什么样的 如果您真的必须这样做,在没有虚拟化的情况下,最简单的机械方法是使用eval()的变体。但是,并不是所有的语言都有这种能力。这就引出了选项B,即虚拟化。比我更好的人可以解释如何控制虚拟机达到这种效果,并且会提醒你不要让陌生人滥用你的资源。相反,我将分享我的PHP经验 几年前,我做了一个项目,在本地机器上动态执行代码。当您键入代码时,它通过ajax获取代码,并在每次击键后执行。下面是它行为的视频:
五年过去了,3个改进原型也完成了,我仍然不确定我如何负责任地将其作为一个公共资源加以锁定。这看起来像是一个相对简单的步骤列表。运行javascript、html、css和jquery时,看一下它们是如何工作的。关于运行php,请看一下。在我看来,您的问题太广泛了。此外,我并不真正理解这个问题。你的应用程序只需要一个你想要支持的所有语言的解释器……你仍然没有找到任何指南,因为你不明白你想要什么,如果你明白了,你会问谷歌正确的问题,谷歌会回答你。在Dexter回答的逻辑中,你还应该看看