经过半个多月的奋战,我的博客终于迎来了第n次改版,同时发布的还有我的第一个小板凳,CHEngine。

  开发这个小软件的初衷,一个是练手,另一个是在大半年不维护博客之后,我又忘了我的博客维护软件是怎么用的了。自从把博客搬到独立空间以来,我先后尝试过pjblog, wordpress和hexo。这些软件确实功能强大,但强大的代价是复杂。一个作品最初展露头角,多半是因为小而美的解决了一些当时的痛点。然而随着市场的扩展,软件的规模也逐渐膨胀,从小家碧玉变为庞然巨物。像我这么一个一年半载更新一次的博主,每次更新都可能面对软件环境变化或者升级带来的种种问题,而每次我的解决办法就只有重装,所以更新博客时心里充满了忐忑感,我个人认为这也是我很少写博客的一个原因。所以这次我决定一劳永逸,做一个我自己的工具。

  既然是为了练手,当然要追求性能,即便对我这只有十几篇文章的小站没什么意义。所以开工的时候志存高远,语言选了C,打算自己从头造轮子。不出几天,就体会到了造轮子之苦,只见bug,不见成果,这么干下去一个寒假车也造不出来,于是改用C++。用了C++确实舒服了一些,但是架构上又开始混乱,到底是面向过程还是面向对象,开始的时候没有考虑清楚,后来搅成一锅粥。干脆换成java,大家都是对象,各扫门前雪,关系也容易理清。安生写了没两天,又想念C++的自由,还开始膨胀,想要图形界面,于是又拿起了Qt。之后又不满Qt的封装和限制,改用javafx。好不容易写出个大概,突然觉得之前用的模板越看越丑,现在想换模板还要改程序,经历一番思想斗争后决定推倒重来,不能做的太量身定制,还是要有一些通用性。既然要重开,不妨再试试python,看看到底开发有多快……收尾的几天每天都在放弃的边缘垂死挣扎,像一个开发多年的老油条。

  一路走来,成品比开始计划的内容多出不少,除了原定的一个简化的markdown转换器和文件组织工具,还加了图形界面和一个迷你的脚本解释器。而各种返工造成的工作量,至少是成品的两三倍。收获了很多经验,语言上的,项目组织上的,甚至还有编程环境(我还跟构建工具斗争了一两天!)。也体验到整个开发过程的心态变化:从最初规划项目时的憧憬,到中期不断尝试新技术的亢奋,到后期在开始复杂的架构里修改的烦躁,和最终完成时的满足。如果说还有什么特别的感触的话,那就是技术带来自由,我现在切身感受到了这一点。

CHEngine演示视频