背景
我正在尝试将条带付款整合到我的网站中.我需要使用私有条带密钥创建条带用户.我将此密钥存储在我的服务器上,并调用服务器方法来创建用户.也许有另一种方法可以实现这一目标?这是条纹api(为方便起见,下面复制):https: //stripe.com/docs/api/node#create_customer
//stripe api call
var Stripe = StripeAPI('my_secret_key');
Stripe.customers.create({
description: 'Customer for test@example.com',
card: "foobar" // obtained with Stripe.js
}, function(err, customer) {
// asynchronously called
});
Run Code Online (Sandbox Code Playgroud)
我的尝试和结果
我一直在使用不同服务器代码的相同客户端代码.所有尝试都会在客户端的console.log(...)上立即给出undefined,但在服务器console.log(...)上给出正确的响应:
//client
Meteor.call('stripeCreateUser', options, function(err, result) {
console.log(err, result);
});
//server attempt 1
var Stripe = StripeAPI('my_secret_key');
Meteor.methods({
stripeCreateUser: function(options) {
return Meteor.wrapAsync(Stripe.customers.create({
description: 'Woot! A new customer!',
card: options.ccToken,
plan: options.pricingPlan
}, function (err, res) {
console.log(res, err);
return (res || err);
}));
}
});
//server attempt …Run Code Online (Sandbox Code Playgroud) 我有一台全天候运行的NAS /服务器,并在其上运行许多不同的服务.我现在有一个指向它的域名,并且想知道是否有可能创建指向不同服务的不同端口的子域.例如:
我有一个D-LINK路由器,当前端口将所有这些端口转发到我的NAS /服务器,其IP为192.168.0.104.
编辑:服务器正在运行Ubuntu 12.04.
我需要运行哪些服务或代理才能识别子域并相应地路由流量?或者我可以使用apache虚拟主机来处理这个,因为这些子域将进入端口80,apache正在监听?或者虚拟主机不能像这样工作?
任何信息,想法或提示都会有所帮助/有用.
我们有一个需要的应用程序
每晚重新处理大量数据,以及
按需重新处理大量数据.
在这两种情况下,大约10,000个石英作业产生然后运行.在每晚的情况下,我们有一个石英cron作业产生10,000个作业,每个作业分别处理数据.
我们遇到的问题是我们运行了大约30个线程,因此石英工作自然会失败,并且在处理完所有事情之前继续熄火.处理最多可能需要6个小时.这10,000个作业中的每一个都属于可以并行处理且完全独立的特定域对象.10,000个工作中的每一个都可以花费不同的时间(从半秒到一分钟).
我的问题是:
有一个更好的方法吗?
如果没有,我们安排/设置石英作业的最佳方式是什么,以便花费最少的时间来捶打和处理失火?
关于或架构的说明:我们正在运行两个集群,每个集群有三个节点.quartz的版本有点旧(2.0.1),并且在quartz.properties文件中启用了聚类.
我们的商店目前使用Quartz进行现有项目.唯一的缺点是Quartz线程不受管理.
我们正在转向EJB 3.1,我想知道是否有任何方法可以复制Quartz作业调度的动态特性.具体来说,我想知道是否有人听说有人编写GUI前端来使用EJB 3.1处理,管理或编辑作业.
从我所读到的,这似乎不可能或非常麻烦.似乎EJB 3.1计时器对它们所在的bean是私有的,这使得收集它们并检查它们的过程相当困难.此外,似乎EJB 3.1计时器纯粹是程序/声明,即它们需要重新部署来修改其参数或设置.
在这个舞台上的任何想法,想法或经验?
最后请注意,我们正在使用Websphere 8.0.
我正在使用Meteor启动功能在服务器上创建默认用户.我想创建一个用户并在启动时验证他/她的电子邮件(我假设您只能在创建帐户后执行此操作).
这就是我所拥有的:
Meteor.startup(function() {
// Creates default accounts if there no user accounts
if(!Meteor.users.find().count()) {
// Set default account details here
var barry = {
username: 'barrydoyle18',
password: '123456',
email: 'myemail@gmail.com',
profile: {
firstName: 'Barry',
lastName: 'Doyle'
},
roles: ['webmaster', 'admin']
};
// Create default account details here
Accounts.createUser(barry);
Meteor.users.update(<user Id goes here>, {$set: {"emails.0.verified": true}});
}
});
Run Code Online (Sandbox Code Playgroud)
正如我所说,我假设在将verify标记设置为true之前必须首先创建用户(如果此语句为false,请显示在创建用户时使标志为true的解决方案).
为了将电子邮件验证标志设置为true,我知道我可以在创建后使用更新用户Meteor.users.update(userId, {$set: {"emails.0.verified": true}});.
我的问题是,我不知道如何获取我新创建的用户的userID,我该怎么做?
我有在服务器端发布的集合,并使用铁路由器的waitOn订阅这些集合.但是,在客户端,我永远看不到对服务器端定义的集合的任何引用.我可以访问它们的唯一方法是在客户端定义集合(devices = new Meteor.Collection('devices')),但我没有看到有人在他们的在线示例中这样做.这是代码:
客户代码:
Router.route('/devices', {
waitOn: function() {
return [
Meteor.subscribe('devices', Meteor.user()._id),
];
},
action: function() {
this.render();
}
});
Run Code Online (Sandbox Code Playgroud)
服务器端:
Devices = new Mongo.Collection("devices");
Devices.allow({
'insert': function (userId, doc) {
if (userId === doc.accountId) {
return true;
}
return false;
},
'update': function (userId, doc) {
if (userId === doc.accountId) {
return true;
}
return false;
},
});
Meteor.publish('devices', function(id) {
return Devices.find({accountId: id});
});
Run Code Online (Sandbox Code Playgroud)
我已经删除了自动发布,并且从在线示例中,我应该能够引用Devices.find({}).相反,我必须使用devices = new Meteor.Collection('devices')然后引起问题,因为如果我再次调用它,它会说我已经有一个名为devices的集合.有谁知道为什么我不能参考设备?