Perl 6 是否可以在线工作



这可能是一个幼稚甚至无效的问题......

我做了一个Perl 6程序(并希望做几个其他程序),它分析本地数据,同时考虑到一些用户定义的参数。我的几个同事/同事定期需要程序的输出,所以他们把参数发给我,我运行程序,然后把输出发回去。
由于整个过程不是很方便,我正在考虑可以做些什么来让每个人都更轻松。以下是选项,它们似乎都不理想。

  • 在我同事的电脑上安装 Perl 6,并教他们如何使用它。他们中的大多数人没有任何编程经验,数据和程序本身应该在所有计算机上保持最新,程序应该在不同的系统上工作相同等,所以这可能会让事情变得更糟,而不是更好。
  • 制作程序的在线变体(使用 JS 等),以便我的同事可以输入参数并在浏览器窗口中获取结果。这对用户来说要容易得多(我已经为一个更简单的程序做了这样的事情),但我更喜欢使用Perl 6...

所以,我的问题是:是否有可能以某种方式使Perl 6在线工作?它可以在浏览器中工作吗?还是有其他解决方案?

在我同事的电脑上安装 Perl 6...这可能会让事情变得更糟,而不是更好。

鉴于您陈述的...详细信息,我同意。

制作程序的变体(使用 JS 等),以便我的同事可以输入参数并在浏览器窗口中获取结果。

这是自然而然的选择。

