#Rust
《The What and How of Futures and async/await in Rust》
哥们真是硬核,开着视频敲代码生生讲了4个小时,但是我自己看下来感觉这样的效率对观众来说可能并不算高:
* 不能搜索里面的关键字,这导致回头想精准得看其中的一部分比较麻烦
* 听力问题可能有一些表达听不懂(清楚)
* 中间有一些表达作者感觉还在酝酿更好、准确的表达,这些时间被浪费了。
所以我感觉还是写成文档会更好一些,现在我把“写文档”类比成内存里的数据落盘,而数据在落盘之前都会被规整成一个更合理的格式的。
《The What and How of Futures and async/await in Rust》
哥们真是硬核,开着视频敲代码生生讲了4个小时,但是我自己看下来感觉这样的效率对观众来说可能并不算高:
* 不能搜索里面的关键字,这导致回头想精准得看其中的一部分比较麻烦
* 听力问题可能有一些表达听不懂(清楚)
* 中间有一些表达作者感觉还在酝酿更好、准确的表达,这些时间被浪费了。
所以我感觉还是写成文档会更好一些,现在我把“写文档”类比成内存里的数据落盘,而数据在落盘之前都会被规整成一个更合理的格式的。
YouTube
The What and How of Futures and async/await in Rust
Futures are Rust's way of expressing asynchronous computations, but even after reading the documentation, it can be hard to figure out how all the pieces of futures (and tokio) fit together. While this may not matter too much if you're just *using* futures…
👍5
#杂
最近《一年一度喜剧大赛》第二季开播,我看了觉得挺好笑(神经)的,于是找来第一季的节目补课。
第一季的节目里,有一集叫《最后一课》的节目,大体梗概是:戏剧学院毕业的优秀生蒋龙,由于找不到工作到密室逃脱里扮演NPC,被大学老师撞见,于是就在这个密室里展开了故事。
这个故事的现实意义是:很多人从学校出来,都是一腔热血觉得能干出一番事业,可是总是要遭受一些打击,有时候还不得不向生活低头,就像这里为了生活扮演NPC的蒋龙。
这个故事的内核无疑是个悲剧,但是却以喜剧的形式表达展现给观众,没有强行上价值、升华,很多人都在这个故事里看到了自己曾经的样子。
最近《一年一度喜剧大赛》第二季开播,我看了觉得挺好笑(神经)的,于是找来第一季的节目补课。
第一季的节目里,有一集叫《最后一课》的节目,大体梗概是:戏剧学院毕业的优秀生蒋龙,由于找不到工作到密室逃脱里扮演NPC,被大学老师撞见,于是就在这个密室里展开了故事。
这个故事的现实意义是:很多人从学校出来,都是一腔热血觉得能干出一番事业,可是总是要遭受一些打击,有时候还不得不向生活低头,就像这里为了生活扮演NPC的蒋龙。
这个故事的内核无疑是个悲剧,但是却以喜剧的形式表达展现给观众,没有强行上价值、升华,很多人都在这个故事里看到了自己曾经的样子。
YouTube
《最后一课》落魄学生重遇老师上演社死现场 优秀演员沦为鬼屋NPC不愿再提往事 | 一年一度喜剧大赛 EP05 | Super Sketch Show | iQiyi精选
观看《一年一度喜剧大赛》敬请登录iQiyi国际版或下载iQiyi国际版APP,每周五20:00更新一期,还有更多独家资源等着你: www.iq.com!
iQiyi国际版APP:http://bit.ly/iqjxapp
iQiyi国际版:http://bit.ly/iqjxweb
《一年一度喜剧大赛》是一档由iQiyi、米未联合出品并制作的原创新喜剧竞演综艺。节目将通过一群人的作品展演,全方位展现品质优良,类型多样的中国原创新喜剧作品,选拔出创作能力、协作能力、表演能力最突出的团体和个人。
iQiyi精选热门综艺直达:…
iQiyi国际版APP:http://bit.ly/iqjxapp
iQiyi国际版:http://bit.ly/iqjxweb
《一年一度喜剧大赛》是一档由iQiyi、米未联合出品并制作的原创新喜剧竞演综艺。节目将通过一群人的作品展演,全方位展现品质优良,类型多样的中国原创新喜剧作品,选拔出创作能力、协作能力、表演能力最突出的团体和个人。
iQiyi精选热门综艺直达:…
👍3
#杂
中国制霸生成器 – 在地图上标记居住、游玩、去过的地方:https://lab.magiconch.com/china-ex/
我试着标记了一下,分数不算高:东三省没去过、西北地区由于老婆是西北人去了几个省、中部的几个省是以前上大学途径、长三角只去过杭州、南京、绍兴,港澳台一个都没去过。
以前看过一个知乎上的问题,大意是推荐国内小众景点。就我去过的这么少的地方来看,个人推荐甘肃的张掖。张掖属汉武帝时打败匈奴之后设置的所谓“河西四郡”之一,张掖这个名字来源于“張國臂掖,以通西域”,属于一个既有历史文化(往西有敦煌莫高窟、嘉峪关、山丹军马场、马蹄寺),又有优美风景(七彩丹霞、祁连山)的城市,在知乎上可以找到“星球研究所”的一个介绍。
几年前和老婆先飞到敦煌,再沿着河西走廊一路旅游,感慨祖国大好的河山,同时也强烈推荐《河西走廊》这部纪录片。
中国制霸生成器 – 在地图上标记居住、游玩、去过的地方:https://lab.magiconch.com/china-ex/
我试着标记了一下,分数不算高:东三省没去过、西北地区由于老婆是西北人去了几个省、中部的几个省是以前上大学途径、长三角只去过杭州、南京、绍兴,港澳台一个都没去过。
以前看过一个知乎上的问题,大意是推荐国内小众景点。就我去过的这么少的地方来看,个人推荐甘肃的张掖。张掖属汉武帝时打败匈奴之后设置的所谓“河西四郡”之一,张掖这个名字来源于“張國臂掖,以通西域”,属于一个既有历史文化(往西有敦煌莫高窟、嘉峪关、山丹军马场、马蹄寺),又有优美风景(七彩丹霞、祁连山)的城市,在知乎上可以找到“星球研究所”的一个介绍。
几年前和老婆先飞到敦煌,再沿着河西走廊一路旅游,感慨祖国大好的河山,同时也强烈推荐《河西走廊》这部纪录片。
👏5
#数据库
“数据库”这个领域涉及的知识太多,之前还只是了解一些一致性算法和存储引擎的知识,后面开始要学习一下查询相关的知识了,知乎问题《学习数据库优化器如何入手?》的这个回答提供了一些参考的论文:https://www.zhihu.com/question/544427791/answer/2692512370
“数据库”这个领域涉及的知识太多,之前还只是了解一些一致性算法和存储引擎的知识,后面开始要学习一下查询相关的知识了,知乎问题《学习数据库优化器如何入手?》的这个回答提供了一些参考的论文:https://www.zhihu.com/question/544427791/answer/2692512370
Zhihu
学习数据库优化器如何入手? - 知乎
过去一年间,对优化器相关论文做了个系统性的学习,把过程中阅读的论文笔记记录在这里,和大家分享,欢迎…
👍16
#杂
前阵子B站上“二舅治好了我的精神内耗”这个视频,让“精神内耗”这个词小火了一把。
据我观察自己,“内耗”好些时候还是自己造成,或者可以通过对自己的一些“心理干预”给减少的,不然也不会被称为“内耗”了,这时候就要搬出那段“宁静祷文”了:
“
God,
Grant me
the serenity to accept the thing I cannot change,
the courage to change the thing I can change,
and wisdom to separate the difference.
神啊.
.请赐与我宁静,好让我能接受,我无法改变的事情
.请赐与我勇气,好让我能改变,我能去改变的事情
.请赐与我睿智,好让我能区别,以上这两者的不同
”
我记得这段话最早我还是在大学时期有一次听李开复的现场演讲听他说的,这么多年如此简单的一句话都得反复修炼才可以,而且还是时不时的犯。
“知易行难”,以前有个描述“懂得很多道理还是过不好这一生”,从这里来看,“懂得道理”距离自己的“实践”,中间的距离还是非常非常大的。
前阵子B站上“二舅治好了我的精神内耗”这个视频,让“精神内耗”这个词小火了一把。
据我观察自己,“内耗”好些时候还是自己造成,或者可以通过对自己的一些“心理干预”给减少的,不然也不会被称为“内耗”了,这时候就要搬出那段“宁静祷文”了:
“
God,
Grant me
the serenity to accept the thing I cannot change,
the courage to change the thing I can change,
and wisdom to separate the difference.
神啊.
.请赐与我宁静,好让我能接受,我无法改变的事情
.请赐与我勇气,好让我能改变,我能去改变的事情
.请赐与我睿智,好让我能区别,以上这两者的不同
”
我记得这段话最早我还是在大学时期有一次听李开复的现场演讲听他说的,这么多年如此简单的一句话都得反复修炼才可以,而且还是时不时的犯。
“知易行难”,以前有个描述“懂得很多道理还是过不好这一生”,从这里来看,“懂得道理”距离自己的“实践”,中间的距离还是非常非常大的。
👍12❤4
《云上弹性数仓建设|Data Infra 研究社第五期》
本期邀请了F叔分享云数仓的架构,BTW:F叔还是著名开源项目pualang的作者:https://github.com/flaneur2020/pua-lang
本期邀请了F叔分享云数仓的架构,BTW:F叔还是著名开源项目pualang的作者:https://github.com/flaneur2020/pua-lang
Weixin Official Accounts Platform
云上弹性数仓建设|Data Infra 研究社第五期
🥰1
#Rust
Rust Analyzer 作者亲自教你如何 hack 它:https://www.youtube.com/watch?v=I3RXottNwk0&feature=youtu.be
原推:https://twitter.com/RustTalk/status/1582916057093656576
Rust Analyzer 作者亲自教你如何 hack 它:https://www.youtube.com/watch?v=I3RXottNwk0&feature=youtu.be
原推:https://twitter.com/RustTalk/status/1582916057093656576
YouTube
Explaining Rust Analyzer: 01 Repository Overview
Discussion: https://rust-lang.zulipchat.com/#narrow/stream/185405-t-compiler.2Frust-analyzer/topic/ERA.20series
Playlist: https://www.youtube.com/playlist?list=PLhb66M_x9UmrqXhQuIpWC5VgTdrGxMx3y
Playlist: https://www.youtube.com/playlist?list=PLhb66M_x9UmrqXhQuIpWC5VgTdrGxMx3y
#杂
上一次谈了程序员这个职业给我的最大规训是“错误处理”,其实除此以外还有别的思维锻炼,打算逐个聊聊,今天聊“压力测试”。
做C端的同学可能不太了解“压力测试(benchmark)”的概念,简单做个说明。
比方一个服务在上线之前,业务的可用性(Availability)要求99%的请求都在10ms返回,这时候就需要测试这个服务在多大并发请求下能达到这个指标。
有了这个数据之后,根据估算出来的业务同时并发数量,可以来反推需要多少服务器才能满足前面的可用性指标。
这里只是最简单的介绍,实际上线时要考虑压力测试一般都是在理想情况下做出来的,另外还要给系统一定的冗余度(尽量不要刚好到水位的阈值),所以需要给前面的测试数据打一个折扣。
回到“压力测试”这个话题本身,给我最大的概念就是:(压力)测试环境才能更全面了解一个人(公司、组织)。
比如一个人会说一些很漂亮的话,可一旦面临一些压力,话和动作就会变形;
比如一些公司,说起“愿景”都是很漂亮的话,但是遇到营收压力的时候身体的动作才是最真实的;
比如建筑物,都会给出说明在怎样的压力下能保持多大的耐久度,等等。
简而言之,一个指标、承诺都不是凭空给出的,要看ta当时所处的压力测试环境,结合起来看才能更全面了解。
山本耀司有一段话:“自己”这个东西是看不见的,撞上一些别的什么,反弹回来,才会了解“自己”。 所以,跟很强的东西、可怕的东西、水准很高的东西相碰撞,然后才知道“自己”是什么。我觉得这句话就带有很浓的“压力测试”思维。
再比如,去年在线K12教育团灭,在这个“压力测试”背景下,俞敏洪及新东方的表现让我很意外,这个可能才是更接近于真实的。
“压力测试”给我的第二个规训,是看统计数字的时候不太看“平均值”这个指标,因为这个指标不能反映数据的分布,更好的是看比如“中位数”,即半数以上的数据都在哪个数据线之上,或者9成以上都在哪个数据线以上,这类指标更能反映数据的分布情况。
最后,尽管有压力测试才能更全面了解一个人,但是不建议“压力测试”用在考验人性身上,因为还有一句话:“人性经不起考验”,并不是所有时候都需要足够的理性、客观,有时候也需要“难得糊涂”,要不然活得太累了。
对自己来说,尽管“压力测试”下才能看到更接近于真实的表现,很多时候也不必为自己在压测下的表现感到过分沮丧,相信自己能随着环境、见识等等的变化,能一点一点进步的,一时的表现不能说明一切。
上一次谈了程序员这个职业给我的最大规训是“错误处理”,其实除此以外还有别的思维锻炼,打算逐个聊聊,今天聊“压力测试”。
做C端的同学可能不太了解“压力测试(benchmark)”的概念,简单做个说明。
比方一个服务在上线之前,业务的可用性(Availability)要求99%的请求都在10ms返回,这时候就需要测试这个服务在多大并发请求下能达到这个指标。
有了这个数据之后,根据估算出来的业务同时并发数量,可以来反推需要多少服务器才能满足前面的可用性指标。
这里只是最简单的介绍,实际上线时要考虑压力测试一般都是在理想情况下做出来的,另外还要给系统一定的冗余度(尽量不要刚好到水位的阈值),所以需要给前面的测试数据打一个折扣。
回到“压力测试”这个话题本身,给我最大的概念就是:(压力)测试环境才能更全面了解一个人(公司、组织)。
比如一个人会说一些很漂亮的话,可一旦面临一些压力,话和动作就会变形;
比如一些公司,说起“愿景”都是很漂亮的话,但是遇到营收压力的时候身体的动作才是最真实的;
比如建筑物,都会给出说明在怎样的压力下能保持多大的耐久度,等等。
简而言之,一个指标、承诺都不是凭空给出的,要看ta当时所处的压力测试环境,结合起来看才能更全面了解。
山本耀司有一段话:“自己”这个东西是看不见的,撞上一些别的什么,反弹回来,才会了解“自己”。 所以,跟很强的东西、可怕的东西、水准很高的东西相碰撞,然后才知道“自己”是什么。我觉得这句话就带有很浓的“压力测试”思维。
再比如,去年在线K12教育团灭,在这个“压力测试”背景下,俞敏洪及新东方的表现让我很意外,这个可能才是更接近于真实的。
“压力测试”给我的第二个规训,是看统计数字的时候不太看“平均值”这个指标,因为这个指标不能反映数据的分布,更好的是看比如“中位数”,即半数以上的数据都在哪个数据线之上,或者9成以上都在哪个数据线以上,这类指标更能反映数据的分布情况。
最后,尽管有压力测试才能更全面了解一个人,但是不建议“压力测试”用在考验人性身上,因为还有一句话:“人性经不起考验”,并不是所有时候都需要足够的理性、客观,有时候也需要“难得糊涂”,要不然活得太累了。
对自己来说,尽管“压力测试”下才能看到更接近于真实的表现,很多时候也不必为自己在压测下的表现感到过分沮丧,相信自己能随着环境、见识等等的变化,能一点一点进步的,一时的表现不能说明一切。
Telegram
codedump的电报频道
#杂
做了这些年程序员,这个职业给我日常工作生活最大的“规训”就是“错误处理”。
做一件事情之前,下意识会想:这个事情可能出什么错,错误如何处理,有哪些可以兜底、优雅一些处理这些错误的策略,等等的。
这些下意识的错误处理N板斧,还是很管用的,让我避免了很多可能出错的情况,也有了应对错误的处理机制。
做了这些年程序员,这个职业给我日常工作生活最大的“规训”就是“错误处理”。
做一件事情之前,下意识会想:这个事情可能出什么错,错误如何处理,有哪些可以兜底、优雅一些处理这些错误的策略,等等的。
这些下意识的错误处理N板斧,还是很管用的,让我避免了很多可能出错的情况,也有了应对错误的处理机制。
👍40
#杂
Databend metasrv的Jepsen测试环境,我在README里面写了一下测试的步骤。目前用例还不够丰富,以目前的用例暂未发现服务的问题,后面需要继续丰富用例。
学习Jepsen的流程里,顺便了解(目前的深度确实只能说是“了解”)了一下以下的内容:
* 模型测试(Model Checking)
* 一致性模型(输出了博客一篇:《周刊(第22期):图解一致性模型》)
* Clojure语言和函数式编程。
* 还有很多不懂的...
BTW:Clojure的编码体验真的sucks,编译慢、社区vscode插件几乎没有,给不了太多的编码提示,门槛太高了。
Databend metasrv的Jepsen测试环境,我在README里面写了一下测试的步骤。目前用例还不够丰富,以目前的用例暂未发现服务的问题,后面需要继续丰富用例。
学习Jepsen的流程里,顺便了解(目前的深度确实只能说是“了解”)了一下以下的内容:
* 模型测试(Model Checking)
* 一致性模型(输出了博客一篇:《周刊(第22期):图解一致性模型》)
* Clojure语言和函数式编程。
* 还有很多不懂的...
BTW:Clojure的编码体验真的sucks,编译慢、社区vscode插件几乎没有,给不了太多的编码提示,门槛太高了。
GitHub
GitHub - datafuselabs/jepsen.meta: databend metasrv jepsen test unit
databend metasrv jepsen test unit. Contribute to datafuselabs/jepsen.meta development by creating an account on GitHub.
👍3
#播客
《ep.3 多抓鱼:“我最大的兴趣是发明永动机”》
做为多抓鱼的深度用户,这还是我第一次知道创始人是谁,这个叫“猫助”的老板,好像是我听了这么多次播客最爱笑的嘉宾,而且思路清晰、逻辑清楚,总之很加分。
可惜的就是这个主持人,问的都是些什么玩意儿,尤其到后面和什么web 3的DAO扯到一起,被猫助一顿批判,这个主持人的素质有点对不住嘉宾的素质,没能问出一些更好的问题。
继续深度遍历了一下,找到了猫助之前在一席上的演讲视频:《【一席】多抓鱼 猫助:在中国开一家二手书店》
按照她自己说法,履历大概是节目导演(我查了一下中国传媒大学毕业)出身,后来去了知乎、阿里,最后2017年出来创办了多抓鱼,这个跨度很是挺大的。
《ep.3 多抓鱼:“我最大的兴趣是发明永动机”》
做为多抓鱼的深度用户,这还是我第一次知道创始人是谁,这个叫“猫助”的老板,好像是我听了这么多次播客最爱笑的嘉宾,而且思路清晰、逻辑清楚,总之很加分。
可惜的就是这个主持人,问的都是些什么玩意儿,尤其到后面和什么web 3的DAO扯到一起,被猫助一顿批判,这个主持人的素质有点对不住嘉宾的素质,没能问出一些更好的问题。
继续深度遍历了一下,找到了猫助之前在一席上的演讲视频:《【一席】多抓鱼 猫助:在中国开一家二手书店》
按照她自己说法,履历大概是节目导演(我查了一下中国传媒大学毕业)出身,后来去了知乎、阿里,最后2017年出来创办了多抓鱼,这个跨度很是挺大的。
Xiaoyuzhoufm
ep.3 多抓鱼:“我最大的兴趣是发明永动机”
听《牌牌坐》上小宇宙。 牌牌坐是一档讨论中国品牌的播客,由企鹅吃喝指南创始人志伟和播客《后浪/HODLong》主理人Mable共同呈现。
每期对话,我们都希望探寻品牌背后的人与初心,成长轨迹与未来愿景。收听愉快!
每期对话,我们都希望探寻品牌背后的人与初心,成长轨迹与未来愿景。收听愉快!
👍8
Media is too big
VIEW IN TELEGRAM
#杂
配置了一下Sublime 4的Rust开发环境,过程不算繁琐,初步体验下来感觉还可以,我用这套环境写一礼拜Rust下来试试看。
我录制了一个我的操作视频,演示了一下Sublime 4操作Rust项目,有一些限于时长没展示出来,目前我需要的功能基本都有了,包括:
* 给出Rust标识符的类型定义、跳转到定义处、列出所有引用的地方。
* 单独运行一个Rust用例。
* 保存Rust文件之后自动格式化、clippy检查、提示错误。
* ctrl+p快捷键能打开项目的任意文件。
* 基本的Vim编辑模式。
(BTW,这里列出了sublime lsp插件的功能点:https://lsp.sublimetext.io/features/)
如果sublime能玩转Rust项目,对比起Vscode来说这个环境就“轻量”了很多,体验会好一些。
我今天也折腾了一下NeoVim的Rust环境,但是折腾下来发现一套全终端的方案并不适合我,没有了弹出菜单有些东西(比如跳转、单独运行某个用例)等功能没有。
配置了一下Sublime 4的Rust开发环境,过程不算繁琐,初步体验下来感觉还可以,我用这套环境写一礼拜Rust下来试试看。
我录制了一个我的操作视频,演示了一下Sublime 4操作Rust项目,有一些限于时长没展示出来,目前我需要的功能基本都有了,包括:
* 给出Rust标识符的类型定义、跳转到定义处、列出所有引用的地方。
* 单独运行一个Rust用例。
* 保存Rust文件之后自动格式化、clippy检查、提示错误。
* ctrl+p快捷键能打开项目的任意文件。
* 基本的Vim编辑模式。
(BTW,这里列出了sublime lsp插件的功能点:https://lsp.sublimetext.io/features/)
如果sublime能玩转Rust项目,对比起Vscode来说这个环境就“轻量”了很多,体验会好一些。
我今天也折腾了一下NeoVim的Rust环境,但是折腾下来发现一套全终端的方案并不适合我,没有了弹出菜单有些东西(比如跳转、单独运行某个用例)等功能没有。
👍11
#数学
知乎上列的一个数学专业书单合集,里面列了一个数学基础课程的分支及学习顺序,我打算把其中最基础的数学分析、线性代数两门基础课学完,再学习最左边的概率论分支以及最右边的图论分支。
暂时来说,纯数学(尤其纯数学专业的非离散数学)对我当前的专业领域用途不大,就是学着来玩的。
https://zhuanlan.zhihu.com/p/549542271
知乎上列的一个数学专业书单合集,里面列了一个数学基础课程的分支及学习顺序,我打算把其中最基础的数学分析、线性代数两门基础课学完,再学习最左边的概率论分支以及最右边的图论分支。
暂时来说,纯数学(尤其纯数学专业的非离散数学)对我当前的专业领域用途不大,就是学着来玩的。
https://zhuanlan.zhihu.com/p/549542271
👍20
#杂
这几天韦易笑在知乎问题《为什么 lua 在游戏开发中应用普遍?》下的回答很火,引来了一些讨论,我也想聊聊我的看法。
我觉得任何产品肯定都是时代的产物,时代的局限性本身就是产品的一部分特性。Lua诞生在上世纪90年代,我记得当年即便是比尔盖茨好像也说过PC电脑只要8MB内存就够了这样的话。在这样局限的硬件环境下诞生的Lua,其特点(卖点)就是小巧精干。换言之,我认为如果都是发展了N年之后的视角再去对比一个诞生于更早之前、诞生环境更严苛的产品,并不算很公平。
回到Lua本身,Lua可能是所有语言里,既能拿来写纯文本配置,又能拿来写代码逻辑且轻量的脚本语言(欢迎补充其它方案)。比如XML、Json等只能称之为“格式”,也就是只能用于表达数据,没办法表达逻辑;其他脚本语言就只能用来表达逻辑,纯表达文本类型的数据也有点困难。
而Lua,恰好两个都能做,这个特点成为了它被时代(再次强调“时代”)选中为那个胶水语言的重要原因。在一些游戏里,想写个插件,里面包含一些配置数据,还有一些插件本身的逻辑,这时候如果要用一个数据格式,还要用一个语言就比较麻烦了,这些麻烦很可能一下子就挡住了那些非程序员的插件开发者。
除此以外,Lua还能实现协程,在早年C、C++没有好的协程方案的时候,这个特性可是太重要了,有了协程的支持就可以用同步的编程方式写异步的代码逻辑。
总而言之,我认为放到上世纪90年代诞生的一门常年只有2W行C代码的脚本语言来说,Lua已经够优秀了。今天对它的很多挑剔,多少有点“关公战秦琼”的意思。
另外,用户自己最后会用脚投票的,谁最有生产效率、综合开发起来最舒服、相关领域的生态更好,等等因素,最后用户自己会实打实地用自己的实践去投票。
最后,Lua的这个既能做为数据格式、又能用来写逻辑的特点,有一点像Sqlite:
* Lua:恰好有一点编程能力的文本文件。
* Sqlite:恰好有一点存储、索引、查询能力的单文件。
这种“单一文件”特性放到嵌入式领域就很吸引人,“单文件”意味着便携(portable)。
这几天韦易笑在知乎问题《为什么 lua 在游戏开发中应用普遍?》下的回答很火,引来了一些讨论,我也想聊聊我的看法。
我觉得任何产品肯定都是时代的产物,时代的局限性本身就是产品的一部分特性。Lua诞生在上世纪90年代,我记得当年即便是比尔盖茨好像也说过PC电脑只要8MB内存就够了这样的话。在这样局限的硬件环境下诞生的Lua,其特点(卖点)就是小巧精干。换言之,我认为如果都是发展了N年之后的视角再去对比一个诞生于更早之前、诞生环境更严苛的产品,并不算很公平。
回到Lua本身,Lua可能是所有语言里,既能拿来写纯文本配置,又能拿来写代码逻辑且轻量的脚本语言(欢迎补充其它方案)。比如XML、Json等只能称之为“格式”,也就是只能用于表达数据,没办法表达逻辑;其他脚本语言就只能用来表达逻辑,纯表达文本类型的数据也有点困难。
而Lua,恰好两个都能做,这个特点成为了它被时代(再次强调“时代”)选中为那个胶水语言的重要原因。在一些游戏里,想写个插件,里面包含一些配置数据,还有一些插件本身的逻辑,这时候如果要用一个数据格式,还要用一个语言就比较麻烦了,这些麻烦很可能一下子就挡住了那些非程序员的插件开发者。
除此以外,Lua还能实现协程,在早年C、C++没有好的协程方案的时候,这个特性可是太重要了,有了协程的支持就可以用同步的编程方式写异步的代码逻辑。
总而言之,我认为放到上世纪90年代诞生的一门常年只有2W行C代码的脚本语言来说,Lua已经够优秀了。今天对它的很多挑剔,多少有点“关公战秦琼”的意思。
另外,用户自己最后会用脚投票的,谁最有生产效率、综合开发起来最舒服、相关领域的生态更好,等等因素,最后用户自己会实打实地用自己的实践去投票。
最后,Lua的这个既能做为数据格式、又能用来写逻辑的特点,有一点像Sqlite:
* Lua:恰好有一点编程能力的文本文件。
* Sqlite:恰好有一点存储、索引、查询能力的单文件。
这种“单一文件”特性放到嵌入式领域就很吸引人,“单文件”意味着便携(portable)。
👍33❤2
Forwarded from 不求甚解
#Web #Chrome
🌍 帮助你每天进步一点的生词本 + 翻译服务 —— Relingo
👀 上周 有介绍 腾讯家出的翻译服务,在推送评论中有朋友推荐 Relingo 这款服务,我也抱着试一试的态度进行了使用,实际体验下来还真是不错,今天就来介绍一下它。
🙌 首先,我之前是比较重度使用彩云小译的,比较看重的是在原有页面中以段落为粒度进行翻译,这一点 Relingo 也有提供,所以让我在第一次使用就非常有好感,整体汇总一下它的特性:
🔹支持根据 CEFR 框架标准设置自己的词汇量;
🔹支持网页中对生词进行不同样式的标记(下划线/单词高亮/右侧注解,以及其中两类的组合样式);
🔹支持网页中的划词和段落翻译;
🔹生词本管理(自动记录、复习、掌握);
🔹支持视频字幕;
🔹支持统计,并可以发送学习概况至邮箱中;
🔹支持多设备同步,并可以导出导入词本;
🔹支持单独屏蔽网站;
🔹支持浅色和深色模式。
💻 Relingo 目前支持 Chrome/Edge/Firefox 浏览器,可以前往相应的商店进行下载,未来还将提供单独的 App。拓展插件可以免费使用,基础功能无限制。也提供付费服务,付费服务提供 DeepL 翻译引擎(无需自己购买 DeepL API)、无限制的跨设备同步、周期记忆等服务。目前 Beta 阶段高级版本享受折扣($ 0.99/月或 $ 29.99/终身 )。
🌍 帮助你每天进步一点的生词本 + 翻译服务 —— Relingo
🔹支持根据 CEFR 框架标准设置自己的词汇量;
🔹支持网页中对生词进行不同样式的标记(下划线/单词高亮/右侧注解,以及其中两类的组合样式);
🔹支持网页中的划词和段落翻译;
🔹生词本管理(自动记录、复习、掌握);
🔹支持视频字幕;
🔹支持统计,并可以发送学习概况至邮箱中;
🔹支持多设备同步,并可以导出导入词本;
🔹支持单独屏蔽网站;
🔹支持浅色和深色模式。
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14
#暴论
没有全自动化回归测试的“有状态服务”就是梦魇。
游戏就是一个很典型的“有状态服务”,“有状态”的意思,是游戏服务的连接对应到一个在线角色的信息,角色的数据包括但不限于:角色的属性、所在的地图场景、日期的特殊性(比如大型节假日要做一些运营活动)。
由于游戏服务是一个如此特殊的“有状态服务”,要构造它的测试数据来跑自动化测试就很难,基本都是靠人肉来测试。
没有了全自动化的回归测试,随时可能踩到坑里来。比如某个节假日来了,要临时开一个这个节日的运营活动,于是可能改了一些玩法逻辑,测试的时候一般只会去验证这个活动相关的逻辑。但是问题来了,有可能这个活动还影响了其它的玩法。由于缺少全自动化测试,就没有去验证,于是很可能到了上线的时候才发现问题,这就要一顿忙活热更新修复了。
在我短暂的做游戏开发的时间里,大概半数以上的错误本质都是由于缺少全自动化验证导致的。还有一个原因,游戏逻辑代码以百万计,而经常又是使用Lua、Python这样的解释型脚本语言来写的,缺少编译期的检查,这又是可能产生问题的原因之一。
所以人生苦短,如果不是特别热爱,还是远离这类做游戏逻辑的工作,这类工作的技术难度也就是比普通CRUD高那么一丢丢,但是生命都浪费在没有自动化测试导致的问题修复里了。
会修问题、解决问题都不算什么本领,学会理解这类开发的流程导致了问题总是此起彼伏,避开问题的高发领域,别把宝贵的时间浪费在这种无休止的问题解决里。
没有全自动化回归测试的“有状态服务”就是梦魇。
游戏就是一个很典型的“有状态服务”,“有状态”的意思,是游戏服务的连接对应到一个在线角色的信息,角色的数据包括但不限于:角色的属性、所在的地图场景、日期的特殊性(比如大型节假日要做一些运营活动)。
由于游戏服务是一个如此特殊的“有状态服务”,要构造它的测试数据来跑自动化测试就很难,基本都是靠人肉来测试。
没有了全自动化的回归测试,随时可能踩到坑里来。比如某个节假日来了,要临时开一个这个节日的运营活动,于是可能改了一些玩法逻辑,测试的时候一般只会去验证这个活动相关的逻辑。但是问题来了,有可能这个活动还影响了其它的玩法。由于缺少全自动化测试,就没有去验证,于是很可能到了上线的时候才发现问题,这就要一顿忙活热更新修复了。
在我短暂的做游戏开发的时间里,大概半数以上的错误本质都是由于缺少全自动化验证导致的。还有一个原因,游戏逻辑代码以百万计,而经常又是使用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的知识付费网站。
我这两天看databend的SQL解析代码,才发现一个之前完全没见过的SQL语法:“with table_alias_name as”来创建一个局限于查询的临时表,这种语法好像有个的名称:common table expression(简称CTE)。
这里是解释:https://learnsql.com/blog/what-is-cte/
BTW:上面这个learnsql.com好像是某个专门学习SQL的知识付费网站。
LearnSQL.com
What Is a CTE?
We explain what CTE is and how to use common table expressions in SQL scripts.
👍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。
我把Rust的HyperLogLog库streaming_algorithms fork下来在其基础上提供了delete的实现,diff见:https://github.com/datafuse-extras/streaming_algorithms/commit/762a59c5e65b36797a1ee1cad6fc410c62c9a8b9
貌似这应该是业内第一份不限语言的hll delete实现:)
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。
我把Rust的HyperLogLog库streaming_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
“中本聪的比特币论文写得也太简练了,2年多前就下来看过,当时完全没看懂。
最近学完北大肖臻老师的这门课程的前半部分, http://zhenxiao.com/blockchain/ 再回头去看论文,终于看懂了。。。
不得不说,设计真是精巧,考虑也是相当周到。佩服!”
课程链接:http://zhenxiao.com/blockchain/
原推:https://twitter.com/senob_/status/1591725292170932226
Twitter
中本聪的比特币论文写得也太简练了,2年多前就下来看过,当时完全没看懂。
最近学完北大肖臻老师的这门课程的前半部分, https://t.co/WUvafubEVF 再回头去看论文,终于看懂了。。。
不得不说,设计真是精巧,考虑也是相当周到。佩服!
最近学完北大肖臻老师的这门课程的前半部分, https://t.co/WUvafubEVF 再回头去看论文,终于看懂了。。。
不得不说,设计真是精巧,考虑也是相当周到。佩服!
👍16
#电子书
“《像黑客一样使用命令行》是我4年前写的一本电子书,现在开放出来,希望对各位有所帮助,同时也欢迎感兴趣的朋友完善~”
原推:https://twitter.com/linuxtoy/status/1593213048122376192
项目地址:https://github.com/xuxiaodong/usingcli-book
预生成的PDF及ePUB:https://github.com/xuxiaodong/usingcli-book/releases
“《像黑客一样使用命令行》是我4年前写的一本电子书,现在开放出来,希望对各位有所帮助,同时也欢迎感兴趣的朋友完善~”
原推:https://twitter.com/linuxtoy/status/1593213048122376192
项目地址:https://github.com/xuxiaodong/usingcli-book
预生成的PDF及ePUB:https://github.com/xuxiaodong/usingcli-book/releases
Twitter
《像黑客一样使用命令行》是我4年前写的一本电子书,现在开放出来,希望对各位有所帮助,同时也欢迎感兴趣的朋友完善~ (https://t.co/tzo3fyKufV)
❤12👍3