我们在开始Facebook页面之前推出了我们的网站,它有类似2k的喜欢.但显然那些人喜欢我们的.com域名.现在,我们喜欢的按钮指向我们的新Facebook页面,其中有161个喜欢.
我们希望在我们的Facebook页面的旗帜下"声明"我们的.com域名中的喜欢.
这个Facebook常见问题似乎是相关的:https://www.facebook.com/help/?faq = 249601088403018 #I-have-two- Facebook-Pages-for- the-same-thing.-Can-I-merge-他们
但有两个问题:
谢谢!
这很奇怪......我使用 populate() 和一个 ref 来填充我的架构中的数组,但随后无法访问这些属性。换句话说,模式是这样的:
new Model('User',{
'name': String,
'installations': [ {type: String, ref: 'Installations'} ],
'count': Number,
}
Run Code Online (Sandbox Code Playgroud)
当然,Insallations 是另一种模式。
然后我找到并填充一组用户...
model.find({count: 0}).populate('installations').exec( function(e, d){
for(var k in d)
{
var user = d[k];
for(var i in user.installations)
{
console.log(user.installations[i]);
}
}
} );
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好!我看到打印出不错的数据,如下所示:
{ runs: 49,
hardware: 'macbookpro10,1/x86_64',
mode: 'debug',
version: '0.1' }
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试实际访问这些属性中的任何一个,它们都是未定义的!例如,如果我添加另一个控制台日志:
console.log(user.installations[i].mode);
Run Code Online (Sandbox Code Playgroud)
然后我看到此日志打印了“未定义”。如果我尝试对对象进行操作,如下所示:
Object.keys(user.installations[i]).forEach(function(key) { } );
Run Code Online (Sandbox Code Playgroud)
然后我得到一个典型的“[TypeError: Object.keys call on non-object]”错误,表明 user.installations[i] 不是一个对象(即使它像它一样输出到控制台)。所以,我什至尝试了一些丑陋的东西......
var install = JSON.parse(JSON.stringify(user.installations[i]));
console.log(install, install.mode);
Run Code Online (Sandbox Code Playgroud)
而且,第一个输出(安装)是一个很好的对象,包含属性 'mode'...但第二个输出未定义。
是什么赋予了?
我和其他一些Android应用用户运行Galaxy Nexus.我们大多数人发现这款应用程序的速度非常快,但是有一些人报告称它在Galaxy Nexus上的速度也非常慢.听到他们告诉我按钮,滚动等都很慢,我很震惊.该应用程序的主要视图ListView包含许多图像,文本视图等.事实上,如果您想深入挖掘,可以在Google Play上免费查看该应用程序.我正在尝试编制可能导致此问题的清单.
这是我到目前为止所拥有的:
还有其他想法吗?
更重要的是,有没有办法检测(甚至调整!)潜在的问题?
我的Nodetime堆快照中有一些令人惊讶的结果:

我是否正确地读到我的堆中有1706个"用户"实例?这看起来非常高,我甚至不确定如何分配这么多.在任何情况下,是否有任何提示/技巧/提示,以找出为什么这些悬挂?我已经在我的代码上使用了JSHint来确保没有分配自由全局变量.所有内容都应该包含在请求的封闭范围内......那么为什么在请求完成时不会对用户,帖子等进行垃圾回收?这里有一些(编辑过的)代码来展示我是如何做事的......
令人惊讶的是,在最后一次API调用完成后,我将上述堆快照大约10米.因此,在触发分配的请求完成后,这些对象都会闲置很久!
码:
var User = require('./user').User,
Q = require('q');
// this function is called via express' router, eg when the client visits myapi.com/users/zane
function getUser(req, res, next)
{
var user = extend({},User).initialize();
Q.ncall(user.model.find, user.model, {'username': req.arguments[0]})
.then(function(data){
res.writeHead(200, {});
res.end(JSON.stringify(data));
})
.fail(next).end();
}
Run Code Online (Sandbox Code Playgroud)
而"用户"模块看起来像这样:
exports.User = extend({}, {
initialize: function() {
var Schema = api.mongoose.Schema;
this.schema = new Schema({
'username': {'type':String, 'index':true}
});
this.model = api.db.model('users', this.schema);
}
// ... some other helper functions …Run Code Online (Sandbox Code Playgroud) 由于我在这里轻松的原因,我想让集群启动的工作人员(在node.js中)每个工作1小时,然后重新启动.
需要注意的是,我需要零停机时间.因此,简单地在每个worker上执行destroy()是不可接受的,因为它会在重新启动worker之前关闭集群.
这是我的基本代码:
if(cluster.isMaster) {
for(var i=0; i<2; i++)
{
cluster.fork();
}
return;
}
require('./api').startup(settings, process.argv, function(error, api){
if(error)
{
console.log('API failed to start: '+error);
}
else
{
console.log('API is running');
}
});
Run Code Online (Sandbox Code Playgroud)
api.js脚本实现了express来启动一个非常标准的RESTful JSON API.
到目前为止,我一直在使用MongoDB(Node.js + Mongoose)来保存属于用户的帖子,这样我以后可以检索它们以在流中显示(就像Facebook,Twitter等)
最近有必要允许用户深入搜索他的流; MongoDB的搜索不足,所以我在我的服务器上实现了ElasticSearch(运行CentOS的Amazon EC2 m1.large实例,FWIW).
我的问题:我现在处于一个位置,我正在复制MongoDB(用户的流被缓存)和ElasticSearch(搜索它的位置)之间的数据.
将我的缓存完全移动到ElasticSearch中是否有任何不利之处,一起摆脱MongoDB?将存储空间加倍似乎是浪费,而且我没有其他地方可以访问这些数据(仅在呈现/搜索帖子流时使用).
具体来说,我想确保我不会忽视任何重新:性能.我喜欢将MongoDB作为瓶颈减少的想法,但我担心ElasticSearch的内存开销.MongoDB在我的云设置中运行在自己的服务器上,而ElasticSearch在与node.js相同的实例上运行.这意味着我将拥有更多 ElasticSearch服务器(node.js服务器位于自动扩展阵列中),但它们每个都不是专用服务器(与MongoDB不同).
我正在尝试检索Google Analytics每日访问者数量.我正在关注这篇博文.
对于不到30天的连续数据,一切都很好.问题是结果行"组合在一起".考虑这个查询:
{ ids: 'ga:44339606',
'start-date': '2013-01-01',
'end-date': '2013-02-14',
dimensions: 'ga:day',
metrics: 'ga:visits',
segment: 'gaid::-1' }
Run Code Online (Sandbox Code Playgroud)
在01-14天返回的值不正确,因为它们实际上代表1月1日+ 2月1日的总和,以及1月2日和2月2日的总和,依此类推.换句话说:每月的每一天只返回一个条目,1-30,而不是返回44个条目.
如何调整此操作,而不会将查询分成多个调用?
我正在使用nodetime来分析我的node.js应用程序的高CPU使用率.超过30%的CPU使用来自Mongoose:

垃圾收集器是下一个最大的罪魁祸首,仅为5%.
我相信之前我已经听说过Mongoose会导致CPU使用率过高,最好跳过它并直接使用Mongo驱动程序.这准确吗?
这是"Geocode.decodeMnay"功能,触发了这个特定的热点......
Geocode.prototype.decodeMany = function(strs, callback)
{
var or = [],
map = {},
fields = {'woeid': 1, 'matched_queries': 1, 'latitude': 1, 'longitude': 1, 'radius': 1, 'name': 1},
unique = [];
strs = _.uniq(strs);
for(var k=0; k<strs.length; k++)
or.push({'matched_queries':strs[k].trim()});
this.model.find({$or: or}, fields, (function(e,matches){
// ... excluded for brevity
}).bind(this));
};
Run Code Online (Sandbox Code Playgroud)
我怎么可能加快这个热点?
请注意,查询需要花费很长时间,正如您所看到的,而是需要很长时间来处理结果的Mongo驱动程序(并且在此过程中消耗了大量CPU).
我希望在我的回合制游戏中有一个"快速匹配"模式,玩家可以自动匹配第一个可用的玩家.我正在使用自己的自定义UI.到目前为止,我的代码如下所示:
- (void)quickMatch {
GKMatchRequest *request = [[GKMatchRequest alloc] init];
request.minPlayers = 2;
request.maxPlayers = 2;
request.playersToInvite = nil;
[GKTurnBasedMatch findMatchForRequest:request withCompletionHandler:^(GKTurnBasedMatch *match, NSError *error) {
NSLog(@"MATCH: %@ %@ %@ %d",error,match,match.matchID,(int)match.status);
}];
Run Code Online (Sandbox Code Playgroud)
这成功创建了一个匹配项,但匹配中的第二个参与者具有nullID(playerID:(null) status:Matching).
我想如果我在另一个实例上运行相同的代码,使用不同的Game Center ID,那么这两个用户将相互匹配......但这似乎不正确.每当我调用该GKTurnBasedMatch loadMatchesWithCompletionHandler函数时,我会继续检索相同的匹配,每个匹配只有1个有效参与者(本地播放器).
此问题似乎与iOS开发类似:如何在Game Center中自动匹配玩家?这表明设置request.playersToInvite = nil;应该完成自动匹配,但这似乎并不适合我.
如何让Game Center自动匹配这些玩家?
我想创建一个能够帮助窗口管理的系统工具/应用程序.我正在尝试找到有关以下主题的文档,如果它们确实可以在OSX的安全沙箱中使用.
在我看来,Quicksilver完成了许多这些事情,但缺乏AppStore可用性让我想知道是否有可能在保留在OSX沙箱中时这样做.
node.js ×4
mongodb ×3
mongoose ×2
android ×1
android-ui ×1
facebook ×1
game-center ×1
gamekit ×1
google-api ×1
html ×1
iphone ×1
macos ×1
objective-c ×1
performance ×1