travel

本州见闻

年前跟团(实在没有时间做自由行的攻略)去了一趟日本,趁着还有些许印象,写点零碎的见闻。 车让行人,不只是挂在嘴边。晚上在大阪市区散步,路过一个小巷子的路口时,一辆车正好从我们面前开过拐进巷子,应该是驾驶员没注意到我们在过马路,副驾驶上的女士发现我们停下脚步让车先过,一直不停地挥手哈腰道歉。 餐饮贵。一不小心就人均过百。 空气好,水好,极度干净。 城乡差距小。 上网用的是环球漫游随身 Wifi,15块1天,续租10块钱一天(这个定价很奇怪,我只租一天,然后一直续租,不是更便宜?) 大阪 亲身去了大阪,才更能理解大阪军团的故事。不过这些故事恐怕是中国人的意淫罢了,知乎上有更加客观独立的说法。 京都

iOS

UIImage Rendering Mode

最近调第三方代码的过程中发现,有一个 UIImage,无论将图片替换成什么,在页面上始终显示成蓝色。经过代码阅读,终于发现了猫腻: [image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]; 简化版代码: theImageView.image = [theImageView.image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]; [theImageView setTintColor:[UIColor redColor]]; theImageView.image = [theImageView.image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]; [theImageView setTintColor:[UIColor redColor]]; WatchKit 中的使用

美剧

The Newsroom

刚看完 The Newsroom 这部剧的大结局。 一直觉得这是一部肥皂属性偏重的剧。直到看完这最后几十分钟,才明白这部剧要讲的故事,是这个老人如何带领着一群年轻人追随理想。 编剧借车库里的临时乐队唱起 That's How I Got to Memphis 这样的场面,将一直暗含在之前剧情中的主题明确地展现在观众面前:这样一群人,放下过往,不顾彼此的纠葛(就是开头说的肥皂属性),凝聚成一支顽强的队伍,靠的正是引领他们的共同理想。 或许每个人都渴望置身于这样的团队中吧。 然而美剧归美剧,现实归现实,类似剧中的团队或许并不存在,Charlie 的死亡似乎也在诉说其中的艰难,但有其他人在,理想终归会得到传承。 2017-10-02 update:

iOS

XcodeGhost 代码分析

最近几天 Xcode Ghost 事件炸开了锅。 事情源自知名 iOS 开发者唐巧的一条微博(2015-09-17 09:45,周四): 临近周末,自称是原作者的微博用户发表了公告,表示这只是一次没有恶意的试验,同时还将源代码放到了 GitHub 上。微博发送的时间是凌晨04:40,看来原作者这段时间过得并不轻松。 随后(早晨08:47),唐巧对这条微博进行了转发,并对照逆向工程的结果,给出了自己的结论: 从“原作者”的公告来看,这段代码做了两件事: 搜集设备信息,并发到指定的服务器 广告功能(

Mac

为 iTerms 2 配置 Color Scheme

什么是 iTerm 2 我们的目标是——干掉系统原生终端! -- iTerm 2 官网 iTerm 2 是 Max OS 下的一款终端仿真器。与原生终端相比,iTerm 2 有多标签、快捷键快速唤出、窗口内搜索、自动补全等实用的 feature,使用更加方便。 选择并导入一个色彩主题 默认的 iTerm 2 主题是黑底白字,看久了不免单调。为了用上丰富多彩的终端,可以在色彩设置中一项项进行配置,也可以下载预先设置好的色彩主题配置文件,

iOS

Xcode 插件推荐

Xcode 是一个不完美的 IDE,需要安装插件来进行功能扩展,方便日常开发。 安装下面的插件前,需要首先安装 Xcode 的插件管理工具:Alcatraz。 VVDocumenter 规范注释生成器。输入三个斜线 ///,快速生成规范注释。配合 Doxygen,可以省去绝大部分文档撰写工作。 SCXcodeMiniMap 提供类似 SublimeText 中的代码“小地图”,方便快速定位到文件中的某一块代码。 update: SCXcodeMiniMap 会导致 Xcode 7 崩溃,截至 Xcode 7.2

Objective-C

Objecive-C 如何判断 NSString 为空

写 Objective-C 代码时常需要判断字符串是否为空,最简洁的代码是 if ([string length] == 0) { // ... } 上面的条件可以正确判断长度为0的字段串(@""),以及空字符串(string 为 nil 或 [NSNull null])。因为对 nil 调用 length 同样会返回0。 实际上,对 nil 发任何消息,返回值都为0。这一行为在下面的第二条参考资料中有详细说明。这种约定是出于方便使用的考虑,但牺牲了一定的安全性。 参考 How

iOS

去掉 UITableView 顶部的多余空间

将 UITableView 的 style 设为 grouped 后发现顶部出现了大约有35px的额外空白。 原因是 group 样式的 UITableView 顶部会生成自带初始高度的 tableHeaderView。解决方案将 tableHeaderView 替换成一个高度为0的 UIView。首先尝试将高度设为 CGRectZero: // 这种写法有问题 UIView *tableViewHeaderView = [[UIView alloc] initWithFrame:CGRectZero]; self.tableView.tableHeaderView = tableViewHeaderView; 另外,如果 UITableView