#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

TLDR

先立结论,目前我发现的最适合我的笔记软件是 nb。 说 nb 一个是笔记软件并不完全准确,它更应该算是一个笔记管理工具,它提供了一种面向程序员记笔记的管理方式。

史记

最初开始养成写笔记的习惯是在 Evernote 刚刚兴起的时候,那个时候并没有太多的选择,云同步是我印象中 Evernote 的一个主要优势,但是输入体验一直都很一般,甚至都达不到现在的平均水平。所以后来我切换到了 Alternote 使用了很长一段时间,它是一个基于 Evernote 存储的三方笔记软件,输入体验比 Evernote 好多了,单独创建两个属于自己的私人手写笔记本,然后授权同步到 Alternote,体验不要太好。直到后来 Markdown 兴起,技术类的笔记越来越多,富文本编辑器根本满足不了需求,也找不到一个满意的笔记软件来实现。技术类笔记的出发点其实是 code snippet,所以几经试用我选择了 SnippetsLab,这个软件我用了至少四年。它本身只是一个管理 code snippet 并且能够快速检索并复制的工具,从最开始的 objc 和 bash,到后来的 python 和 markdown,堆积下来的内容越来越多,内容也越来越不像是 snippet,它内置的 markdown 编辑器已经不能满足我“笔记本”级别的要求,只能又开始找替代品。

2020年什么笔记软件最火?google 能搜出来一大堆,还有各种软件推荐平台的测评。简单可以分成两类:面向学生党的,这个方向的需求要求知识点的链接和修改比较强,首选 OneNote;面向普通办公类的,这个方向的需求就比较花哨了,各种从模板派生出来的个人笔记,简直就是要从根源上做出一个自带云平台的 Office 套件,花里胡哨的表格,Task List,Board 等等概念层出不强。这些都不是我想要的。同时因为我刚刚从 SnippetsLab 里面迁移出来的笔记需要再在新的笔记软件中导入,所以我希望最好能在

Read More

如何将一个 git repo “正确地”分享给他人?

背景

有时候我需要将我写的一些代码仓库分享给别人,同时对方也需要/要求看到我的代码版本历史,这个时候可以用到这些技巧。当然,如果不需要版本历史的话,其实最简单的做法就是 rm -fr .git && git init && git commit -am “Initial commit.” 了,然后就可以压缩打包发给别人了。也不全对,因为还需要考虑到本地被 git ignored 的文件。这里我们只讨论通过文件系统下的压缩分享方式,如果是通过 git repo url 的方式的话,那就取决于托管平台的权限控制了,不在讨论范围。

git ignored

被 git 忽略的文件可能是可以二次下载的三方库文件,也可能是 .env 类似的环境变量,甚至可能是自己的密码和私钥文件等等。这个时候我们肯定是需要在分享之前删除这些文件的。

git check-ignore **/*