数据同步案例分析

Issue #10 Syncing Data,三月 2014 By Florian Kugler

不久之前,我和 Chris 一起为一个大型青年运动组织开发企业 iPad 应用。我们选择 Core Data 作为数据持久化工具,并根据需求定制了数据同步的解决方案。根据 Drew 文章中提到的同步方式分类表格,我们使用的是异步客户端-服务器(client-server)方式。

本文将对我们决策和实现的过程进行案例分析,以供大家学习如何定制自己的同步方案。我们的最终方案并不是完美或者普遍适用的,但是现阶段它能够满足我们的需求。

在我们深入研究之前,如果你对数据同步方案感兴趣(既然你在读这篇文章,我觉得这应该是肯定的),我强烈建议你去 Brent 的博客阅读一下 Verper 应用同步方案的系列文章。跟随 Brent 的思路来分析 Vesper 的同步方案实现将会是一次绝妙的阅读体验。

… 

Github 项目的持续集成

  很多 Github 的项目 README 开头都有一个双色标签,标志着当前版本代码的构建状态,如下图所示:

NewImage

这其实就是坊间流传的「持续集成」,根据敏捷大师 Martin Fowler 的定义,「持续集成是一种软件开发实践。在持续集成中,团队成员频繁集成他们的工作成果,一般每人每天至少集成一次,也可以多次。每次集成会经过自动构建(包括自动测试)的检验,以尽快发现集成错误。」可见持续集成是快速迭代开发中保证产品质量的重要环节。为了这枚「双色徽章」,我引入了 Github 上流行的第三方持续集成服务 Travis CI

… 

如何精确替换第 n 个匹配到的文本?

  无论搜索引擎公司还是数据分析公司,都需要构建爬虫来定制抓取工作,如何处理抓回来的文本奠定了存储和分析的基础。文章类页面(如新闻,博客等)的抓取和解析已经比较成熟了,标题和正文的抽取准确性已经很高,也是 PocketEvernote ClearlyReadability 等服务的基础。BBS 页面的解析则是一个比较麻烦的问题,如果将主贴和评论拆成不同的「文章」进行抓取,就需要对二者进行关联,所以在解析后续页面时如何确定首页链接就成了一个必须解决的问题。考虑到通用性,最终我决定使用当前页的 URL 和翻页操作区域出现的各页面 URL 确定首页链接,基本思想就是找出这些 URL 中唯一不同的数字并替换为首页的页号。那么,在 Python 中如何精确替换一段文本中出现的第 N 个数字呢?

… 

在 iTerm2 中拷贝 URL 链接

  iTerm2 是 Mac 平台下优秀的终端模拟软件,因为提供了很多贴心的小功能,基本上已经替代了系统默认的 Terminal.app。本文就以如何在 iTerm2 中迅速选中 URL 链接并复制到剪贴板中来管窥其强大之处。

… 

日出江花红胜火

  每次说起旅行,我就想起林达在《带一本书去巴黎》中写道:「得到时间的方法,是对占用了时间的事情扭过头去,眼不见为净。一走了之是其中最干脆的一种,在被飞机起飞的时间表逼到非走不可的时候,我才匆匆从书架上抽出一本雨果的《九三年》,给行囊封了顶。」大略安排好诸般事宜,打包好换洗衣物和电脑,我抽出那两本六月份就要还的《文学回忆录》,登上了去往杭州的列车……

… 

语不惊人死不休

华蟒用户组有一个帖子说到 List Comprehension 的问题,代码如下:

>>x = (5, 6)
>>result = [item for item in x for x in [(1, 2),(3, 4)]]
>>print result
[5,5,6,6]
>>print x
(3, 4)

初看这个问题,仿佛又回到了当年学 C 语言的时候,老谭没事儿就搞出个「i=1;  j = ++i+++++i++;」然后问 i 和 j 等于多少……

…