小编Zan*_*aes的帖子

将网站的喜欢合并到Facebook页面中

我们在开始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-他们

但有两个问题:

  • 我们谈论的是将网站合并到Facebook页面,而不是页面和页面
  • 常见问题解答表明,喜欢较少的页面将被销毁.显然,我们想要保持我们的页面!这就是我们与用户沟通的方式.

谢谢!

html facebook facebook-like

5
推荐指数
0
解决办法
1080
查看次数

无法访问来自 Mongoose 的 populate() 对象的属性?

这很奇怪......我使用 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'...但第二个输出未定义。

是什么赋予了?

mongoose mongodb node.js

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

什么可能导致Android应用程序在相同的设备上运行速度慢到运行速度快?

我和其他一些Android应用用户运行Galaxy Nexus.我们大多数人发现这款应用程序的速度非常快,但是有一些人报告称它在Galaxy Nexus上的速度非常慢.听到他们告诉我按钮,滚动等都很慢,我很震惊.该应用程序的主要视图ListView包含许多图像,文本视图等.事实上,如果您想深入挖掘,可以在Google Play上免费查看该应用程序.我正在尝试编制可能导致此问题的清单.

这是我到目前为止所拥有的:

  • 记忆不足
  • 磁盘空间不足
  • 未捕获的错误
  • 植根设备(?)

还有其他想法吗?

更重要的是,有没有办法检测(甚至调整!)潜在的问题?

performance android android-ui

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

读取Node.js堆快照(通过Nodetime创建) - 为什么我的对象不是GC?

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

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

Node.js + Cluster ::重启工人没有停机时间?

由于我在这里轻松的原因,我想让集群启动的工作人员(在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.

node.js

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

ElasticSearch与MongoDB用于缓存用户数据

到目前为止,我一直在使用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不同).

mongodb elasticsearch

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

Google AnalyticsAPI"ga:day"维度和超过1个月的数据会返回聚合而非绝对值

我正在尝试检索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个条目.

如何调整此操作,而不会将查询分成多个调用?

google-api google-analytics-api

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

Mongoose(node.js模块)导致高CPU使用率

我正在使用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).

mongoose mongodb node.js

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

Game Center Quickmatch:随机匹配对手(GKTurnBasedMatch)

我希望在我的回合制游戏中有一个"快速匹配"模式,玩家可以自动匹配第一个可用的玩家.我正在使用自己的自定义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自动匹配这些玩家?

iphone gamekit game-center

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

OSX/Objective C窗口管理:操纵其他应用程序的框架和可见性

我想创建一个能够帮助窗口管理的系统工具/应用程序.我正在尝试找到有关以下主题的文档,如果它们确实可以在OSX的安全沙箱中使用.

  • 显示名称和图标正在运行的应用程序列表,并允许用户选择一个
  • 从我的应用程序操作所述应用程序窗口的框架(例如,调整大小,重新定位)(带有动画 - 虽然我认为一旦我可以执行实际更改,这将是微不足道的)
  • 从任务管理器等隐藏或显示这些应用程序.
  • 能够启动(或终止)给定应用程序的实例

在我看来,Quicksilver完成了许多这些事情,但缺乏AppStore可用性让我想知道是否有可能在保留在OSX沙箱中时这样做.

macos objective-c

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