红鸟小屋·内测
这个卫星终于是落地了...
小屋历史
不容易啊...特别不容易啊。。。这玩意儿我活生生从四月干到十二月啊。
实际上真正干活的时间没有那么长。4-6月在用Game Maker做。我是做软件的,没做过游戏,所以我不知道是游戏引擎都这么难用还是只有Game Maker难用。纯粹的, 纯粹的 折磨。其实6月最后的版本已经完成80%了,问题就是邮件功能那个状态管理真的很难写,写到最后放弃了,不想面对.jpg
然后九月桶的新刊被砍了,生气。气的团团转也没啥能干的,最后想想,在小屋里加个新安杰莉卡吧。就当是我再做一场梦。加完了看看,哎,去他爹的,继续干吧...有时候真的就差一口气。生气的气也行。
理了一下思路觉得,当断则断。与其和Game Maker死磕不如换我熟悉的框架。换回了我手熟的React + Next.js + TypeScript套装从零开始,重写代码。人!还是要在舒适区!呆着!猛猛磕了一个多月磕出来了。
技术
轮询
踩的最无语的一个坑。邮件接收一开始犯懒,写了个轮询。以前这么写也没出啥事毕竟没有那么多用户。这次直接炸了。首先edge request数量先炸了。这点vercel做的蛮好的,obeservility的可视化特别好用,很快锁定了是轮询request数量特别多+登录状态JWT保存写的有点问题,登录状态老掉一直要重新请求。把轮询频率降了下去然后邮件改成事件触发
然后。发现。数据库的CU还在炸。我对serverless数据库没那么熟,研究半天才研究明白他是怎么个事儿。用了serverless就完全不该写轮询的,等于没利用到他按需使用的精髓。neon本身给的五分钟不用就休眠的scale to zero是一点没用上
TCP vs. HTTP
cu还是高就试图把tcp改成http压cu数量,改的过程很痛苦,neon的serverless driver还很新,生态不成熟docu也不全。版本匹配要求还非常严格,一顿升级降级写兼容。改完发现http是无状态它不支持transactional啊!!!而且最后算了一下也压不下去多少cu数量因为(深吸一口气)就是有这么多用户啊!
花了两天时间写,最后revert commit了。心平气和。心平气和。
番茄钟
相比之下番茄钟只是小问题。因为浏览器的限制,切tab或者熄屏会停止计算。重写了schema,每次focus回来按照开始时间和现在时间计算一下就好了。算是一开始设计的不够周全,debug和想解法本身的过程很有意思
感想
其实还有很多非技术类感想,之后单独写一篇吧。技术方面的感想是,虽然现在ai大行其道,但我写下来还是不认为ai能取代工程师/让普通人能做出一个产品。ai可以加速很多工作,但一旦出现问题 (100%会出现问题) 之后,怎么锁定问题,怎么修复,ai很难解决,因为人给的信息很可能是不够甚至八杆子打不着的。这时候只能靠专业知识和经验积累下来的直觉去搞。但是 非专业人士用ai做个小demo是完全可行的,而且我很鼓励所有人这样做,我觉得以后这属于“熟练使用excel”这一类的通用技能。完整的产品就是另一回事了
技术栈方面,next.js我个人写的其实很顺手。但是也体会到一些为啥有人觉得是开倒车,感觉前后端分离在大规模复杂系统上还是更干净的。但小架构的东西用next.js写真的很爽...最后吐槽一下prisma,跟个玩具一样,稍微复杂点的查询就要写raw query。我不是特别理解他的优势在哪!!
还是很喜欢写代码的。搞一个能跑的东西出来很有成就感!!到现在终于有点没入错行的实感,哈哈...