使用Node.js通过HTTP请求查询某些公共API.因此,我正在使用该request模块.我正在测量我的应用程序中的响应时间,并看到我的应用程序从API查询返回的结果比通过curl或浏览器中的"直接"请求慢2-3倍.此外,我注意到与启用HTTPS的服务的连接通常比纯HTTP服务更长,但这可能是巧合.
我试图优化我的request选择,但无济于事.例如,我查询
https://www.linkedin.com/countserv/count/share?url=http%3A%2F%2Fwww.google.com%2F&lang=en_US
我正在使用request.defaults设置所有请求的总体默认值:
var baseRequest = request.defaults({
pool: {maxSockets: Infinity},
jar: true,
json: true,
timeout: 5000,
gzip: true,
headers: {
'Content-Type': 'application/json'
}
});
Run Code Online (Sandbox Code Playgroud)
实际请求是通过
...
var start = new Date().getTime();
var options = {
url: 'https://www.linkedin.com/countserv/count/share?url=http%3A%2F%2Fwww.google.com%2F&lang=en_US',
method: 'GET'
};
baseRequest(options, function(error, response, body) {
if (error) {
console.log(error);
} else {
console.log((new Date().getTime()-start) + ": " + response.statusCode);
}
});
Run Code Online (Sandbox Code Playgroud)
有人看到优化潜力吗?我做错了什么吗?提前感谢任何建议!
我有一个相当大/复杂的protobuf定义的API,我想知道是否有一个方便的工具,从这个protobuf的子集自动生成文本GraphQL架构及其(嵌套)类型?
我正常使用Node.js,但我开放其他语言来生成模式.提前致谢!
根据Spark on Mesos文档,需要设置spark.executor.uri指向Spark分发:
val conf = new SparkConf()
.setMaster("mesos://HOST:5050")
.setAppName("My app")
.set("spark.executor.uri", "<path to spark-1.4.1.tar.gz uploaded above>")
Run Code Online (Sandbox Code Playgroud)
文档还指出,可以构建Spark发行版的自定义版本.
我现在的问题是,是否有可能/希望预先打包外部库,例如
这将主要被用于所有的作业罐子,我会通过提交spark-submit到
sbt assembly包装脂肪罐的时间如果是这样,怎么能实现呢?一般来说,是否有一些关于如何加快工作提交过程中脂肪罐生成速度的提示?
背景是我想为Spark作业运行一些代码生成,并立即提交这些代码并在浏览器前端异步显示结果.前端部分不应该太复杂,但我想知道后端部分是如何实现的.
我正在使用最新的protobuf.js和Node.js 4.4.5.
我目前很难protobuf.js输出枚举的字符串定义而不是整数.我尝试了几个建议,但没有一个有效:
我想这是因为protobuf.js第一个API的变化.对于第二个,我可以部分使用建议的解决方案,但如果消息嵌套在其他消息中,则构建器似乎回退到使用整数值,尽管已明确设置字符串值.
理想情况下,我想覆盖用于生成枚举值的函数,但我很难用调试器找到正确的函数.或者有更好的方法来实现深层嵌套对象吗?
我有一个用例,我想使用ElasticSearch进行实时分析.在其中,我希望能够计算一些简单的亲和力分数.
当前使用按标准过滤的用户群执行的事务数量与完整用户群进行比较来定义这些事务.
根据我的理解,我需要做以下事情:
为了获得过滤用户群的"不同交易",我目前使用带有分面的条款过滤查询,它返回所有条款(交易类型).据我了解,我需要将此结果用作条款筛选查询的输入,以便能够接收我想要的结果.
我读到GitHub上有一个pull请求似乎实现了这个(https://github.com/elasticsearch/elasticsearch/pull/3278),但对于我来说这是否已经在当前版本中已经可以使用并不是很明显.
如果没有,是否有一些变通方法可以实现这一点?
作为附加信息,这是我的示例映射:
curl -XPUT 'http://localhost:9200/store/user/_mapping' -d '
{
"user": {
"properties": {
"user_id": { "type": "integer" },
"gender": { "type": "string", "index" : "not_analyzed" },
"age": { "type": "integer" },
"age_bracket": { "type": "string", "index" : "not_analyzed" },
"current_city": { "type": "string", "index" : "not_analyzed" },
"relationship_status": { "type": "string", "index" : "not_analyzed" },
"transactions" : {
"type": "nested",
"properties" : {
"t_id": { "type": "integer" },
"t_oid": { "type": …Run Code Online (Sandbox Code Playgroud) 我正在尝试实现一种在 Node.js VM 中运行“顺序编写”异步 JS 代码并获取对相应上下文对象的访问权限的方法。我尝试使用即将到来的 ES7await功能,由babel.js.
在我看来,script.runInContext()在后台运行,而主循环继续,因此我无法从虚拟机的上下文中获取结果。
我的示例代码如下:
var vm = require('vm');
var request = require('request-promise');
var babel = require("babel-core");
// VM context object
var contextCache = {
context: {
request: request
}
};
// ES 7 code
var code = "var res = await request('http://www.google.de')";
// Wrap the code
code = "(async function() { " + code + " })()";
// Transpile code ES7 -> ES5
var regeneratedCode = babel.transform(code, { "ast": …Run Code Online (Sandbox Code Playgroud) 我正在努力配置Kafka的JMX只能被曝光localhost.默认情况下,当我启动Kafka时,它会暴露三个端口,而其中两个端口会自动绑定0.0.0.0,这意味着每个人都可以访问它们.
我设法将代理本身绑定到127.0.0.1(因为我只在本地需要它),但JMX端口真的让我很头疼.
我必须遵循定义的env vars:
export JMX_PORT=${JMX_PORT:-9999}
export KAFKA_JMX_OPTS="-Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.rmi.port=$JMX_PORT -Dcom.sun.management.jmxremote.port=$JMX_PORT -Dcom.sun.management.jmxremote=true -Djava.rmi.server.hostname=127.0.0.1 -Djava.net.preferIPv4Stack=true"
Run Code Online (Sandbox Code Playgroud)
如果我现在查看绑定端口/ ips,我看到:
$ netstat -tulpn | grep 9864
tcp 0 0 0.0.0.0:9999 0.0.0.0:* LISTEN 9864/java
tcp 0 0 0.0.0.0:44895 0.0.0.0:* LISTEN 9864/java
tcp 0 0 127.0.0.1:9092 0.0.0.0:* LISTEN 9864/java
Run Code Online (Sandbox Code Playgroud)
这意味着JMX会监听0.0.0.0,甚至还有另一个44895我不了解其目的的开放端口.
我想要实现的是Kafka端口只能打开127.0.0.1.任何人都可以暗示一下吗?提前致谢!
编辑:
我通过添加获得了部分成功-Dcom.sun.management.jmxremote.host=localhost,但仍有一个开放端口暴露在0.0.0.0:
$ netstat -tulpn | grep 12789
tcp 0 0 127.0.0.1:9999 0.0.0.0:* LISTEN 12789/java
tcp 0 0 0.0.0.0:43513 …Run Code Online (Sandbox Code Playgroud) 我是一个利用Facebook Graph API的Wordpress插件的作者.最近,一些Graph调用失败了新的插件用户(只有新用户受到影响).经过一番挖掘,我相信我在这里偶然发现了原因:https://developers.facebook.com/docs/apps/versions
特别是,"我的应用程序可以调用早于当前版本的版本吗?" 状态:
应用程序可以调用创建应用程序时最新的API版本
换句话说,即使我的Graph调用指定了一个显式版本(即https://graph.facebook.com/v2.0/me),对于新创建的应用程序,Facebook也会忽略"v2.0"并调用进入2.1.实际上,FQL查询如下:
https://graph.facebook.com/v2.0/fql?q=(myquery)&access_token=(mytoken)
产量:
"error": {
"message": "(#12) fql is deprecated for versions v2.1 and higher",
"type": "OAuthException",
"code": 12
这就引出了我的第一个问题:我在这里遗漏了什么吗?对我来说,这种行为似乎使版本控制几乎无用; 无论我的电话是否指定v2.0,Facebook都会调用该应用程序刚刚创建时存在的最新版本.所以Facebook为支持旧api版本提供的两年时间窗口(参见https://developers.facebook.com/docs/apps/upgrading)什么都不做,因为我总是需要在发布时支持最新版本(或者新建用户的新用户将被破坏).对?
第二个问题(假设以上是正确的):我如何在Facebook上查询当前应用程序正在使用(或者更确切地说,可以使用)的版本?由于明确指定v2.0并不意味着它实际上会使用v2.0,因此查明它是否使用了意外版本至少可以帮助预防可能的错误 - 即包含用户错误报告是有价值的信息.我希望这些信息必须以某种方式存在于access_token中,但我搜索了高低,并且无法弄清楚如何询问"这个令牌适用于什么API版本"(或许,"这是什么API版本应用程序支持"或类似"?
在Facebook登录时,我在Facebook方面收到此消息:"您必须将此应用程序升级到Graph API v2.x.v1.0将于2015年4月30日弃用.
我访问了Facebook页面,但我不清楚我需要做什么.我似乎只需要将Xcode中的Framework更新到我已经完成的版本3.20,但我仍然收到此消息.
我在运行之前清理了应用程序,但我仍然遇到此消息.任何帮助将不胜感激!
我尝试在我的应用程序上进行Facebook登录!而且效果很好。
但是我想获得一个用户或应用程序唯一的字符串或数字。这样我就可以在自己的服务器上对其进行授权...
我的实际方法是:
但是,对于最后一步,我希望获得一个唯一的值,比如数字或字符串。每次用户登录时UserAccesToken都会更改...
谢谢你的想法
node.js ×4
facebook ×3
javascript ×2
android ×1
apache-kafka ×1
apache-spark ×1
async-await ×1
babeljs ×1
filter ×1
graphql ×1
graphql-js ×1
http ×1
ios ×1
jmx ×1
join ×1
local ×1
login ×1
loopback ×1
mesos ×1
mesosphere ×1
protobuf.js ×1
request ×1
scala ×1
security ×1
subquery ×1
term ×1