font - r y axis scale




R glänzende App als eigenständige Anwendung bereitstellen (2)

Ich habe eine RShiny-Anwendung entwickelt, die ich intern mit meinen Kollegen teilen möchte (das Hosting der App auf einem Server ist in diesem Stadium keine Option).

Ich habe verschiedene Optionen untersucht und bin dabei auf eine Technik zur Bündelung Ihrer App als eigenständige Desktop-Anwendung mit einer Installer-Datei gestoßen, die Sie dann freigeben und verteilen können. (Der Ansatz wird hier und hier erklärt ) Dies ist ziemlich ordentlich, weil die Benutzer, die es installieren, brauchen nicht R (und alle anderen erforderlichen Pakete), um die App zu installieren und zu betreiben (es hat tragbare Versionen von R, Chrome usw.)

Ich konnte dem Ansatz folgen und eine eigenständige Desktop-Anwendung mit einer Installer-Datei erstellen, die ich nun freigeben kann.

Dies ist jedoch mein Anliegen: Im Idealfall möchte ich nicht, dass meine Benutzer auf den Quellcode zugreifen können. Gibt es eine Möglichkeit, diesen Zugang einzuschränken? Im Tutorial (der erste Link, den ich gepostet habe), sagt der Autor:

*

Bedenke schließlich, dass dein Quellcode leicht zugänglich ist. Wenn dies für Sie von Interesse ist (z. B. wenn Sie an einen Client verteilen, der keinen Zugriff auf den Code haben sollte), sollten Sie den Zugriff behindern, indem Sie zuerst den sensiblen Quellcode in ein Binärpaket kompilieren. Das heißt, jeder Benutzer, der R kennt (und ausreichende Absicht hat), kann den Code einfach an die Konsole ausgeben.

*

Gibt es bessere, narrensicherere Möglichkeiten, den Zugang zu behindern?

Vielen Dank!


Ich kenne diesen Ansatz nicht, ist das üblich? Ich persönlich habe es noch nie gesehen. Es sieht so aus, als würden Sie R, Shiny, einen Webbrowser und Ihren Code in einer Datei bündeln. Es ist so, als ob der Client R, Chrome, glänzend installiert und Ihren Code ausführt, aber er macht einfach alles mit einem Klick. Sie geben dem Benutzer buchstäblich Ihren Code. Ich weiß nicht, wie es funktioniert, aber wenn der Autor selbst behauptet, dass der Klient den Quellcode sehen kann, dann macht das für mich Sinn und ich glaube nicht, dass Sie das vermeiden können.

Warum hosten Sie die Datei nicht einfach auf einem glänzenden Server oder auf shinyapps.io? Der Client wird Ihren Code dann nicht sehen. Ist es wirklich so wichtig, dass sie Ihren Code nicht sehen können? Viele Menschen haben Angst davor, dass andere ihren Code sehen, aber in Wirklichkeit kümmert sich niemand wirklich darum, den Code anderer zu sehen und ihn zu stehlen. Es sei denn, Sie haben einen sehr proprietären und fortschrittlichen patentierten Code.


Ich bin mir nicht sicher, ob es in der Code-Obskuritätsfrage gut passen würde, aber das RInno- Paket wurde entwickelt, um mit dem Datensicherheitsproblem zu helfen, dh wenn ein Unternehmen seine Daten nicht an Dritte weitergeben möchte. Außerdem wird der oben erwähnte Prozess automatisiert und Sie können Ihre App mit GitHub / Bitbucket verbinden, um Updates für lokal installierte glänzende Apps per API-Aufruf beim Start zu übertragen.

Um loszulegen:

install.packages("RInno")
require(RInno)
RInno::install_inno()

Dann müssen Sie nur zwei Funktionen aufrufen, um ein Installationsframework zu erstellen:

create_app(app_name = "myapp", app_dir = "path/to/myapp")
compile_iss()

Wenn Sie R für Ihre Mitarbeiter hinzufügen include_R = TRUE die es nicht installiert haben, fügen Sie include_R = TRUE zu create_app :

create_app(app_name = "myapp", app_dir = "path/to/myapp", include_R = TRUE)

Es enthält standardmäßig shiny, magritr und jsonlite. Wenn Sie also andere Pakete wie ggplot2 oder plotly verwenden, fügen Sie sie pkgs Argument pkgs . Sie können auch GitHub-Pakete zum remotes Argument remotes :

create_app(
    app_name = "myapp", 
    app_dir  = "path/to/myapp"
    pkgs     = c("shiny", "jsonlite", "magrittr", "plotly", "ggplot2"),
    remotes  = c("talgalili/installr", "daattali/shinyjs"))

Wenn Sie sich für andere Funktionen interessieren, besuchen Sie FI Labs - RInno . Wenn Sie eine Anleitung zur Verbindung mit GitHub / Bitbucket benötigen, lesen Sie die Anleitung zur fortlaufenden Installation :).





shiny