【问题标题】:opencpu.js requests to my own install of opencpu?opencpu.js 请求我自己安装的opencpu?
【发布时间】:2013-10-20 00:08:35
【问题描述】:

是否可以在 Ubuntu 上使用我自己安装的 OpenCPU 来使用 opencpu.js?我已经快速扫描了代码,但看不到我应该在哪里设置主机名。

【问题讨论】:

    标签: r opencpu


    【解决方案1】:

    编辑:这个特性在 opencpu.js 0.3 中得到了改进。您现在可以使用 `opencpu.seturl() 设置 opencpu 服务器的路径。参数必须指向一个包,例如:

    opencpu.seturl("/ocpu/library/mypackage/R")
    

    或者如果您的浏览器支持 CORS,您可以这样做:

    opencpu.seturl("//public.opencpu.org/ocpu/library/mypackage/R")
    

    opencpu.seturl("//public.opencpu.org/ocpu/github/yourname/yourpackage/R")
    

    设置后,客户端将检查此服务器是否在线,并将一些调试内容打印到 javascript 控制台。如果一切正常,您可以像使用应用程序一样使用该库。看看http://www.stat.ucla.edu/~jeroen/appdemo/ 看看这个在行动。

    也就是说,opencpu.js 库旨在包含在应用程序中。 OpenCPU 应用程序是一个 R 包,其中包含一些网页,这些网页使用 OpenCPU API 调用包中的 R 函数。

    因为应用程序是安装在 OpenCPU 服务器上的 R 包,opencpu.js 库假定服务器在 当前 主机上运行,​​并使用相对路径来调用服务器。此外,由于 opencpu.js 包含在特定的 R 包中,opencpu.js 中的函数也没有指定包的参数:它假定您正在调用 R 函数 current 包。

    这听起来可能有点令人困惑,但相对路径对于保持应用程序的可移植性很重要。例如,同一个应用程序应该可以工作,无论它是否托管为:

    https://public.opencpu.org/ocpu/gitstats/www
    https://public.opencpu.org/ocpu/github/SChamberlain/gitstats/www/
    https://public.opencpu.org/ocpu/user/jeroen/library/gitstats/www/
    

    这种设计的最大优势在于您的 R 包将是一个独立的应用程序,只需安装包即可将其部署在任何地方。这避免了跨域请求和软件版本控制的很多麻烦。因为您的网页和 R 函数是同一个包的一部分,所以您可以确保 js 和 R 代码包含兼容的版本。如果您将 js 托管在单独的服务器上,那么安装新版本的 R 包时可能会出现问题。

    也许最好的入门方法是查看public apps 之一。这些应用的源代码在 opencpu github repo 上提供,每个应用都建立在opencpu.js 库之上。

    【讨论】:

    • 感谢您的回复。你描述的有道理。然而,这不是我们使用 OpenCPU 的方式。事实上,我们完全按照您在“1.2 在团队中使用 OpenCPU”中描述的方式使用它。我们有数据分析师编写所有 R 并部署到我们的 OpenCPU 服务器,我们有 Web 程序员编写 JavaScript 并部署到不同的服务器。我们喜欢相互独立地更新+部署 JavaScript 和 R。维护 JavaScript 和 R 之间的契约不是问题。但是,我们正在开发自动化测试来验证这一点,以便更加确定。
    • 我稍微更新了答案。如果您给我发电子邮件,我很乐意讨论您的用例并提供更具体的建议。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-01
    • 1970-01-01
    • 2018-07-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多