从一个烂摊子到“莉吉内塔的冒险”
我开始搞这个“莉吉内塔的冒险”项目,纯粹是被生活给逼的。那时候,我刚辞掉上一份工作,在家歇着,想着找点事干,结果赶上了我岳父家要远程监控一个老项目的进度。那项目涉及的环节实在太多了,从材料采购到施工验收,光是文件堆起来都能埋住人。我试着在网上找那些现成的项目管理工具,但用了一圈,发现它们要么收费死贵,要么功能臃肿得像个大胖子,根本解决不了我这种“临时救火”的需求。
我一拍大腿,想着自己动手丰衣足食。反正闲着也是闲着,就自己撸一个轻量级的出来。我的目标很明确:要快,要轻,要能随时随地查看更新。
第一次尝试:用最快的速度“堆”出来
我抓起了一个我以前写小网站剩下的PHP框架,把数据库扔在本地的树莓派上。那叫一个粗糙。我主要的工作就是把一堆Excel表格的数据一股脑地灌进去,然后写几个简单的查询页面。我记得当时我连基本的输入校验都没做,完全就是信任数据源。
- 第一周: 拼命堆界面,能用就行,美观度?不存在的。
- 发现问题: 数据一多,查询速度立刻就歇菜了。而且远程访问树莓派的网络配置把我搞得头晕脑胀,老是断线。
- 这个方案是个烂摊子,只能支撑不到十个人的小作坊,用在我现在这个复杂项目上,完全是自找麻烦。必须推翻重来。
第二次重构:转向实用主义的解决方案
被第一次的失败搞得火大之后,我彻底换了思路。既然要轻量、要快,我就决定全面转向一个我以前没怎么碰过的技术栈:后端用Go来写,前端用最简单的Vue框架,主要就是为了部署方便,一次编译,到处扔。
Go的优势就是能把所有东西都塞到一个文件里,维护起来简单粗暴。我一边恶补Go的并发知识,一边把所有核心业务逻辑往里面塞。这个阶段,我真正开始体会到“莉吉内塔的冒险”这个名字的含义——每解决一个技术难点,都像是在迷宫里打通一关。
我不得不做出的实用性妥协:
- 数据存储: 放弃了复杂关系型数据库,直接用了KV存储的简化版,虽然牺牲了查询的灵活性,但换来了速度和部署的极度简化。
- 用户认证: 没搞什么复杂的OAuth或SSO,就一套简单的令牌认证,能保证自己家人用就行。
- 文件同步: 之前想自己搞个云存储同步,太费劲了。直接接入了一个免费的同步盘API,实现快速上传和分享,虽然有点糙,但能跑起来。
最终实现与更新日志的诞生
经过差不多三个月的边干边骂,这个工具终于能用了。它现在已经不只是一个简单的进度追踪器了,它能自动生成周报,能给施工人员分配任务,还能根据材料消耗自动提醒库存。这些新增的功能,都是在实际使用中,岳父那边临时提出来的需求,我不得已硬着头皮加上去的。
这玩意儿能解决我眼前的问题,而且运行得贼稳定,这就是我最大的成就感。因为之前改动实在太多,每次发布新功能,都得记录下改了什么,修了什么,所以就有了这个“更新日志”。不是为了装专业,纯粹是防止我回头忘了自己到底改动了哪里。
当我把几个界面上的小错别字改完,把那些临时的调试代码全都清理干净后,我把这个项目包了一份,扔到了服务器上。看着它在浏览器里流畅地跑起来,心里终于踏实了。虽然它不是什么高大上的企业级应用,但它是我用生活中的实际问题,一点点磨出来的。我敢说一句:行了,能用了,大家伙儿可以“立即下载”试试看了。相信我,自己动手做的工具,比那些花钱买的,用起来顺手多了!