(请注意,我在引用你的话时省略了"在线"。如果你的同事能够通过内部网络看到你的电脑,那么你仍然可以做一个JS/Web解决方案,但做一个非公开的 - 不是在线的。基本上执行相同的解决方案,但使用略有不同的服务器管道。

另一种方法是接受结构化电子邮件。更多关于在适当的位置。

我更喜欢使用 Perl 6...

在 Web 解决方案中使用 JS 以外的语言代码的最常见方法是在解决方案的"前端"中仍然使用 html 等,通常包括 JS,然后将服务器上运行的代码调用作为"后端"包括在内。

(另一种方法是转译为 JS。理论上,你可以通过实验性的nqp后端将Perl 6转换为JS。我认为这是一个令人兴奋的发展,但我怀疑它在短期内会很慢而且有限。

(本节的最后一点。相反,如果你最终将Perl 6翻译成JS解决方案,因为你不想学习或处理混合使用服务器,那么你将使用Perl 6作为原型语言。这可能是使用语言的合法方式,但本答案的其余部分假设您将介绍服务器。

介绍和管理服务器

服务器是一台计算机或软件,由于来自"客户端"(通常是其他计算机)的请求,它可靠地保持可用并按需运行软件。

这听起来很简单,在某些方面确实如此,但在其他方面并非如此。如果有人关掉电源怎么办?还是无法支付互联网账单?或者软件泄漏内存导致系统周期性故障?还是黑客攻击并进入?

除非使用该服务的人已经可以通过本地网络查看服务器计算机,否则通常即使这样,将服务器引入解决方案的现代方法是购买在线服务器包(通常基于虚拟化的软件包)。(想想一个月几美元及以上。假设一个体面的服务提供商,这有效地保证了它将是一个运行良好的服务器,除非它被黑客入侵或以其他方式损坏,否则通常会保持打开、工作、连接和服务,并且如果后者发生,你会及时得到通知。"零成本"的替代方案是使您的桌面也成为服务器。这意味着您有责任保持桌面正常运行和连接。

管理服务器的现代方法是在服务器之上使用 Docker 或类似方法。这有效地保证了如果服务器被黑客入侵或以其他方式损坏,您几乎可以立即修复运行良好的服务器的问题。它还可以轻松拥有一个本地服务器,您可以在其上开发和测试该服务器,该服务器保证与部署的生产服务器相同。也许最好的是,在您的桌面上安装 Docker 或在购买的服务器上使用它,然后放入已经准备好的 docker 文件意味着您可以在单击几个按钮的时间内从从未使用过服务器到拥有工作服务器。

有一系列产品同时使用操作系统虚拟化和 docker 或类似 docker 的技术来创建按使用付费的组合,您只需为服务器的使用时间付费,而不是为服务器 24/7 全天候可用付费。有很多来龙去脉。有些不支持 Perl 6。据我所知,亚马逊AWS和谷歌云都支持付费使用,并允许使用任何编程语言。

构建 Web 应用程序

这个答案的最后几节涵盖了一旦你有了服务器,如何使用Perl 6,从最不复杂的开始。跳到最后一部分,在 Cro 上,如果您想直接转到解决方案,我建议您使用 Web 路线。

电子邮件客户端响应程序

特别是如果你不想把钱花在单独的服务器上,为了简化一点,你可以让你的同事向一个电子邮件地址发送一封结构化的电子邮件,该地址到达你在桌面上运行的电子邮件客户端,该客户端通过在桌面上运行Perl 6程序来响应,然后在结果出来时通过电子邮件返回他们。如果您对此解决方案感兴趣,请发布另一个询问它的SO。

其余部分改为假定使用 Web 解决方案。

CGI 和手卷代码

从网页调用服务器上运行的代码是微不足道的。

您只需编写一个合适的链接即可单击指向动态程序而不是静态 html 页面的链接。

如果你想收集参数,那么你只需写一个表单和一个合适的提交按钮,然后这样做。

给定一个已经编写表单的现有网页,如果您阅读了适当的文章(例如如何使用 CGI 脚本生成网页),您可以学习如何传递参数、调用 Perl 6 代码并在几分钟内显示结果。

模块和拜拉多

Imo 不值得在手卷 CGI 这样低的水平上做事。这样做存在危险,并且有一些模块可以使创建和维护更容易且危险性更小。

这些将显示在 modules.perl6.org 的"网络"下。

Bailador 显然是一个基本解决方案的选择,它在"路由"(将 URL 映射到代码)和模板方面做得不错。

克罗和水疗中心

如果您有兴趣使用最自然的方法来构建现代网站,我建议您使用 Cro。Cro 使使用 SPA 方法构建简单的 Web 解决方案变得微不足道。但它的设计是使用 Perl 6 内置的功能,很好地扩展到可以想象到的最复杂的网站,涉及异步、并发、并行或分布式处理的任何混合以及您想要引入的任何中间件。

对于您在OP中建议的如此微不足道的应用程序,Cro SPA可能有些矫枉过正,但它仍然非常简单,选择它有无数的好处,并且对您的应用程序没有明显的缺点。(即使是它作为测试版产品的官方状态也适合您的场景 imo。它已经是一个非常可靠的产品,开发人员可以快速响应提出的任何问题,并且对于这些开发人员和Perl 6来说,保持干净,快速,值得生产和维护良好具有战略意义。

让整个设置开始的最快方法,以便你可以开始使用 Cro,如果你的服务器上还没有它(或者如果你使用它作为你的服务器,则安装桌面),然后安装 croservices/cro-http Docker 容器。

学习如何使用 Cro 交付单个网页的最快方法是遵循使用 Cro 构建单页应用程序教程。

一个不错的解决方案是你可以运行一个Jupyter Notebook服务器供他们使用 https://github.com/bduggan/p6-jupyter-kernel

或者另一种方法是将您的代码托管在 glot.io 上,以便他们可以在浏览器中运行它 https://glot.io/new/perl6

这些将是我的快速解决方案。如果程序非常简单并且在命令行上运行,那么 Rajudo 的 JVM 版本可能会使用 --target=jar 将其打包以在其他安装了 Java 的机器上运行。

由于你已经实现了一个你似乎很满意的程序,并且它已经是用Perl 6编写的,所以尝试一下Perlito可能是值得的(作为参考,它列在 perl6.org 编译器页面上)。

目标是使用Perlito将Perl 6源代码一次性转换为JavaScript,当然可以在浏览器中运行。 程序的维护将是一系列的:(1)更新Perl 6源代码;(2)运行Perlito获取JavaScript源代码;(3) 用新渲染的源代码替换旧的 JavaScript 源代码。

这整个建议是实验性的,我自己没有做过,所以请持保留态度。 😊

最后,还有一个更详细的自述文件(提到JavaScript-to-Perl-6)。

最新更新