2011 年时写了一个切换 hosts 的小工具 SwitchHosts!,2012 年时发布了第二版,一转眼 3 年过去了,在 2015 年即将结束之时,终于抽空编写了它的第三个版本

我在日常开发过程中经常会用到 SwitchHosts!,第二版虽然能满足大部分需求,但还是有一些不方便的地方,第三版在功能上主要有如下变化:

允许方案多选

我们日常开发过程中,有时会有很多公用的 hosts 希望总是生效,第二版的处理方法是提出一个单独的公共方案,但在一些复杂组合的情况下,单独的公共方案常会显得力不从心,于是,这一次索性将方案改为允许多选。自然,这样也就不再需要一个单独的公共方案了。

点击行号快速切换某一行的注释

有时我们只时临时想关闭或开启某一条 hosts 规则,如果单独将它作为一个方案就有点太重了,手动在行首加 # 进行注释又太麻烦,因此有了这个功能,帮助用户快速切换某一行的注释状态,从而达到关闭或开启某一行的效果。如下图:

click to comment

除此之外,第三版的一个很大的变化是技术上放弃了 Python + wxPython 的架构,采用了MacGap来构建。

之所以放弃 wxPython,主要是因为这个 UI 框架更新比较慢,社区也相对不活跃,我遇到不少问题都无从下手,比如第二版在 Retina 屏下有一些问题,同时 Mac 版的编辑区无法使用中文输入法等。最终,我决定在新版本中采用 Web 技术来开发界面。

一开始,我尝试了 Electron,并且做出了一个版本。但 Electron 生成的程序实在是太大了,无论 Mac 上还是 Windows 上都超过了 100M。SwitchHosts! 只是一个轻巧的小工具,虽然现在用户电脑的硬盘越来越大,但这么一个小工具要占用 100M+ 的空间还是让我觉得不太合适,于是我转而尝试了 MacGap。好处是现在的程序只有 1M 多点,坏处是第三版目前只适用于 Mac 了,Windows 用户暂时只能继续使用第二版。

目前这个版本仍有不少可提升的地方,不过既然它已经是一个可用的版本,那就让我遵循 MVP(minimum viable product)原则,先发布,再根据反馈进行迭代完善吧。

最后,贴一下项目主页:https://oldj.github.io/SwitchHosts/。欢迎下载试用反馈建议