写在前面,本文是一篇流水账,请轻喷。
事情要从去年末说起,嗯

为了更方便地分发各种图片及信息,去年用 node + express 写了一套信息分发系统,在教室里插了个无线路由器,跑在教室电脑里。
然后半年中又向其中添加了 分数录入/查询 系统。嗯这似乎是无关的事情呢 …… 回到原话题,上半学年有各种的做课和检查,秉承着现代化教学的精神,似乎有一项要求是要发挥网络的作用

然后最早是班主任找到我,说能不能做出一套程序,让同学通过网络提前搜索信息然后在课上上传并展示出来。
其实这套东西并不麻烦,认证、上传、展示的模块在之前的程序中就有,复制一份出来再修改一下就能搞定。至于展示端,用 Firefox 的 Websocket 连接到 node 的服务器就好。

其实上面这是万恶之源 …… 班主任看过效果之后非常满意,然后照了张照片(估计是拿走展示去了,后来有传闻好多老师都对这套系统感兴趣,这是后话)。

然后正好赶上生物老师也要做课,通过不知道什么渠道得知了消息之后转天找到我,说有额外的一个展示问题并统计回答比例的需求。
两项功能加在一起就已经超出原系统的设计预期了,所以决定独立出来,用 node-webkit 重新实现,顺便去掉一些班内使用的功能,增加一些设置选项什么的,也把 Websocket 的处理部分删掉了。
两天后生物老师亦表示满意,于是当天顺便利用课间和自习交给同学测试和娱乐了。

似乎一切正常,但是最后准备关掉的时候发现系统奇慢。打开任务管理器发现内存已经被占满。
…… 内存泄漏了。
这事情是噩梦,而且因为当初写的时候架构也比较乱,我自己也不清楚会不会在某个地方出问题。但是之前在 Win8 下开发的时候并没有明显的问题(学校机子是XP),于是怀疑是系统问题。
装了虚拟机,发现打开的瞬间内存占用就蹿到了 100M,简单操作之后又到了 300M。这时在 Win8 下进行相似操作,也出现了相应的情况。

用有道的hex替换掉node-webkit,内存倒是没问题了(稳定在70M左右),但是 http 服务端的访问功能却完全无力(似乎hex在非焦点窗口的情况下不会处理连接),报错信息出来满页的匿名函数也找不到错误位置,而且拖拽窗口的时候还会直接崩溃。

似乎将GUI和服务端整合的计划失败了,于是无奈又要将前后端的代码分离。由于多次更改项目,本地的文件记录已经不知道在什么时候中断了(我没有在本地开git的习惯,完全依靠ide的历史功能),之前的 Websocket 部分也要完全重写。之前直接显示的时候没感觉,现在要本地缓存然后推送到 Websocket 客户端马上麻烦了不少。
同时遇到了 jade 判断语句对 readonly 这种标签的支持问题,一狠心把所有的 jade 都翻译成 artTemplate 了。

这里要吐个槽,jade 写起来真心方便,翻译起来也是真心麻烦。好在模板文件只有十个左右,能用渲染的就用渲染,不能渲染的直接人肉渲染。

于是一直做到一个小时以前,花了一个小时写下了这篇流水账。
至于进度 …… 只重写了服务端还不确定能用。