这个SO帖子有一个服务器的例子,它生成带有字节顺序标记的 json .RFC7159说:
实现绝不能在JSON文本的开头添加字节顺序标记.为了互操作性,解析JSON文本的实现可以忽略字节顺序标记的存在,而不是将其视为错误.
目前yajl和jsonlite在BOM上窒息.我想遵循RFC建议并忽略UTF8字符串中的BOM(如果存在).有效的方法是什么?一个天真的实现:
if(substr(json, 1, 1) == "\uFEFF"){
json <- substring(json, 2)
}
Run Code Online (Sandbox Code Playgroud)
但是substr对于大字符串来说有点慢,我不确定这是否是正确的方法.如果存在,是否有更有效的方法在R或C中删除BOM?
我希望使用该magick软件包获得出色的图像处理功能.通过这里看,我似乎无法找到如何将3D矩阵(宽x高x通道)转换为magick我可以进一步操作的对象,反之亦然.
as.magick功能as.matrix功能不起作用但我想要的是:
height <- 100
width <- 80
X <- array(runif(height * width * 3, min = 0, max = 255), c(height, width, 3))
magick::as.magick(X) %>% magick::image_scale("500x400")
Run Code Online (Sandbox Code Playgroud)
(显然我可以将矩阵写成磁盘作为图像,然后用它读取magick::image_read,这将是一种过度杀伤)
我错过了什么?
我正在运行 R (3.5.0) 和 RStudio (1.1.414) 的新安装。[请注意,我现在已更新到 3.5.1 和 1.1.453,但仍然遇到以下问题,但“在 R 版本 3.5.1 下构建”警告消息除外]
我已经安装了 rlang 包,install.packages("rlang")没有遇到任何问题,但是当我尝试加载包时出现以下错误
Error: package or namespace load failed for ‘rlang’:
.onLoad failed in loadNamespace() for 'rlang', details:
call: dots_list(...)
error: object 'rlang_dots_list' not found
In addition: Warning message:
package ‘rlang’ was built under R version 3.5.1
我已经卸载并重新安装了 rlang(在每个命令之间关闭重新启动 RStudio),但仍然遇到此错误。
我也遇到了一组与其他软件包类似(尽管可能完全无关)的问题
RStudio 每次启动都会提供以下警告
[Workspace loaded from ~/.RData]
Error in yaml.load(readLines(con), error.label = error.label, ...) :
object 'C_unserialize_from_yaml' not found
Error in yaml.load(readLines(con), error.label = …Run Code Online (Sandbox Code Playgroud)我正在制作一个依赖于Tomcat7通过HTTPS的Ubuntu软件包.为了方便我们的客户,我希望软件包的安装脚本在Tomcat7中启用HTTPS.这很容易手动完成; 在文件/etc/tomcat7/server.xml中,需要取消注释以下块:
<!--
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" />
-->
Run Code Online (Sandbox Code Playgroud)
我怎么能从一个shellcript做到这一点?优选地,它仍然适用于精确图案的轻微修改.我认为规则将是块的search for '<Connector port="8443"'然后<!--和-->之前和之后删除的东西.
我正在研究一个非常大的节点Web应用程序,并意识到我的工作流程不是最理想的.服务器端代码很好地组织成节点模块.但是,应用程序中的大部分繁重工作都发生在客户端代码上.
该项目由jade,less和javascript/coffeescript代码组成.此外,还有一堆来自库(jQuery,D3,Bootstrap等)的css/js.我正在寻找,但很难找到,是一个很好的工具链,可以帮助我组织我的项目,并在开发和生产之间切换:
开发模式:在节点中即时编译jade,less和coffeescript,无需重建.将编译后的代码作为单独的文件包含在html中.在服务器端代码中设置一些调试参数.
生产模式:构建脚本(make/ant),编译压缩并将代码组合成静态html/css/js.
目前,我正在手动执行一些用于开发的节点服务器代码,以及用于生产的make文件,例如:
cat javascript/*.js > build/client.js
Run Code Online (Sandbox Code Playgroud)
然而,这有点烦人,我根本不是制造/蚂蚁专家.另外一个问题来源是我正在为开发和生产维护单独的html文件,因为它们包含不同的css/js文件.
是否有任何好的框架或示例项目可以帮助我改进我的工作流程?谷歌给了我像hem,buildr.npm,grunt这样的东西,但我不太确定这些项目有多成熟,如果他们真的解决了我的问题或者增加了更多的复杂性.
使用子域和 CNAME 是否会减慢 DNS 查找时间?据我了解,如果客户想要查找,例如rweb.stat.ucla.edu至少需要四个步骤:
[registrar] NS ucla.edu ==> ns2.dns.ucla.edu
[ns2.dns.ucla.edu] NS stat.ucla.edu ==> dns.stat.ucla.edu
[dns.stat.ucla.edu] CNAME rweb.stat.ucla.edu ==> id-86-243.stat.ucla.edu
[dns.stat.ucla.edu] A id-86-243.stat.ucla.edu ==> 128.97.86.243
Run Code Online (Sandbox Code Playgroud)
这是否意味着客户端在访问页面时必须连接到这些服务器中的每一个?或者 DNS 服务器是否相互连接并直接解析(和缓存)rweb.stat.ucla.edu ==> 128.97.86.243?我也不清楚在查找根域的初始记录时需要做多少工作?
假设我编写了一个解析包含德语的输入流的函数.下面是一个玩具示例.以下工作在我的机器上(因为UTF8是标准的):
readLines(textConnection("Zürich"))
readLines(textConnection("Z\u00FCrich")) #same thing
Run Code Online (Sandbox Code Playgroud)
但是,当我UTF-8不是当前的语言环境编码时,我想确保它也能正常工作.例如,在rApache中,默认为ascii.因此我传递了编码参数:
readLines(textConnection("Zürich", encoding="UTF-8"))
readLines(textConnection("Z\u00FCrich", encoding="UTF-8"))
Run Code Online (Sandbox Code Playgroud)
但实际上这会导致输出混乱.为什么是这样?我应该如何调用textConnection以确保在任何平台或区域设置上正确读取流?
假设我将一个R进程分成10个工作程序来运行一些并行模拟.什么是确保每个工人使用不同随机数的可靠方法?我一直在用这个:
myseed <- (unclass(Sys.time())*1e9 * Sys.getpid()) %% 1e9;
set.seed(myseed);
Run Code Online (Sandbox Code Playgroud)
但令我惊讶的是,由于工人之间的RNG冲突,我遇到了问题.这里可能出了什么问题?有没有更好的随机性来源我可以用来为RNG播种?
我们可以使用for循环迭代C中的向量,例如:
int len = length(x);
for (int i=0; i<len; i++) {
double val = REAL(x)[i];
}
Run Code Online (Sandbox Code Playgroud)
这似乎工作正常,但我不明白为什么.根据维基百科,默认int类型的范围是-32767到+32767.那么为什么这仍然适用于比这更长的载体?
R是否会int以某种方式覆盖long int?这段代码支持的向量的最大长度是多少?
我想打开一个端口并等待传入的连接,但是我无法开始select()工作。我可以使用它,poll()但我需要select()便携性。我究竟做错了什么?
等待连接的代码如下所示(我需要每 200 毫秒检查一次中断):
/* Wait for a descriptor */
int wait_for_fd(int fd){
int waitms = 200;
struct timeval tv;
tv.tv_sec = 0;
tv.tv_usec = waitms * 1000;
fd_set rfds;
FD_ZERO(&rfds);
FD_SET(fd, &rfds);
int active = 0;
while(active == 0){
active = select(fd+1, &rfds, NULL, NULL, &tv);
bail_for(active < 0, "select()");
if(pending_interrupt())
break;
}
return active;
}
Run Code Online (Sandbox Code Playgroud)
然后我的代码实际打开一个端口并等待连接:
int open_port(int port){
// define server socket
struct sockaddr_in serv_addr;
memset(&serv_addr, '0', sizeof(serv_addr));
serv_addr.sin_family = AF_INET; …Run Code Online (Sandbox Code Playgroud) 在没有传递任何数据参数的情况下,我遇到了jQuery中的PUT和POST ajax CORS请求的奇怪问题.
所以我通过设置标头在我的服务器上启用了CORS.例如,当我这样做时,一切正常:
$.ajax({
url: "http://127.0.0.1/R/index.html",
type: "PUT",
data: {foo:"bar"}
});
Run Code Online (Sandbox Code Playgroud)
但是,当我在没有设置data参数的情况下执行相同的请求时,firefox会返回而不会发布ajax:
$.ajax({
url: "http://127.0.0.1/R/index.html",
type: "PUT"
});
Run Code Online (Sandbox Code Playgroud)
请注意,这仅适用于POST和PUT方法,当在请求中指定了完整URL时,并且未指定http数据参数.当url与页面本身位于同一域时也会发生这种情况(因此不需要CORS).如果我只是在url中指定路径而不是完整的url,则不会发生这种情况.
任何线索如何在不传递任何参数的情况下进行POST/PUT(我的服务器不接受'假'参数).
我希望我的网站的某些部分在移动设备上减小尺寸.是否可以通过引导程序触发这些更改,而不是根据页面宽度手动添加响应式css规则?
例如,通过反复试验,我发现bootstrap3从固定宽度切换到可变宽度,并且navbar只要浏览器宽度小于,就会折叠767px.我希望我的页面的其他元素可以同时设置样式.是否有自然/本机方式从引导响应规则触发/继承这些更改,而不是手动添加
@media screen and (min-width: 767px)
Run Code Online (Sandbox Code Playgroud) css css3 responsive-design twitter-bootstrap twitter-bootstrap-3
对于我的json编码器,我想打印一组带n小数的数字.两种方式是:
x <- c(1,2,pi)
n <- 2
format(x, digits = n, nsmall = n, trim = TRUE, drop0trailing = TRUE)
formatC(x, digits = n, format = "f", drop0trailing = TRUE)
Run Code Online (Sandbox Code Playgroud)
然而,该drop0trailing参数似乎引入了一个大的(~10x)性能回归:
x <- rnorm(1e6)
system.time(format(x, digits = n, nsmall = n, trim = TRUE))
user system elapsed
0.584 0.000 0.584
system.time(format(x, digits = n, nsmall = n, trim = TRUE, drop0trailing = TRUE))
user system elapsed
5.763 0.040 5.799
Run Code Online (Sandbox Code Playgroud)
是否有另一种方法可以打印带n小数的数字更快?