codedump的电报频道
4.53K subscribers
152 photos
4 videos
2 files
633 links
发布个人博客(主页 codedump.info)、想法、推荐等。RSS订阅地址:https://rsshub.app/telegram/channel/codedump_notes,过往汇总搜索可以到:https://app.shokichan.com/c/tg/codedump_notes。
Download Telegram
#文章
How to Write Software With Mathematical Perfection

一篇对Lamport的采访,里面这句话印象深刻:

“What that involves is basically not trying to write algorithms in a programming language: If you really want to do things right, you need to write your algorithm in the terms of mathematics.”

下一步该学学TLA+了:)
👍9🔥1
#杂
https://twitter.com/Carlos_Gong/status/1549002811056484352

“经历过 90 年代国企员工大下岗+公务员发不满薪+教师靠补课和经营学生居家寄宿业务为生的情况,我在我一生的职业选择中都不会相信任何「铁饭碗」。

也想起郑渊洁当年有一个励志鸡汤:铁饭碗不是一辈子在一个地方吃饭,而是一辈子在任何地方都有饭吃。”

我也有类似的经历。赶上90年代末国企改革,那时候亲眼目睹身边很多大人都下岗,从那之后开始对所谓的“体制化“就持怀疑态度。

我最喜欢的两部文艺作品,《肖申克的救赎》和《一只特立独行的猪》,都在讨论”被体制化“的问题,现在回想应该是找到了经历里的共鸣。
👍14
#杂
《阿里人的答案书》

之前知道阿里的PUA话术,但是一直以为只是公司内部流传,没想到还出版成了正式出版物,是我草率了。

图片来自:https://book.douban.com/annotation/116958635/
👍4💩3
#开源项目
腾讯柠檬清理这个项目在github上开源了:

https://github.com/Tencent/lemon-cleaner

不过,看提交记录应该不是以github为第一提交现场的,应该是定期从公司内部的私有仓库同步代码到github上。

所谓“开源”,并不仅仅是看到源代码,还包括issue、ci记录、以及相关的各种讨论等等,这种“同步代码式”的开源实际上少了很多中间过程,他人看到的只是结果,而且由于没有上面的那些讨论等等,并不能让社区开发者来贡献到项目中。

类似“同步代码式”的大公司开源项目,还有蚂蚁集团的OceanBase。
😁4👍2
#杂
我看了某司号称很多重构的大版本,里面存元数据的模块用的btree实现,遗憾的是这里页面恢复用的journal机制,这个机制像sqlite这样的数据库都是最早使用的,属于20年前的技术了,后面都换成了WAL机制做页面备份恢复。

我不知道是去哪里找(或抄)的这个思路,但是这样做的效率不会高,而且涉及文件格式的东西,一旦确定后面就很难改了😇😇

关于journal和WAL这两种机制在sqlite中实现的分析,可以参考我博客的系列文章:
sqlite3.36版本 btree实现系列文章》
👍9
#杂
看到的一首据称是外卖骑手的王计兵写的现代诗《赶时间的人》,这也算是这个时代一个群体的众生相了:


从空气里赶出风 从风里赶出刀子

从骨头里赶出火 从火里赶出水

赶时间的人没有四季 只有一站和下一站

世界是一个地名 王庄村也是

每天我都能遇到 一个个飞奔的外卖员

用双脚锤击大地 在这个人间不断地淬火

(原始出处未知)
👍4
#工具
日常需要在各种应用里面切换输入法,比如到了写代码相关的应用(终端、vscode等)大概率希望是英文输入法,但是到了需要输入中文的应用(IM、文档工具等)就大概率希望是中文输入法,来回切换输入法是个很细碎的事情。

keyboardholder 这个应用能自定义不同应用的输入法规则,解决这些问题。
👍2
#设计模式
看到推友关于设计模式的一句话:“设计模式的本质是为了弥补语言抽象能力不足产生的东西。比如 visitor 模式也就 OOP 在用,支持点 pattern matching / lambda 的 FP 向语言基本不用。”

我是比较同意这个说法的,写多了Rust之类的非OOP语言,确实没怎么感觉设计模式的存在,因为非OOP类语言自有自己的一套解决这类问题的方案。

不过,这并不意味着设计模式就一点都不值得学习,某种程度上我认为设计模式教会了我:在哪些地方,常用哪些招式来封装变化,每个招式都有哪些优缺点,等等。“封装变化”以使项目更好得适应变化、高内聚低耦合等等,就与具体的语言无关了,是软件设计都必须面对的问题。而至于当时初学时为了设计模式而用设计模式导致的过度封装,又是另外一回事了。

https://twitter.com/the_foreverbell/status/1553780395778654208
👍17
#文章

《【老万】谷歌新语言 Carbon 能干翻 C++ 吗?》

乍一看题目,是那种标题党文章,但是作者之前在Google(按文章的说法参与了gtest、gmock等google开源的C++项目开发)与Carbon作者有过共事和近距离接触,姑且当靠谱些的技术八卦看吧。
👍12
#Rust

Rust里面的宏有点难度,以至于要单独拿出来写一份专门的教程了:
The Little Book of Rust Macros
9👍3
#技术推
这条推下面的讨论太好玩了:

“职业生涯见过的最脑洞大开的代码是在10多年前的一个C++网络游戏项目。
大致情况是在服务端new一结构体,设置好相关字段后把指针放在消息包里传给客户端。
刚毕业的我直接被惊掉下巴:指针是服务器的内存地址,发到客户端怎么能用呢?而且指针也没留副本,那个结构体不会内存泄漏吗?
👇评论区揭晓答案”

( 原推链接:https://twitter.com/disksing/status/1555444153588543488

其中提到了 TensorFlow的一个优化,做法如截图,可以说是大开眼界了。

《案例分享 | TensorFlow 大规模稀疏模型异步训练的分布式优化》
👍9
#博客
《周刊(第23期):图解Blink-Tree:B+Tree的一种并发优化结构和算法》

引言:《Efficient Locking for Concurrent Operations on B-Trees 》论文中提出了一种称为“Blink-Tree”的数据结构,这个数据结构提供了B+Tree并发访问的一些优化方式,本文对这篇论文进行解读。

公众号:https://mp.weixin.qq.com/s/Yb6OcCoM_Hhc4U8ESTYVbg
博客:https://www.codedump.info/post/20220807-weekly-23/
邮件订阅:https://www.getrevue.co/profile/lichuang
👍4
#文章
早上起来,翻知乎读到姚勇的一篇文章:

《软件技术人员的瓶颈,35岁之后做准备》

很同意里面的一句话:“我发现对一个程序员最大的阻碍,就是一种对解决问题极限难度的感受。 他决定了你最差的情况。或者收入。这个很有可能和性格有关。半天生。”

这个素质天生与否不好说,但是同意前半句面对难题的态度决定了这个人在技术方向上的走向。

BTW:姚勇是前水木清华成员,作家王小波的侄子,主业现在应该是游戏公司的老板,可以看看百度百科对他的介绍
👍22😁1