小编Tob*_*obi的帖子

与浏览器相比,通过Node.js延迟HTTP请求

使用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)

有人看到优化潜力吗?我做错了什么吗?提前感谢任何建议!

javascript http request node.js

12
推荐指数
2
解决办法
4304
查看次数

有没有办法从protobuf生成GraphQL架构?

我有一个相当大/复杂的protobuf定义的API,我想知道是否有一个方便的工具,从这个protobuf的子集自动生成文本GraphQL架构及其(嵌套)类型?

我正常使用Node.js,但我开放其他语言来生成模式.提前致谢!

javascript protocol-buffers node.js graphql graphql-js

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

在Mesos集群上使用Spark时如何预先打包外部库

根据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发行版的自定义版本.

我现在的问题是,是否有可能/希望预先打包外部库,例如

  • 火花流,卡夫卡
  • elasticsearch火花
  • 火花CSV

这将主要被用于所有的作业罐子,我会通过提交spark-submit

  • 减少sbt assembly包装脂肪罐的时间
  • 减少需要提交的脂肪罐的大小

如果是这样,怎么能实现呢?一般来说,是否有一些关于如何加快工作提交过程中脂肪罐生成速度的提示?

背景是我想为Spark作业运行一些代码生成,并立即提交这些代码并在浏览器前端异步显示结果.前端部分不应该太复杂,但我想知道后端部分是如何实现的.

scala mesos apache-spark mesosphere

9
推荐指数
1
解决办法
1981
查看次数

如何让protobuf.js输出枚举字符串而不是整数

我正在使用最新的protobuf.js和Node.js 4.4.5.

我目前很难protobuf.js输出枚举的字符串定义而不是整数.我尝试了几个建议,但没有一个有效:

我想这是因为protobuf.js第一个API的变化.对于第二个,我可以部分使用建议的解决方案,但如果消息嵌套在其他消息中,则构建器似乎回退到使用整数值,尽管已明确设置字符串值.

理想情况下,我想覆盖用于生成枚举值的函数,但我很难用调试器找到正确的函数.或者有更好的方法来实现深层嵌套对象吗?

protocol-buffers node.js protobuf.js

8
推荐指数
1
解决办法
1612
查看次数

ElasticSearch Join Filter:使用子查询结果作为过滤器输入吗?

我有一个用例,我想使用ElasticSearch进行实时分析.在其中,我希望能够计算一些简单的亲和力分数.

当前使用按标准过滤的用户群执行的事务数量与完整用户群进行比较来定义这些事务.

根据我的理解,我需要做以下事情:

  1. 获取我过滤的用户群的不同交易
  2. 在完整的用户群中查询这些事务(类型)
  3. 做计算(规范等)

为了获得过滤用户群的"不同交易",我目前使用带有分面的条款过滤查询,它返回所有条款(交易类型).据我了解,我需要将此结果用作条款筛选查询的输入,以便能够接收我想要的结果.

我读到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)

join subquery filter term elasticsearch

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

如何使用 ES7 语法从 Node.js VM 脚本检索异步结果

我正在尝试实现一种在 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)

node.js async-await babeljs ecmascript-2016

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

配置Kafka仅在127.0.0.1上公开JMX

我正在努力配置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)

jmx local loopback apache-kafka

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

查询Facebook是否正在使用/可以使用的是什么版本的Graph API

我是一个利用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 facebook-graph-api-v2.0

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

iOS - Facebook - 您必须将此应用程序升级到Graph API v2.x

在Facebook登录时,我在Facebook方面收到此消息:"您必须将此应用程序升级到Graph API v2.x.v1.0将于2015年4月30日弃用.

我访问了Facebook页面,但我不清楚我需要做什么.我似乎只需要将Xcode中的Framework更新到我已经完成的版本3.20,但我仍然收到此消息.

我在运行之前清理了应用程序,但我仍然遇到此消息.任何帮助将不胜感激!

facebook facebook-graph-api ios

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

Android Facebook登录唯一密钥

我尝试在我的应用程序上进行Facebook登录!而且效果很好。

但是我想获得一个用户或应用程序唯一的字符串或数字。这样我就可以在自己的服务器上对其进行授权...

我的实际方法是:

  • Andorid连接到Facebook
  • Facebook将登录事实发送到android
  • Android将登录状态发送到我的服务器

但是,对于最后一步,我希望获得一个唯一的值,比如数字或字符串。每次用户登录时UserAccesToken都会更改...

谢谢你的想法

security android facebook login facebook-graph-api

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