2015-11-04 15 views
10

İş arkadaşlarımla dahili olarak paylaşmak istediğim bir RShiny uygulaması geliştirdim (Uygulamayı sunucuda barındırma, bu aşamada bir seçenek değil).R parlak uygulamasını bağımsız bir uygulama olarak dağıtma

Çeşitli seçenekleri araştırıyordum ve uygulamanızı tek başına bir masaüstü uygulaması olarak bir yükleyici dosyasıyla birlikte paketlemek için bir teknikle karşılaştım ve daha sonra & dağıtımını paylaşabilirsiniz. (Yaklaşım açıklanmıştır here & here) (o R, krom vb taşınabilir sürümleri vardır) kullanıcılar uygulamanın yüklenmesi ve çalıştırmak için R (ve diğer gerekli paketleri) sahip olması gerekli değildir yükleme Bunun nedeni, oldukça düzgün

Yaklaşımı takip edebildim ve şimdi paylaşmaya başlayabileceğim bir yükleyici dosyasıyla bağımsız bir masaüstü uygulaması oluşturabiliyordum.

Ancak, bu benim endişem: İdeal olarak, kullanıcıların kaynak koduna erişmesini istemiyorum. Bu erişimi kısıtlamanın bir yolu var mı? öğretici (I yayınlanmıştır ilk bağlantı), bu yazar diyor ki:

*

Son olarak, kaynak kodu kolayca erişilebilen unutmayın. , bu sizin için bir endişe ise (örneğin, kod erişimi olmayan bir istemcisine dağıtıyorsanız), en iyi yapabilecekleriniz, ilk önce ikili kaynak koduna girerek, hassas kaynak kodunu ikili bir paketine derleyeceksiniz. Bu, R (ve yeterli bir amacı olan) 'u bilen herhangi bir kullanıcının kodu yalnızca konsola bırakabileceğini belirtti. *

erişimini engellemek için orada daha iyi, daha hamlede yolları var mı?

Teşekkürler! Bu yaklaşıma aşina değilim, yaygın mıdır?

cevap

2

Şahsen hiç görmedim. Esasen yaptığınız şey, R, Shiny, bir web tarayıcısı ve kodunuzu bir dosyaya yerleştirmektir. İstemci R, Chrome'u kuruyor, parlak ve kodunuzu çalıştırıyormuş gibi, ama sadece tek bir tıklamayla yapıyor. Tam olarak kullanıcıya kodunuzu veriyorsunuz. Nasıl çalıştığını bilmiyorum ama eğer yazar kendisinin kaynak kodunu görebileceğini iddia ederse, bu bana mantıklı geliyor ve bundan kaçınabileceğinizi düşünmüyorum.

Neden dosyayı sadece parlak bir sunucuda veya shinyapps.io barındırmıyorsunuz? Müşteri kodunuzu o zaman görmeyecek. Ayrıca, kodunuzu görememeleri gerçekten önemli mi? Çoğu zaman insanlar başkalarının kodlarını görmekten korkarlar ama gerçekte kimsenin kimsenin kimsenin koduna bakmadığı ve çalmadığı gerçekte. Çok özel ve gelişmiş patentli kodunuz yoksa.

+0

Yorumlarınız için teşekkür ederiz! Shinyapps.io hakkında düşündüm ... Ve daha fazla keşfedeceğim olabilir. Ancak endişelerim (bir dereceye kadar) ve daha önemlisi veri gizliliği kısmıydı (uygulama tarafından kullanılan verilerin oldukça hassas olduğu göz önüne alındığında). Ve çalıştığım kurumun, veri gizliliği ve ilgili konular hakkında oldukça katı kurallar var. O yüzden burada bazı yol bloklarına rastlayabilirim. İkinci olarak, kullanıcıların kodu görmemesi çok önemli değil. Kodu gizlemenin kolay bir yolu yoksa, tüm paketi göndereceğim. – Dataminer

+0

Çok fazla kullanmıyorsanız maliyet ücretsizdir. Maliyet ve mahremiyet konusunda endişeleriniz varsa, o zaman [kendi parlak sunucunuzu kullanın] (http://deanattali.com/2015/05/09/setup-rstudio-shiny-server-digital-ocean/). Bu şekilde hala sizin tarafınızdan barındırılıyor ve siz onu kontrol ediyorsunuz. Uygulamanın tamamen müşteriye gönderilmesini istiyorsanız ya da barındırmak istiyorsanız, buna bağlı olarak değişir. Onlara bağımsız olarak verilir, onu güncelleyemez ve hataları düzeltebilirsiniz demektir. –

2

Kod belirsizliği sorusuna mükemmel bir şekilde uyup uymayacağından emin değilim, ancak RInno paketi veri güvenliği sorununa yardımcı olmak için tasarlanmıştır, örneğin bir şirket verilerini üçüncü olarak paylaşmak istemediğinde Parti. Ayrıca yukarıda atıfta bulunulan işlemi otomatik hale getirir ve başlatma sırasında API çağrıları aracılığıyla yerel olarak yüklü parlak uygulamalara güncellemeleri göndermek için uygulamanızı GitHub/Bitbucket'e bağlamanızı sağlar.

başlamak için:

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

Sonra sadece bir yükleme çerçevesi oluşturmak için iki işlevleri çağırmak gerekir: Eğer iş arkadaşlarınızı R dahil etmek istiyorsanız

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

kim don 't, bu yüklü eklemek include_R = TRUEcreate_app için:

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

Varsayılan, parlak, magrittr ve jsonlite içermesi nedeniyle, ggplot2 veya arsa gibi başka paketler kullanıyorsanız, bunları pkgs argümanına ekleyin. Eğer diğer özellikleri ile ilgileniyorsanız, FI Labs - RInno kontrol

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

: Ayrıca remotes argümana GitHub paketlerini içerebilir. GitHub/Bitbucket'e nasıl bağlanacağınız konusunda bir kılavuz isterseniz, Continuous Installation kılavuzuna bakın :).

+1

'install_inno()', veri güvenliği nedeniyle yürütülebilir indirmeye izin verilmediği için bir engeldir. Bir geçici çözüm önerebilir misin? – Divi

+0

Elbette! Inno Kurulumu - http://www.jrsoftware.org/isdl.php'yi yükleme iznine sahip olacaksınız. RInno paketi, Parlak uygulamalarınız için yükleyici oluşturmak üzere Inno Setup gerektirir. –