小鶸の道场

世界上只有一种真正的英雄主义,就是认清了生活的真相后还依然热爱它

如何在编译时专心摸鱼

16 March 2023

编译,是软件开发中一个让人又爱又恨的环节。追求开发效率的团队,通常会选择能快速编译或者无须编译的语言,省下的时间能开发更多功能迭代,做更多测试。最近一年多的时间,我重拾 C++,做起了数据库内核开发,等待编译成了我的日常功课。

通常我会在等待编译的时候,起身走走,或者切换窗口干点别的事情。但是这一切换,再切回来的时间就比较玄学了。如果编译的终端窗口没被遮挡,那还是有一定几率在编译完成后不久被发现,然后继续干活,如果窗口被遮挡了就不好说了。

如果能有一个机制,在编译完成之后,给我推送一个通知就好了。

如果都在 macOS 上工作,推送通知还是挺简单的,执行一下 osascript 命令就好了。

osascript -e 'display notification "message" with title "title" subtitle "subtitle"'

但是我的主要工作环境是在服务器上,平时都用的 CLion 远程开发,需要构建时直接在终端里 make 一下。如果能从服务器上给 macOS 推个通知就好了。

其实这事也好办。

服务器能远程登录我的 macbook,那就 ssh 上来执行 osascript。我在 macbook 上给服务器配置了免密登录。

用了一会之后,我感觉这样似乎不太安全,我的 macbook 暴露了。

如果不从服务器推,那就得从 macbook 拉了。如果我在编译结束时往一个文件写入内容,怎么从 macbook 发现文件被更新了呢?如果我写了个 bash 脚本,感知远程文件更新,怎么优雅地运行它,不要占用终端窗口呢?

我想到了 Automator。之前我还用了它来把 PDF 转换成黑底白字的模式,我也算是老手了。

就是这么简单!等待和循环用 automator 来做,比较一下远程文件的修改时间,如果这次和上次的时间不一样,就把内容通知出来。

如此一来,我就可以在编译的时候专心摸鱼,编译完成了系统会提醒我哒~