标签: r-rook-package

获取Rook/Shiny页面用户的私有IP地址

我已经创建了一些网络应用程序,使用Rook它可以在端口8000监听我的网络IP(192.168.xx.xx).我办公室内的每个人都可以http://192.168.xx.xx:8000/page_name在浏览器中输入它们.我需要监控这些页面的使用情况,并想知道如何获取连接到它们的网络IP地址.

我在网络开发方面没有经验,而且从迄今为止所做的研究来看,使用客户端代码似乎JavaScript很难(几乎不可能)实现这一点,(如果我错了,请纠正我).所以,我的问题是:有没有办法在Rook应用程序中使用服务器端代码获取网络客户端ip?(如果需要,我愿意更改网络服务器,任何解决方案都赞赏).

如果我的问题看起来令人困惑,请提前致谢和抱歉...特别是我不确定是否需要其他标签.

编辑:我也会接受使用不同于Rook(但仍在R)的东西的答案

编辑2:我在此链接后设置了Shiny Server .我正在配置服务器,以便获得access_log它,根据@Thell,包含我需要的信息.在shiny-server.conf我已经添加了相关声明,现在是:

run_as shiny;

server {
  listen 3838;

  location / {
    site_dir /var/shiny-server/www;
    log_dir /var/shiny-server/log;
    directory_index on;
  }

}

access_log /home/michelec/log.txt;
Run Code Online (Sandbox Code Playgroud)

最后一行应该告诉有光泽将access_log写入我的主文件夹.然而,没有任何事情发生,日志仍为空白.根据这里,在Formats部分,我应该收到以下日志之一:

default ':remote-addr - - [:date] ":method :url HTTP/:http-version" :status :res[content-length] ":referrer" ":user-agent"'
short ':remote-addr - :method :url HTTP/:http-version :status :res[content-length] - :response-time ms'
tiny ':method :url :status :res[content-length] - :response-time ms'
dev concise …
Run Code Online (Sandbox Code Playgroud)

r ip-address ipv4 r-rook-package shiny-server

11
推荐指数
1
解决办法
1910
查看次数

R:在一个日期加1个月

我希望得到a startDate和之间的日期顺序endDate加1个月startDate.即,如果startDate是2013-01-31并且endDate是2013-07-31,我希望看到这样的日期:

"2013-01-31""2013-02-28""2013-03-31""2013-04-30""2013-05-31""2013-06-30""2013-07-31"

我试过了 seq.Date(as.Date("2013-01-31"),by="month",length.out=7).但是这段代码的输出是这样的

> seq.Date(as.Date("2013-01-31"),by="month",length.out=7)
[1] "2013-01-31" "2013-03-03" "2013-03-31" "2013-05-01" "2013-05-31" "2013-07-01" "2013-07-31"
Run Code Online (Sandbox Code Playgroud)

那么,获得正确输出的最简单的解决方案是什么?

r dataframe zoo xts r-rook-package

11
推荐指数
2
解决办法
8417
查看次数

在启动时将R/Rook作为Web服务器运行

我在R中使用Rook创建了一个服务器 - http://cran.r-project.org/web/packages/Rook Code如下

#!/usr/bin/Rscript
library(Rook)
s <- Rhttpd$new()
s$add(
  name="pingpong",
  app=Rook::URLMap$new(
    '/ping' = function(env){
      req <- Rook::Request$new(env)
      res <- Rook::Response$new()
      res$write(sprintf('<h1><a href="%s">Pong</a></h1>',req$to_url("/pong")))
      res$finish()
    },
    '/pong' = function(env){
      req <- Rook::Request$new(env)
      res <- Rook::Response$new()
      res$write(sprintf('<h1><a href="%s">Ping</a></h1>',req$to_url("/ping")))
      res$finish()
    },
    '/?' = function(env){
      req <- Rook::Request$new(env)
      res <- Rook::Response$new()
      res$redirect(req$to_url('/pong'))
      res$finish()
    }
  )
)
## Not run:
s$start(port=9000)

$ ./Rook.r
Loading required package: tools
Loading required package: methods
Loading required package: brew
starting httpd help server ... done

Server started on host …
Run Code Online (Sandbox Code Playgroud)

r r-rook-package

7
推荐指数
1
解决办法
1911
查看次数

用Rook上传多个文件

HTML5规范允许一次上传多个文件<input type="file", ..., multiple="multiple">.有没有办法利用Rook R包来利用这个?

