codedump的电报频道
4.44K subscribers
151 photos
4 videos
2 files
624 links
发布个人博客(主页 codedump.info)、想法、推荐等。RSS订阅地址:https://rsshub.app/telegram/channel/codedump_notes,过往汇总搜索可以到:https://app.shokichan.com/c/tg/codedump_notes。
Download Telegram
#暴论
没有全自动化回归测试的“有状态服务”就是梦魇。

游戏就是一个很典型的“有状态服务”,“有状态”的意思,是游戏服务的连接对应到一个在线角色的信息,角色的数据包括但不限于:角色的属性、所在的地图场景、日期的特殊性(比如大型节假日要做一些运营活动)。

由于游戏服务是一个如此特殊的“有状态服务”,要构造它的测试数据来跑自动化测试就很难,基本都是靠人肉来测试。

没有了全自动化的回归测试,随时可能踩到坑里来。比如某个节假日来了,要临时开一个这个节日的运营活动,于是可能改了一些玩法逻辑,测试的时候一般只会去验证这个活动相关的逻辑。但是问题来了,有可能这个活动还影响了其它的玩法。由于缺少全自动化测试,就没有去验证,于是很可能到了上线的时候才发现问题,这就要一顿忙活热更新修复了。

在我短暂的做游戏开发的时间里,大概半数以上的错误本质都是由于缺少全自动化验证导致的。还有一个原因,游戏逻辑代码以百万计,而经常又是使用Lua、Python这样的解释型脚本语言来写的,缺少编译期的检查,这又是可能产生问题的原因之一。

所以人生苦短,如果不是特别热爱,还是远离这类做游戏逻辑的工作,这类工作的技术难度也就是比普通CRUD高那么一丢丢,但是生命都浪费在没有自动化测试导致的问题修复里了。

会修问题、解决问题都不算什么本领,学会理解这类开发的流程导致了问题总是此起彼伏,避开问题的高发领域,别把宝贵的时间浪费在这种无休止的问题解决里。
👍27
#SQL
我这两天看databend的SQL解析代码,才发现一个之前完全没见过的SQL语法:“with table_alias_name as”来创建一个局限于查询的临时表,这种语法好像有个的名称:common table expression(简称CTE)。

这里是解释:https://learnsql.com/blog/what-is-cte/

BTW:上面这个learnsql.com好像是某个专门学习SQL的知识付费网站。
👍3
#算法
HyperLogLog算法是被广泛使用来估算一组数据里有多少不相同值(distinct value)的算法,可以参考这里的讲解:https://www.yuque.com/abser/aboutme/nfx0a4

它用较小的数据量实现了不差的预估准确率。

比如要估算一天有多少不同的页面被访问(注意不是被访问的次数),这个算法就派上了用场。

在数据库里,要优化一个查询计划时,也需要知道被访问的表里每一列有多少不同的值来指定查询计划,于是也需要用到这个这个算法。

但是原始的HyperLogLog实现并不支持删除数据,比如一个表每一列原先的预估是一个值,但是也得考虑这个表被删除一些数据之后算一个新的预估值。

论文Every Row Counts: Combining Sketches and Sampling for
Accurate Group-By Result Estimates
给出了一个大体的解决思路:

* 可以在每个值加一个计数器(counter)。
* 但是如果每个值的计数器是8Byte的话,就需要新增30KB的容量来存储计数,违背了HyperLogLog的初衷:小代价实现估算。
* 于是论文里提出这个计数器只需要1Byte,这1Byte的前128的值是精确存储,后128存的只是概率值。换成1Byte之后,成本从30KB降到了3.6KB。

我把RustHyperLogLogstreaming_algorithms fork下来在其基础上提供了delete的实现,diff见:https://github.com/datafuse-extras/streaming_algorithms/commit/762a59c5e65b36797a1ee1cad6fc410c62c9a8b9

貌似这应该是业内第一份不限语言的hll delete实现:)
👍17
#区块链
“中本聪的比特币论文写得也太简练了,2年多前就下来看过,当时完全没看懂。
最近学完北大肖臻老师的这门课程的前半部分, http://zhenxiao.com/blockchain/ 再回头去看论文,终于看懂了。。。
不得不说,设计真是精巧,考虑也是相当周到。佩服!”

