1

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

4

1 回答 1

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 函数。

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

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 包时可能会出现问题。

也许最好的入门方法是查看其中一个公共应用程序。这些应用程序的源代码可在 opencpu github repo上找到,每个应用程序都构建在opencpu.js库上。

于 2013-10-20T22:58:48.240 回答