我的网络服务器提供的内容在95%的时间内只是简单的ascii.但是在极少数情况下,内容包含一些德语非ascii字符.
现在,我可以content-type通过检测内容是否包含任何非ascii字符来设置响应头,或者我可以始终设置响应头:
Content-Type: text/plain; charset=UTF-8
Run Code Online (Sandbox Code Playgroud)
做后者有什么不利之处吗?
很长一段时间,浏览器每个主机最多使用6个并发HTTP 1.1连接来从网页中检索资产.远远超出这个黄金标准被认为是DOS并让你被禁止服务器.
现在有HTTP/2,我们可以在一个连接上复用许多HTTP请求.我们是否仍应对我们在连接上复用的并发请求数量使用类似的限制,以防止服务器过载?或者在单个连接上复用更多请求是否有害?
任何人都知道浏览器使用每台主机和HTTP/2服务器的每个连接限制了什么?
我大量使用'do.call'来生成函数调用.例如:
myfun <- "rnorm";
myargs <- list(n=10, mean=5);
do.call(myfun, myargs);
Run Code Online (Sandbox Code Playgroud)
但是,有时我想从某个包中明确调用一个函数.与例如类似stats::rnorm(n=10, mean=5).有没有什么方法可以使用do.call,或者创建一个与do.call类似的函数来使其工作:
myfun <- "stats::rnorm";
myargs <- list(n=10, mean=5);
do.call(myfun, myargs);
Run Code Online (Sandbox Code Playgroud) 我有一组lng/lat坐标.计算集合中任意两点之间最大距离的有效方法是什么("最大直径",如果你愿意的话)?
一种天真的方法是使用Haversine公式来计算每个2点之间的距离并获得最大值,但这显然不能很好地扩展.
编辑:这些点位于一个足够小的区域,用于测量携带移动设备的人在一天内活动的区域.
openssl包实现了一个bignum类,该类具有相应的算术和比较方法,可以对任意大小的整数执行计算.
在密码学中,模块化指数 有一个共同的特殊情况,x^p %% m例如rsa使用.对于大型p计算,计算x^p是不可行的,但x^p %% m可以有效地计算OpenSSL实现的计算BN_mod_exp().
R是否提供了实现^.bignum和%%.bignum方法的任何机制, 以便在评估时x^y %% z我们可以调用这种特殊情况而不是实际计算x^p?
我们正在设计一个相当复杂的REST API,其中大多数I/O都是具有特定结构的JSON编码对象.我们发现的一个挑战是以这样一种方式记录API,使客户端更容易发布正确的输入和过程输出.由于输入和输出的数据都需要相当复杂的JSON对象,因此客户端开发人员经常会引入与I/O对象结构相关的错误.
现在有了所有的JSON Web API,我希望得到一个通用的解决方案,但我很难找到一个.我研究了json-schema这是一个json验证模式,但是IETF草案和实现似乎都相当不成熟(尽管它们已经存在了一段时间,这不是一个好兆头).
Protocol Buffers和Apache Avro提供了一种稍微不同的方法,其中模式不用于验证,但实际上需要对消息进行编码/解码.在这两个中,Avro似乎有相当有限的文档和实现.ProtoBuf似乎更好,但我不确定这是否真的适合在浏览器中使用来调用JSON api?
现在我开始怀疑我是否从正确的角度看待这个问题.还有其他方法可以使我的API更强大吗?或者是JSON REST/RPC API的正式描述是否会破坏使用JSON的目的?
编辑:在这个主题后6个月,我们发现了mongoose,这非常接近我们所期待的.
定义一个应该具有S3和S4类实现的通用函数的好方法是什么?我一直在使用这样的东西:
setGeneric("myfun", function(x, ...){
standardGeneric("myfun");
});
setMethod("myfun", "ANY", function(x, ...) {
if(!isS4(x)) {
return(UseMethod("myfun"));
}
stop("No implementation found for class: ", class(x));
});
Run Code Online (Sandbox Code Playgroud)
这成功了:
myfun.bar <- function(x, ...){
return("Object of class bar successfully dispatched.");
}
object <- structure(123, class=c("foo", "bar"));
myfun(object)
Run Code Online (Sandbox Code Playgroud)
是否有一种"原生"方式来实现这一目标?我知道我们可以使用S3类定义S4方法setOldClass,但是这样我们就失去了S3方法调度,以防对象有多个类.例如(在一个干净的会议中):
setGeneric("myfun", function(x, ...){
standardGeneric("myfun");
});
setOldClass("bar")
setMethod("myfun", "bar", function(x, ...){
return("Object of class bar successfully dispatched.");
});
object <- structure(123, class=c("foo", "bar"));
myfun(object)
Run Code Online (Sandbox Code Playgroud)
这会失败,因为object在这种情况下bar,第二类被忽略.我们可以通过在foo和之间定义正式的S4继承来解决这个问题bar,但是对于我的应用程序,我宁愿myfun.bar在一个类的S3对象上开箱即用bar. …
可能重复:
为什么十六进制前缀为0x?
内存地址通常标记为前缀为十六进制值0x.例如:
> new.env()
<environment: 0x21d36e0>
Run Code Online (Sandbox Code Playgroud)
这0x部分是什么意思吗?这种符号来自哪里?是否有其他价值而不是0x?
我想rJava结合使用,mcparallel但显然JVM不能分叉.因此,需要为每个子进程启动单独的JVM实例,例如:
library(rJava)
library(parallel)
myfile <- system.file("tests", "test_import.xlsx", package = "xlsx")
#This works:
mccollect(mcparallel({
#Automatically initiates JVM in child
xlsx::read.xlsx(myfile, 1)
}))
Run Code Online (Sandbox Code Playgroud)
但是我的问题是JVM已经在(主)父进程中启动了.这使得无法rJava在子进程中使用:
#init JVM in parent
.jinit()
#Doesn't work anymore
mccollect(mcparallel({
xlsx::read.xlsx(myfile, 1)
}))
Run Code Online (Sandbox Code Playgroud)
所以我真正需要的是在子进程中关闭/终止和重启JVM的方法.只是 detach("package:rJava", unload = TRUE)似乎没有这样的伎俩.该force.init参数似乎不会导致重启:
#Also doesn't work:
.jinit()
mccollect(mcparallel({
.jinit(force.init = TRUE)
xlsx::read.xlsx(myfile, 1)
}))
Run Code Online (Sandbox Code Playgroud)
有没有什么方法可以强制关闭/杀死JVM以便在子进程中重新启动它?
我一直认为在'Depends'字段中有一个包会自动导入命名空间.但是,似乎在R 2.15中,在包实际附加到搜索路径之前,依赖性不可用.这是预期的行为吗?
问题如下所示:假设有一个包'Child' 取决于,但没有显式导入名为'Parent'的包,并包含一个调用'Parent'命名空间中的对象的函数.然后,在没有实际附加"Child"的情况下调用此函数时,无法找到"Parent"中的函数.
这里是一个bigdata包装手册的例子,但问题非常普遍:
x = matrix(rnorm(50*80),50,80)
beta = c(3,2,1.5,rep(0,77))
y = rnorm(50) + x%*%beta
z1 = bigdata::lasso.stars(x,y)
Run Code Online (Sandbox Code Playgroud)
该示例失败,因为lasso.stars依赖于'glmnet',它bigdata在连接之前未加载.能够调用的唯一方法lasso.stars是实际附加bigdata包:
library(bigdata)
z1 = bigdata::lasso.stars(x,y)
Run Code Online (Sandbox Code Playgroud)
现在为了进一步复杂的事情,看来这个问题被继承到任何"孙子"包,进口在这种情况下lasso.stars功能.我很难找到一个很好的例子,但我相信他们在那里.
这是一个错误吗?我知道可以通过要求包作者使用Imports而不是Depends来避免它,但实际上CRAN上的大多数包仍然使用Depends.如果R会自动将任何Depends包的命名空间导入子包命名空间,似乎很容易避免这个问题.