竟然立秋了,但天气还是好热
生活
终于看完了《三体》。感觉电视剧版的和原著还是有一些差距的。电视剧版我就记住一句话「你就告诉我,杨冬是怎么死的」,感觉卡在这里过不去了,但是原著就没有这个负担。时间长了,已经记不住了……后面有空再看一遍。
有点想看《绝命毒师》,但估计抽不出来时间了。之后要留点时间学雅思。
本周咳嗽终于好点了。我一直可担心,但似乎每次都是「已经好了 80%」的时候去的医院,也检查不出来啥,「过两天自己就能好了」。
周末在家,做了鸡丝凉面,炒了葱爆羊肉,卤了鸡肝。抖音「老饭骨」真的是宝藏,但大爷不在后,少了些批判,多了些吹捧。
打印照片打上瘾了。佳能的 CP1500 照片打印机有个比较讨巧的地方,就是它打印最后有一层覆膜,所以可以在这层覆膜上做点东西。比如默认的「高光」就是普通照片那种很平整的,但还能切换到「哑光」和「缎面」,就是改变了覆膜的纹理。说「讨巧」是因为,它内置了一些选项,可以在覆膜上搞出来一些花纹,例如狗爪子啊爱心啊射线啊啥的,有反光的时候看起来就很炫。——所以本周终于把第一包纸给打完了。
学习和折腾
本周成功在 K3s 上部署了 Jellyfin 和 HomeAssistant。不过多多少少有点小问题:
- Jellyfin 暂时用不了代理,所以刮削不太正常
- HomeAssistant 可能是端口写少了,反正单纯 Web 没啥问题,但是 iOS 的家庭里面添加不了
反正就是,折腾出来个模板后,后面直接套模板就好了。
我估计下周再部署个 Clash 能解决代理的事儿。
把路由器偷渡成了海外版,终于可以用内置的 AdGuard 了。这样用域名部署的东西,就可以用域名访问了。——dnsmasq 还是用不熟,要不然折腾这东西干啥
工作
哎,同样是公司的俩项目,Kitex 和 Hertz,使用起来感觉完全不一样。
Kitex,最起码上手文档比较全,假设你是个完全的小白,跟着一步一步做下来,差不多就能写个真实能跑的服务了。
Hertz,上手文档真的是个 Hello World,啥高级一点点的特性都没用上。文档组织也很有问题,假设你已经熟悉 gin 之类的框架了,所以「入门文档」写得很潦草。还有的是,很多东西完全没解释,诺,没注释的 Demo 代码就在那儿,你自己看去吧。所以,即使代码些得再好、再「自注释」,也不能完全没有注释。该说明的地方,还是得啰嗦下,好好写写注释,毕竟自己也会忘掉当时写这些代码时候的想法。
更坑的是,都是要从 thrift 生成 go 代码,Kitex 生成出来的东西和 Hertz 生成出来的东西还不通用,所以「前端 http 后端 rpc」这种东西,需要不停地将「原本是同一个类」的数据在「生成出来的两个类」之间来回手动复制。官方说已经在弥补这些差距了,也有如何兼容使用的教程,但实际上生成时候里面一些小细节导致还是没办法编译。而且我也没那么大胆,也不敢用 unsafe 包(你看,人家都叫 unsafe 了,那么肯定是 unsafe 的啊~功力不够,还不敢碰),所以都是先序列化后反序列化做的 copy,性能……哦一天就十几个 query 咱就先不说性能了吧。
周四,有个服务突然各种内部错误。我寻思之前好好的啊,我也没做啥修改。查了一整天,发现还是老问题:服务里面检查「节点是否工作正常」是检查的「someVariable==nil
」。但是节点内部初始化的时候,是用 var someVariable []*someClass
的形式来的,后面用 for 遍历,有结果就直接 someVariable = append(someVariable, someResult)
。所以当传来的东西长度为零,就不进 for 了,所以 someVariable
一直是 nil,然后被返回了出去,最后被下一个节点接收到。由于它是 nil,所以被误认为「上一个节点工作不正常」,从而抛错。
这个事儿解决后,另一个问题就是内存暴涨。怎么说呢,如果用 100 QPS 的速度打服务,服务占用内存会从 100MB 迅速暴涨到 4G,但是 QPS 一旦停止,服务占用内存就会迅速(大概在 2s 后)降到 100MB 左右。感觉是 go 的 GC 不及时,但也不应该这么不及时。和之前同事简单对了一下,没对出啥结果。——反正这内存占用,确实挺吓人的。
下周请三天假出去玩。希望天公对我温柔点。
数了一下,从去年开始写周报以来,这刚好是第 52 篇周报。
发表回复