这是我的尝试,但似乎只显示了一个选定的文件:

library(Rook)

app <- function(env) {
  req <- Rook::Request$new(env)
  res <- Rook::Response$new()
  res$write(
   '<html><body>
      Select files:
      <form method="POST" enctype="multipart/form-data">
        <input type="file" name="data" multiple="multiple">
        <input type="submit" name="Upload">
      </form>
    </body></html>')

  if (!is.null(req$POST())){
    data <- req$POST()[['data']]
    res$write("<pre>")
    res$write(paste(capture.output(req$POST(),file=NULL),collapse='\n'))
    res$write("</pre>")
    res$write("<pre>")
    res$write(paste(capture.output(data$filename,file=NULL),collapse='\n'))
    res$write("</pre>")
  }
  res$finish()
}

s <- Rhttpd$new()
s$add(app=RhttpdApp$new(name="app", app=app))
s$start(listen="127.0.0.1", quiet=FALSE)
s$browse(1)

#s$stop(); s$remove(all=TRUE); rm(s)
Run Code Online (Sandbox Code Playgroud)

html5 r r-rook-package

6
推荐指数
1
解决办法
600
查看次数

使用Rook包将文件名从javascript传递给R.

在R functon中,我用作fileName参数来读取和处理该文件中存在的csv数据.我使用rook包来集成R和javascript.在javascript中,我使用以下代码来获取导入文件的文件名.

<form id='importPfForm'>
<input type='file' name='datafile' size='20'>
<input type='button' value='IMPORT' onclick='importPortfolioFunction()'/>
</form>

function importPortfolioFunction( arg ) {
    var f = document.getElementById( 'importPfForm' );
    var fileName= f.datafile.value;

    $.ajax( {
      type : "POST",
      url : 'http://localhost:'+portNo+'/custom/Ralgotree/hBasedFileImport?fileName='+fileName,
      dataType : "json",
      data : '{ "method" : "hBasedFileImport",  "clientId": "31d0c653-d7e5-44b6-98b5-8c084f99514a", "version": 0 }',
      xhrFields: {
            withCredentials: false
        },
      beforeSend : function(xhr) {},
      success : function(data, textStatus, xmLHttpRequest){
      },
      error : function(xhr, ajaxOptions, thrownError) {
      }
    });     
}
Run Code Online (Sandbox Code Playgroud)

因为这个方法只传递文件名而不是完整的文件路径,所以我不会在R中得到输出.所以我需要做什么修改来获得准确的输出.我使用以下R代码:

s <- …
Run Code Online (Sandbox Code Playgroud)

javascript ajax r r-rook-package

6
推荐指数
1
解决办法
809
查看次数

R Rook网络服务器

如何让R Rook网络服务器允许远程连接?

> library(Rook)
Loading required package: tools
Loading required package: brew
> s <- Rhttpd$new()
> s$start()
 done

Server started on host 127.0.0.1 and port 18445 . App urls are:

        http://127.0.0.1:18445/custom/RookTest
> s$browse(1)
Run Code Online (Sandbox Code Playgroud)

这在本地非常有效,但它不接受来自远程计算机的连接.

找到了解决办法: 使用s$start( listen = "77.77.66.77" )的,而不是s$start()在那里77.77.66.77是你的电脑的IP地址(在网络上).

webserver r r-rook-package

5
推荐指数
0
解决办法
897
查看次数

使用httpuv软件包管理POST请求,以使用R构建简单的API

我正在尝试使用httpuv包构建一个简单的api。该文档说,可以使用相同的Rook定义。在使用Rook软件包时,可以简单地使用:

req$POST()
Run Code Online (Sandbox Code Playgroud)

我还无法弄清楚如何管理简单的HTTP POST请求并获得其主体。

有什么提示吗?

r r-rook-package

5
推荐指数
1
解决办法
568
查看次数

RStudio:鲁克不行?

我想使用Rook构建一个简单的Web服务器,但是在R-Studio中尝试时我遇到了一些奇怪的错误:

代码

library(Rook)
s <- Rhttpd$new()
s$start()
print(s)
Run Code Online (Sandbox Code Playgroud)

返回相当无用的错误

"listenPort> 0时出错:比较(6)仅适用于原子和列表类型".

在简单的R-Console中尝试相同的代码时,一切正常 - 所以我想了解为什么会发生这种情况以及如何解决它.

RStudio版本为0.99.484,R为R 3.2.2

r r-rook-package

5
推荐指数
1
解决办法
549
查看次数