返回 登录
0

Time2Code:适合任何编程语言的无服务器代码编辑器框架

原文Time2Code Git Repo
作者:JockDaRock
翻译:雁惊寒

这是一款便携、可扩展的基于Web的代码编辑器,你可以将其整合到自己的代码中进行学习体验。

我们的目标是让你能够更轻松更愉快地部署你自己的基于Web的代码编辑器。

1.gif

技术概览

  • 代码执行后端是由基于无服务器的FaaS框架构建而成,具有良好的可扩展性和支持多种语言。通过faas-netes可以支持k8s,并且似乎运行良好。

  • 用户界面仿照的是Play-with-Moby网站。而Play-With-Docker网站使得我们的Docker学习体验更加完美。

  • 函数处理和代码执行通过Python进程来实现。Python接收所有函数请求的标准输入,然后将其传递给其他语言进行解释执行或编译执行。

  • 网站用Flask作为框架,并以Swarm服务的形式来运行。

  • 代码编辑器由Ace Editor项目构建而成。

  • 终端由XTermJS构建而成。

启动和运行

Docker Swarm

下面的代码片段将初始化swarm、Time2Code、FaaS以及time2code函数。

$ docker swarm init --advertise-addr eth0 && \
  git clone https://github.com/JockDaRock/Time2Code && \
  cd Time2Code && \
  bash time2deploy.sh && \
  docker service ls

请用浏览器访问 http://127.0.0.1:5555 并开始编写代码。

Kubernetes (minikube)

在启动之前,你需要安装minikube

键入以下命令会启动minikube,并将faas-netes加载到kube集群中。

$ git clone https://github.com/JockDaRock/Time2Code

$ minikube start 或者 $ minikube start --vm-driver=xhyve

然后运行下面的bash脚本来载入Faas和Times2Code。

$ bash ./minikube.sh

一旦脚本运行完成,它将会显示像 http://192.168.99.100:31114/ 这样的URL,通过这个URL可以以访问Time2Code网络编辑器。 在开始使用之前,你需要在FaaS服务启动后部署代码执行功能。 所有必需的Kube pod可能需要一两分钟才能运行起来。你可以用kubectl get pods来检查是否启动文成。

你可以在终端中使用下面这个命令来部署函数。

$ faas-cli -action deploy -f ./time2code-faas-cli-minikube.yml

用于代码执行的kube pods运行起来之后,你就可以开始编码了 :)

2.png

最新的消息

Time2Code:函数即服务和代码即函数

目前支持编码的语言

  • Python、Golang、Powershell、NodeJS等等,其他语言很快将添加进来。

  • 我目前正在开发C#代码的执行。大部分的测试案例都运行成功,但需要解决一些必要的依赖性和其他问题。

特定于语言的代码执行处理程序

路线图和贡献

目前正在进行中的:

  • 在代码执行功能中加入markdown和指令功能。

  • 为代码执行功能添加语言依赖项生成器。

  • 支持Kubernetes

Time2Code主要是用Python开发的,以MIT授权许可发布,这意味着不论是提供反馈意见、测试现有的或新的功能,还是挖掘源代码中的bug都是受欢迎的。这个项目仍处于早期阶段,所以我需要人们广泛地进行测试。我需要有人来帮我为不同语言以及语言提示构建新的代码执行处理程序。我也需要有人来帮我减小微软语言处理器的映像大小(PowerShell C#)。

评论