小编Raf*_*ski的帖子

在多个实体之间同步数据最聪明,最简单的方法是什么?

在当今世界,许多计算机,移动设备或Web服务共享数据或充当集线器,同步变得更加重要.众所周知,同步的解决方案并不是最舒适的解决方案,最好不要同步.

我仍然很好奇你将如何实现同步解决方案以在多个实体之间进行同步.已经存在许多不同的方法,例如比较更改的日期字段或散列并使用最新数据或让用户在冲突的情况下选择他想要使用的内容.另一种方法是尝试自动合并冲突的数据(在我看来,这并不是那么聪明,因为机器无法猜出用户的意思).

无论如何,在开始实现同步之前,我们应该回答几个与同步有关的问题:

  • 最新数据是什么?我该如何表示呢?
  • 如果发生冲突,我该怎么办?合并?我是否提示并询问用户该怎么做?
  • 当我进入不一致状态(例如由于移动网络连接断开而断开连接)时,我该怎么办?
  • 当我不想进入不一致状态时,我该怎么办?
  • 如何恢复被中断的当前同步?
  • 我如何处理数据存储(例如,Web服务上的MySQL数据库,iPhone上的Core Data;以及如何在没有大量胶水代码的情况下合并/同步数据)?
  • 如何处理同步期间发生的用户编辑(在后台运行,因此UI不被阻止)?
  • 如何以及在哪个方向传播更改(例如,用户在其计算机上创建"Foo"条目并且不同步;然后他在旅途中创建另一个"Foo"条目;当他尝试同步两个设备时会发生什么)?用户是否会有两个具有不同唯一ID的"Foo"条目?用户是否只有一个条目,但是哪个条目?
  • 当我有分层数据时,我该如何处理同步?自顶向下?自下而上?我是否以原子方式处理每个条目,还是仅查看超级节点?在过度简化事物和投入太多时间进行实施之间进行权衡有多大?
  • ...

还有很多其他问题,我希望我能够激励你.同步是一个相当普遍的问题.一旦找到了一个好的,多功能的同步方法,它应该更容易应用于具体的应用程序,而不是从头开始思考.我意识到已经有很多应用程序尝试解决(或成功解决)同步,但它们已经相当具体,并且通常不能给出足够的同步方法答案.

database algorithm mobile synchronization

45
推荐指数
2
解决办法
1万
查看次数

Objective-C中dealloc的首选编码风格是什么?

我知道关于编码风格的讨论往往以灾难和无尽的火焰战结束,但这不是我想达到的目标.在过去十年中,我主要dealloc在Objective-C中看到了两种不同的编码方式.第一个也是最常见的一个是放在dealloc文件的底部.这也是Apple在Xcode默认模板中使用的样式.这背后的逻辑似乎dealloc是在对象的结尾接近时调用的,因此文件的结尾似乎是一个很好的比喻.

另一方面,有几个人倾向于dealloc直接置于@synthesize指令之下.在我看来,这有两个主要的缺点:

  1. 文件的顶部变得杂乱无聊的代码.
  2. 在课堂上找到必要部分比较困难,你必须向下滚动.

我认为的巨大优势是您可以在属性和相应的release消息之间建立直接的可视连接.

另一件事是弄乱已经发布的变量.虽然我不认为这是必要的,特别是在整个变量在dealloc结束后被解构的对象上下文中,我倾向于也只是变量.我习惯于在函数范围内对变量执行此操作,因此我只是符合我的编码风格.

这就是我的大多数课程的样子:

@implementation Bar

@synthesize foo;

- (void)dealloc
{
  [foo release], foo = nil;

  [super dealloc];
}

// Initializers and other methods…
Run Code Online (Sandbox Code Playgroud)

我已经提到了一些优点和缺点.对于这个话题你有什么看法?什么是你在使用的编码风格dealloc为什么?我还忘了提到其他优点和缺点吗?

我不想在这里开始一场火焰战争.我只是想知道你使用什么样的风格,如果你有特定的理由,或者这对你最终无关紧要.

cocoa coding-style objective-c dealloc

11
推荐指数
4
解决办法
1919
查看次数

如何在没有跳过的情况下在特定锚点旋转图层?

我想在左上角旋转图像,而不是中心.根据文档,我将anchorPoint属性设置为[0,1].视图在我的示例中旋转50°,但在它开始动画之前,视图会跳转到屏幕上的另一个点.