课程链接:http://zhenxiao.com/blockchain/
原推:https://twitter.com/senob_/status/1591725292170932226
👍16
#电子书
“《像黑客一样使用命令行》是我4年前写的一本电子书,现在开放出来,希望对各位有所帮助,同时也欢迎感兴趣的朋友完善~”

原推:https://twitter.com/linuxtoy/status/1593213048122376192
项目地址:https://github.com/xuxiaodong/usingcli-book
预生成的PDF及ePUB:https://github.com/xuxiaodong/usingcli-book/releases
12👍3
#杂
使用Sublime替换vscode配置成主力IDE已经大半个月了,目前感觉还好,最重要的是:Sublime足够轻量,不会出现vscode那样时不时的卡顿情况。

插件系统能覆盖常见的辅助插件,更重要的是LSP的出现,使得很多以前在专业IDE才能支持的代码提示、辅助功能也能在编辑器上支持起来了。

另外,这个替换IDE的过程里,也不是没有考虑过类似NeoVim这样的方案,但是几个问题把我挡住了(也许是暂时的拦住,后面也可能再尝试:):

* 需要自己配置的插件太多;
* 没有太好的右键菜单项支持,这样使用的时候就需要记很多的快捷键,有点望而却步了。

以前很多人提起Vim的时候,经常强调是Vim用得好了能有“全部操作使用键盘完成”的爽感,我后来自己的体会,感觉其实不必对全部操作都得纯键盘完成有太多的偏执,该鼠标操作的时候还是鼠标操作,自己怎么舒服怎么来吧。

简而言之,现在我已经不去过度追求去驾驶一辆“纯手动挡”的车了,该辅助的时候就上辅助。
👍16
#杂
“有一句常见的鸡汤,叫走出舒适区。

我非常讨厌这句鸡汤。

什么叫舒适区?你能容易地获得正反馈,就是舒适区。人是被正反馈驱动的生物。

我讨厌这句鸡汤,是因为经常被滥用,鼓励挑战负反馈,仿佛不能战胜负反馈你就是loser。

比如以前有人建议我学好英语,而我的外语天赋极差,近乎于英文盲。这哥们连连督促我走出舒适区,拿自己的学习经历来举例,说得我愁眉苦脸一蹶不振。但这哥们又是个死宅,一边说想去香港看看,一边推三阻四不肯出门。说到旅行我可就不困了,拍着胸脯给他做好了香港攻略,他打死都不去……

后来我想明白这个道理,他很容易在学英语上获得正反馈,所以鼓励我走出舒适区去学英语。但他对于长途旅行感到恐惧,所以打死不肯走出舒适区去香港旅行。

彼之蜜糖,我之砒霜。鸡汤有毒,因为我俩的天赋点根本就不一样啊。

所以我个人的立场是:
1、人应该拥有更大的舒适区,更大的能力栈
2、扩大舒适区,应该寻找那些可以带来正反馈的事
3、如果形势所迫,只能去挑战负反馈,但知道这不可持续且上限较低
4、如果负反馈领域对你很重要,就去找互补的伙伴或者环境”

By 纯银。

我很同意里面的观点:“舒适区”就是更容易得到正反馈的事情,但是一件事情需要持续做下去,大前提是能够获得“正反馈”。
所以,我现在很警惕做什么事情需要用“坚持”这样的字眼,因为一旦需要坚持,就意味着:

* 可能有东西阻碍了你,
* 可能做这件事情本身没有让你获得正反馈。

而这些问题,都不是简单的意志上喊一喊“坚持”就能解决的。所以现在,遇到不顺利的时候,更多不去安慰自己要“坚持”,而是反问一下上面两个因素里遇到了什么问题,解除阻碍、拿到正反馈,事情才可能继续做下去。

原微博:https://weibo.com/1134424202/MgWPzydfd
👏22👍16🥰2
#资源
一个收集了各种文件格式解释、相关工具的wiki:

http://fileformats.archiveteam.org/wiki/Main_Page
👍1
#杂
今年买过的硬件产品里,个人觉得最值得是2021年版顶配的MacBook Pro。

当时主力写Rust之后,感觉之前的机器性能不太够用,于是动了想升级机器的念头。

自己感觉M1的CPU加上32G的内存应该是足够的,但是老婆的建议是直接上顶配搞到64G,两者差了几千块。

最后还是买了64G的顶配,实际用下来64G的配置确实能够“从容”很多,做很多事情不再抠抠搜搜的。

回想起来,人生实际有很多事情都被动得不够从容,有时候去打车,连司机都会催你赶紧过来。

