我知道付款是件很棘手的事情,但我还没有找到PayPal的替代品.我想改变PayPal,因为我觉得它们价格昂贵而且并不适用于所有国家.此外,我认为API已经足够,但可能会更好.然而,API文档完全是废话.
我正在寻找更适合开发人员的支付/交易服务,最好是:
我认为Google Checkout有点值得,但它要求开发者和潜在购买者都拥有Google帐户.非常感谢任何其他建议!
我在Express应用程序中运行了很多基于ES6 promise的代码.如果有一个从未被捕获的错误,我正在使用以下代码来处理它:
process.on('unhandledRejection', function(reason, p) {
console.log("Unhandled Rejection:", reason.stack);
process.exit(1);
});
Run Code Online (Sandbox Code Playgroud)
这适用于调试目的.
但是在生产中我想触发500错误处理程序,向用户显示标准的"出错了"页面.我有这个捕获当前适用于其他异常的所有错误处理程序:
app.use(function(error, req, res, next) {
res.status(500);
res.render('500');
});
Run Code Online (Sandbox Code Playgroud)
将unhandledRejection放在中间件中不起作用,因为它的异步和offen导致a Error: Can't render headers after they are sent to the client.
我将如何渲染500页unhandledRejection?
我们都知道做这样的事情很糟糕:
<ul>
<li>Item</li>
<li>Item</li>
... 500 more list items
</ul>
Run Code Online (Sandbox Code Playgroud)
然后...
$("ul li").bind("click", function() { ... });
Run Code Online (Sandbox Code Playgroud)
我一直在浏览很多Backbone示例/指南,以下似乎是基于模型集合呈现包含项目的列表的标准方法.
var ListView = Backbone.View.extend() {
tagName: 'ul',
render: function() {
this.collection.each(function(item) {
var view = new ListItemView({model: item});
$(this.el).append(view.render().el);
});
return this;
}
});
Run Code Online (Sandbox Code Playgroud)
列表项视图:
var ListItemView = Backbone.View.extend() {
tagName: 'li',
events: {
'click' : 'log'
}
log : function() {
console.log(this.model.get("title"));
}
render: function() {
$(this.el).html(this.template(this.model.toJSON()));
return this;
}
});
Run Code Online (Sandbox Code Playgroud)
如果我没弄错,用500个模型的集合实例化listView,给我500个点击事件,每行一个.这不好吧?
我知道Backbone内置了名称空间事件的事件委托:
events : {
'click li' : 'log'
} …Run Code Online (Sandbox Code Playgroud) 我已经创建了一个函数(在JavaScript中),它从YouTube或Vimeo获取URL.它计算出该特定视频的提供者和ID(演示:http://jsfiddle.net/csjwf/).
function parseVideoURL(url) {
var provider = url.match(/http:\/\/(:?www.)?(\w*)/)[2],
id;
if(provider == "youtube") {
id = url.match(/http:\/\/(?:www.)?(\w*).com\/.*v=(\w*)/)[2];
} else if (provider == "vimeo") {
id = url.match(/http:\/\/(?:www.)?(\w*).com\/(\d*)/)[2];
} else {
throw new Error("parseVideoURL() takes a YouTube or Vimeo URL");
}
return {
provider : provider,
id : id
}
}
Run Code Online (Sandbox Code Playgroud)
它有效,但作为正则表达式新手,我正在寻找改进它的方法.我正在处理的输入,通常如下所示:
http://vimeo.com/(id)
http://youtube.com/watch?v=(id)&blahblahblah.....
Run Code Online (Sandbox Code Playgroud)
1)现在我正在做三个单独的比赛,尝试在一个表达式中做所有事情是否有意义?如果是这样,怎么样?
2)现有的比赛能更简洁吗?它们是不必要的复杂吗?或者可能不够?
3)是否有任何无法解析的YouTube或Vimeo网址?我已经尝试了很多,到目前为止似乎工作得很好.
总结一下:我只是在寻找改进上述功能的方法.任何意见是极大的赞赏.
背景:
我有一组针对我的Rails 3应用程序运行的Capybara集成测试.对于测试套件的其他部分,我正在使用Rspec.
我的Mac OSX开发机器上有一个selenium 2.6.0独立服务器集线器.
java -jar selenium-server-standalone-2.6.0.jar -role hub
Run Code Online (Sandbox Code Playgroud)
我正在运行几个虚拟机,每个虚拟机都连接到具有selenium节点的集线器:
java -jar selenium-server-standalone-2.6.0.jar -role webdriver -hub http://0.0.1.12:4444/grid/register port 5555 -browser browserName="internet explorer",version=8,platform=WINDOWS
Run Code Online (Sandbox Code Playgroud)
这很好用,在这个屏幕截图中,控制台显示我有一个连接到集线器的IE7和IE8浏览器:

我已经设置了capybara来对抗selenium hub(将测试委托给节点).
Capybara.app_host = "myapp.dev"
Capybara.default_driver = :selenium
Capybara.register_driver :selenium do |app|
Capybara::Selenium::Driver.new(app,
:browser => :remote,
:url => "http://localhost:4444/wd/hub",
:desired_capabilities => :internet_explorer)
end
Run Code Online (Sandbox Code Playgroud)
它可以工作,但它只会在单个internet_explorer节点上运行测试.它似乎是"排在第一位"; 如果我将其关闭,测试将在另一个节点上成功运行.
我一直在尝试parallel_tests项目,按照建议配置capybara,但这仍然只会启动一个集成测试.
如何同时在所有internet_explorer节点上运行我的集成?
奖金问题:如果我想在所有连接的节点上运行我的集成测试,无论浏览器功能如何,我该怎么做?
这里有点基本的问题.我可以看到发生了什么,但我不能真正理解为什么它会以这种方式工作.
a = false;
var k = function() {
console.log(a);
var a = true
console.log(a);
}();
Run Code Online (Sandbox Code Playgroud)
我希望日志读取"false,then true",但"a"一开始就是未定义的.有人可以详细说明为什么会这样做.
PS.我不是在寻找答案,告诉我应该做些什么,我正在寻找这个JavaScript内部工作原理的解释.
提前致谢
javascript ×3
backbone.js ×1
capybara ×1
credit-card ×1
es6-promise ×1
express ×1
node.js ×1
payment ×1
paypal ×1
performance ×1
regex ×1
rspec ×1
ruby ×1
selenium ×1
vimeo ×1
youtube ×1