与多个用户共享R功能而不暴露代码

时间:2012-04-20 19:04:31

标签: r rstudio obfuscation source-code-protection

我的代码会读入并处理我希望允许多个用户使用的数据,但我不想让他们看到代码。

有没有办法使用R或RStudio来做到这一点?

2 个答案:

答案 0 :(得分:8)

一种选择是使用Rserve之类的东西将您的功能公开为服务。但是,这需要您托管为您的用户运行代码的服务器。

答案 1 :(得分:2)

当您使用R代码时,无法隐藏用户的代码。您可以分发包的二进制包,但这仍然包括明文的R代码。此外,当代码加载到R中时,用户可以通过在命令行上键入任何函数来查看任何函数的源而不用括号。

我不确定你为什么要隐藏代码。也许你可以在你的问题中对此进行评论,以使事情变得更清楚。此外,我们可能能够提出除隐藏代码之外的解决方案,这些代码可能会回答您的问题。如果隐藏代码是为了保持无经验用户的实现细节,您可以执行以下操作。

  1. 为功能希望为用户提供的功能创建包装函数。这样的包装函数看起来像:

    spam_wapper = function(a, b) {
       return(.spam(a = a, b = b))
    })
    
  2. 使所有非包装函数对用户不可见。他们仍然可以通过明确说明程序包的命名空间来访问它们:

    pkgname::.spam
    

    但是很难找到代码,这使得找不到经验丰富的R程序员变得更难。但是一旦他们学会了这个技巧,这将不再有用。

  3. 如果您的理由是因为您想使用您的R代码赚钱,请隐藏您精心设计的R代码(在这种情况下,我会完全分享它:)),或隐藏您的代码,以免任何可能窃取您的想法的竞争。在这种情况下,@ baptiste的建议可能会起作用。但我想在Fortran,C或C ++中重写代码需要花费大量的工作......我想说,只需给它们源代码......