iOS笔记(34) 格志周年系列之夏令时(二)

本文仅作为个人学习记录使用,也欢迎在许可协议范围内转载或使用,请尊重版权并且保留原文链接,谢谢您的理解合作。如果您觉得本站对您能有帮助,您可以使用RSS方式订阅本站,这样您将能在第一时间获取本站信息.

开篇扯淡

恩,两月没更新blog,hexo都出来新主题来着。其实昨天为了找个背景图找了一小时我会随便乱说。就是为了找一个配合网站标题的背景图。其实hexo默认的就蛮好了,但是为了显示那么一点点与众不同还是替换了一下。

扯淡结束,接上一篇格志周年系列之夏令时(一)

第一阶段Bug

上次说过一个中国高富帅用户发Email来说,他去泰国旅游的时候,日记都不见了。

其实不是日记不见了,日记都好好的躺在sqlite文件里面。而是查询不出来了。日记的保存是用了一个函数去获得了每天的00:00:00. 然后作为唯一标识来区别和查询。

那日期出了啥问题?

我们来快速的分析一下

调用的是

1
2
3
4
5
6
7
8
- (NSDate *) dateAtStartOfDay
{
NSDateComponents *components = [CURRENT_CALENDAR components:DATE_COMPONENTS fromDate:self];
components.hour = 0;
components.minute = 0;
components.second = 0;
return [CURRENT_CALENDAR dateFromComponents:components];
}

里面有两个宏

1
2
#define DATE_COMPONENTS (NSYearCalendarUnit| NSMonthCalendarUnit | NSDayCalendarUnit | NSWeekCalendarUnit |  NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit | NSWeekdayCalendarUnit | NSWeekdayOrdinalCalendarUnit)
#define CURRENT_CALENDAR [NSCalendar currentCalendar]

假设你使用过Cocoa时间这些类的话能很容易的看出。dateAtStartOfDay函数就是把你持有的date以当前日历为基础,其他不改,小时,分钟,秒钟设置都为0。这样就能得到一个基于当前日历下的date这一天的00:00:00。

简单看上去没有什么问题,回到高富帅的问题。他出国玩一圈咋时间就变了呢?答案是[NSCalendar currentCalendar]改变了。NSCalendar的改变使得dateAtStartOfDay返回的时间也变了。debug到这一步才发觉靠当初为什么没有想到有时区的这个问题。

自己给自己找一个理由就是到目前为止,我只用过大天朝的+8时间。潜意识里面根本没有说换一个时区这样的概念。(后来某一天我翻了本C语言的书第一章就说了国际化时间的问题,再后来weibo上大家都纷纷表示时间是编程里面一个基础点而且做好不容易,只能说我还是太菜太年轻了。这些是后话了)

说道这里那就开始科普一下地球上时间的问题

Read more

iOS笔记(33) 格志周年系列之夏令时(一)

本文仅作为个人学习记录使用,也欢迎在许可协议范围内转载或使用,请尊重版权并且保留原文链接,谢谢您的理解合作。如果您觉得本站对您能有帮助,您可以使用RSS方式订阅本站,这样您将能在第一时间获取本站信息.

开篇扯淡

两月没写blog,没羞没皮了。以后作息规律一些,blog更新还是频繁一些。格志在2014年2月11日就整整上线一周年了。2013一年做格志,由于自己的技术实在比较菜。导致从上线的第一天起,整个团队跟着一直打补丁。小的坑就不说了,大的坑有两,一个iCloud + Core Data世界性难题。一个是全球时间问题。这篇blog就用来专门记下时间的坑。中间还有个插曲——格志在三月上线了2.0的全新专门为iOS 7设计的版本。时间问题在去年10月份改完以为对了就没有改过。结果3月9号是3月的第二个周日,美国地区进入夏令时。格志中又再次发生了时间问题,导致日记显示不全。之前开会说过放错不可怕,可怕的是放同样的错误。再次放错以后我都呆住了。那可是我写过测试用例的啊。结果当时一run测试就挂掉了。瞬间脑子蒙掉。然后上周通宵了一天,基本每天到3点把世界时间问题给彻底搞定。(希望是彻底)所以趁着我现在还有印象,记录一下。

Read more

读 Jony Ive The Genius Behind Apple's Greatest Products 笔记

本文仅作为个人记录使用,也欢迎在许可协议范围内转载或使用,请尊重版权并且保留原文链接,谢谢您的理解合作。如果您觉得本站对您能有帮助,您可以使用RSS方式订阅本站,这样您将能在第一时间获取本站信息。

