Existe-t-il un moyen simple de compiler mon R
script en standalone .exe
comme ce que fait Matlab ?
L'article lié sur le déploiement d'applications de bureau avec R est vraiment bon (utilise des applications portables et brillantes !), merci !
Existe-t-il un moyen simple de compiler mon R
script en standalone .exe
comme ce que fait Matlab ?
En fait, il existe un moyen de parvenir à une solution qui répondrait à vos besoins. Jetez un coup d'œil à l'article sur le Déploiement Applications de bureau avec R sur les R-Bloggers. Comme détaillé dans l'article, vous finirez par utiliser un peu plus de choses qu'un simple fichier exe.
J'aimerais également attirer votre attention sur la RGtk2 avec l'utilisation de la RGtk2 vous pourriez essayer de développer votre propre interface en R. Si la situation se complique, je suis sûr que vous pourriez regrouper votre code R avec une version portable de R et ses dépendances dans un installateur et créer une application à partir de celui-ci, ce qui créerait l'illusion d'un seul fichier exe.
Dans votre question, vous avez demandé si c'est facile pour développer un fichier exécutable autonome interprétant le code R. Je ne dirais pas que c'est facile. Si vous avez une forte envie d'exécuter un code R à partir d'une application, vous pouvez le faire de manière plus simple en utilisant RCaller pour Java ou R.NET .
L'article lié sur le déploiement d'applications de bureau avec R est vraiment bon (utilise des applications portables et brillantes !), merci !
@RYoda Je suis heureux de lire cela. Ce sujet suscite de l'intérêt. Si vous voulez vous en tenir à Shiny, cet article fournit des conseils intéressants sur l'emballage d'une application Shiny en tant qu'application de bureau Windows.
Il est également possible d'utiliser le moteur de script RCaller à travers l'API javax.script, voir mhsatman.com/rcaller-3-0
En réponse à votre commentaire :
En fait, je voudrais le distribuer mais en gardant les scripts et les et l'algorithme sont secrets, y a-t-il un moyen de crypter cela ou un autre moyen de pour atteindre cet objectif ?
Vous pouvez (en quelque sorte) le faire en sauvegardant les fonctions à l'aide des éléments suivants save()
. Par exemple, voici une fonction f()
que vous voulez garder secret :
f <- function(x, y) {
return(x + y)
}
Enregistrez-le où vous voulez :
save(f, file = 'C:\\Users\\Joyce\\Documents\\R\\Secret.rda')
Et quand vous voulez utiliser la fonction :
load("C:\\Users\\Joyce\\Documents\\R\\Secret.rda")
Je sauvegarderais toutes mes fonctions dans des fichiers séparés, je les mettrais dans un dossier et j'aurais un bon vieux .R script qui les chargerait toutes et les exécuterait. Zippez le tout et distribuez-le à qui vous voulez. Peut-être même le compiler dans un paquet. Effectivement, le tout serait alors en lecture seule.
Cette solution n'est cependant pas si géniale. Vous pouvez toujours voir la fonction dans R en tapant le nom de la fonction, elle n'est donc pas cachée dans ce sens. Mais si vous ouvrez les fichiers .rda, leur contenu est brouillé. Tout dépend vraiment de l'expérience des destinataires de votre code avec R.
J'ai fait quelques recherches sur cette question et quelques solutions ont été mises en œuvre au cours des dernières années.
Il est important de noter que je n'ai pas testé la plupart d'entre elles. En examinant les solutions, j'ai souvent l'impression qu'elles compliquent un peu les versions, car elles impliquent toujours des étapes manuelles.
Une forme de code crypté est mise en œuvre dans l'application petals
dans le paquet TeachingDemos.
Notez qu'il ne faut que des compétences en programmation de niveau intermédiaire pour trouver le code caché, mais que cela demande un effort délibéré et que l'utilisateur ne pourra pas prétendre avoir vu le code par hasard. Il faudrait alors mettre en place un certain type de contrat de licence pour faire respecter les accords d'interdiction d'accès.
Merci Greg, je viens de regarder la fonction que vous avez mentionnée, mais je n'arrive pas à comprendre comment l'utiliser pour cacher les codes, pourriez-vous avoir l'amabilité de m'en dire plus ?
@Joyce, le petals
ne cache pas le code, c'est un exemple de dissimulation d'un élément clé du code (pouvez-vous lire l'élément clé ?). D'autres outils sont nécessaires pour effectuer le cryptage (blanchiment). Une approche plus simple est discutée à l'adresse suivante stat.ethz.ch/pipermail/r-devel/2011-octobre/062236.html . La compilation par octets peut également être utile, mais vous avez vraiment besoin d'un accord de licence.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
17 votes
Réponse très courte : Non. Cela n'a jamais été le cas.
2 votes
En fait, j'aimerais le distribuer mais en gardant les scripts et l'algorithme secrets, y a-t-il un moyen de les crypter ou un autre moyen d'atteindre cet objectif ?
2 votes
De nombreuses discussions ont eu lieu à l'adresse suivante stackoverflow.com/questions/4707276/
1 votes
@Joyce, pour cacher le code, une solution standard consiste à distribuer l'application sur un serveur. Ainsi, vos utilisateurs se connecteront via le serveur. Non seulement vous pourriez cacher le code, mais vos utilisateurs auraient également toujours accès à la version la plus récente. Cependant, vous devrez mettre en place une infrastructure de serveur (il est probablement préférable d'utiliser un fournisseur de services en nuage).
1 votes
La création d'un paquet permettrait de distribuer le code commun. J'ai moi aussi cherché à créer un exe pour des tâches/fonctions banales, des calculs qui se répètent encore et encore. Et pour partager un exe avec ceux qui n'utilisent pas le codage/préfèrent une application basée sur l'interface utilisateur. Malheureusement, je suis toujours à la recherche de solutions.
0 votes
2 Je ne vois pas pourquoi R ne pourrait pas être compilé, si Python peut le faire. Python est techniquement interprété, mais il existe des compilateurs qui regroupent l'interpréteur avec le code et compilent dans un exe.