小编Dan*_*iel的帖子

一个值得开发人员友好的PayPal替代品

我知道付款是件很棘手的事情,但我还没有找到PayPal的替代品.我想改变PayPal,因为我觉得它们价格昂贵而且并不适用于所有国家.此外,我认为API已经足够,但可能会更好.然而,API文档完全是废话.

我正在寻找更适合开发人员的支付/交易服务,最好是:

  • 一个干净且结构良好的REST API
  • 优秀的开发人员工具和沙盒
  • 良好的示例API实现,最好是Python或Ruby
  • 全球信用卡/借记卡保险
  • 价格比PayPal便宜(或选择付款计划的可能性)

我认为Google Checkout有点值得,但它要求开发者和潜在购买者都拥有Google帐户.非常感谢任何其他建议!

payment paypal credit-card payment-gateway

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

Express应用程序中未处理的拒绝

我在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

node.js express es6-promise

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

将事件委托给Backbone.js中的子视图

我们都知道做这样的事情很糟糕:

<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 performance backbone.js

17
推荐指数
1
解决办法
7765
查看次数

改进正则表达式以解析YouTube/Vimeo URL

我已经创建了一个函数(在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网址?我已经尝试了很多,到目前为止似乎工作得很好.

总结一下:我只是在寻找改进上述功能的方法.任何意见是极大的赞赏.

javascript regex youtube vimeo

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

用水豚进行平行硒试验

背景:

我有一组针对我的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节点上运行我的集成?

奖金问题:如果我想在所有连接的节点上运行我的集成测试,无论浏览器功能如何,我该怎么做?

ruby selenium rspec ruby-on-rails capybara

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

JavaScript:在函数中初始化变量

这里有点基本的问题.我可以看到发生了什么,但我不能真正理解为什么它会以这种方式工作.

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

4
推荐指数
1
解决办法
2193
查看次数