This media is not supported in your browser
VIEW IN TELEGRAM
#杂
这个动图通过物理的实验演示了一下有的时候最短路径并非最快路径。
数学里有一个结论“两点之间直线最短”,可是注意了这个说法里只说“最短”,并没有说一定“最快”。
以前总以为很直接的做一些事情能够最快得达到目的,因为背后有这个直线最短的理论支撑(理工傻直男)。
经历很多捶打之后,慢慢理解一些事情要圆滑、妥协、曲线前进,因为假如你非得走所谓的“直线”,路上的阻碍不见得一定比绕点弯路就少。
回过头看这个动图里的演示,才恍然大悟:其实“长短”更多是一个数学上的概念,只交待了距离维度而没有时间维度,“快慢”则是物理上的概念。用各自领域来解释都没错,错在了自己看问题的维度不够。
这个动图通过物理的实验演示了一下有的时候最短路径并非最快路径。
数学里有一个结论“两点之间直线最短”,可是注意了这个说法里只说“最短”,并没有说一定“最快”。
以前总以为很直接的做一些事情能够最快得达到目的,因为背后有这个直线最短的理论支撑(理工傻直男)。
经历很多捶打之后,慢慢理解一些事情要圆滑、妥协、曲线前进,因为假如你非得走所谓的“直线”,路上的阻碍不见得一定比绕点弯路就少。
回过头看这个动图里的演示,才恍然大悟:其实“长短”更多是一个数学上的概念,只交待了距离维度而没有时间维度,“快慢”则是物理上的概念。用各自领域来解释都没错,错在了自己看问题的维度不够。
👍30
#八卦
《当年 1.6 亿美金估值的公司—— Digg 是如何被一句 Python 函数可变默参毁掉的》
来源于对文章《Digg's v4 launch: an optimism born of necessity.》的整理。
这个故事也太戏剧了。
按说查一个Python服务的内存泄露应该不难,另外即便一时半会解决不了也还是有别的办法顶一下的,说到底是技术不行?
《当年 1.6 亿美金估值的公司—— Digg 是如何被一句 Python 函数可变默参毁掉的》
来源于对文章《Digg's v4 launch: an optimism born of necessity.》的整理。
这个故事也太戏剧了。
按说查一个Python服务的内存泄露应该不难,另外即便一时半会解决不了也还是有别的办法顶一下的,说到底是技术不行?
V2EX
当年 1.6 亿美金估值的公司—— Digg 是如何被一句 Python 函数可变默参 毁掉的 - V2EX
Python - @est - https://lethain.com/digg-v4/太戏剧性了。画重点:2011 年,Google 推出「 Panda 」 机制动摇了很多老的 SEO 手段,digg 流量被腰斩。
👍7
#推特
作者用推特thread简单总结阐述了现在主要的经济观念,由于这个领域我不懂,于是就只是纯转发做了标记以后看到相关的可以回顾一下。
https://twitter.com/myanTokenGeek/status/1564855220617695232
BTW:作者孟岩是以前CSDN上很出名的那位孟岩,早年知道他还是《程序员》杂志刚创办的时候,现在CSDN的 博客 还在。
作者用推特thread简单总结阐述了现在主要的经济观念,由于这个领域我不懂,于是就只是纯转发做了标记以后看到相关的可以回顾一下。
https://twitter.com/myanTokenGeek/status/1564855220617695232
BTW:作者孟岩是以前CSDN上很出名的那位孟岩,早年知道他还是《程序员》杂志刚创办的时候,现在CSDN的 博客 还在。
blog.csdn.net
myan的博客_CSDN博客-产业,技术,CSDN和《程序员》杂志领域博主
myan擅长产业,技术,CSDN和《程序员》杂志,等方面的知识
👍3
#sqlite
这个叫 fly.io 的网站博客上,分享了好些sqlite的实现文章:
《SQLite Internals: Pages & B-trees》
《How SQLite Helps You Do ACID》
《How SQLite Scales Read Concurrency》
另外不知道是我最近研究sqlite的缘故,感觉对比以前能看到的各种玩sqlite的姿势越来越多了。
这个叫 fly.io 的网站博客上,分享了好些sqlite的实现文章:
《SQLite Internals: Pages & B-trees》
《How SQLite Helps You Do ACID》
《How SQLite Scales Read Concurrency》
另外不知道是我最近研究sqlite的缘故,感觉对比以前能看到的各种玩sqlite的姿势越来越多了。
Fly
SQLite Internals: Pages & B-trees
Let's open a hex editor and see what this thing is made of
👍3
#杂
偶然在推上看到有推友讨论《深入理解UNIX系统内核》这本书,译者之一的李雨正好是我之前的同事,他的故事也比较“传奇”。
中专学历出身(上世纪90年代中,因为好的中专包工作分配,还能去当时还挺吃香的事业单位,所以有好些成绩好的初中毕业生初中毕业以后选择了读中专,李雨就是这种情况),后来中专毕业之后,到运营商工作,从事入户安装网络之类的工作。不知道咋回事开始对刚刚兴起的Linux感兴趣,于是就开始自学编程,加入一家当时在中国做开源Linux桌面系统的公司,一步一步搞起了Linux,后面又开始接触Linux内核编程。
再后来,到了淘宝刚组建的Linux内核组工作正儿八经开始了Linux内核编程相关的工作,好像最后做到了阿里P8级别。华为开始组建自己的OS内核实验室之后,跳到华为从事自主OS内核的开发。
以“华为 李雨”为关键字,能在网上搜到他的一篇PPT。
他的故事又(为什么我说“又”)是一个“异常样本”,但在我看来样本提供的就是各种“可能性”。
偶然在推上看到有推友讨论《深入理解UNIX系统内核》这本书,译者之一的李雨正好是我之前的同事,他的故事也比较“传奇”。
中专学历出身(上世纪90年代中,因为好的中专包工作分配,还能去当时还挺吃香的事业单位,所以有好些成绩好的初中毕业生初中毕业以后选择了读中专,李雨就是这种情况),后来中专毕业之后,到运营商工作,从事入户安装网络之类的工作。不知道咋回事开始对刚刚兴起的Linux感兴趣,于是就开始自学编程,加入一家当时在中国做开源Linux桌面系统的公司,一步一步搞起了Linux,后面又开始接触Linux内核编程。
再后来,到了淘宝刚组建的Linux内核组工作正儿八经开始了Linux内核编程相关的工作,好像最后做到了阿里P8级别。华为开始组建自己的OS内核实验室之后,跳到华为从事自主OS内核的开发。
以“华为 李雨”为关键字,能在网上搜到他的一篇PPT。
他的故事又(为什么我说“又”)是一个“异常样本”,但在我看来样本提供的就是各种“可能性”。
👍24
#博客
《周刊(第24期):sqlite并发读写的演进之路》
本文梳理sqlite并发读写方案的演进之路,已经介绍现在看到几个可能的优化方案。
公众号:https://mp.weixin.qq.com/s/9Y1EfzM5cups9oklByAW5Q
博客:https://www.codedump.info/post/20220904-weekly-24/
邮件订阅:https://www.getrevue.co/profile/lichuang/add_subscriber
《周刊(第24期):sqlite并发读写的演进之路》
本文梳理sqlite并发读写方案的演进之路,已经介绍现在看到几个可能的优化方案。
公众号:https://mp.weixin.qq.com/s/9Y1EfzM5cups9oklByAW5Q
博客:https://www.codedump.info/post/20220904-weekly-24/
邮件订阅:https://www.getrevue.co/profile/lichuang/add_subscriber
Weixin Official Accounts Platform
周刊(第24期):sqlite并发读写的演进之路
本文梳理sqlite并发读写方案的演进之路。
👍8
#杂
我最近特别喜欢“迭代”这个词,尽管这个词现在已经成为一众互联网黑话词中的一员,更多时候用起来都是个梗而已。
之所以喜欢“迭代”,是因为这个词自带了“时间”属性,即认为事物的当前状态只是当前的状态而已,状态可能随着时间流逝发生改变。
当说到“迭代一件事情”时,隐含了以下的情况:
* 它现在可能并不完美,还有很多问题。注意是“现在”,当说“现在”时相当于这个状态是时间序列上的一个点、一个切面上的状态;
* 可以对它进行改进,让它更好一些;
* 即它的状态并不是一成不变的,而是可能随着时间变化发生改变,且能够往更好的方向走的;
* 尽管可能通过改进会更好一些,但是仍然可能继续存在很多问题也并不完美。因为即便改进了也是将来的“现在”的某个状态;
* 尽管在各个对它改进的时间点都可能不完美,但是接受这样的状态,并且相信能继续往前推进让它更好一点。
换言之,“迭代”这个词隐含了一种:接受当前现状、对后续改动开放并且保持乐观的心理状态,并且还能够以一种流动的时间视角去看待事物的发展,而不是在一个时间节点看到某个状态就下定论。
我最近特别喜欢“迭代”这个词,尽管这个词现在已经成为一众互联网黑话词中的一员,更多时候用起来都是个梗而已。
之所以喜欢“迭代”,是因为这个词自带了“时间”属性,即认为事物的当前状态只是当前的状态而已,状态可能随着时间流逝发生改变。
当说到“迭代一件事情”时,隐含了以下的情况:
* 它现在可能并不完美,还有很多问题。注意是“现在”,当说“现在”时相当于这个状态是时间序列上的一个点、一个切面上的状态;
* 可以对它进行改进,让它更好一些;
* 即它的状态并不是一成不变的,而是可能随着时间变化发生改变,且能够往更好的方向走的;
* 尽管可能通过改进会更好一些,但是仍然可能继续存在很多问题也并不完美。因为即便改进了也是将来的“现在”的某个状态;
* 尽管在各个对它改进的时间点都可能不完美,但是接受这样的状态,并且相信能继续往前推进让它更好一点。
换言之,“迭代”这个词隐含了一种:接受当前现状、对后续改动开放并且保持乐观的心理状态,并且还能够以一种流动的时间视角去看待事物的发展,而不是在一个时间节点看到某个状态就下定论。
👍15
#函数式编程
最近在看Clojure这门函数式编程语言,找到一个不错的对函数式编程特点的入门介绍:“命令式编程与函数式编程的主要区别:
“命令式编程关注的是"what",即"做什么",它按步骤规定程序要做的事情,并在这一过程中改变状态(计算机的内存、硬盘);
声明式编程,或者更确切些,函数式编程关注的是"how",即"怎么做",它描述处理数据的方式(定义函数),组合这些"方式",来完成对数据的处理。
命令式编程更加贴合机器的结构;函数式编程更加贴合数学与人的抽象思维。”
在线演示版本:《函数式编程入门》
PDF版本:https://www.yichenxu.me/files/talks/fp/Handout.pdf
最近在看Clojure这门函数式编程语言,找到一个不错的对函数式编程特点的入门介绍:“命令式编程与函数式编程的主要区别:
“命令式编程关注的是"what",即"做什么",它按步骤规定程序要做的事情,并在这一过程中改变状态(计算机的内存、硬盘);
声明式编程,或者更确切些,函数式编程关注的是"how",即"怎么做",它描述处理数据的方式(定义函数),组合这些"方式",来完成对数据的处理。
命令式编程更加贴合机器的结构;函数式编程更加贴合数学与人的抽象思维。”
在线演示版本:《函数式编程入门》
PDF版本:https://www.yichenxu.me/files/talks/fp/Handout.pdf
www.yichenxu.me
Introduction to Functional Programming
The Hovercraft! tutorial.
👍19
#databend
《活动推荐|Data Infra 研究社第四期》
databend项目开始有使用用户了,这一期请来Dmall 数据库负责人来分享在项目中使用databend来做数据归档、节省成本的一些实践经验。
《活动推荐|Data Infra 研究社第四期》
databend项目开始有使用用户了,这一期请来Dmall 数据库负责人来分享在项目中使用databend来做数据归档、节省成本的一些实践经验。
Weixin Official Accounts Platform
活动推荐|Data Infra 研究社第四期
【Data Infra 研究社】来到了我们的第四期活动,本期的内容我们定位在和【数据归档】相关的内容,特邀请
👍5
#推荐
OI(Olympiad in Informatics,信息学奥林匹克竞赛)在中国起源于 1984 年,是五大高中学科竞赛之一。OI Wiki,致力于成为一个免费开放且持续更新的 编程竞赛(competitive programming) 知识整合站点,大家可以在这里获取与竞赛相关的、有趣又实用的知识。
OI(Olympiad in Informatics,信息学奥林匹克竞赛)在中国起源于 1984 年,是五大高中学科竞赛之一。OI Wiki,致力于成为一个免费开放且持续更新的 编程竞赛(competitive programming) 知识整合站点,大家可以在这里获取与竞赛相关的、有趣又实用的知识。
oi-wiki.org
OI Wiki - OI Wiki
OI Wiki 是一个编程竞赛知识整合站点,提供有趣又实用的编程竞赛知识以及其他有帮助的内容,帮助广大编程竞赛爱好者更快更深入地学习编程竞赛
👏1
#杂
我今天看sqlite btree的平衡实现,一个感想就是树形结构的实现比其他诸如链表、数组之类的结构复杂多了。
任何树形的数据结构,都要满足某种程度上的平衡,维持这个“平衡”的操作十分复杂。红黑树、B-Tree都需要在平衡被破坏之后,马上进行自下而上的平衡操作。比如截图中sqlite的负责平衡的函数,实现长达800多行,这还只是平衡算法其中的一种情况。
除此之外,中间的corner case的测试也很多,构造出测试的用例数据也难,如果不能覆盖所有场景,很难拍板说这个实现针对任何数据都是对的。
而链表之类的可就简单多了,除了头尾节点跟链表上的其他节点略有不同以外,其他都一致,这意味着边界情况很少。
这可能也是现在LSM类型的存储比Btree类型要流行得多的原因。
我今天看sqlite btree的平衡实现,一个感想就是树形结构的实现比其他诸如链表、数组之类的结构复杂多了。
任何树形的数据结构,都要满足某种程度上的平衡,维持这个“平衡”的操作十分复杂。红黑树、B-Tree都需要在平衡被破坏之后,马上进行自下而上的平衡操作。比如截图中sqlite的负责平衡的函数,实现长达800多行,这还只是平衡算法其中的一种情况。
除此之外,中间的corner case的测试也很多,构造出测试的用例数据也难,如果不能覆盖所有场景,很难拍板说这个实现针对任何数据都是对的。
而链表之类的可就简单多了,除了头尾节点跟链表上的其他节点略有不同以外,其他都一致,这意味着边界情况很少。
这可能也是现在LSM类型的存储比Btree类型要流行得多的原因。
👍8
#三体
腾讯和Netflix分别发布了《三体》电视剧版本的预告片,预计都会在2023年面世。
先说Netflix版本。在我眼里,《三体》是带有一些东方哲学色彩的科幻片,比如罗辑最后并不是想办法消灭了三体人,而是有某种手段达成了与三体人之间的一种平衡:你不来犯我,我也不会灭你。按照以往欧美拍摄东方色彩故事上的表现,比如《花木兰》,感觉欧美人要理解带有中国色彩的故事来,不一定能说得好。再来的一个担心是,《三体》主要的故事背景都在中国,这意味着需要大量的亚裔(面孔)的演员,好像在好莱坞找到这一大批优秀的亚裔演员有点困难,我看了一下豆瓣页面上奈飞版本的演员表,基本都是欧美演员,这个就让我有点摸不着头脑了。(附:《三体》网飞官宣的12名演员,认识一下)
再说腾讯版本。最大的担忧是不知道怎么讲好《三体》第一部的女主角叶文洁在文革期间的遭遇而逐渐黑化的故事。目前在国内的尺度上,WG不是不可以谈,但是怎么谈、谈到什么程度,不好把握,但是要讲好叶文洁这个人物又不得不谈,这就比较考验编剧的能力了。第二个担忧是,国内科幻剧的制作经验较少,能不能拍好一部科幻巨作,也存疑。
总而言之,在今天看到奈飞的预告片和演员表之后,我倒是觉得:奈飞版本不一定就会比腾讯版本更好、更接近于原著,等到时候上映了再看看吧。
腾讯版三体预告片 Netflix版三体预告片
腾讯和Netflix分别发布了《三体》电视剧版本的预告片,预计都会在2023年面世。
先说Netflix版本。在我眼里,《三体》是带有一些东方哲学色彩的科幻片,比如罗辑最后并不是想办法消灭了三体人,而是有某种手段达成了与三体人之间的一种平衡:你不来犯我,我也不会灭你。按照以往欧美拍摄东方色彩故事上的表现,比如《花木兰》,感觉欧美人要理解带有中国色彩的故事来,不一定能说得好。再来的一个担心是,《三体》主要的故事背景都在中国,这意味着需要大量的亚裔(面孔)的演员,好像在好莱坞找到这一大批优秀的亚裔演员有点困难,我看了一下豆瓣页面上奈飞版本的演员表,基本都是欧美演员,这个就让我有点摸不着头脑了。(附:《三体》网飞官宣的12名演员,认识一下)
再说腾讯版本。最大的担忧是不知道怎么讲好《三体》第一部的女主角叶文洁在文革期间的遭遇而逐渐黑化的故事。目前在国内的尺度上,WG不是不可以谈,但是怎么谈、谈到什么程度,不好把握,但是要讲好叶文洁这个人物又不得不谈,这就比较考验编剧的能力了。第二个担忧是,国内科幻剧的制作经验较少,能不能拍好一部科幻巨作,也存疑。
总而言之,在今天看到奈飞的预告片和演员表之后,我倒是觉得:奈飞版本不一定就会比腾讯版本更好、更接近于原著,等到时候上映了再看看吧。
腾讯版三体预告片 Netflix版三体预告片
Bilibili
《三体》网飞官宣的12名演员,认识一下,作为原著党,我对演员没意见,对编剧和可能的ZZZQ很绝望_哔哩哔哩_bilibili
-, 视频播放量 556272、弹幕量 1020、点赞数 3376、投硬币枚数 20、收藏人数 339、转发人数 624, 视频作者 一天不打工浑身难受1, 作者简介 想做一只快乐的土狗,相关视频:【半佛】三体之后,刘慈欣又整了什么活?,只有他,直接与农场主对决是什么梗【梗科普】,网飞版三体的阵容如下!你期待吗?,【三体动画问候ID】刘慈欣:《三体》动画要来了,【三体】球状闪电,【三体动画】重磅来袭 明日开播,Netflix网飞版《三体》首曝预告,网飞三体新预告:罗辑威慑三体人,科幻动画《三体》正式开播…
👍3
#杂
我记得在微软收购了Github之后,由于有了有钱的金主爸爸,于是Github上可以随便开private仓库了。
这个对我来说最大的影响就是,我能把我阅读项目代码的注释直接放到这些私人仓库里面了。
一般来说,“阅读一个项目源代码”我有两方面的输出:
* 整理清楚思路之后写代码分析类的文章。
* 还没整理清楚的时候就直接一边看一边在代码里写注释。
第二个工作其实才是常态。这种一边读一边留注释的过程,有时候感觉就是跟作者在通过代码在交流;如果这份代码之前没什么人看过,又会有一种考古队员擦拭考古出来的东西逐步还原本来面目的感觉。
截图是最近在看sqlite btree平衡算法的实现,对我来说很难看懂,但是大部分时候,最终整理发表的那些代码分析类文章,就是这样一点一点扣细节给扣出来的。
我记得在微软收购了Github之后,由于有了有钱的金主爸爸,于是Github上可以随便开private仓库了。
这个对我来说最大的影响就是,我能把我阅读项目代码的注释直接放到这些私人仓库里面了。
一般来说,“阅读一个项目源代码”我有两方面的输出:
* 整理清楚思路之后写代码分析类的文章。
* 还没整理清楚的时候就直接一边看一边在代码里写注释。
第二个工作其实才是常态。这种一边读一边留注释的过程,有时候感觉就是跟作者在通过代码在交流;如果这份代码之前没什么人看过,又会有一种考古队员擦拭考古出来的东西逐步还原本来面目的感觉。
截图是最近在看sqlite btree平衡算法的实现,对我来说很难看懂,但是大部分时候,最终整理发表的那些代码分析类文章,就是这样一点一点扣细节给扣出来的。
👍39
#推荐
Databend中使用了petgraph这个图数据结构库,看到其中的一位核心开发XVilka的Github,一路又深度遍历了一下其它资料,技能栈感觉是又深又广。
推特上个人的介绍页面写着:“Reverse engineer. Firmware dissector. Rizin&Cutter developer. GitHub influencer. Foreign languages fanatic. OCamler and Rustacean. Loves to C into the void.”
看项目应该主要在逆向工程这方面,有几个不错的项目:
https://github.com/radareorg/radare2
https://rizin.re/
看名字“Anton Kochkov”应该是个东欧(可能俄罗斯)人,看个人简介生活地点又在上海,感觉是个在上海生活的老外,总之是强的一逼。(附:另外的朋友找到的油管视频:https://www.youtube.com/watch?v=iTKra0XD6z4)
所以以后,看到好东西的时候,不妨“深度遍历”看看:)
Databend中使用了petgraph这个图数据结构库,看到其中的一位核心开发XVilka的Github,一路又深度遍历了一下其它资料,技能栈感觉是又深又广。
推特上个人的介绍页面写着:“Reverse engineer. Firmware dissector. Rizin&Cutter developer. GitHub influencer. Foreign languages fanatic. OCamler and Rustacean. Loves to C into the void.”
看项目应该主要在逆向工程这方面,有几个不错的项目:
https://github.com/radareorg/radare2
https://rizin.re/
看名字“Anton Kochkov”应该是个东欧(可能俄罗斯)人,看个人简介生活地点又在上海,感觉是个在上海生活的老外,总之是强的一逼。(附:另外的朋友找到的油管视频:https://www.youtube.com/watch?v=iTKra0XD6z4)
所以以后,看到好东西的时候,不妨“深度遍历”看看:)
GitHub
GitHub - petgraph/petgraph: Graph data structure library for Rust.
Graph data structure library for Rust. Contribute to petgraph/petgraph development by creating an account on GitHub.
👍12