只是多花几千块钱,在最常用的工具上,切实换取“从容”的感受,这个性价比还是挺高的。(截图出自Runcat)
👍263🔥1
#杂
一转眼,上一篇博客还是9月份了,原因是这一阵实在有点忙,工作方向有了比较大的变动。

我之前对数据库相关技术,更多是了解一致性算法(Paxos略懂,Raft懂的更多一些)、存储引擎(BTree、LSM等),但是目前在Databend里,这两部分已经较为稳定了:openraft改动不大、底层的数据存储用S3类的存储,所以这两部分可做的事情不是太多。

另外,我自己也更愿意多去探索数据库技术栈里的其他技术,比如现在更多业余时间在学习SQL查询引擎的实现,一时半会儿在一个新的领域很难有像样的输出来。

所以暂时来说,博客只能鸽一下,更多时间用在学习不熟悉的新技术上面了:)
👍1
#杂
一年一度喜剧大赛2落下帷幕,我特别喜欢总冠军“某某某”的三个节目:

《军师恋盟》
《遇人不赎》
《再见老张》

三个节目分别讨论了:爱情、死亡、亲情,笑中带泪中间还带翻转的。尤其是《再见老张》是这季的最后一个节目,以这样的节目结束整季节目,这个结尾收的很棒。
👍7👏1
#播客
《跟 Xiaohanyu 聊聊在 gojek 的工作经历、远程工作和不同城市的风貌》

xiaohanyu 在网上认识好几年了,一直没有机会面基,前几天发现他上了ByteTalk这款播客节目,特推荐一下,节目里谈及了很多远程工作、国外工程文化等话题。

同时,他之前还写过一篇文章,讲到了自己的亲弟弟是如何在他的辅导之下发生改变考上名校改变生活走向的:《教育对人的改变有多大?》
👍13
#杂
知乎问题“为什么现在生活比以前(或者古代)好了,我却感觉不到幸福?”下的一个回答,里面提到衡量幸福与否,关键在于时间的使用上,个人赞同这个说法:


当你在考虑你幸不幸福的时候,不妨在这三方面质问自己:

——从自由支配个人时间的量上来看。我的人生的确是由我自己支配的吗?
——从自由支配个人时间过程的质上来看。我自由支配的这段人生过的有趣吗?
——从自由支配个人时间结果的质上来看。我自由支配的这段人生真的是有意义的吗?
👍11
Forwarded from Solidot
Valve 付费给 Steam Deck 软件的开源开发者

2022-12-20 18:23:00 by 守卫者

Linux 掌机 Steam Deck 利用了大量开源软件,操作系统是基于 Arch Linux,桌面环境 KDE Plasma,其它还有 Mesa 驱动和 Vulkan API,以及 Wine 的分支 Proton 兼容层。Valve 也知道 Steam Deck 的成功离不开开源软件和开源开发者。该公司的设计师在接受采访时透露,Valve 向逾百名开源开发者支付了薪水。这些开发者应该不是 Valve 的雇员。设计师称,此举是 Valve 总体 Linux 游戏战略的一部分,也就是让 Linux 在游戏领域成为 Windows 的可行替代。Linux 内核作者 Linus Torvalds 曾经说过,Valve 将拯救 Linux 桌面。也许 2023 年要成为 Linux 桌面年。

https://www.pcgamer.com/valve-is-paying-a-whole-lot-of-developers-to-keep-the-steam-decks-open-source-software-going/

#开源
👍28
#杂
Mac Os上使用的lldb调试器,调试指令和Linux上的Gdb有一些差异,这个网页给出了这两个调试器指令的对照:
https://lldb.llvm.org/use/map.html
#杂
我最近决定清理我的社交圈子,于是做了几件事情:只要能有web端的SNS都删除了手机app,比如微博、知乎等,只留下常用的微信,以避免刷手机;关闭了朋友圈、推特退出登录,最近都不打算更新了。

但是接着又有了新的问题:如何获取到新的(技术类)资讯。

这时候想起重新捡起RSS来,发现 RSSHub 这个产品真的厉害,在“万物皆可RSS”的理念下,不但传统的网页可以RSS,像youtube、推特、微博等等这些本身可能并不原生支持RSS的地方都能RSS起来,装一个 浏览器插件 在访问这些网页的时候就可以自动提示RSS地址了,非常好用。
👍33