Мой ответ немного запоздал, но я считаю, что это хороший вопрос.К сожалению, я не верю, что в настоящее время есть решение или, по крайней мере, простое решение.
Трудность является общей, потому что для большинства интерпретируемых языков, включая R, часто возможновключите ведение журнала и проверку всех выполняемых команд.Это может свести на нет многие уловки, чтобы запутать код.
Для тех, кто предпочитает думать, что код открыт == хорошо, следует знать, что распространенная причина запутывания кода - это если вы консультируетесь с клиентом, которыйнанимает нескольких поставщиков.Клиенты нередко берут скрипты у поставщика А и спрашивают у продавца Б, почему он не работает с их системой.(Это может сделать ИТ-лакей низкого уровня, а не кто-то, ответственный за контракты NDA.) Если A & B являются конкурентами, код A только что был передан B. Когда сценарии == серьезные программы, тогда серьезный код имеетбыл отдан.
Способы, которые я видел, обращались к этому:
- Позвоните на скомпилированный язык и используйте стандартные средства защиты, доступные там.Разместите исполняемый файл на другом сервере и используйте вызовы к серверу для выполнения вычислений.(В R есть несколько вариантов на стороне сервера.)
- Использовать скомпилированный (предварительно обработанный / байт-код) код в языке.
Вариант 2 на самом деле проще и лучше, когда кодможет быть широко распространен, и не только по причинам ИС.Основным преимуществом является то, что он позволяет обновлять код без необходимости проходить через весь процесс релиза для всего сайта.Если нужны новые библиотеки, нет проблем - обновите сервер.
Вариант 3 выполняется в Matlab с файлами .p
и может быть выполнен с помощью py2exe
для Python в Windows.В R новая компиляция байт-кода может быть аналогичной, но я недостаточно знаком с ней, чтобы учесть различия между .Rc
файлами в контексте R и .p
файлами в контексте Matlab.Для получения дополнительной информации о компиляторе см .: http://www.inside -r.org / r-doc / compiler / compile
Размещение вычислений на сервере отлично подходит для работы с неискушенными пользователями, посколькулегче выполнять итерации в ответ на ошибки или запросы функций.Защита IP - это просто преимущество.