self.shakeTag.layer.anchorPoint = CGPointMake(0.0f, 1.0f);
[UIView beginAnimations:@"rotate" context:nil];
[self.shakeTag.layer setTransform:
  CATransform3DRotate(CATransform3DIdentity,
  radians(50.0), 0.0f, 0.0f, 1.0f)];
[UIView commitAnimations];
Run Code Online (Sandbox Code Playgroud)

radians() 定义如下:

static inline double radians (double degrees) {return degrees * M_PI/180;}
Run Code Online (Sandbox Code Playgroud)

当我使用4倍大小并且具有大量透明像素的图像时,我可以在默认锚点[0.5,0.5]处旋转它,但我不想浪费空间用于不可见像素.任何想法如何防止图层在旋转发生之前跳跃?

cocoa-touch core-animation image-rotation ios

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

OS X Lion中具有自动保存和版本的Shoebox/Library应用程序

我们有一个鞋盒式的应用程序,我们希望在Lion中成为一流的公民.这意味着集成自动保存和版本等功能.目前我们没有以文档为中心的模型,我们只使用普通的Core Data堆栈.

UIPersistentDocument提供了一种非常简单的方法来集成自动保存和版本,我看到我们可以选择两个选项来集成新的API:

  1. "滥用"NSPersistentDocument为我们的鞋盒式应用程序.从技术上讲,它将是一个基于文档的应用程序,但用户界面仍然是相同的iPhoto类库.这在概念上没有多大意义,但我们会免费获得许多功能.
  2. 保留当前的纯Core数据堆栈并手动实现自动保存和版本.

我听到苹果公司代表对我们应采取的方法提出了矛盾的意见,在开始实施之前澄清事情会很棒.虽然我认为1.不应该使用它也很诱人,因为我们可以免费获得很多东西.我甚至找不到关于在核心数据应用程序中手动实现自动保存和版本的足够文档.

我真的倾向于使用1.但我看到一些问题:

  • 在使用版本和只有一个数据库文件时,我担心文件系统级别的冲突.我找不到有关此主题的任何文档.
  • 浏览"空间"时,我担心版本中的性能问题.
  • 我们不能仅强制执行一个开放数据库实例,因为版本必须打开多个实例.我担心副作用和并发问题.从概念上讲,它看起来像一个黑客,我不喜欢黑客.

如果我们只想集成iCloud同步,我绝对不会考虑为我们的应用程序使用以文档为中心的模型,因为Core Data直接支持它.如果我们坚持目前的非基于文档的范例,我最担心的是开发人员的开销.

您是否有任何建议或想法如何将鞋盒应用程序集成到新的Lion世界中?

macos autosave versions core-data osx-lion

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

如何在AppCode中立即看到Swift错误?

有没有办法立即在AppCode中看到Swift错误?在他们的网站上,他们谈论静态代码分析,但我无处可寻找这种情况立即发生的说法.当您在Xcode中键入一些Swift代码时,通常会立即看到警告,错误等.在AppCode中,我首先必须创建build(?F9),然后浏览Messages Build视图中的列表(在AppCode 2016.01 RC2中更好):

AppCode 2016.01 RC2消息构建

我觉得这很乏味,特别是当你做一些导致语法错误的小错字时.他们可以提前避免.

static-analysis compiler-errors jetbrains-ide appcode swift

7
推荐指数
1
解决办法
1856
查看次数

Cocoa中是否有一些功能可以用自然语言显示时间间隔?

我正在寻找的是一个可以用自然语言显示时间间隔的Cocoa(或第三方)类,例如:

  • 10秒前
  • 1小时前
  • 2天前

你知道任何可以帮助我完成这项任务的事情,而不是自己写下来并融入if-else地狱吗?

cocoa frameworks nlp date objective-c

2
推荐指数
1
解决办法
948
查看次数

在 Laravel Eloquent 中获取和过滤关系

我在 Eloquent 中有以下模型:组、线程、评论和用户。我想从特定用户中查找特定组中的所有评论。

这是我目前的方法:

$group->threads->each(function ($thread) use ($user_id)
{
  $user_comments = $thread->comments->filter(function ($comment) use ($user_id)
  {
    return $comment->owner_id == $id;
  });
});
Run Code Online (Sandbox Code Playgroud)

这看起来很丑陋,可能很慢,我只想摆脱它。在 Eloquent 中获得我的结果集的最快和最优雅的方式是什么?

php sql orm laravel eloquent

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