回答
一種選擇是使用類似Rserve的方式將您的函數作爲服務公開。但是,這會要求您承載爲用戶運行代碼的服務器。
+1同意。 RStudio Server也適用於此解決方案,以及許多其他承載代碼服務器端的軟件包。 – Iterator 2012-04-21 16:07:01
但是使用RStudio Server你不會隱藏代碼。 R會話遠程運行,但用戶仍可以看到所有使用的代碼。 – 2012-04-24 08:51:11
當您使用R代碼時,我們無法隱藏用戶的代碼。您可以分發軟件包的二進制包,但仍然以明文形式包含R代碼。另外,當代碼加載到R時,用戶可以通過在命令行上輸入而不用括號查看任何函數的源代碼。
我不確定你爲什麼要隱藏代碼。也許你可以在你的問題上評論一下,以便讓事情更清楚。另外,我們可能會想出解決方案,而不是隱藏代碼來解決您的問題。如果隱藏代碼是爲了保持來自未經驗的用戶的實現細節,您可以執行以下操作。
爲其功能想要提供給用戶的函數創建包裝函數。這樣的包裝功能,可以看起來像:
spam_wapper = function(a, b) { return(.spam(a = a, b = b)) })
使所有非包裝功能對用戶不可見。他們仍然可以通過顯式地說明你的包的命名空間訪問它們:
pkgname::.spam
,但它是很難獲得的代碼,使其更難找到雛[R程序員。但是一旦他們知道了這個訣竅,這將無濟於事。
如果你的原因是因爲你想賺錢使用R代碼裏面,隱藏巧妙製作的R代碼裏面(在這種情況下,我會defintely分享:)),或在任何競爭中隱藏你的代碼可能竊取你的想法。在這種情況下,@baptiste的建議可能會起作用。但是我猜想用Fortran,C或C++重寫你的代碼需要花費很多工作...我會說,只要給他們源代碼...
- 1. 如何在不暴露自己的情況下找出宏的功能?
- 2. 如何在不暴露我的源代碼的情況下襬脫硬盤?
- 3. 如何在不復制代碼的情況下使用許多不同的twitter用戶執行多個功能?
- 4. 在不暴露實現的情況下創建swift框架
- 5. 如何在不暴露字段的情況下實現equals?
- 6. 在不暴露明文的情況下更改加密密鑰
- 7. 如何在不公開源代碼的情況下使用Twitter4J而不暴露我的oauth密碼令牌?
- 8. 如何在代碼優先的情況下共享EF6對象
- 9. 如何在不使用Maven存儲庫的情況下共享karaf功能?
- 10. 如何在不暴露容器的情況下公開迭代器?
- 11. 的Infinispan:clustred情況下不共享緩存
- 12. 如何在不共享源代碼的情況下創建和使用Android庫?
- 13. 如何在沒有實現的情況下將枚舉暴露給公共API?
- 14. 源碼VS在多用戶情況下
- 15. 你如何讓人們在不將項目暴露給整個代碼庫的情況下工作?
- 16. 如何在不暴露「_」的情況下使用lodash。在UI框架中?像jQuery.noConflict()
- 17. 暴露功能上軌
- 18. 暴露組件功能ES6
- 19. 如何在不共享源代碼的情況下分發ROS包
- 20. 綁定情況下被重新使用時ValidationRules不能共享
- 21. AngularJS:在不暴露全局變量的情況下使用第三方庫
- 22. 如何在不使用Boost的情況下將C++類暴露給Python?
- 23. 跨多個UIViewControllers在不背景閃爍的情況下共享一個UIView
- 24. 暴露的OnClientClick功能在用戶控制asp.net C#
- 25. 可可單和共享的情況下
- 26. 如何在不暴露源代碼的情況下將SDK分發爲AAR文件?
- 27. Angular ng-switch多種情況下的公共代碼?
- 28. 如何在不暴露源文件位置的情況下播放mp3文件?
- 29. 如何在不構建模塊的情況下將C++類暴露給Python
- 30. 如何在不暴露訪問器的情況下單元測試結構
讓一個存儲庫完全正交於用戶是否可以看代碼與否。這是你第二次問這個問題,而你仍然用一個措辭不佳的方式提問。如果你真正的問題是:「我如何隱藏用戶的代碼」,那麼答案可能是「只有一些困難」。 – 2012-04-20 19:57:38
有趣的是,試圖提出問題的人受到「專家」的攻擊。我似乎並不在乎在這個網站上建立聲望。 – 2012-04-20 20:15:12
我們許多人貢獻開源代碼。我們可能不是要求隱藏代碼的最佳羣體... – 2012-04-20 20:35:04