小编Ray*_*jax的帖子

使用没有ES6语法和产量的Nightmare.js

我使用nightmare.js构建了一个简单的节点脚本来抓取网站

var Nightmare = require('nightmare');
var vo = require('vo');

vo(run)(function(err, result) {
    if (err) throw err;
});

function *run() {
    var x = Date.now();
    var nightmare = Nightmare();
    var html = yield nightmare
    .goto('http://google.com')
    .evaluate(function() {
        return document.getElementsByTagName('html')[0].innerHTML;
    });

    console.log("done in " + (Date.now()-x) + "ms");
    console.log("result", html);

    yield nightmare.end();
}
Run Code Online (Sandbox Code Playgroud)

我想在使用旧版本节点的环境中运行它,该节点不支持ES6功能.如果没有"yield"关键字,github页面上没有关于如何执行此操作的示例.

我确实找到了一个没有ES6语法的使用示例:Webscraping with nightmare

我这样写的:

var night = new Nightmare()
.goto('http://www.google.com')
.evaluate(function () {
  return document.getElementsByTagName('html')[0].innerHTML;
},function (html) {
   console.log("result", html);
  }
)
.run(function (err, nightmare) {
  if …
Run Code Online (Sandbox Code Playgroud)

javascript yield node.js ecmascript-6 nightmare

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

通过Nightmare.js在linux服务器上无头地运行电子(原子壳)

我正在构建一个scraper,以使JS单页面应用程序易于抓取.

对PhantomJS(内存泄漏,过时的webkit,不死生物进程以及许多其他问题)感到非常沮丧之后,我决定改用NightmareJS,它可以做同样的事情,但在引擎盖下使用Electron.Electron有很多优点(使用最新的铬,速度要快得多)但它需要X服务器才能运行.

因为我需要让它在ubuntu服务器下运行,所以我遵循了这个要点.现在我有一个伟大的EC2实例,一切都准备好运行无头电子

xvfb-run electron
Run Code Online (Sandbox Code Playgroud)

关键是我需要通过nightmareJS运行它(我将在node.js服务器脚本中使用).我想知道如何将参数传递给噩梦以便通过svfb启动电子

node.js headless-browser xvfb nightmare electron

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

RESTful API 是否应该针对令牌过期和未经授权返回不同的状态代码或错误消息?

我正在使用身份验证令牌开发 RESTful API。

工作流程简单;客户端执行 /getAuth 请求,发送用户凭据,该凭据返回该用户的令牌。

然后,用户将以下所有请求中的令牌作为标头传递给 API。经过一段时间/多次调用(由服务器决定)后,令牌就会过期。当标头中包含过期令牌的请求到达服务器时,响应状态为401 Unauthorized。在这种情况下,用户必须使用 /getAuth请求另一个令牌,依此类推。

我面临的问题是,当请求因任何其他原因未经授权(访问未经授权的资源)时,API 也会返回 401 Unauthorized。此时,客户端无法知道它是否正在尝试访问他无法访问的内容,或者其用户令牌是否已过期。在没有任何方式知道这一点的情况下,它会再次请求令牌,并重放相同的请求,从而再次得到 401 等等。

所以我的问题是:RESTful API 是否应该为过期令牌返回不同的状态代码或错误消息,而不是为未经授权的请求返回的状态和错误,或者客户端应该找到某种方法来管理它

我在客户端找到的解决方案是保存每个请求 url,而不是重试因新的(刚刚收到的)令牌而失败的请求。但我觉得它很脏。

authentication api rest restful-authentication node.js

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

如何在没有框架的情况下处理node.js中的会话

我正在开发SPA(单页网页应用); 我的想法是轻量级,而不是使用太多的框架和抽象和东西,所以我为静态+动态文件创建了HTTP服务器,它运行良好.现在我已经实现在web应用程序socket.io,但我想知道,在您看来,什么是处理会话(记住的一个很好的方式,插座IO必须能够识别谁呼叫功能的用户,知道谁必须推送数据).希望我已经足够清楚了:)

session session-variables node.js socket.io

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

如何在c#中完成任务后停止所有任务

我有不同的任务从不同的文件中读取并在其中找到一个单词.我把它们放入一个任务数组,我从waitAny方法开始,如下所示:

foreach (string file in filesList)
        {
            files[i] = Task.Factory.StartNew(() =>
            {
                mySearch.Invoke(file);
            });
            i++;
        }
        System.Threading.Tasks.Task.WaitAny(files);
Run Code Online (Sandbox Code Playgroud)

我想在其中一个任务完成后立即停止所有其他任务(它在找到该单词时结束).目前,有了waitany,我可以知道一个任务什么时候结束,但我不知道怎么知道哪一个完成了以及如何停止其他任务.实现这一目标的最佳方法是什么?

c# parallel-processing task multiprocessing

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

如何使用net.tcp绑定保护WCF通信

如何使用两个C#应用程序之间的net.tcp绑定来保护WCF通信?我遇到了传输和消息安全问题,但有没有我可以实现的解决方案使用其中一个?

.net security wcf distributed net.tcp

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

MongooseJS - 如何保存文档和引用的文档

Request.findOne({_id: id}).populate("user").exec(function(err, request) {
    if (!err) {
        request.user.firstname = firstname;
        request.date = date;
        request.save(next);
    }
Run Code Online (Sandbox Code Playgroud)

保存后,日期已更改,但用户的名字未更改。
模型 :

  var Request = new Schema({
    user: {
        type: ObjectId,
        ref: 'User',
        required: true
    },
    date: {
        type: Date,
        default: Date.now()
    },
Run Code Online (Sandbox Code Playgroud)

我仍然可以这样做

     request.user.save(function(err){
        if(!err)
            request.save(next)
     });
Run Code Online (Sandbox Code Playgroud)

但为什么第一个不起作用?

mongoose mongodb node.js

5
推荐指数
2
解决办法
9925
查看次数

Git - 在github上使用端口9418进行远程访问

我正在尝试连接到学校的github,但端口443被阻止.

管理员告诉我使用端口9418,我相信它是git协议的默认端口.

但是在git bash(windows)中,如果我尝试做git remote set-url origin git://github.com/me/myrepo.git并进行推送,它告诉我我不能推送到这个URL,https://github...而是使用.

如何配置git以使用端口9418?

git bash github

5
推荐指数
2
解决办法
2万
查看次数

通过离子服务将参数传递给gulp任务

我愿意在Ionic项目中轻松切换生产和开发环境.我一直在关注本指南: Ionic和AngularJS中的环境变量

它非常简单,gulp任务将使用相应JSON文件中定义的值替换变量,该文件根据传递给任务的参数进行选择.

我的问题是我不直接调用Gulp,但我通过离子CLI(离子服务)调用它.我知道我可以在ionic.project文件中指定要调用的gulp任务,但是如何将一些参数传递给离子CLI并将它们传送给Gulp?

我想简单地做:

ionic serve --prod
ionic serve --dev --lab
Run Code Online (Sandbox Code Playgroud)

它会根据参数为我的常量选择合适的值.

angularjs gulp ionic

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

较少-嵌套选择器后“&”的作用是什么

.list a{
    .landscape&{
        height: 100%;
    }
}
Run Code Online (Sandbox Code Playgroud)

产出

.landscape.list a {
  height: 100%;
}
Run Code Online (Sandbox Code Playgroud)

这意味着“其父母同时具有.landscape和.list的所有标签”

.list a{
    &.landscape{
        height: 100%;
    }
}
Run Code Online (Sandbox Code Playgroud)

产出

.list a.landscape {
  height: 100%;
}
Run Code Online (Sandbox Code Playgroud)

意思是“所有具有“ landscape”类且其父母具有“ .list”类的标签”

这是有道理的。但是,如果我从这些选择器中删除“ a”标记,则“&”仅更改.list和.landscape的串联顺序。

重点是什么 ?什么时候应该使用&.class?什么时候应该使用class。&?

css stylus sass css3 less

4
推荐指数
2
解决办法
2927
查看次数