代码之家  ›  专栏  ›  技术社区  ›  Eugene Barsky

Perl6是否可以在线工作?

  •  10
  • Eugene Barsky  · 技术社区  · 6 年前

    Perl 6程序 (并希望制作一些其他的),它分析本地数据时考虑了一些用户定义的参数。我的几个同事/同事定期需要程序的输出,所以他们向我发送参数,我运行程序并将输出返回给他们。

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

    所以,我的问题是:有没有可能 Perl 6版 在线工作?它能在浏览器中工作吗?或者还有其他解决办法吗?

    3 回复  |  直到 5 年前
        1
  •  11
  •   raiph    6 年前

    ...

    考虑到你所说的 ... 我同意。

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

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

    另一种选择是接受结构化电子邮件。在适当的地点再谈。

    我更喜欢使用Perl6。。。

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

    (另一种方法是传输到JS。理论上,您可以通过 an experimental nqp backend . 我认为这是一个令人兴奋的发展,但我怀疑在短期内这将是缓慢和有限的。)

    (本节最后一点。如果您最终将perl6转换为JS解决方案,因为您不想学习或处理混合服务器,那么您将使用perl6作为原型语言。这是一种使用语言的合法方式,但本答案的其余部分假设您将引入一个服务器。)

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

    除非那些使用这项服务的人已经可以在本地网络上看到服务器计算机,而且经常是这样,一种现代化的访问方法 解决方案中的服务器是购买在线服务器包(通常是基于 virtualization ). (假设一个像样的服务提供商,这有效地保证了它将是一个运行良好的服务器,除非它被黑客攻击或以其他方式损坏,否则它通常会继续运行、工作、连接和服务,并且如果后者发生,您将及时得到通知。“零成本”的替代方案是让你的桌面也成为服务器。这意味着你有责任保持你的桌面运行和连接。

    一种现代的方法 要使用的服务器 Docker

    有一系列产品同时使用操作系统虚拟化和docker或类似docker的技术来创建按使用付费的组合,您只需按服务器使用时间付费,而不是按服务器全天候可用时间付费。有很多细节。有些不支持Perl6。据我所知 Amazon AWS Google Cloud 两者都支持付费使用,并允许使用任何编程语言。

    构建web应用程序

    这个答案的最后几节介绍了一旦您有了一个服务器,如何使用perl6,从最不复杂的部分开始。跳到最后一节,在Cro上,如果你想直接进入解决方案,我建议如果你走网络路线。

    电子邮件客户端响应程序

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

    剩下的部分采用web解决方案。

    CGI与手卷代码

    从网页调用服务器上运行的代码很简单。

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

    如果您想收集参数,那么您只需编写一个表单和一个合适的提交按钮,并以这种方式进行。

    How to generate webpages using CGI scripts .

    模块和Bailador

    在我看来,像手摇CGI这样低水平的东西是不值得做的。这样做是有危险的,而且有一些模块可以使创建和维护更简单、更不危险。

    这些将出现在 "web" at modules.perl6.org .

    Cro和SPA

    SPA 接近。但它的设计目的是使用perl6内置的特性,很好地扩展到最复杂的网站,包括异步、并发、并行或分布式处理的混合以及任何 middleware 你想介绍一下。

    Cro SPA对于你在OP中建议的这样一个非常琐碎的应用程序来说可能是过度的,但是它仍然非常简单,而且选择它有无数的优点,对于你的应用程序来说没有明显的缺点(即使它作为一个测试版产品的正式身份对于您的场景来说也是不错的。它已经是一个非常可靠的产品,开发人员对任何提出的问题都能迅速做出响应,而且它对于开发人员和Perl 6来说都具有重要的战略意义,即保持干净、快速、值得生产和良好的维护。)

    the croservices/cro-http Docker container .

    学习如何使用Cro交付单个web页面的最快方法是遵循 Building a Single Page Application with Cro 辅导的。

        2
  •  7
  •   Matt Oates    6 年前

    https://github.com/bduggan/p6-jupyter-kernel

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

        3
  •  2
  •   Tommy Stanton    6 年前

    既然您已经实现了一个您似乎很满意的程序,而且它已经是用perl6编写的,那么给出它可能是值得的 Perlito 一次尝试(作为参考,它列在 perl6.org compilers page ).

    目标是使用Perlito将perl6源代码一次性翻译成JavaScript,当然,JavaScript可以在浏览器中运行。程序的维护将是一个序列:(1)更新perl6源代码(2) 运行Perlito获取JavaScript源代码(3) 用新呈现的源代码替换旧的JavaScript源代码。

    more detailed README (提到JavaScript-to-Perl-6)。

    推荐文章