我使用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) 我正在构建一个scraper,以使JS单页面应用程序易于抓取.
在对PhantomJS(内存泄漏,过时的webkit,不死生物进程以及许多其他问题)感到非常沮丧之后,我决定改用NightmareJS,它可以做同样的事情,但在引擎盖下使用Electron.Electron有很多优点(使用最新的铬,速度要快得多)但它需要X服务器才能运行.
因为我需要让它在ubuntu服务器下运行,所以我遵循了这个要点.现在我有一个伟大的EC2实例,一切都准备好运行无头电子
xvfb-run electron
Run Code Online (Sandbox Code Playgroud)
关键是我需要通过nightmareJS运行它(我将在node.js服务器脚本中使用).我想知道如何将参数传递给噩梦以便通过svfb启动电子
我正在使用身份验证令牌开发 RESTful API。
工作流程简单;客户端执行 /getAuth 请求,发送用户凭据,该凭据返回该用户的令牌。
然后,用户将以下所有请求中的令牌作为标头传递给 API。经过一段时间/多次调用(由服务器决定)后,令牌就会过期。当标头中包含过期令牌的请求到达服务器时,响应状态为401 Unauthorized。在这种情况下,用户必须使用 /getAuth请求另一个令牌,依此类推。
我面临的问题是,当请求因任何其他原因未经授权(访问未经授权的资源)时,API 也会返回 401 Unauthorized。此时,客户端无法知道它是否正在尝试访问他无法访问的内容,或者其用户令牌是否已过期。在没有任何方式知道这一点的情况下,它会再次请求令牌,并重放相同的请求,从而再次得到 401 等等。
所以我的问题是:RESTful API 是否应该为过期令牌返回不同的状态代码或错误消息,而不是为未经授权的请求返回的状态和错误,或者客户端应该找到某种方法来管理它?
我在客户端找到的解决方案是保存每个请求 url,而不是重试因新的(刚刚收到的)令牌而失败的请求。但我觉得它很脏。
我正在开发SPA(单页网页应用); 我的想法是轻量级,而不是使用太多的框架和抽象和东西,所以我为静态+动态文件创建了HTTP服务器,它运行良好.现在我已经实现在web应用程序socket.io,但我想知道,在您看来,什么是处理会话(记住的一个很好的方式,插座IO必须能够识别谁呼叫功能的用户,知道谁必须推送数据).希望我已经足够清楚了:)
我有不同的任务从不同的文件中读取并在其中找到一个单词.我把它们放入一个任务数组,我从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#应用程序之间的net.tcp绑定来保护WCF通信?我遇到了传输和消息安全问题,但有没有我可以实现的解决方案使用其中一个?
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)
但为什么第一个不起作用?
我正在尝试连接到学校的github,但端口443被阻止.
管理员告诉我使用端口9418,我相信它是git协议的默认端口.
但是在git bash(windows)中,如果我尝试做git remote set-url origin git://github.com/me/myrepo.git并进行推送,它告诉我我不能推送到这个URL,https://github...而是使用.
如何配置git以使用端口9418?
我愿意在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)
它会根据参数为我的常量选择合适的值.
减
.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。&?
node.js ×5
nightmare ×2
.net ×1
angularjs ×1
api ×1
bash ×1
c# ×1
css ×1
css3 ×1
distributed ×1
ecmascript-6 ×1
electron ×1
git ×1
github ×1
gulp ×1
ionic ×1
javascript ×1
less ×1
mongodb ×1
mongoose ×1
net.tcp ×1
rest ×1
sass ×1
security ×1
session ×1
socket.io ×1
stylus ×1
task ×1
wcf ×1
xvfb ×1
yield ×1