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 **/*
  
Prefer Status Bar on iOS

历史

苹果在UIKit中提供了两套关于状态栏控制的API,一套是自iOS 2.0就有的基于UIApplication层面的全局控制:

@property(readwrite, nonatomic) UIStatusBarStyle statusBarStyle; @property(readwrite, nonatomic,getter=isStatusBarHidden) BOOL statusBarHidden; - (void)setStatusBarStyle:(UIStatusBarStyle)statusBarStyle animated:(BOOL)animated; - (void)setStatusBarHidden:(BOOL)hidden withAnimation:(UIStatusBarAnimation)animation; 

从废弃的另一部分API来看,早期甚至还可以通过手动控制屏幕旋转时候的状态栏状态。当然这些API自iOS 9开始被废弃了,但是直到iOS 14上面的API还能起作用,大概是苹果统计了很多App还在用这些API吧。

从iOS 7开始,基于UIViewController的新状态栏API替代品来了:

open var preferredStatusBarStyle: UIStatusBarStyle { get } open