【问题标题】:Sharing R functionality with multiple users without exposing code [closed]在不暴露代码的情况下与多个用户共享 R 功能 [关闭]
【发布时间】:2012-05-02 09:12:19
【问题描述】:

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

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

【问题讨论】:

  • 拥有一个存储库与用户是否可以看到代码完全正交。这是你第二次问这个问题了,你还是问的措辞不好。如果您真正的问题是:“我如何向用户隐藏代码”,那么答案可能是“只有一些困难”。
  • 我们中的许多人都贡献了开源代码。我们可能不是询问隐藏代码的最佳群体...
  • 您可能会受到“抨击”,因为除了请“专家”为您解决问题之外,您没有证明您确实付出了任何努力来解决这个问题。
  • 参见例如stackoverflow.com/questions/4707276/… 。狡猾的 cmets 有两个原因:(1)R 开发人员对代码隐藏尝试并不那么友好(尽管如在链接问题中解释的那样,当然有正当理由)(2)你不应该为此负责无知,但“代码存储库”不是您想要做的正确(=社区中的标准)术语。我将继续编辑您的问题,随时自行回滚/重新编辑。如果您提供更多上下文,它也可能会有所帮助...
  • 我从来没有深入想过这个问题,但是我们可以想象 R 代码可能通过 rinside 嵌入到 C/C++ 代码中,编译到共享库中,然后从 R 中调用删除/隐藏原始来源后?

标签: r rstudio obfuscation source-code-protection


【解决方案1】:

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

【讨论】:

  • +1 同意。 RStudio Server 以及许多其他托管代码服务器端的包也适用于此解决方案。
  • 但使用 RStudio Server 并不会隐藏代码。 R 会话正在远程运行,但用户仍然可以看到所有使用的代码。
【解决方案2】:

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

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

  1. 为希望向用户提供其功能的函数创建包装函数。这样的包装函数可能类似于:

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

    pkgname::.spam
    

    但更难找到代码,这使得没有经验的 R 程序员更难找到。但是一旦他们学会了诀窍,这将不再有用。

如果您的原因是因为您想使用您的 R 代码赚钱,请隐藏您精心制作的 R 代码(在这种情况下,我肯定会分享它:)),或者将您的代码隐藏在任何可能窃取您想法的竞争中。在这种情况下,@baptiste 的建议可能会奏效。但我想用 Fortran、C 或 C++ 重写你的代码需要大量的工作......我会说,只要给他们源代码......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-14
    • 1970-01-01
    • 2021-01-12
    • 1970-01-01
    • 1970-01-01
    • 2019-07-13
    • 1970-01-01
    • 2011-05-16
    相关资源
    最近更新 更多