开篇扯淡

发现之前的读书笔记写的好少啊。 都是每年的一月份写一次,然后一整年都没有写。其实并不是没有看书而已,只是看了没写而已。2013除了专业的书籍还是看了一些乱七八糟的书籍。比如开始看王小波,看冯唐。对了ooyor大神同学去台湾做出国毕业旅行游的时候还给我带来了一本冯唐实体的小黄书《不二》。还有就是2013年初看完柴静的《看见》和李承鹏《全世界人民都知道》,而且还去不在书店签了4本。亲笔签名哦!其他的看了也就没有印象了。

其实读大学以来,每年的书籍开销都是一笔不小的数目。这就造成了一个严重的问题!每次不管是短途迁移还是长途迁移都搬书搬的欲仙欲死。所以,2013我都是可以买电子书坚决不买实体书。如果没有电子书,我就等电子书出来。如果没有电子书,不是很想看的就不买了。电子书多好迁移啊,一个iPad就带走千万本。不过也有些郁闷,我KK的全套在字节社里面结果现在字节社快挂的样子,多看上买了目前最多的书,但是被小米收掉以后不喜欢它的作风。现在我已经全面的转向了豆瓣读书。图灵社区也买了些然后丢多看里面看。(多看在我这里已经沦为Good Reader的替代品)。

恩,2014希望我想看的书都出电子版吧!让电子化来的更加猛烈一些。

Jony Ive

这次的书总有种是为了敛财而来,作为一个Apple的脑残粉。其实Apple这40年来的各种事件和经历。已经在无数的书籍、文章、电影里面一次一次的重复了很多很多次。每看一次就对Apple的印象丰满一些。到现在Apple在我心中已经是一种具体的形状。这次的Jony Ive传记对我来说,也只是对于Apple印象的一个补充而已。

年少成名

大英帝国的子民,而大英帝国好歹是工业革命的发起地。虽然美帝现在势不可挡。但是200年来的现代化进程底蕴是天朝这种年轻的2b国度无法比拟的。而且Jony Ive人家老爸
人家16-7岁的时候就已经各种拿奖了。

PS

这篇blog的创建时间是1月8号。现在时刻是3月18号。所以我还是把他发掉把。只开了头而已。现在记不住了。

一月到三月瞟过的书有:

「从你的全世界路过」 (看错作者买错书了)

三本Objective C的

GEB瞟了几页。

豆瓣上冲了150.忘记买了些啥了记得有几本挺贵。反正是不在多看上买书了。

2013年度总结

本文仅作为个人记录使用,也欢迎在许可协议范围内转载或使用,请尊重版权并且保留原文链接,谢谢您的理解合作。如果您觉得本站对您能有帮助,您可以使用RSS方式订阅本站,这样您将能在第一时间获取本站信息。

生活

注定的漂泊

在16岁的时候,我就会隐约觉得我会一生注定漂泊。这种感觉以我的文字水平很难用完整表达出来。不过18岁以后的每一年换一个住的地方。直接用事实验证了这个16岁的直觉。本来以为我会在厦大住够2年的,命中注定,天煞孤星。房子要拆迁只有另外找地方了。继续这一年一个地方的节奏。

Read more

iOS笔记(32) UbiquityStoreManager 学习笔记1

本文仅作为个人学习记录使用,也欢迎在许可协议范围内转载或使用,请尊重版权并且保留原文链接,谢谢您的理解合作。如果您觉得本站对您能有帮助,您可以使用RSS方式订阅本站,这样您将能在第一时间获取本站信息.

开篇扯淡

现在都是进入互联网时代,一个互联网的App数据肯定是存在互联网上的。到处都是云,到处都是服务器。如果数据是存储在云端or服务器端。每次数据的读取和修改直接作用于服务器。这样不管你用多少设备,多少平台。数据都能保证是唯一的。但是还有些App需要一些更好的性能和效果的时候往往等不起网络的数据传来传去。这时候需要一些折中的办法来解决这些问题。iCloud就是Apple给出的解决方案。就普通用户来看,iCloud应该是在Apple系中的最优选择。但是从开发者的角度来看iCloud就是个无穷无尽的深渊。

全球有很多开发者致力开发第三方库以便让iCloud能被使用。

UbiquityStoreManager就是其中之一。

Read more