我有一个我创建的自定义Javascript对象new,并根据创建参数分配属性:
function MyObject(argument) {
if (argument) {
this.prop = "foo";
}
}
var objWithProp = new MyObject(true); // objWithProp.prop exists
var objWithoutProp = new MyObject(false); // objWithoutProp.prop does not exist
Run Code Online (Sandbox Code Playgroud)
测试prop对象属性是否存在的正确方法是什么?我已经看到了以下使用的方法,但我不确定这些方法中的任何一种是否是最佳方式:
if (obj.prop) {}if (obj.hasOwnProperty("prop")) {}if ("prop" in obj) {}具体来说,我只对测试是否为该对象明确定义属性感兴趣,而不是在原型链中.此外,该值永远不会设置为null或undefined,但它可能类似于空对象或数组.但是,如果你想包括正确的方法,如果可能的话,请随意.
我为我的Rails安装设置了一个数据库,并设置了一些迁移.我希望能够将我的数据库重置为没有表/约束/等等,但是在不知道迁移次数或第一次迁移的时间戳的情况下找不到合理的方法.我看到以下是我的选择:
rake db:migrate:resetrake db:migrate:down VERSION=20090701154839 其中20090701154839是与第一次迁移相关联的时间戳rake db:rollback STEP=15 那里有15次迁移的问题db:migrate:reset在于,它第一次下降到数据库(它db:drop,db:create话db:migrate).
问题db:migrate:down是我不想编码开头的VERSION.
问题db:rollback是我不知道它回到开头的步骤数.
我有什么选择?
我想写一个运行一些不同的无限运行命令的脚本,例如
run_development_webserver.sh
watch_sass_files_and_compile_them.sh
watch_coffeescript_files_and_compile_them.sh
Run Code Online (Sandbox Code Playgroud)
我想并行运行每一个,并通过点击^ C杀死它们.这是可能的,如果是这样,我该怎么做?
我正在使用Django的自定义身份验证后端(运行couchdb).我有一个自定义用户模型.
作为登录的一部分,我正在做一个request.user = user并在会话中保存用户ID.但是,在后续请求中,我无法检索request.user.它始终是AnonymousUser.但是,我可以从会话中检索用户ID,并确认正确设置了会话cookie.
我错过了什么?
我不想使用关系数据库,因为我想在couchdb中维护我的所有用户数据.
编辑:我写了一个不从Django的auth用户继承的类.但它具有用户名和电子邮件属性.出于这个原因,我的后端不会返回一个派生自auth User的类.
在我们的iOS游戏中,我们使用Game Center来识别玩家并使用我们自己的服务器跨设备同步他们的数据.因为游戏中心识别玩家,我们需要知道他们是否经过身份验证,或者他们是否更改了身份验证等.我们有一个标题屏幕显示"正在初始化游戏中心...",直到认证调用返回,并且只有一次我们知道他们被认证为谁(如果有人)我们进入游戏.
但是,在非常少的时间内(实际上,我自己无法重现它),永远不会调用身份验证处理程序.几分钟后等待.游戏中心欢迎横幅也从不显示,因此不仅仅是我们的处理程序从未被调用过,但似乎确实没有身份验证状态.
到目前为止,我们实施了30秒的超时,如果我们没有从Game Center听到任何消息,我们认为身份验证状态没有改变,我们使用您保存的数据.那30秒的超时并不理想,所以我想知道当GC没有响应时是否有任何押韵或理由.
以下是从我们的App Delegate application: didFinishLaunchingWithOptions:方法调用的代码:
PlayerModel *playerModel = [PlayerModel sharedPlayerModel];
GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];
if ([localPlayer respondsToSelector:@selector(setAuthenticateHandler:)])
{
localPlayer.authenticateHandler = ^(UIViewController *gkViewController, NSError *error)
{
if (localPlayer.authenticated)
{
[playerModel loadFromGameCenter];
playerModel.hasGCStatus = TRUE;
[playerModel sync];
}
else if (gkViewController)
{
[viewController presentViewController:gkViewController animated:TRUE completion:nil];
}
else
{
NSLog(@"Could not authenticate with Game Center");
[playerModel unloadFromGameCenter];
playerModel.hasGCStatus = TRUE;
[playerModel sync];
}
};
}
else
{
[localPlayer authenticateWithCompletionHandler:^(NSError *error) {
if (localPlayer.authenticated)
{
[playerModel loadFromGameCenter]; …Run Code Online (Sandbox Code Playgroud) 我们有一个开发人员团队,他们每个人都将使用Rails工具为我们的系统开发数据库迁移.迁移似乎最初是管理数据库模式更改的一种很好的方法,但是随着我们的继续,以分布式方式管理更改变得更加困难.如果我们每个人都自己开发迁移,我们如何协调发生的问题呢?
要具体说明问题,请考虑以下方案时间表:
这里可能会出现许多问题,特别是如果两个迁移文件的更改发生冲突,但最基本的问题是有些人在上午9:00迁移时已经运行了上午10:00的迁移.与迁移相关联的时间戳当然是在创建文件时,而不是在签入时,这会弄乱Rails迁移器.
这是一个可修复的问题,但解决方案可能有很多不同的选择.解决这个问题的最佳方式(或至少是一种好方法)是什么?
migration ×2
bash ×1
database ×1
django ×1
game-center ×1
gamekit ×1
ios ×1
javascript ×1
object ×1
process ×1
properties ×1
rake ×1
signals ×1
timeout ×1