我常常会在一件事上莫名其妙联想到另一件事,后来看过一些讲大脑工作机制的书,知道了“想起”本来就是在外部刺激下一次点亮一片神经元的过程。所以张爱玲说“听到一些事,明明不相干的,也会在心中拐几个弯想到你”,现在看来就少了几分爱意,多了一些无法跟基因抗衡的无奈。
对我来说,一提起“新旧”,总要想到高中看《神雕侠侣》,杨过在绝情谷底撒下一个剑花,一边吟道:茕茕白兔,东走西顾,衣不如新,人不如故。好长一段时间我弄不明白,为什么“要新衣”和“念故人”可以放在一起讲。“衣服我喜欢旧衣服,人我也喜欢故人”,这样说话难道不能更突出“我心依旧”的主题而挽回小龙女的心意吗?那个时候,我崇尚的是“吾道一以贯之”,没有意识到对同一事物的不同形态可以报以不同情绪。例如我喜欢吃面,喜欢的是细面,它可以清汤可以红汤也可以干拌,但是粗面不行、刀削面不行、铺盖面不行。
这道理我明白得很晚。所以刚入职那会儿,一起实习的小伙伴推荐给我许多新工具,我内心是排斥的。要去接受新工具,那是不是意味着我必须去爱新的人?脑筋转过弯以后,我开始谨慎尝新,两年多,已经攒下一些快乐可以在这里分享了。
[笔记]
关键词:obsidian, logseq, notion, typora
我最初使用 Word 做笔记,后来换到印象笔记,因为很喜欢,一口气充了三年的会员。再后来大陆版由中国团队接手以后,做了很多我不喜欢的功能迭代,广告也越来越多。忍受很久,终于忍无可忍,我换到了 obsidian ,乍一看,让人以为是 vscode。
一年之后,我换到了 logseq,一直使用至今。
obsidian 的优势在于更灵活的定制化,强大的插件市场,且插件使用 javascript 编写,降低了自定义开发的成本。就拿我来说,只要花点时间,就可以轻松实现自己想要的插件。而 logseq 的优势是:把双向链接做到了极致。我认为读书笔记、技术笔记、生活笔记都属于零散的碎片化笔记,所以需要“双向链接”将它们连接成网,避免知识孤岛。关于双向链接,如果你不熟悉,可以看《卡片笔记写作法》。
我现在在 obsidian 上主要是做英语精读,它支持 split window,展示正文的同时可以在旁边记录生词、句型,记录笔记很方便。logseq 最大的缺点是不支持 split window,且不支持只读模式,也没有修改记录,很容易因为误触键盘而改坏笔记却不自知。世间就是这样,彩云易散琉璃脆。
日记、书单、TODO list 我选择 notion。它的组件精美,因而十分适合一些偏仪式感的记录。下面是我做的 2023 年读过的书单。
一些零散的、不成结构化的笔记我会先记在 typora 上,类似打草稿。typora 功能尤为简单,比较适合“创作”,我的博客会先在 typora 上写好,再同步到站点。去年把工作笔记软件也换成了 typora,用起来很舒服,推荐给同事,他们有的已经用上了。社区有个大佬 hack 了 typora 的接口,实现了很多额外功能 typora_plugin —— 有比较明显的bug,建议慎用,虽说我一直在用啦!
说个搞笑的,最初接触 logseq,notion 的时候我内心十分排斥,认为自己不需要、也不可能使用它们,可后来的很多转变是我预料不到的。
[英语]
关键词:golddict, thefreedictionary, deepl, chatgpt, anki
起初我使用的翻译软件是 chrome 插件 TransIt,并非好用而用,单纯迷恋它的颜值,其它同类产品设计过于繁杂而让我退却。后来 TransIt 违反了 chrome 应用商店政策遭到下架,我因为很早就安装了,现在还能一直用。
有段时间我还在用 沉浸式翻译 插件,它的强大在于能将英文-中文翻译分段展示。
有一次升级,它默认增加了一个快捷键,我不小心触发才知道,我对这种改变用户习惯的 breaking change 深恶痛绝,遂卸载。此外,我想明白一个道理,如果希望提升英语,中英文对照的阅读方式一定学不好,这跟学走路的时候一直扶墙道理差不多。所以 沉浸式翻译 插件我蛮推荐的,但不推荐抱着提升英语目标的人群。
GoldenDict 是我遇到的“王炸”级词典软件。它需要用户自己添加词典,在设置好快捷键后,不管是浏览器还是桌面应用都可以直接呼出。
之所以称作“王炸”,是因为它支持跨平台,windows、macos、linux 上我都有安装,收获了满满的快乐。如果硬要说有什么缺点,那就是我不知道在 mac 上应该设置什么快捷键来避免快捷键冲突(落泪)。词典我都是从 freemdict 论坛获取,除英语之外论坛上还有很多其它语种的词典。离线的本地词典的最大缺点是:总是有词穷的时候。这个时候我会求助于在线词典 The Free Dictionary、Cambridge Dictionary。我一般会优先使用 The Free Dictionay,没来由的就觉得它要更好一些。
阅读英文小说会遇到这种情况:有一类句子不管是很短还是很长,明明单词都认识,却读不懂什么意思,我一般会丢给 ChatGPT 翻译。不过 ChatGPT 有些句子不给翻译,说不合法,这种时候我会让替补 DeepL 上场。进而我衍生出一种想法,不管 AI 如何发展,完全依赖 AI 自由翻译就目前来看还是比较遥远,现在已经不是技术问题,而是道德问题。那几个 ChatGPT 不给翻译的句子,DeepL 给了答案,无非是男女主调情罢了。今天 AI 可以不翻译,明天 AI 就可以乱翻译,知识这东西还是自己掌握住比较靠谱。
最后,遇到的大部分生词我会添加到 anki 中去复习。ankiweb 的同步服务器在国外,国内同步很慢,去年我花两百买了 ankichina 的大航海会员,有一次出现故障,超过 24 小时候没有恢复,还联系不上维护者,最后我根据文档自建了同步服务(Self-Hosted Sync Server)。切身体验来说,有条件自建 sync server 一定要自建,没条件退而求其次选择 ankichina 也还不错,但对他们服务的稳定性不要抱过大期望——大部分时间稳定,但肯定没有达到5个9,非技术出身的用户也许不在乎,我作为后端程序员会有点受不了。
[终端]
关键词:wezterm, fish, fzf, fnm
我才入行那会,以为终端模拟器的尽头是 xshell,换工作之后新公司不允许使用破解软件,我开始寻找新尽头,于是遇见了 tabby。tabby 真的很棒,UI美、跨平台,可它基于 ts 实现,你就不得不接受它启动慢、吃内存。使用一年半后,我换到了 Alacritty,世之吹 Alacritty 不可谓之少矣,可是我在 windows 上的体验并不绝佳。
没多久,我瞄准了 wezterm。wezterm 在渲染上存在明显 bug,四周的 padding 不管怎么设置为 0,还是会有空隙。我这次认定就它了,除去跨平台(tabby、Alacritty 谁不能跨平台呢?),主要看好它选用 lua 语言作为配置。我肤浅地认为,一旦一项工具使用一门简单的脚本语言作为配置,它一定会有无限大的潜力,在未来某一刻爆发。我期待着,并等待着。
我把配置整理到了 github(wezterm-config),快捷键完全复刻 tmux。暂时没做过多的个性化,已经使用半年。
使用 wezterm 过程中,还遇到过一个诡异的 bug。有天我在公司正写着代码,突然 wezterm 闪退,然后不管怎么启动都会 panic,我在家使用相同的版本、相同环境却没遇到相同问题。最后的解决方案是,我把代码拉下来,找到 panic 的地方加上 if else 避开报错,重新编译就能正常使用了。我想,这就是开源的魅力吧。
我用 oh-my-zsh 很长一段时间,所以我在 windows wsl 中忍受每次回车就卡顿 1-2s 也很长一段时间。上个月终于不想忍了,换到 fish shell 体验一番,只想大呼:世界,美了!Why am I using Fish Shell so late? I have known about it for many years, and I could have started trying it much earlier.
结论就是 fish 在 windows wsl 上响应特别快,原生功能完善(不像 zsh,如果不装 oh-my-zsh 一类的发行版基本不能用),值得一试。我尚处于研究阶段,许多特性没有用上,目前把配置整理到了 github fish-config,以后继续深入 & 完善。
但即使是 fish,要在 shell 启动的时候加载 nvm、pyenv 还是很慢,前者我换成了 fnm;后者没找到替代品,暂时配置成手动加载,以后要想办法解决。
在终端工作依赖各种命令,fish 原生支持历史命令搜索(Ctrl + r),我之前一直在用 fzf,目前我还说不上谁更好,都在用,只能说都值得推荐。
[API Tester]
关键词:Talend API Tester, bruno
作为后端程序员,api tester 是一定要用的一类工具。前几年我一直在用 chrome 插件 Talend API Tester,我想说它是我用过的最好的 api tester。但自从我不背电脑上下班后,数据不同步一直苦恼我。经过许多尝试以后,我选择了 bruno 。bruno 支持跨平台,数据存在本地,我写了一个脚本自动把数据同步到公司内部的 git 仓库,基本满足我跨平台共享数据的需求。
[总结]
总的来说,我选择一款新工具遵从的优先级一般为:跨平台 > 代码开源 > 用编程语言作为配置 > 界面精美。很多开源产品的 UI 做得丑丑的,但一想到人家都无偿开源了,审美上我做点妥协又算得了什么。
还不快抢沙发