【发布时间】:2013-10-20 00:08:35
【问题描述】:
是否可以在 Ubuntu 上使用我自己安装的 OpenCPU 来使用 opencpu.js?我已经快速扫描了代码,但看不到我应该在哪里设置主机名。
【问题讨论】:
是否可以在 Ubuntu 上使用我自己安装的 OpenCPU 来使用 opencpu.js?我已经快速扫描了代码,但看不到我应该在哪里设置主机名。
【问题讨论】:
编辑:这个特性在 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 库之上。
【讨论】: