When taskwarrior met git

as wall-e met eve.

Story

Todo list 类的工具我用过很多了,印象中第一个在 Android 手机上用的是 Any.do,早期还和 google calendar 做同步。后来换到了 iOS 生态就试着跟各种类似的软件打过交道了,同时期在桌面端也用过各种奇葩的方式,有存在线笔记的,teambition,trello,甚至最后用 git 仓库存 markdown 的,因为 markdown 支持一种 task list 的格式,而且在笔记中可以做到各种备注之类的。但是这种方式用太久就让我想不起来到底 todo list / item 的原本样貌到底是什么样的了,因为它完全没有章法。

工作和生活类的数据是完全分离的,在手机上后来我一直用的都是 iOS 自带的 Reminders,提醒功能是三方 app 服务不管怎么做都达不到原生级体验的。基本的任务属性也很明确,该有的都有,整体上我觉得中规中矩。

iCloud 的同步服务时好时外,一旦碰上它抽风了我就要问候苹果全家了,尤其是 mac 版的 Reminders。再加上那傻瓜式的 GUI 每次我都得在那个小窗口里面用鼠标点来点去才能完成一个任务的创建,后来我就放弃了在桌面版的输入体验了。现在我主要在手机上保留了生活类相关的任务,工作相关的数据尽可能不放在上面,除非电脑不在旁边但是又想起了什么。

我认为手机一直都不是一个很好的打字窗口,体验碎得一地,还要看 app 做得怎么样,所以我一直不看好在手机上做编辑器的类

Read More

#import "UserHeader.h" 

Story

上一篇我们已经试验了一番头文件的引用和编译时长的关系,但是好像和我们的实际项目没多大关系,或者关系不大?想想好像没人会一股脑地往 prefix header 里面塞一堆的头文件引用,不一定,这个得结合实际看结果。

基于之前的结论,一个普通的 header 被引用到 prefix header 里了之后,被引用的内容 就已经是 prefix header 的内容了。要想看到我们 Xcode 项目里面真实的 prefix header 长什么样子,还得从头展开。首先从目标 target 的 Build Setting - Prefix Header 设置中找到目标文件,然后逐行浏览,如果碰到一个 #import ,就立刻把该文件的内容提取出来,然后继续深度迭代….直到解析完 prefix header 文件中所有的行为止。想想好像挺无聊的,平时只是在 IDE 里面专注写代码,好像并没有想过这个问题。

Read More

#import <UIKit.h> 

Objective-C 在项目中离不开头文件,它是最基本的控制对象访问权限的直观形式,相当于给一个 Swift 类型定义最重要的访问权限。不能说不重要,一个类型的设计在被应用之前最重要的一步。以前也做过头文件相关的优化,原理和实践都是看起来很简单,但是还没有实实在在的测试过头文件的优化在一个大项目中的具体分量,尤其是 prefix header(预编译头文件)。

Prefix Header

A prefix header is a feature found in some C or C++ compilers used to ensure that a certain snippet of code is inserted at the beginning of every file.

Read More