《捕蛇者说》是一档以编程为主题的聊天节目。我们会聊聊编程、程序员和 Python。
本期节目应嘉宾的要求,我们只发布了文字稿。带来的不便还请各位听众谅解。 嘉宾 tanloong 链接 gh-133390: Support SQL keyword completion for sqlite3 CLI by tanloong · Pull Request #133393 · python/cpython SQLite Keywords QuantWiki - 中文量化百科 《阳光马达棒球场!》 文字稿 laike9m: 哈喽大家好,欢迎来到最新一期的《捕蛇者说》。我们今天请到了谭龙,然后让他来聊一聊给 CPython 做贡献的经历。谭龙其实最近给 CPython 提了一个 PR,然后也是他第一次给 CPython 做贡献。然后呢,这个贡献是给 SQLite 的那个命令行加了一些命令补全,就是可以补全 SQLite 的关键字。我们今天另外一位主播是 Manjusaka。 Manjusaka: 请叫我 Nadeshiko Manju,对吧?OK,大家好,好久不见,我又回来了。然后今天很高兴又来和 laike9m 进行搭档,来。 laike9m: 好,然后这是我们今天的嘉宾谭龙,你要不先简单介绍一下自己吧。 tanloong: Hello,大家好,我叫谭龙,我是山东的。然后 18 年的时候是来青岛上大学,然后大学本科毕业之后就在这找工作了。我本科不是计算机的,毕业之后找工作也找了一些计算机相关的工作,也有一些其他方面的工作,中间也换了好几次工作。最近是刚刚入职一家新的公司,然后是做数据分析方面的工作。谢谢。 laike9m: 所以你说你本科不是学计算机,方便透露一下吗?你本科学的是什么? tanloong: 我本科是英语的。 laike9m: 哦,这个跨度很大。 tanloong: 对,确实。其实我本科最开始填志愿的时候,我录取的专业也不是英语,是一个调剂的专业,叫生态学。然后我是大一下学期的时候想转专业,然后正好我们学校有转专业的政策,我就从高中学的那几门课里,我觉得英语我学得还可以,然后当时也比较喜欢,所以我就决定转英语了。直到后来快毕业的时候才有点接触到这个计算机方面的这个东西。 laike9m: 然后就发现自己还是更喜欢计算机一些。那所以你之后是进行一些自学吗?然后就去找工作还是? tanloong: 对,基本上是自学。最开始接触计算机是大一的寒假,我们辅导员让学生回家的时候在假期要学点东西,然后开学让交学习笔记。我当时从一个中国大学 MOOC 上注册了一个账号,然后它弹出来的,第一个给我推荐的课程就是 Python。那我就学这个吧。所以当时我就学,就学了这个。当时学得很不明白,然后就把 PPT 跟着敲了一遍,但是也云里雾里的。直到后来后面的几个寒暑假才看了一些成体系的 Python 的入门的书,然后算是入门 Python 了。 laike9m: 所以换句话说就是你其实一开始学,你并不知道 Python 是干嘛的,就是并没有特别地抱着某种目的,比如说我就想找一个程序员的工作这样子。 tanloong: 没有,开始的原因只是巧合,但后面坚持下来,应该也算是因为比较喜欢吧。我觉得比较有意思。 laike9m: 那还是挺有意思的,对,感觉是命运的安排。 Manjusaka: 咱行看起来都是转行的。诶,那 laike9m 你是转行吗? laike9m: 我本科也不是学计算机的,然后我知道你本科也不是,所以。 Manjusaka: 对,那看起来大家这三个人跟少女乐队一样,这三个人里面抽不出一张计算机本科学位。 laike9m: 对,但我觉得还是你的英语这个跨度最大。 Manjusaka: 啊,对,然后,哇,卧槽。啊,现在要是学日语的,我突然就想问一下为什么要学日语。 laike9m: 学日语的转计算机还真没见过,但是很多程序员都会日语。 Manjusaka: 有,可能在大连那边还真有。 laike9m: 啊,对,大连日本人比较多。 Manjusaka: 对,对,对,日语外包会多一些。 laike9m: 嗯,好,对,说回正题,就是你相当于一开始接触的编程语言就是 Python, 然后后来相当于你在工作中可以理解也是主要用 Python, 对吗? tanloong: 对的,我有两份工作是跟计算机相关,然后都是写 Python 的。第一个工作是之前的一份是写图形界面的,用的是 PySide, 然后就写一个称重系统。他们是一个建桥公司,就是他们需要统计他们的货车送多少货进他们工厂,然后运多少货出来,写一个这个图形界面,然后放在那个他们的磅站去,然后货车过磅的时候来统计数据。另一个工作是现在的工作是在一个私募公司做数据分析。我之前没接触过股票证券这方面的东西,现在还在学习。 laike9m: 你是开发算法吗,还是给他们开发一些内部工具或者界面之类的? tanloong: 内部工具,我们组三个人有写算法的,但是我是属于比较初级的那种,只能写一些帮他们节省时间的工具。 laike9m: OK,对,因为我感觉那种像交易的算法可能更需要用 C++ 一些,对吧?还是说其实也有用 Python,比较好奇。 tanloong: 我们公司开发部应该是写 C++ 的,然后应该也有写 Python, 但是数据分析我们那个组主要是做一些因子的构建,就分析哪些因子它对你的这个股票的收益率贡献比较大,就这种的,我们就主要是写 Python,不写 C++。 laike9m: 明白,好的。所以就是到了今天我们要聊这个话题,然后你给 CPython 做了一个贡献。那我相信就是百分之可能 99.99% 的用过 Python 的人都没有给 Python 做过贡献,那么你一开始是怎么有这个想法的?然后就是后来你是怎么去一步一步实施这个的? tanloong: 我最开始有这个想法是应该从天哥,就是 B 站的那个,对,他当时成为 Python Core Dev 之后,在直播的时候就有人在直播间问一个给 Python 做贡献的问题,做贡献难不难呢?这些之类的。但是天哥说,如果你想给 Python 做贡献,你是会发现有很多事可以做的,做贡献并不难。然后后来就是之前我在写称重系统的时候,需要用到 SQLite 去查用户存的那个本地的数据库。然后当时我就发现 Python 的 SQLite 的命令行界面有点不好使,就是如果它能有那个补全就好了,所以当时是有那个想法。然后实施是在后来我前段时间没有工作,然后就每天比较闲,然后我想找点事做,然后我想起来之前我想给那个 SQLite 的加补全的这个想法,我就试试吧。然后我就去 GitHub 上找,我就试了一下。然后试的时候我发现,我本来觉得这个应该是挺难的,因为我完全不知道它这个补全要怎么实现。但是我去看了一下 PDB,就是天哥维护的那个 PDB 里面的代码,它里面实现补全是那样写的,然后我就照着 PDB 的补全,然后给 SQLite 加了一个补全,然后就交了 PR。 laike9m: 所以其实也是从你的实际工作需求出发,然后加上高天的激励。对,你知道高天也来过我们这边好几次吧? tanloong: 对,两次。 laike9m: 老听众,看来是。对,然后我觉得这个还挺有意思,就是也是算是榜样的力量吧。就是我不知道还有没有其他人是这样,就是因为听到就是有个人跟他说,哎,其实做贡献没有那么难,然后去做了,但这样挺好的。我算吧。你也算吗? Manjusaka: 对,我算。当时我是先认识张翔老师,然后后面然后跟他聊了一些,就包括我可能当时,那位你可能还认识,那个 Ezio Melotti。谁?18 年北京的那位嘉宾,Ezio。 laike9m: 你说 PyCon。 Manjusaka: 对,就是当时我们不是邀请到另外一位来北京。 laike9m: 哦。PyCon China Beijing 2018。2018 吗?2018 我去了吗?我有点不记得了。没事你继续说吧。 Manjusaka: 你在北京,你当时还没 transfer 去美国,然后你从上海来北京。 laike9m: OK。 Manjusaka: 然后我当时聊了一下,就后面开始,正好 18 年,后面我就说我正好在休息,后面就开始陆陆续续提一些贡献,对。 laike9m: 嗯,对对,其实我觉得翔哥一定程度上也是当时给了我一些激励或者指导嘛,对。 Manjusaka: 对,张翔老师还是非常 nice 的。 laike9m: 对,就给听众们如果有不知道,就是张翔是中国的第一个 CPython core developer, 第一个核心开发者,对,然后高天是第二个。 Manjusaka: 对,然后张翔老师应该是在 16 年晋升的。嗯,反正是老前辈了,老前辈了。 laike9m: 但其实他当时就是更多是因为工作中会需要改一些 CPython 代码,他当时在华为嘛,对吧? Manjusaka: 然后。哦,不不不,他晋升成为 CPython Core 的时候,我记得没错,是在新浪,然后他就开始编的。 laike9m: 哦,新浪,OK。 Manjusaka: 对,然后他去华为其实做的也不是跟 CPython 本身相关的,他是去做的 OpenStack 相关的东西。对,然后他对就是说是整个生态工具链会比较熟,所以说他可能跟高天老师就是说是有一点不一样,是张翔老师对于各种非常疑难问题的 debug 非常擅长,这也是我记得介绍人给他在他的 promote 介绍里面说的,对。 laike9m: 嗯,我记得他当时那个演讲。 Manjusaka: 对对对,然后我的很多 debug 技巧也来自于张翔老师,对。 laike9m: Anyway,我觉得后人都是在前人的一些基础上去做工作的。 Manjusaka: 是的,没错。 laike9m: 好,那说回谭龙的这个 PR,我其实也简单看了一下,其实我原来也不知道补全要怎么加,但发现其实还真的挺简单的。你可以跟听众们大概说一下这个流程吗?比如说我要给一个像 Python 的 SQLite 命令行加补全,它大概要做些什么工作? tanloong: 它是写一个 context manager,然后在你进那个 readline 的时候,你把 readline 的那个 completor 给替换成你自己的函数,然后在退出的时候再把它替换回你替换之前的那个函数,就你替换之前的那种 readline 的默认的 completor。然后你自己写的那个函数是还有一个 state, 就是 readline 调你的函数拿补全的时候,它会先给你发一个 state 等于 0, 这个时候你判断了 state 等于 0 的时候,你去生成一个完整的,就根据用户当前输入的那个 text, 生成一个完整的 completion candidate 的列表。然后 readline 会继续给你发 state 等于 1, 2, 3,这个时候你把你之前生成的 candidates 按照它发的 state 做个 index, 返回你的 candidates 对应的要补全的词。然后这中间就是 state=0 的时候,你的 candidates 最好需要缓存一下,不要在每次 readline 给你发 state=1, 2, 3 的时候你再重新生成,那样会比较耗时间,注意一下性能的问题。然后基本就是这样。 laike9m: OK,我说一下我看到的那个 PR 里面,我觉得比较关键的地方就是它其实就是一个首字母的匹配,就相当于首先你有一个关键词的列表,对吧?你要构建一个说哪些单词是 SQLite 关键词,比如说 SELECT 啊 JOIN 这种。然后我发现你是当用户每输入一个字符,然后你就会去跟这些关键词的前缀做一个匹配,对吧?然后发现如果有能 match 上的,你就把它作为一个 candidate 返回,作为补全的一个。 tanloong: 就其实那个关键字最开始的,你要拿到那个 SQLite 的完整的关键字的列表,当时对我来说还是挺难的。我最开始是从 SQLite 的文档里直接复制它的完整的所有的 147 个关键字,然后硬编码到 Python 里。但是有 core dev 说这样写不太好,而且其中有一个关键字并不是在所有的 SQLite 编译出来的时候都会支持的,是一个 V 开头的关键字。希望就是这个 SQLite 这个关键字能够动态生成。然后我当时查了一下,就是如果你想动态生成需要在 C level 去写,但是我这个 C 学的不太好,虽然之前学过一个学期的公开课,但是我完全不知道就是用我查到的 SQLite 文档里说生成关键字列表的那两个函数,去生产,我不知道要怎么写,然后我也不知道怎么把它放进 Python, 所以我当时说这个对我有点难。后来有一天晚上我看到那个消息里,那位 core dev 又说了一遍,就是非常希望这个关键字列表它是能从 C 里拿到的,而不是从 Python 里拿。我当时其实有点理解错了,我以为他的意思是让我把那个硬编码的关键字列表从 Python 给移到 C 里,然后我当时就把它移到 C 里了。虽然我对那个 Python 的 C 要怎么写,然后怎么把它暴露出来,暴露给 Python 的代码去能够访问,我用了一下 AI,当时是用的豆包,问怎么在 Python 的那个 C 里面存一个列表,然后能让它暴露出来,给 Python 的代码调用。然后当时豆包写上,然后我试了一下豆包给的结果,然后是可以的,然后我就直接硬编码到 C 里,然后问那个 core dev 行不行。但是 core dev 后来回复说他的意思是不是在 C 里硬编码,而是在 C 里要动态生成。当时我就,我感觉我理解错了。然后后来是另一位 core dev 帮忙给写的,然后他写了之后给发了一个 PR 到我的那个 fork 里,然后我合并进去,然后我的 fork 再合并到 CPython 的 main。 laike9m: 我还在想,就是因为我也看到你的那个 keywords 那部分是从 C 的 module 里 import 的。这个他当时说为什么要动态生成,其实我还是不太理解。可能就是 OK,我明白,但就是你编译的时候,你会根据你的 CPython 版本有不同的关键词,这样你就不用在那个 Python 里面写,比如说 if 是什么版本,然后你的关键字要加或者减一些东西是吧? tanloong: 对的,SQLite 它应该是在编译的时候有一个选项,如果你开了某个选项,那么它的关键词会有变化。 laike9m: 明白明白。 tanloong: 哦。 laike9m: 这个确实还挺 tricky 的,对,感觉是这个 PR 里面最困难的部分。 tanloong: 确实。 Manjusaka: 嗯。 laike9m: 那所以就是总体这个流程下来你有什么感受吗?因为我知道你的那个 PR 还被因为把 test break 了还被 revert 了一次,对吧? tanloong: 对,它是有一个测试在运行那个 run_pty 的时候,它是用那个 run_pty 生成一个 sudo terminal, 就在一个伪终端里去模拟用户的输入,然后查看它给的 candidates 是不是符合预期。但是在那个伪终端里,它给的 candidates 是带颜色的。就是你的 candidates,它的两边会有那个控制符。 laike9m: 它那个颜色码嘛,然后就不对了。 tanloong: 对,然后测试就 fail 了。当时是在那个 buildbot 上跑构建,就是构建失败,我找了一下,但是我想就是在那个 buildbot 上最好能有一个 interactive 的,就我能像在终端里我手动敲命令一样,我可以人为的去测试,然后看一下它中间到底是什么样子,再修改那个测试。但是 buildbot 我找不到我要怎么就进那个交互式的模式,也可能根本就没有。然后这个问题我解决不了。然后当时是有个 core dev 说他去找那个 buildbot 的 owner,然后问他要 SSH 的权限,然后他去调试。 laike9m: 等一下,我有一个疑问,就是为什么你这个 PR 感觉大家都很 helpful? 因为你知道一般的 CPython PR 就是你提了之后,可能很长时间都没有人理。这点你是怎么看的?就是感觉大家都会去帮你去 debug 或者帮你写些代码,这个是自然的吗?还是说他们本来就对这个很有兴趣还是怎么样? Manjusaka: 嗯,从我的角度出发的话,我不太确定,高天老师那边可能有其他的 input, 但是就我观察来看,这个取决于 core dev 风格。不过他们整体来说,对新人是比较友好的。而且去 buildbot 里面调试这种东西的话,我觉得这个东西其实也还好,你去翻看 CPython 的 PR 其实这种事情也有不少,所以说我觉得这个相对来说还好。但是对于一些争议或者说是还在试图达成共识的过程中,那确实是比较头疼的。但是如果说是已经达成共识要去实施的一个 PR, 那我觉得相对来说会好一些。 laike9m: 明白,所以就是这种没有什么争议性的,只是实现或者一些 debug 问题就会推进的比较快,然后大家也会帮忙。 Manjusaka: 对,而且这种东西我理解主要是你添加新的 feature,而不是更改 API 的话,那这种东西就会好很多。就像我上周的时候,我当时想改 sys._enable_profile() 那个 API, 就是新增加的那个远程 debug 的接口,我想新增加在它的 audit event 里面增加一些元数据。这就牵扯到了 API 的更改以及更内部的一些细节上的更改。然后我就和三个 core dev,然后 Victor, Paul,还有哪一位,然后就 battle 了两天,然后最后 I gave up。 laike9m: 好吧,他们可能有一些 concern。 Manjusaka: 对,就这种你增加一些新的 API 之类的,就是会有一些比较 concern, 但是如果说你是实现一个全新的 feature, 大家觉得你这个 feature 不是为了实现而去实现,那这种情况下相对来说还是会比较顺利的。 laike9m: 嗯,嗯,理解。还有一点就是我知道那个 CPython 的不同模块,它其实是不同的人来维护的嘛。 Manjusaka: 啊,是的,没错。 laike9m: 就可能恰好就是 SQLite 这个维护者,他就是比较积极,比较热心,就是反应比较快,所以。 Manjusaka: 啊,是的,没错。它是比较活跃的,就是 SQLite 这种东西。我就又说到一个伤心事。在改一个东西,然后被 Mark 直接给拒了,然后我现在都还推不动,虽然大家都说有需求,但是 Mark 就觉得说这个东西没需求,然后但是就给拒了,对。 laike9m: 我知道 Mark Shannon 这个人比较固执,对,也是跟人的性格有很大关系。 Manjusaka: 对,是的,没错,跟这个看具体的开发者的问题,对。 laike9m: 对,就是其实你会发现像 Python,如果你不了解,可能会觉得 Python 是一个有一个很庞大团队去维护的这么一个精密复杂的系统,但你真正去看它里面到底是怎么实现的,或者说去提 PR 才会发现可能每一个文件它就是那么一两个人懂,然后你就是要找那一两个 stakeholder, 如果你想做一些更改的话,然后你只要能比如说说服他们,然后你就可以做你想做的。对,它相当的扁平吧。 Manjusaka: 对,我觉得主要还是怎么说服。 laike9m: OK,所以说回谭龙你这个 PR 的话,然后就你把那个 core developer 帮你把测试修好了,对吧?然后你就重新提交,这样子。 tanloong: 对的。就我感觉给 CPython 这个维护者,在这些维护者之间就是它是有一个小圈子的,然后你作为一个新人去给他们交 PR 也是一个交际的过程。就是你要积极主动一点,然后就一般新人你第一次交 PR 的时候,比较容易会被带着审视的态度去看你的工作。然后你交 PR 的时候,你最好是把你之前想到的一些可能会拒绝你 PR 的理由给解释清楚,然后你为什么这样做,然后让他们就是在他们提出问题之前就看到你的解释,这样会就是更容易沟通,然后更容易让你的 PR 更顺利一点。 Manjusaka: 嗯,对。 laike9m: 我看到你其实你之前提了一个 issue 对吧,就是你说你希望能够在 SQLite 的命令行里支持这些补全。所以你提那个 issue 的时候当时就想说自己去实现这个吗?还是说你本来期待说其他人可以去做这个? tanloong: 是的,我是准备自己实现的。因为 Python 的 dev guide 里面写,如果你想交一个 PR,你应该先写一个 issue, 除非你交的 PR 是 typo fix。所以我就是先写的那个 issue,然后就紧接着交了 PR。当然那个 issue 题目写得有点大了,我那个 PR 只做了关键字的补全,但是 issue 是所有的补全。比如说你以后也许还会需要补全你的那个 SQLite 里面的表名,还有列名,还有函数名,这些目前还不支持。 Manjusaka: 明白。 laike9m: 所以你未来打算就是继续在这方面做一些事情吗?还是说就先到此为止? tanloong: 也许会吧。但是这个刚才说的表名、列名、函数名,我目前还没有想到就是要怎么才能实现它。我看到就是 Python 的 PyPI 上有一个第三方的 SQLite 的命令行是支持表名、列名、函数名的,而且它是 context-sensitive,就是它会检测你当前是不是需要输入一个表名或者列名,比如说你是在 SELECT 后面,那它就会给你补全列名。就像这种就是非常智能的补全,我还没有想到就是怎么在 CPython 里支持,也许没有那个能力去支持它,总之就是还不确定。 laike9m: 明白。对,那个可能要就是回溯一下,不光得去做一个前缀匹配,对,会更复杂一点感觉。但我觉得是一个好的开始吧,就是你有一个这种框架,就会有更多人去加更多的 feature 进去。也许未来就会有。 tanloong: 是的,确实。就那个关键字的 PR 合进去之后,过了几天,有另一位 contributor 交了一个 dot commands completion 的 PR, 现在给加了那个 dot commands 的补全。目前 Python 的 SQLite 的命令行就有三个 dot commands,就是 .help, .version, .exit。.exit 还是 .quit 就来着,总之是推出的那个 .command。然后那个 PR 现在正是就是刚刚建不久,然后还没有 core dev 留言,但是它实现的有一点简单,就是有一些问题,但是应该后面会就是慢慢给修上,然后给合进去。 laike9m: 其实你可以去那个 review,因为你比较熟,你是最熟的其实。 tanloong: 是,我还真给看了一下,然后写了两个评论。但是写的第一个评论就是那位交 PR 的人,他觉得没有必要,就是他持反对意见。然后第二个评论,那位交 PR 的人还没有回复,然后其他人也没有回复。 laike9m: 嗯,我觉得挺好,就是因为我知道就是如果你比如说在一些 issue 里面回复的比较多,然后就会被那个提拔成 triager 的权限,对吧?然后其实这个是 core dev 之前的一步。 tanloong: 对,确实。然后我看就是交那个 dot command completion PR 的那个人,他的评论比较多,一般 CPython 有什么新的 issue,他都会先跑到底下去评论,然后有时候评论这个 issue 和之前的某个 issue 有联系。就像这种之类的,或者有人交 PR,然后他会去给 review。但是我还没有太多追踪 CPython 的那些 issue 和 PR,然后没有评论多少,就主要是我自己参与的那些 issue 跟 PR。 laike9m: 对,我觉得每个人有不同的风格吧,也不用一定去迫使自己要怎么样之类的。像高天那种,就是从 PDB 模块开始,然后把 PDB 弄得特别熟,然后通过成为 PDB 的维护者,然后来成为 core dev,这个路径也挺好的。我觉得可能更实际一点吧,因为我觉得你要去就是对于一些每一个 change 做一些评论,这个还挺难的。 tanloong: 确实从一个单独的模块开始做,你确实你的那个在 CPython 社区里面的成长会更容易一点。因为你是这个模块的专家,然后别人有什么问题就只能来找你。但是我也觉得这个也挺难的。天哥是从一个完全的 CPython 的陌生人,然后进入到 CPython 一点点做贡献,最后成为 core dev。就像你从一个外人进一家公司,然后慢慢走到管理层,都是非常难的步骤,你要获得信任,然后你做的每一个工作你都要给解释清楚,然后让别人就是认为你是可以承担更重要的角色。我觉得这也是非常难的一个过程。 laike9m: 嗯,是的是的。对,其实说回来就是那个,像给 CPython 做贡献不光是一个技术面上的事情,它还有很多这种交流,对吧?然后尤其是当你和这些外国人交流,你不是用你的母语,然后他们的一些交流的习惯可能也不太一样,所以这个方面也会有一些壁垒吧?就是谭龙,因为你是英文专业,所以这方面你觉得说你的本科教育有帮到你吗? tanloong: 我觉得是有的。如果我没有选英语专业,我应该还停留在高中的那个状态,就是虽然当时英文成绩还可以,但是如果让我看一个全英文的网站,我是心里发怵的,我是心里有那个牴触的心理。但是大学接触英语比较多,然后主要是你抵触心理没有了,然后你愿意去哪怕接受自己写出来的英语没有那么完美,哪怕也不像母语,也不够 native-like, 你也可以接受自己写出来的这些句子,然后去交流。因为你只要能把意思给表达清楚,让对方看懂就可以。其实你放下这个心理负担,你会发现写英语还是没有那么难的。 laike9m: 是的,是的,同意,对。 Manjusaka: 我现在是有一个做简单的 workflow, 然后我会交给 AI 来帮我润色,然后扩展一下我单纯的观点。对,我觉得这是 AI 的一个很好的使用场景。 laike9m: 你用的是哪个工具呢?还是就是手动复制? Manjusaka: 我是直接在 Claude AI 上面给他固定了一组 prompt。 laike9m: 明白,明白。 Manjusaka: 我觉得这就是这一块东西很好用的方式,特别是在我跟他们长篇大论地 battle 的时候,还是挺好用的。 laike9m: 帮我写一个回复去反驳这个人。 Manjusaka: 对,我一般是 prompt 就是说是我引用的那一段,然后我首先给他一个正面的肯定,然后其次列出我对他的观点,一 ABC,然后对,然后就这样。 laike9m: 你写 prompt 的时候是拿中文写吗? Manjusaka: 我拿中文写。 laike9m: 嗯,OK,这样表意更准确一些。 Manjusaka: 对对对,你可以看我群里发的那个 issue,然后那个就是很多大段的,就是我是用 AI 生成出来的。 laike9m: 我想到之前在推特上看到一个段子,就是说在 AI coding 的时代,以前不都是什么 “Talk is cheap, show me the code” 吗?现在是 “Code is cheap, show me the talk”。 Manjusaka: 确实。Code is cheap, show me the talk. laike9m: 一个哥们他在他的 GitHub repo 里面就是把所有的他的那个跟 AI 的聊天记录全都传上去了。这个就是挺好玩的。 Manjusaka: 挺好玩的,挺好玩的。 laike9m: 对,像谭龙,我觉得你之前本来要在 C 模块里面写死 keyword 的时候,你也是用 AI 生成的,虽然后来发现那个路径是不对的,但是至少这方面 AI 的助力还是挺大的。 tanloong: 确实,如果我当时在紧接着问 AI 怎么不要硬编码,然后整个动态生成的话,也许我当时就能直接把动态生成的代码给交进去了,而不是让另一位 core dev 帮忙给写。嗯。 Manjusaka: 是的。 laike9m: 所以就是你对于这个给 CPython 第一次做贡献的这个流程,你有什么其他的一些感受吗?就是我们刚才还没有聊到的,你想分享的。 tanloong: 我没有了。 laike9m: 哦,行,那也没关系,好。我们也是觉得给 CPython 做贡献的人越多越好,然后可能也是能够给听众们一个激励吧。然后感觉这期其实录的挺快的,然后不知道有没有什么你想推荐的东西,就是如果你听我们之前节目的话,你应该知道有这个环节,对吧? tanloong: 我推荐一个网站是跟量化金融有关的,算是一个给入门的学习者的一个索引吧。那个网站叫 QuantWiki。是量化金融中文百科,然后里面有一些就是量化金融相关的入门的概念,还有一些前沿的证券公司发的研究报告,还收录了其他的类似的 Python Data Training 这方面的 GitHub 的 repo 的链接。如果是这方面像我这样的刚入门的学习者的话,可以就是了解一下。 laike9m: 我看了一下,这个写的还挺好的,就是他把各种概念和一些工具都列出来了,对。嗯,我们之前也请过大伟来聊,就是他开发了一些交易相关的工具,所以其实这方面 Python 应用也是挺多的,对。 Manjusaka: 哎,反正我觉得给 Python 做贡献,就觉得还是希望像谭龙这样的人越来越多。是的,是的。对,而且现在他们就感觉是整体都非常缺人的感觉。 laike9m: 哪个看上去像不缺人? Manjusaka: 嗯,这倒也是,确实。反正就之前我给 Brandon 和 Ken Jin 然后请教问题的时候他们都表示很新奇,我操居然还有 Freshman 对我们现在做的这块感兴趣。对,居然还有新人对我们感兴趣?Freshman,哦 Freshman。啊对,反正我觉得从他们视野来看,就整体的很多的地方都会很缺人。 laike9m: 嗯,是的是的,尤其是像你做的那些 debugging 啊,然后 tracing 的一些东西,我觉得懂的人真的很少。 Manjusaka: 我觉得就没人管的状态。而且就我现在对他们的 tracing 的部分有很大的怨言,就主要是 Mark 上面说... 哎,我后面会试着再推一推,但是就哎,随缘吧。 laike9m: 嗯,行。好的。Manjusaka 你有没有什么想推荐的东西。 Manjusaka: 我推荐一部番吧,《阳光马达棒球场!》,非常很不错的一部番,我推荐大家去看看。然后可能国内有很多朋友对于传统的国外的可能说足球或者其他也好,这种体育文化他并不清楚,这种体育文化到底应该是怎么样的,它是怎么样遍布在人的日常生活中的,然后有些人不清楚,那么我建议大家可以去看一下,然后挺治愈的一部番。 laike9m: 嗯,好的好的。啊,我先不推荐了吧,以后再说吧。对,我最近在看一些书,但是还没有看完,所以,对。好,其实我们这期是比较短的一期,然后但是也希望听众们可以从中学到一些东西,然后如果要记住一点的话,就是可能给 CPython 做贡献也没有那么难。对,好,我们这期就到此结束,然后各位听众我们就下期再见,大家拜拜。 众人: 拜拜。
本期节目我们和《二分电台》的主播 2BAB 探讨了移动应用开发领域的技术趋势。AB 详细介绍了原生与非原生开发的区别,以及 Flutter、ReactNative 和 Kotlin Multiplatform (KMP) 等跨平台框架的特点。嘉宾们还分析了各种技术选型的优劣,例如 ReactNative 的热更新优势和 Flutter 的 UI 一致性,以及 Kotlin 作为 Android 官方语言的崛起。最后,节目还探讨了 On-Device 模型在移动设备上的应用前景,例如图像语义搜索和离线推理,并对 AI 技术在移动开发领域的潜在影响进行了展望。 嘉宾 2BAB (AB) 主播 laike9m Manjusaka 章节 00:14 移动端开发框架介绍与原生/非原生定义 07:03 ReactNative 的兴起、问题与 Flutter 的挑战 14:19 Kotlin Multiplatform (KMP) 与 Jetpack Compose 的发展 23:22 KMP 的流行度、ReactNative 的价值与未来发展 30:05 Electron 的妥协与热更新的重要性 37:43 入门移动端开发的建议与 Flutter 的未来 42:57 Flutter 的风险与 Kotlin 的竞争 48:45 On-Device Model 的应用与发展 55:10 On-Device Model 的功耗与应用场景 1:03:08 On-Device Model 的隐私与安全 1:10:03 总结与推荐 链接 React Native Flutter Kotlin Programming Language Jetpack Compose Kotlin Multiplatform (KMP) Compose Multiplatform (CMP) SkiaSkia is an open source 2D graphics library which provides common APIs that work across a variety of hardware and software platforms. It serves as the graphics engine for Google Chrome and ChromeOS, Android, Flutter, and many other products. The Truth About React Native - YouTube google/XNNPACK: High-efficiency floating-point neural network inference operators for mobile, server, and Web React Native Panel hosted by Jamon Holmgren - Chiara Mooney, Eli White, Keith Kurak, Chris Traganos - YouTube Gemini Nano litert-community/Gemma3-1B-IT · Hugging Face OpenAIDoc | 开发者友好的文档中心,一站式解决您的技术文档需求 《mono 女孩》
本期节目,我们和 Dawei 聊了聊 AI 在投资中的作用,以及他开发的投资辅助产品策引。 自来水广告:主播们的启蒙播客 Teahour 复播啦! Teahour 2.0 是一档针对程序员播客节目,更是一场思维的探索。 访问 teahour.dev 获取最新更新。 嘉宾 Dawei Ma 主播 laike9m laixintao 章节 03:12 Dawei 的创业经历及早期投资经验教训 11:06 构建体系化投资决策系统及对其他投资方法的反思 17:25 开发自动化交易策略及选择指数交易的原因 23:57 从 Excel 工具到测影产品的演变及核心功能介绍 33:03 测影产品的未来规划及对投资理念的探讨 41:26 算法和 AI 在投资中的作用及案例分析 1:00:07 开发策引的经验分享、AI 工具的选择及对自动化交易的看法 1:13:25 推荐 链接 策引 《海龟交易法则》 《走进我的交易室》 双均线策略 myreader-io/myGPTReader: A community-driven way to read and chat with AI bots - powered by chatGPT. Chat2Invest - You AI invest assistant i365dev/llm_agent: An abstraction library for building domain-specific intelligent agents based on Large Language Models (LLMs). i365dev/agent_forge: AgentForge is a powerful and flexible signal-driven workflow framework designed for building intelligent, dynamic, and adaptive systems. 人生体验与记忆股息 - laike9m's blog DIE WITH ZERO
本期播客,我们和嘉宾一起聊了聊我们在人生中经常需要面对的一个话题:我们应该怎么样去面对“失败” 这期播客的由来是来自于嘉宾在推特上的一则分享 “没有失败,只有反馈。” 如果屏幕前的你正在面临一些挫折与困扰,希望这一期的播客能帮到你 嘉宾、主播 卡比卡比 laike9m Manjusaka 时间点 00:00 开场&嘉宾自我介绍 02:52 卡比的编程学习经历 06:06 卡比的工作经历 15:40 怎么样去选择一些开源项目 17:50 工作和生活中怎么样去排解压力 18:20 过去几段经历中学习到的东西 24:30 卡比的新工作 30:00 怎么样去做风险评估 32:30 费曼学习法 34:10 参与开源的意义 43:05 对于”失败学“全新的解构 嘉宾严选 有限与无限的游戏 参考 卡比的推文, https://x.com/jakevin7/status/1875466413558902815 NebulaGraph, https://github.com/vesoft-inc/nebula SelectDB, https://www.selectdb.com/ Apache Doris, https://github.com/apache/doris Apache DataFusion, https://github.com/apache/datafusion Manjusaka 的总结, https://www.manjusaka.blog/posts/2025/01/04/saka-is-baka/ Laike9m 的总结, https://indie2024.laike9m.com/ 失败学是什么, https://github.com/boism-org/northpole
本期播客探讨了独立开发者在推出 App 和 SaaS 产品时面临的推广与销售挑战。 相较于 SaaS,App 的渠道分发更为复杂,需要通过应用商店的审核流程。在推广方面,由于国内用户更倾向于使用移动设备,且很多平台限制 URL 链接,App 的推广相对容易,而 SaaS 则更依赖于搜索引擎优化。付费转化上,App 的买断模式更容易被用户接受,而 SaaS 的订阅模式更符合其对持续维护的需求。嘉宾们最后建议开发者根据目标用户(是否熟悉 URL 和电脑操作)以及产品类型来选择适合的 App 或 SaaS,并探讨了更灵活的付费模式,如按年买断。 嘉宾、主播,和他们的产品 Randy Cusdis - Lightweight, privacy-first, open-source comment system Notepal - 浏览器插件,一键同步微信读书笔记到 Notion, Logseq, Readwise, flomo EpubKit - The best tool to convert web to ebook Adam Wen laike9m Clicknow - Mac 上最好的划词 AI 搜索 & 翻译,无需 API key 时间点 00:00 独立开发者:App 还是 SaaS?开篇与渠道分发 04:36 App 与 SaaS 的渠道分发差异及优势 06:02 国内外推广差异:URL 与 App Store 的对比 10:00 SEO 与 App 推广:国内外市场对比 13:29 国内 SaaS 推广困境:平台限制与传播难题 17:44 国内用户习惯与推广策略:微信、二维码与邮件 23:21 国内推广策略:绕过平台限制的尝试 27:22 SaaS 与 App 的付费转化及推广策略 37:43 播客推广的独特优势与付费模式选择 57:06 付费转化率与国内 SaaS 市场现状
本期节目探讨了独立开发者在选择开发 App 还是 SaaS 时的利弊。我们从多个角度进行了深入分析,包括开发效率、跨平台能力、所需设备、维护成本等。下期节目中我们会从产品发布和推广的角度进行比较,敬请期待。 总结起来:SaaS 在开发效率和资源模板方面更具优势,但在移动端的应用受到限制;而 App 开发则更依赖于特定的平台和设备,维护成本可能因操作系统更新和与其他应用的兼容性问题而上升。最终的选择还是要根据开发者的技术背景、目标用户和市场定位来决定。 嘉宾、主播,和他们的产品 Randy Cusdis - Lightweight, privacy-first, open-source comment system Notepal - 浏览器插件,一键同步微信读书笔记到 Notion, Logseq, Readwise, flomo EpubKit - The best tool to convert web to ebook Adam Wen 竹白 - 专为创作者设计的一站式工具 laike9m Clicknow - Mac 上最好的划词 AI 搜索 & 翻译,无需 API key 时间点 00:00 嘉宾和主播们都开发了哪些产品 05:53 App 与 SaaS 的定义与界限 09:14 开发效率 SaaS 由于资源丰富、模板易复用,开发效率通常高于 App,但 AI 工具缩小了两者的差距 18:47 跨平台性与移动端支持 SaaS 天然跨平台,但移动端支持受限;App 跨平台需借助 Flutter 等框架,但平台割裂问题依然存在。PWA 提供了一种折中方案,但用户使用习惯有待培养。 27:35 开发设备 SaaS 对开发设备要求低,App 则可能需要特定操作系统和高性能设备。远程桌面技术可以一定程度上解决 App 开发对设备的限制。 30:06 维护成本 维护成本方面,App 的维护成本并非一定低于 SaaS,操作系统更新、与其他 App 冲突等都可能带来维护难题。SaaS 的维护成本则主要体现在服务器和数据库的维护上。 38:09 国内开发环境的挑战与应对策略 国内 SaaS 开发需要考虑合规性、支付接口接入等问题,这部分成本和时间消耗不容忽视。支付集成方面,国内市场循环扣费的支付方案选择有限,对开发者资质要求较高。 48:36 App 发布、代码管理和用户反馈
本期节目,我们和前 React 团队工程师 Mengdi 聊了聊大公司非业务部门的困境。 众所周知,非业务部门由于不产生营收,常常成为公司降本增效的牺牲品。这一切的根源究竟如何,是否如表面看上去这么简单? 本期我们将一探究竟,并从中得出一个嘉宾和主播都非常认可的结论。 这里是广告 Clicknow 是主播 laike9m 开发的一款 Mac AI 搜索软件。一键划词的 AI(联网)搜索带给你准确、即时、丰富的信息,大幅提升工作、学习和研究的效率,从此再也不用在不同 App 之间切换。支持任何语言,可用来做翻译/总结。无需 API key,提供免费试用。 Clicknow 还支持一些贴心的小功能:比如拼写检查、添加日历、计算器、航班追踪等。 嘉宾 Mengdi 主播 laike9m laixintao 时间点 01:55 Mengdi 在 React 团队的工作经历 04:08 React Developer Tools 介绍 22:31 laike9m 分享 Google 奇闻 31:27 laixintao 分享 SRE 的困境 34:13 深入禁区,揭开开发效率和裁员之间的隐秘联系 43:19 科技行业的特殊性 46:41 结论:大公司非业务部门困境的根源 49:23 给听众的建议 52:52 推荐环节 链接 对 React 团队工作经历的思考 关于开发者效率和裁员的闲聊 《The Manager's Path》 Being Glue — No Idea Blog
本期节目,我们第二次请到了高天,和他聊了聊成为 Python 核心开发者以及在 B站做 up 主的经历和感悟。 嘉宾 高天 主播 Adam Wen laixintao laike9m 章节 Python 开发 成为 Python 核心开发者的历程 对 Python 语言发展的看法 分享一个你比较推崇的 Python 编程的技巧或是最佳实践 技术内容创作 是什么让你尝试开始在 B站分享技术内容 视频制作流程和内容选择策略 如何平衡技术深度和受众理解度 知乎问答和知识星球运营经验 技术直播的挑战和技巧 工作与生活平衡 在科技公司工作的日常 如何管理时间,兼顾工作、创作和个人生活 对程序员职业倦怠的看法和应对方法 链接 pdb — The Python Debugger Faster CPython Vote to promote Tian Gao 450天成为Python核心开发者 PEP 703即将被正式接受,移除GIL的这一天竟然真的要来了? 知识星球:minkomni.com/zsxq Joe Armstrong on optimizationMake it work, then make it beautiful, then if you really, really have to, make it fast. 90 percent of the time, if you make it beautiful, it will already be fast. So really, just make it beautiful! py-spy: Sampling profiler for Python programs Scalene: a high-performance, high-precision CPU, GPU, and memory profiler for Python with AI-powered optimization proposals coverage.py SlipCover: Near Zero-Overhead Python Code Coverage Astral: Next-gen Python tooling 历史调研室 contextvars
本期节目我们请到了继续和 Yuchen 聊聊 Cloudflare,以及他主导并开源网络框架 Pingora Pingora 是一个使用 Rust 开发的框架,可以让开发人员在上面实现自定义服务器。Pingora 的开发是基于 Cloudflare 多年的经验和需求,他们发现在代理中需要大量的业务逻辑代码而不是配置,并且用 Lua 或编写配置也不理想。此外,我们讨论了 Pingora 的开发过程中涉及的技术决策和挑战,以及 Cloudflare 的文化和招聘情况。 嘉宾 Yuchen Wu 主播 laixintao NadeshikoManju laike9m 时间点 00:03 Cloudflare Pingora 项目开发背后的故事与原因 04:53 以 Lua 嵌入 Nginx 的 openresty 为基础的强大编程工具 08:47 Lua 的特点和局限性分析 13:03 Nginx 的 C 开发和 Lua 维护的困难性及 ARM 上的问题 16:10 Indrax 架构的问题和需要解决的挑战 22:25 大家决定用 Rust 语言重新开发的决策过程 24:47 对于使用 Rust 语言开发的经验和公司中的实践 27:07 Rust 语言的开发和 API 设计 30:32 流量迁移和切换效果评估 32:53 开发速度改进和问题处理的讨论 37:15 Pingora 框架的开源故事及其 API 设计和扩展性 40:36 关于开源的讨论和决策过程,Rust 语言的优势以及担忧的原因 44:22 Nginx 的发展历程以及与 F5 的关系变动 46:06 Pingora 开源项目及其童话般的发展故事 50:18 Cloudflare 文化和招聘情况讨论 53:40 Cloudflare:科技领域无可匹敌的压倒性存在 链接 Pingora Nginx OpenResty Lua F5 Completes Acquisition of NGINX
本期节目我们请到了 Cloudflare 的 Yuchen,和大家聊了聊 Cloudflare 这家神奇的公司,以及它为什么被称为『赛博佛祖』。 嘉宾 Yuchen Wu 时间点 00:01:20 Cloudflare 这家公司主要做什么,有哪些服务 00:22:00 Cloudflare 的营收从哪里来 00:26:42 为什么 Cloudflare 愿意去提供各种免费服务(laixintao tweet) 00:40:10 在 Cloudflare 工作的体验 链接 Cloudflare The Cloudflare Blog Pingora - A library for building fast, reliable and evolvable network services. Cloudflare Workers Cloudflare bot solutions Cloudflare IP addresses 服务器被攻击,上了 CDN 但源站 IP 还是会被很快知道,求问可能是哪个环节出了问题? Cloudflare Tunnel Zero Trust security | What is a Zero Trust network? Backblaze Cloudflare Post Mortem How to execute an object file: Part 1
laike9m 来到了新加坡!我们和 二分电台 的 2BAB 和 代码之外 的勾股在现场录制了一起节目,和 laike9m 畅聊了有关新加坡和加州的方方面面。 音频处理:西市独柳工作室 https://xishiduliu.com/ 如果喜欢我们的节目,欢迎通过爱发电打赏支持:https://afdian.net/@pythonhunter 时间线: 00:25 自我介绍 03:00 天气开场 06:57 新加坡简单轻松的感觉 11:36 新加坡和加州基础教育 21:56 新加坡和加州政府网站和公共服务 32:59 新加坡和加州的饮食 47:04 新加坡的家长式政府:HDB、民族大融合 57:06 新加坡的生活成本 1:06:00 新加坡的工作机会 1:11:45 美国和加州的看病区别 1:18:51 新加坡的休闲娱乐生活 1:35:55 新加坡对健康的重视 1:44:15 新加坡的技术氛围 1:52:14 总结时间 参考链接: PISA 2022 results https://www.oecd.org/publication/pisa-2022-results/ Understanding Singapore Math https://search.arc.net/x0nQESzb6Ze9vYePie4E 新加坡副总理尚达曼打脸BBC主持人四十分钟全文 https://www.youtube.com/watch?v=brAUYIlpZxs 李光耀观天下 https://m.douban.com/book/subject/26413154/ 饮料健康等级系统 Measures for Nutri-Grade Beverages https://hpb.gov.sg/healthy-living/food-beverage/nutri-grade (上海也试行饮料营养分级了:https://finance.sina.com.cn/jjxw/2024-04-09/doc-inarfrzq6245817.shtml ) 运动换取代金券的 App:Lumihealth https://www.lumihealth.sg/ Stranger Soccer https://www.strangersoccer.com/ National Parks https://www.nparks.gov.sg/ Visa Technology Traineeship Program https://www.visa.com.sg/careers/visa-tech-traineeship-program.html 二分电台:https://binary.2bab.me/ 代码之外:https://bento.me/beyondcode 音频处理:西市独柳工作室 ( https://xishiduliu.com/ )
本期节目中,图拉鼎讲述了最近几年做独立开发的经历,良渚文化村吸引独立开发者聚集的原因,以及疯狂星期四的起源和发展。我们着重聊了聊为什么他会想到注册一个美国公司,以及所需的资质和流程。还聊到了微软/Google 对开发者的支持,以及独立创造者在产品开发中的作用和优势。 嘉宾 图拉鼎 主播 laixintao Adam Wen laike9m 章节 00:15 近况 04:50 良渚文化村和玉鸟集 12:26 疯狂星期四的开始 26:08 为什么会想到注册美国公司,以及探索苹果生态之外的可能性 43:40 微软对开发者的支持 52:35 如何合法合规地接受用户付款 59:58 推荐环节 01:02:10 独立开发&小团队的作品为什么更好 链接 良渚玉鸟集:城市聚落的再创造 《一个独立创造者的五年》 firstbase: Launch your US business from anywhere, in minutes. Lemon Squeezy: All-in-one platform for running your SaaS business Microsoft for Startups Google for Startups
本期节目中,图拉鼎分享了他的独立开发经验。从 Ubuntu Tweak 到 MarkMark,他鼓励更多人加入独立开发行列。我们聊到为什么他和其它一些独立开发者不约而同地选择 Python 作为后端语言。图拉鼎还分享了获取技术信息及避免踩坑的方法。 嘉宾 图拉鼎 主播 laixintao Adam Wen laike9m 章节 00:00:30 嘉宾 Tualatrix 自我介绍 00:02:10 Tualatrix 的作品介绍 00:05:08 主播们在使用的 Tualatrix 开发的作品 00:13:30 如何接触到 Python 并入门 Django 00:21:41 使用 Python 开发自己的内购系统 00:36:41 内购系统所面临的问题 00:40:57 原生应用使用 hotpatch 风险与挑战 00:43:45 Tualatrix 是如何做技术选型的 00:52:25 个人开发者如何适用自己的技术信息 00:57:07 Ending 结尾 链接 Ubuntu Tweak Manico PasteNow One Switch Django htmx
这期主播们聊了聊猫 链接 E765.爱猫失踪后,我只身一人揭开屠猫黑色产业链 小白的猫 Manjusaka 的猫 laike9m 的猫 Adam 的猫
如果喜欢我们的节目,欢迎通过爱发电打赏支持:https://afdian.net/@pythonhunter 嘉宾 Wey Gu 主播 laike9m laixintao Ada Wen 时间轴 00:00:13 开场 00:00:27 嘉宾自我介绍 00:01:10 话题:图、图数据库介绍 00:06:30 提问:知识图谱与外卖路径规划 00:07:51 提问补充:知识图谱能不能当做传统的图数据库来用 00:08:53 话题:微信用 NebulaGraph 做存储的例子 00:10:32 提问:在好友关系查询上传统 SQL 与图数据库的区别 00:11:56 提问补充:NebulaGraph 两点之间边的数量增加,查询成本以什么量级增加增加 00:13:59 提问:不同 Graph Database(图数据库) 的查询语言是否存在一套标准类似 SQL 00:19:21 提问:查询是直接写语句还是有 SDK,以及结果格式是什么样的 00:20:21 提问:使用不同的图数据库针对同一个查询结果返回的数据结构是不是相同的 00:23:13 提问:业界对于 GQL 的支持程度如何 00:25:43 话题:图数据库与大模型的关系 00:33:57 提问:图数据库是如何辅助大模型的 00:39:00 提问:图数据库与大模型的结合需要用户有怎样的基础 00:41:30 延展:知识图谱的建立和使用都可以与大模型结合 00:43:50 延展:从 图数据库驱动的基础设施运维示例 延展 00:53:18 延展:信涛的 Prometheus 之旅 00:53:45 话题:在开源公司的工作体验 01:18:18 话题:古老师的 开源面对面 播客 01:26:00 固定话题:好物分享 01:35:33 结束语 相关链接 00:01:32 柯尼斯堡七桥问题 维基百科 | 百度百科 00:02:39 neo4j 00:03:28 RDF(Resource Description Framework | 资源描述框架) 维基百科 | 百度百科 00:03:56 知识图谱 维基百科 | 百度百科 00:06:49 GIS(Geographic Information System | 地理信息系统) 维基百科 | 百度百科 00:07:01 NebulaGraph 00:08:36 TAO: The power of the graph 00:13:09 Redis geospatial 00:16:52 GQL 维基百科 00:17:02 Cypher Query Language 00:17:39 Gremlin Home Page | 维基百科 00:17:56 nGQL | nGQL 简明教程 00:18:22 SPARQL 00:29:01 往期节目关联:Ep 39. 和 Alex 聊聊向量数据库与职业规划 00:35:02 古老师提到的 ref: 一 | 二 00:35:27 langchain | llama_index 00:43:50 图数据库驱动的基础设施运维示例 00:53:18 Prometheus 00:56:33 Teahour | Teahour#90: 和 PingCAP CTO 畅谈数据库和编程语言 01:01:13 信涛的 Awesome Commandline 录像和资料 01:18:18 开源面对面 01:26:18 Cursor: The AI-first Code Editor 01:30:37 Copilot | Copilot for CLI 01:34:08 信涛分享的三门 udemy 课程一 Building Your English Brain 01:34:08 信涛分享的三门 udemy 课程二 Getting Started with Wireshark 01:34:08 信涛分享的三门 udemy 课程三 Discovering Backend Bottlenecks 01:35:00 温老师的分享
本期是 laike9m 和 Manjusaka 做客「代码之外」播客。我们聊了各种感兴趣的话题。 代码之外 Beyond Code 是一档由 GeekPlux 和 Randy 共同主持的程序员闲聊播客节目。 时间点 01:27 暖场话题,Meta Threads 03:24 《捕蛇者说》的起源 18:17 遇到过的一些负评 20:14 比较满意哪一集 32:06 manjusaka 做公益引争论 42:02 保存数字遗产 01:10:56 和「名人」的交集 01:14:43 清华往事 01:26:48 如何看待别人给的经验建议
本期前半段内容(CPython 优化)较为硬核,如果你想直接听后半段(大厂编译器组的工作),可以直接跳到 00:38:50 嘉宾 Penguin 主播 laike9m Manjusaka 链接 播客中提到的两个优化: Add return const instruction #101632 - python/cpython bpo-47067: Add vectorcall for gaobject #31996 Faster CPython CPython 特化指令 PEP 659 – Specializing Adaptive Interpreter 码农高天:Faster CPython的重要力量——Specialized Instruction 十分钟魔法练习 Apache TVM 太极图形 播客封面来自Anime Girls Holding Programming Books
嘉宾 Messense 主播 laixintao 小白 Adam Wen laike9m 链接 PyO3 PyO3 有哪些应用? polars: Fast multi-threaded DataFrame library in Rust | Python | Node.js. pydantic-core: Core validation logic for pydantic written in Rust. cryptography: Python cryptography library with some functionality in Rust. orjson: Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy PyO3 前身:rust-cpython Maturin: Build and publish crates with pyo3, rust-cpython and cffi bindings as well as rust binaries as python packages What Are Python Wheels and Why Should You Care? PEP 517 – A build-system independent format for source trees Ruff: An extremely fast Python linter, written in Rust. typos: Source code spell checker ChatGPT 写的 Rust 调用 Python C-API 的例子 use std::os::raw::{c_char, c_int}; use std::ffi::CString; use libc::{c_double, c_void}; #[link(name = "python3.8")] extern "C" { fn Py_Initialize(); fn Py_Finalize(); fn Py_BuildValue(format: *const c_char, ...) -> *mut c_void; } fn main() { unsafe { // 初始化 Python 解释器 Py_Initialize(); // 构建一个 Python 元组对象,并打印它 let x = 1.23 as c_double; let y = 4.56 as c_double; let format = CString::new("dd").unwrap().as_ptr(); let result = Py_BuildValue(format, x, y); let s = CString::from_raw(result as *mut c_char).into_string().unwrap(); println!("{}", s); // 关闭 Python 解释器 Py_Finalize(); } } pyo3-ffi: Python-API bindings for the PyO3 ecosystem 在 PyO3 里通过 allow_threads 关掉 Python GIL pybind11 — Seamless operability between C++11 and Python Cython CFFI: C Foreign Function Interface for Python. Interact with almost any C code from Python, based on C-like declarations that you can often copy-paste from header files or documentation. zig cc: a Powerful Drop-In Replacement for GCC/Clang wechatpy: 微信公众平台第三方 Python SDK OrbStack: Fast, light, simple Docker & Linux on macOS FancyWM - a dynamic tiling window manager for Windows 10/11 CSAPP: Computer Systems: A Programmer's Perspective APUE: Advanced Programming in the UNIX® Environment 提到的读书撕书的灵感来自于:李敖先生 吴恩达 prompt engineering 课程: ChatGPT Prompt Engineering for Developers Kiwi 浏览器
如果喜欢我们的节目,欢迎通过爱发电打赏支持:https://afdian.net/@pythonhunter 嘉宾 Alex 主播 小白 laike9m 时间轴 00:00:30 开场 00:00:59 嘉宾自我介绍 00:02:55 [第一部分]向量数据库 milvus 简介 00:07:35 向量数据库的「向量」代表什么以及其应用场景 00:14:16 原始数据到向量数据的转化 00:15:42 不同方式产生的向量数据格式是否相同、能否混用 00:19:04 milvus 存储向量数据的方式以及应用场景描述 00:25:59 怎样利用 milvus 进行向量数据查找 00:27:46 向量数据库存在的必要性 00:33:56 milvus 商业化道路讨论 00:41:57 [第二部分]嘉宾加入当前公司的契机是什么 00:52:54 在三类不同阶段的公司工作分别的工作体验是怎样的 00:53:41 小白:未融资的初创公司 00:57:39 Alex:已经融资进入正轨的创业公司 01:04:02 laike9m:Google 01:08:30 Alex:one more thing 01:12:13 好物分享 01:17:04 结语 相关链接 00:00:47 zilliz 00:00:53 milvus 00:04:26 milvus start history in github 00:06:04 Facebook(Meta) faiss 00:06:21 Elasticsearch 00:06:24 Lucene 00:06:47 Google scann 00:06:50 Microsoft DiskANN 00:09:11 Embedding 维基百科 | 国内网络中没有找到权威解释这里引用一篇博文 embedding 的原理及实践 00:10:03 以图搜图 | 百度搜图 | Google 的话在 goole.com 的搜索栏旁边有一个相机的图标点击就能使用 00:14:50 Hugging Face 00:14:58 towhee 00:36:22 Databricks 00:45:47 B站:李自然说 01:04:23 A career ending mistake 01:12:37 AnimeGANv2 01:14:48 nintendo switch sports 01:16:35 古明地觉-博客园 | 里面有公众号的图片 | 古明地觉-知乎
PDM(Python Development Manager)是由 Frost Ming 开发的一款 Python 包管理工具。 本期由于一些技术原因,声音效果可能欠佳,还请各位听众见谅。 嘉宾 Frost Ming 主播 laike9m laixintao 章节 00:00:19 PDM 介绍 00:03:13 Python 包管理的历史, pyproject.toml, lockfile 00:11:48 Wheel 格式, Python 打包和安装的过程 00:20:00 为什么用户应该选择 PDM? 00:36:15 为什么 PDM 2.0 不再默认开启 PEP 582 00:41:17 Python 虚拟环境有哪些缺陷 00:50:15 PDM 2.0 里的改进和新功能 1:04:38 开发 PDM 过程中值得一说的事 1:18:30 作为开源库维护者的经验 链接 PDM Ep 15. 和 PyPA 的成员聊聊 Python 开发工作流 Python打包指南2021 What Are Python Wheels and Why Should You Care? 为什么选择 PDM PDM 2.0 有什么新特性? rich: a Python library for rich text and beautiful formatting in the terminal. unearth: A utility to fetch and download python packages 用 PDM 解决数独问题 https://github.com/frostming/sodoku-solver
本期是与 Gray 访谈的上期,我们聊了聊他的「工程化」学习 嘉宾 GrayCode 主播 Manjusaka Adam Wen laike9m 时间线 00:18 嘉宾介绍 02:15 Gray 在非洲做土木的经历 06:14 Gray 在转行时遇到的困难与挑战 09:49 怎么算工程能力 23:32 工程能力的一些表现是什么 33:40 我们如何选取一个合适的抽象度
本期是 lepture 访谈的下期,于 2020 年末录制。我们聊了聊他的工作流,以及在日本工作与生活的体验。 嘉宾 lepture 主播 Adam Wen laike9m
如果喜欢我们的节目,欢迎通过爱发电打赏支持:https://afdian.net/@pythonhunter 最近我们和 Gray 聊了聊 Debug,会分成上下两期,这一期我们主要聊了一些遇到的神奇 bug,以及解决的思路,下一期,我们会聊 debug 的一些工具。 嘉宾 Gray 主播 Manjusaka laike9m laixintao 时间线 03:02 Gray 遇到的 HTTP 下载文件的 bug 10:59 Xintao 遇到的 HTTP 跳转 HTTPS 问题 15:37 Manjusaka 遇到的 Python Asyncio 的问题 24:08 Laike9m: 不要浪费太多时间在一个 bug 上,即时寻求帮助 25:20 Xintao 语雀编辑器的一个神奇的 bug 33:40 监控的 P99 毛刺现象 35:30 uwsgi 中 hping3 信号丢失的一个bug 42:30 推荐 git 的 bisect 工具 44:52 laike9m 遇到的 latency 问题 52:43 有关 Python 的 malloc 的一个问题 57:24 Golang 1.12 内存泄漏? 60:00 Python 中 re.complie cache 的行为问题 链接 git bisect Debug 一个在 uWSGI 下使用 subprocess 卡住的问题 | 卡瓦邦噶!
如果喜欢我们的节目,欢迎通过爱发电打赏支持:https://afdian.net/@pythonhunter 本期我们和 lepture 聊了聊他的两个项目:Typlog 和 Authlib。lepture 分享了他作为个人开发者的一些经验。本期于 2020 年录制,有些信息可能已经过时。关于这两个项目的情况请以官网为准。 嘉宾 lepture 主播 Adam Wen laike9m 链接 Typlog Authlib Typlog 上的第一个播客 http://nirokita.cn/ lepture|Typlog 作者:中文世界最大的悲剧便是封闭
如果喜欢我们的节目,欢迎通过爱发电打赏支持:https://afdian.net/@pythonhunter 嘉宾 李辉 主播 laixintao 时间线 00:00:16 前情提要 00:01:57 李辉的职业规划 00:04:24 自由职业很自由,但是也有代价 00:07:45 收入不稳定的焦虑 00:10:30 工程经验的缺失 00:13:23 开源项目和公司项目运作的不同 00:16:24 自由职业工种:做外包 00:25:41 自由职业工种:编程咨询 00:29:06 自由职业工种:写文章 00:34:12 自由职业工种:翻译 00:39:40 自由职业工种:做视频课程 00:43:47 自由职业工种:写书 00:46:05 在不同的地方工作 00:47:38 社保是虾米? 00:49:25 什么样的工作会让人感到快乐和充实? 00:52:57 开源项目赞助 00:57:15 一个人工作效率更高? 01:01:18 在家办公的氛围和孤独感 01:03:18 注意力和自制力问题 01:07:56 小马过河 链接 00:21:16 Upwork 00:22:20 fiverr 00:24:44 PeoplePerHour 00:29:50 李辉的 Twilio 文章 00:32:45 阮一峰的博客 00:36:29 The Design of Web APIs 00:37:39 Two Scoopes of Django P.S. 本期播客埋了一个音乐相关的彩蛋。 P.P.S 李辉两次提到的「稿税」应为「版税」。
如果喜欢我们的节目,欢迎通过爱发电打赏支持:https://afdian.net/@pythonhunter 嘉宾 李辉 主播 Adam Wen 小白 laixintao laike9m 时间线 00:01:21 自由职业经历 00:04:54 找工作的失败经历 00:08:01 编程视频课程 00:10:13 看视频学编程 00:11:31 做外包的奇葩遭遇 00:17:26 小白的职业规划 00:19:45 今天星期几 & 晚上几点睡 & 闹钟哪家强? 00:25:47 毕业后先不要立刻开始工作? 00:28:10 推荐环节 00:28:32 李辉的推荐 00:30:56 xintao 没有什么要推荐 00:31:32 Adam 的推荐 00:34:03 「阿里五型人格」(阿里巴巴的小白兔、野狗、大牛、老牛、老白兔,分别指代什么??) 00:34:50 小白的推荐 00:36:35 laike9m 的推荐 00:37:21 嘉宾自带环节:你未来 3~5 年的阶段目标 00:38:01 李辉的阶段目标 00:40:15 laike9m 的阶段目标 00:42:16 小白的阶段目标 00:45:19 xintao 的阶段目标 00:46:17 知识管理工具 00:49:19 Adam 的阶段目标 00:52:27 结语 链接 00:28:32 娱乐至死 00:31:32 奈飞文化手册 00:31:58 No Rules Rules 00:34:50 Python 神经网络编程 00:36:35 Async Python is Not Faster 00:36:56 Ignore All Web Performance Benchmarks, Including This One
如果喜欢我们的节目,欢迎通过爱发电打赏支持:https://afdian.net/@pythonhunter 嘉宾 陶文 duxiaoran#chengfayun.com 姚钢强 acmerfight#gmail.com Hey,各位听众,本期我们邀请到的两位嘉宾的团队也在寻找优秀的工程师一起工作,如果你感兴趣,欢迎通过邮件与他们联系 主播 Adam Wen 小白 时间线 00:00:11 开始 00:00:34 姚钢强介绍 00:00:49 陶文介绍 00:01:35 嘉宾在 ThoughtWorks 的经历 00:09:41 ThoughtWorks 的结对编程面试 00:11:00 当前大家遇到的面试的经历与情况 00:14:30 如何招人,一般看重候选人的特质 00:24:21 聊聊架构设计与 12fallacy 相关链接 00:05:57 the hint of computer system design 00:15:16 ArchUnit 00:21:10 业务逻辑拆分模式 00:28:50 12Fallacy 01:02:35 Principles of Neural Design 01:02:45 超智能体 01:04:45 the hint of computer system design 01:06:07 PythonTutor
如果喜欢我们的节目,欢迎通过爱发电打赏支持:https://afdian.net/@pythonhunter 嘉宾 李辉 主播 Adam Wen 小白 laixintao laike9m Timeline 00:00:22 开始 00:00:37 嘉宾介绍 00:02:03 学习 Flask 和 Python 的经历 00:04:24 参与开源的经历——写作带来的「副作用」 00:12:28 Pallets 和 Flask 的 logo 到底是什么? 00:16:31 在火星上的 Flask 项目 00:18:52 失去维护的开源项目 00:25:12 Flask Community Workgroup 00:26:18 Flask 扩展选择困难综合症 00:29:17 大而全 VS 小而精+一堆扩展 00:31:20 HelloFlask 社区,兼谈如何正确提问 00:38:31 小白举手:如果我想参与一个已经成熟迭代的开源项目可以从哪些方面入手? 00:41:07 Flask 2.0 发布 00:41:44 New feature:嵌套蓝本 00:45:04 New feature:async 支持 00:48:19 温老师谈 ASGI 00:51:46 New feature:快捷路由装饰器 00:57:59 Flask 和 FastAPI 的对比争议 01:00:46 FastAPI 的营销和相关讨论 01:10:59 Flask 改进意见收集 Flask 用户调查问卷 请访问 链接 00:02:03 Flask 00:02:34 知乎问题:Web 开发还有前途吗? 00:06:24 李辉的书:《Flask Web 开发实战》 00:08:01 Pallets Projects 00:14:46 Flask logo 00:16:44 GitHub Mars 2020 Helicopter Contributor 徽章 00:17:36 NASA 火星直升机中使用了 Flask 的项目:F´ - A flight software and embedded systems framework(使用 Flask 开发的 GDS 后续被拆分到 F´ GDS) 00:22:16 PyPI 关于申请获取一个被抛弃的项目名称的规定 00:25:12 Flask Community Work Group 00:28:58 Dash: the most downloaded, trusted Python framework for building ML & data science web apps. 00:31:20 HelloFlask 论坛 00:35:02 Don't Just Say "Hello" in Chat. 00:41:07 Flask 2.0 changelog 00:45:24 asgiref: ASGI specification and utilities. 00:47:24 Quart: Quart is a Python ASGI web microframework with the same API as Flask. 00:57:18 Flask 2.0 在 Reddit 上的帖子 00:57:30 FastAPI: FastAPI framework, high performance, easy to learn, fast to code, ready for production 00:57:59 李辉的文章:请不要把 Flask 和 FastAPI 放到一起比较 01:01:37 用户对 FastAPI 高性能宣传的质疑以及其作者对「on compare with」的解释 01:08:06 APIFlask: A lightweight Python web API framework.(中文介绍文章) 01:09:26 Async Python is not faster 01:09:32 12 requests per second.(勘误:这里 laike9m 说错了。在文章里 12 requests/sec 是使用同步 Web 框架 + 同步 ORM 的结果,而非异步) 01:12:37 Flask 用户调查问卷
如果喜欢我们的节目,欢迎通过爱发电打赏支持:https://afdian.net/@pythonhunter 嘉宾 陶文 姚钢强 主播 Adam Wen 小白 时间线 00:00:11 开始 00:00:34 姚钢强介绍 00:00:49 陶文介绍 00:01:35 嘉宾在 ThoughtWorks 的经历 00:09:41 ThoughtWorks 的结对编程面试 00:11:00 当前大家遇到的面试的经历与情况 00:14:30 如何招人,一般看重候选人的特质 00:24:21 聊聊架构设计与 12fallacy 相关链接 00:06:20 Martin Fowler 00:07:51 ThoughtWorks 技术雷达 00:14:30 创业公司如何招人 00:24:21 12fallacy 00:30:50 Correlation & Correlation 00:26:33 “优秀架构设计” 00:33:00 八叉说 00:42:40 Dreyfus model 01:16:00 Hints for Computer System Design
如果喜欢我们的节目,欢迎通过爱发电打赏支持:https://afdian.net/@pythonhunter 嘉宾 Lidi Zheng 主播 Laike9m 小白 时间线 00:00:28 开始 00:00:40 嘉宾介绍 00:01:29 嘉宾经历 00:05:26 嘉宾在 CMU(卡内基·梅隆大学) 研究生的经历回顾 00:07:08 嘉宾在出入 Google 时的情况 00:09:04 什么是 RPC 00:09:55 gPRC 与 RPC 的关系是什么 00:10:19 gRPC 中 g 的含义 00:11:23 gRPC 支持的语言 00:12:26 为什么 gRPC 要使用 HTTP2 00:13:43 gRPC 使用了 HTTP2 的哪些特性 r 00:14:10 什么是流控制 00:14:49 流控制的一些选项是否可以在 gRPC 中修改 00:16:02 gRPC 的 streaming 是如何实现的 00:16:31 HTTP3 的出现是否会影响 00:18:55 关于 TCP 和 UDP 服务保障的相关讨论 00:20:08 gRPC Protocol Buffers 00:23:36 关于 gRPC Python 00:24:08 XX 语言的使用经验 00:26:34 如何让 gRPC 支持 asyncio 00:32:34 Python asyncio 特性讨论 00:33:00 gRPC 与服务发现 00:40:40 gRPC 与商业开源 00:51:17 如何防止恶意代码从 Github 流入企业内部 00:57:52 从 gRPC 角度出发聊一聊 Python 的性能 01:06:44 有考虑用 Cython 重写 gRPC 嘛 相关链接 00:10:14 Thrift | 这边有一个口误 Thrift 是由 Facebook 开发的 00:17:12 HTTP Headers Trailer 属性 00:19:02 ISP | Core Provider 00:20:13 gRPC Protocol Buffers 00:22:17 SOAP | EBS 00:23:58 Cython 00:30:28 Youtube-Lidi Zheng, Pau Freixes - gRPC Python, C Extensions, and AsyncIO 00:34:55 Envoy Proxy 00:38:16 Google Cloud Traffic Director | 可能需要科学上网才能打开 00:46:04 Monolithic 单体架构 00:58:14 Cyberbrain 01:00:07 Message Pack 01:00:57 Why Is GIL Worse Than We Thought? 01:09:22 yep 01:11:09 十三机兵防卫圈 | 百度百科 01:11:52 点击补番 -> 永生之酒
如果喜欢我们的节目,欢迎通过爱发电打赏支持:https://afdian.net/@pythonhunter 时间轴: 01:17 三地疫情 08:00 Google work from home 政策 16:00 Manjusaka的吐槽 19:00 Laike9m 的吐槽 27:00 我们与抑郁症 30:00 Manjusaka性侵经历 33:00 对于抑郁症的建议 41:00 Laike9m 推荐的会议 56:00 总结时间 资料: 信涛的组招聘信息 Shopee Careers - Come Make History With Us | Shopee Singapore 奇客Solidot | 四分之一被调查的中国科技工作者忧郁
如果喜欢我们的节目,欢迎通过爱发电打赏支持:https://afdian.net/@pythonhunter 主播 Manjusaka laike9m laixintao 时间轴 00:02:00 为什么 xintao 会离开阿里? 00:22:43 办理新加坡签证 00:28:30 新加坡的生活成本和税收 00:29:57 在新加坡租房 00:43:20 新加坡的日常生活 00:58:17 应对诈骗 01:03:13 xintao 在 Shopee 的工作,Shopee 的公司文化 01:06:06 如何进入 Shopee 工作? 01:11:05 Manjusaka 的招人广告 链接 What is Site Reliability Engineering (SRE)? Google December 2020 services outage 智能运维系列(一)| AIOps 的崛起与实践 关于《Fluent Python》中文版中“期物”这个翻译的讨论 组屋 我在新加坡一个月的生活费明细 - by laixintao Join Shopee & Work with Me! - xintao 的内推链接 PyCon US 2021
本期嘉宾: laike9m laixintao Manjusaka 小白 本期是去年七月份录制的一期。四位主播聚在一起,聊聊他们最近的生活,以及对未来的打算。失踪主播小白康复归来,让我们撒花
如果喜欢我们的节目,欢迎通过爱发电打赏支持:https://afdian.net/@pythonhunter 本期是个人知识管理体系系列的最后一期。我们讨论了关于“输出”的方方面面,包括输出的目的、方式、工具、意义,以及一些实用的关于写作的建议。欢迎收听。 本系列导航 Ep 23. 个人知识管理体系系列 - 输入篇 Ep 24. 个人知识管理体系系列 - 内化篇 Ep 25. 个人知识管理体系系列 - 输出篇(本期) 嘉宾 张佳圆 主播 小白 laike9m laixintao 时间轴 02:10 为什么要输出? 03:00 通过何种方式进行输出? 14:35 为什么 GitHub 是最值得信赖的内容托管平台? 21:20 用什么工具进行写作? 30:20 如何基于内化进行输出? 43:45 如果想开始写作,要怎么做? 48:40 写作的意义 50:00 推荐环节 相关链接 学习金字塔 怎么在 Linux 中装 Python 3 People Die, but Long Live GitHub Ulysses Typora Markdown 编辑器做成 WYSIWYG(所见即所得)形式会不会有什么弊端? - Belleve的回答 ZeroVer: 0-based Versioning WordPress 迈尔斯 - 布里格斯性格分类法(MBTI) 《软技能-代码之外的生存指南》 《当我谈跑步时我谈些什么》 《what If 那些古怪又让人忧心的问题》 《how to 如何不切实际地解决实际问题》 《活出生命的意义》 《鞋狗:耐克创始人菲尔・奈特亲笔自传》 《松本行弘的程序世界》 Anki 《CPython Internals: Your Guided Tour Through the Python 3 Interpreter》 秘塔写作猫 《非暴力沟通》
如果喜欢我们的节目,欢迎通过爱发电打赏支持:https://afdian.net/@pythonhunter 上一期的节目中我们和佳圆讨论了如何获取知识,如何预处理知识。在本期的节目中我们主要讨论如何将这些知识转化成自己理解的东西,介绍了一些内化的工具和方法,如何更有效率地复习自己的知识等。 如果您喜欢本期节目,欢迎关注捕蛇者说,我们本系列下一期节目将介绍如何将知识输出。 本系列导航 Ep 23. 个人知识管理体系系列 - 输入篇 Ep 24. 个人知识管理体系系列 - 内化篇(本期) Ep 25. 个人知识管理体系系列 - 输出篇 嘉宾 张佳圆 主播 小白 laike9m laixintao 时间轴 00:30 开场 01:36 什么是内化? 03:04 工具介绍 05:20 笔记和内化的区别是什么? 10:00 平时做“内化”部分的流程 20:22 Filter 的功能 24:00 如何将知识转化成自己的东西? 27:40 给完全不懂的人讲解自己的知识 33:40 Ted Nelson 有关“链接”的理解 36:00 这些知识的标签如何设定? 40:38 使用anki来复习 42:00 Evernote 的迁移问题 43:00 如果没有 Roam Research 怎么做知识内化? 46:40 对于复述的看法? 相关链接 03:04 Devonthink 作为主要的 reference 工具 10:00 做笔记的流程,主要参考 How to Take Smart Notes 这本书,具体的流程如下: Draft Notes:草稿笔记,例如上面阅读过程中在 Apple Notes 中记录的笔记、Highlights 等都是草稿笔记,需要进行进一步处理 Literature Notes:可以理解为阅读过程中记录的笔记,由草稿笔记整理而来,在 Roam Research 中的一个例子: Permanent Notes,翻译成永久笔记?基于 literature notes 得来的笔记,这种类型的笔记有几个特点: atomic self contained linked 例子: 10:00 中提到过得图片: 26:25 提到的论文:Improving Students' Learning With Effective Learning Techniques: Promising Directions From Cognitive and Educational Psychology 34:10 obsidian 33:40 Ted Nelson Project Xanadu 40:38 anki
如果喜欢我们的节目,欢迎通过爱发电打赏支持:https://afdian.net/@pythonhunter 本系列导航 Ep 23. 个人知识管理体系系列 - 输入篇(本期) Ep 24. 个人知识管理体系系列 - 内化篇 Ep 25. 个人知识管理体系系列 - 输出篇 嘉宾 张佳圆 主播 小白 laike9m laixintao 时间轴 00:00:30 开场 00:01:08 嘉宾介绍 00:01:55 知识主要输入途径 00:05:31 Github Star 的一些延伸探讨 00:09:37 如何挑选专业类书籍 00:11:58 原版还是译版 00:12:38 如何粗读一本书 00:15:10 佳圆的 3wh2t 阅读分析法 00:17:53 实体书还是电子书? 00:25:20 笔记整理相关讨论 00:34:44 各自认为最“恐怖”的一本书 00:41:51 在什么样的场景会同时阅读多本书以及如何同时阅读多本书 00:44:02 如何阅读技术类书籍 00:49:47 获取文章的途径 00:55:22 有关如何系统性学习某一知识的讨论 01:01:41 文章整理相关方法讨论 01:04:07 关于 OCR 全文搜索的简短描述 01:09:33 其他的获取知识的途径 相关链接 00:10:52 The Pragmatic Programmer 00:11:03 Twttier: Anthony Shaw 00:11:09 cpython internals 00:13:45 如何阅读一本书 00:15:30 Twitter-Jiayuan:3wh2t 阅读分析法 00:20:59 Antilibrary 00:21:15 Twitter-Jiayuan:Anti Library 00:24:18 XODO PDF Reader 00:29:43 Roam Research 00:30:57 GTD 维基百科 | 百度百科 00:39:35 曼昆:经济学原理 00:40:18 科学素养文库·科学元典丛书 00:45:00 MIT CS 006 00:47:41 程序员修炼之道-从小工到专家 | The Pragmatic Programmer: From Journeyman to Master 00:49:09 软技能:代码之外的生存指南 00:50:02 Reeder 00:50:12 Instapaper 00:50:32 Hacker News 00:50:36 Feedly 00:52:32 Inoreader 01:02:59 DEVONthink for Mac and iOS 01:06:38 OneTab 浏览器插件 01:17:22 [Porter.io]: Hacker News Personalized And Delivered 01:18:59 Listen Notes 几个搜索 GitHub stars 的小工具 alfred-github-stars:如果是 Mac 用户,强烈推荐! github-star-search
推广 PyCon China 2020 正式启动 主题演讲和闪电演讲征稿时间: 2020 年 10 月 29 日 - 2020 年 11 月 7 日(实际截止日期可延后) 会议举办时间: 2020 年 11 月 28 日 - 11 月 29 日 您可以投稿时长为 45 分钟的主题演讲,或者时长为 10 分钟的闪电演讲,根据您自己评估的内容所需时间来决定。需要注意的是,议题分享时间包含 Q&A 时间。 欢迎通过下面的链接报名参加我们的主题演讲 / 闪电演讲:https://jinshuju.net/f/zWuGxB 主播 adamwen 小白 laike9m 嘉宾 高天 本期聊的项目 VizTracer 在线预览: http://www.minkoder.com/viztracer/result.html 系列介绍文章: CodeSnap 0.0.1 来啦!一个 python 小工具 CodeSnap 0.0.4 我把 performance 提升了 20 倍 CodeSnap 0.1.0 我已经做出了我刚开始想要的东西 VizTracer 0.1.1!CodeSnap 改名啦!Filter 新鲜出炉 VizTracer 0.2.0 正式支持 Mac 啦 VizTracer 的一个重要的小优化 VizTracer 0.3.0 功能越来越完备了 VizTracer 实战,一小时性能提升 900% VizTracer 0.4.0, 我们终于支持 Windows 啦 VizTracer 0.5.0,让 VizTracer 成为你的行车记录仪! wthell,让你搞明白你的 python 代码为啥崩了 VizTracer 0.6.0, 终极杀器 vdb 来了 VizTracer 0.8.0, 不改源代码,功能更强大 VizTracer 0.9.0, 支持多进程了 链接 07:07 Pyflame 24:00 setprofile 32:30 https://opentracing.io/ 39:55 cProfile, RunSnakeRun 40:30 pyinstrument, py-spy 42:11 line_profiler 49:54 functiontrace, panopticon 01:02:20 repl.it 01:02:20 Gitpod 01:13:50 VizTracer 介绍视频 01:14:46 opensource.org 01:33:46 一篇关于报警和监控的论文 01:35:20 EECSResume -- EE 简历,CS 简历,免费点评,精心修改
Hi 大家好,这一期我们请到了 Teahour 的主播 Terry,跟我们聊了一些和程序员相关的话题,比如远程工作、创业、招聘、播客、跨界、Ruby 社区等等。 Teahour 是一档面向程序员的高质量播客,欢迎大家收听:https://teahour.fm/ 本期分成上下两期,这是下期。 如果喜欢我们的节目,欢迎通过爱发电打赏支持:https://afdian.net/@pythonhunter 本期嘉宾: Terry: Nervos 创始人 & CEO 本期主持: laike9m laixintao 章节 00:00 大公司的晋升机制 05:20 Valve 的员工手册 11:40 我如何把薪水从50 人民币/ 天提升到100 美元/ 小时的? 23:00 长大了却不敢表达了? 30:00 大话传奇人物DHH 32:00 聊聊招聘 40:00 推荐环节 相关链接 Valve员工手册 LeanCloud 开放薪酬体系 BaseCamp员工手册 BaseCamp remote work video 对不起,我们只爱牛人 Terry 推荐 a16z podcast The Tim Ferriss Show The 4-Hour Workweek: Escape 9-5, Live Anywhere, and Join the New Rich Hardcover – Illustrated, December 15, 2009 https://bulletjournal.com/pages/book Destroy all software WAT laike9m 推荐的播客 Teahour 牛油果烤面包 大人课 社会人科技评论 Talk Python To Me Test & Code Python Bytes
Hi 大家好,这一期我们请到了 Teahour 的主播 Terry,跟我们聊了一些和程序员相关的话题,比如远程工作、创业、招聘、播客、跨界、Ruby 社区等等。 Teahour 是一档面向程序员的高质量播客,欢迎大家收听:https://teahour.fm/ 本期分成上下两期,这是上期。 如果喜欢我们的节目,欢迎通过爱发电打赏支持:https://afdian.net/@pythonhunter 本期嘉宾: Terry: Nervos 创始人 & CEO 本期主持: laike9m laixintao 章节 00:25:00 Teahour 00:26:20 Terry 的创业经历 00:29:30 闲聊 Rust, Ruby, Python, Go 这几门语言 00:38:00 做播客的感想 00:42:45 播客、写作、开源 00:45:45 远程工作、异步工作 链接 00:03:03 Teahour: #90 - 和 PingCAP CTO 畅谈数据库和编程语言 00:05:05 5by5 播客 00:06:40 Accidental Tech Podcast 00:09:27 采访 javaeye 的创始人 --Robbin! 00:13:07 Teahour: #78 - 和 Vue.js 框架的作者聊聊前端框架开发背后的故事 00:15:20 Teahour: #92 - How to build blockchain from scratch? 00:17:40 Teahour: #9 - 与 Rails 创始人 DHH 聊 Rails 00:18:35 Teahour: #5 - Hardware for developers 00:24:35 Robbin Fan 00:26:30 http://pragmatic.ly/ 00:27:06 https://github.com/peatio/peatio 00:33:44 Why Go and not Rust? 00:33:44 Why Rust and not Go? 00:36:55 RubyConf China 2020 - Ruby 3 and Beyond by matz 00:40:30 捕蛇者说 Ep 06. 和 the5fire 来聊聊 Django Yet Another FM
如果喜欢我们的节目,欢迎通过爱发电打赏支持:https://afdian.net/@pythonhunter 嘉宾 无辄 JmPotato lengthmin 主播 laike9m 时间轴 00:00:00 嘉宾自我介绍 00:03:30 校招的一些关键时间点:秋招、春招 00:07:18 校招的准备 00:12:40 读研 vs 工作 00:34:27 简历 00:41:05 如何找内推 00:47:40 如何准备算法面试 01:01:51 如何准备计算机基础知识面试 01:09:02 引导面试官问特定问题 01:16:35 面试中最重要的:真诚、谦虚、客气、自信 01:17:59 简历里的加分项:GitHub 项目、博客 01:23:12 嘉宾聊自己的面试经历 01:24:38 PingCAP(包括 Talent Plan 介绍) 01:32:46 微软 01:40:24 阿里 01:49:12 “能不能加班?” 01:51:57 行业的风口在哪 01:57:45 推荐环节 02:03:25 嘉宾广告时间 链接 本期提纲 我为什么放弃保研,选择直接工作 - 无辄 所以,到底要不要读研?- laike9m 在读研 & 工作中选择后者 - Potato 校招面试不完全指南 - 无辄 如何在面试中筛选 / 不做一个「背题家」- Potato PingCAP Talent Plan 又是 DDIA A Short Hike Notion 无辄的博客 RSSHub 轻芒杂志 为什么这么设计(Why's THE Design) 题图来源:BigStockPhoto.com
如果喜欢我们的节目,欢迎通过爱发电打赏支持:https://afdian.net/@pythonhunter 本期嘉宾 立党 本期主播 laike9m laixintao 小白 时间轴 00:00:28 嘉宾介绍 00:01:26 立党开场快板 00:02:02 hedgehog-lab 介绍 00:03:43 创建 hedgehog-lab 的初衷 00:06:35 MATLAB 和 Python 在科学计算领域如何走向成功的 00:10:02 Python 和 NumPy 是谁成就了谁 00:10:53 NumPy 和 MATLAB 的简单对比以及 MATLAB 生态的相关讨论 00:13:31 主播们使用 MATLAB 的一些经历 00:16:15 为什么 Python 不是最适合初学者学习的编程语言 00:29:18 hedgehog-lab 的起源 00:30:58 聊一聊实现矩阵运算的原理 00:34:27 什么是符号计算 00:36:01 hedgehog-lab 中使用到的一些库和工具 00:39:50 hedgehog-lab 未来的规划 00:45:41 hedgehog-lab 的计算速度是和什么相关的 00:48:17 关于 hedgehog-lab 使用场景和部署方式的讨论 00:55:14 开源社区治理相关讨论 01:05:50 hedgehog-lab 未来形态的讨论 01:09:59 推荐环节 相关资料 00:01:48 hedgehog-lab 00:21:29 IBM SPSS software 00:21:29 Stata 00:21:29 SAS 00:27:53 Conda 00:29:52 Babel 00:30:17 operator overloading 百度百科 | 维基百科 00:33:23 Nerdamer 00:34:56 MATHEMATICA 00:35:08 simpy 00:36:08 plotly.js 00:37:00 CUDA 百度百科 | 维基百科 00:37:05 GPU.JS 00:38:24 TensorFlow.js 00:38:25 onnx.js 00:41:10 Reply 1988 00:50:34 Electron 00:52:05 PWA 01:10:24 AutoKeras 01:10:45 Nerdamer 01:11:13 请回答 1988 01:12:17 草东没有派对 01:12:53 shortuuid 01:14:12 typing-extensions 01:17:35 魁拔之十万火急 | 魁拔之大战元泱界 | 魁拔之战神崛起 01:17:35 镜心之歌
如果喜欢我们的节目,欢迎通过爱发电打赏支持:https://afdian.net/@pythonhunter -- 这一期 laike9m 做客牛油果烤面包播客,一起聊了聊世界第一编程语言 Python 的前世今生。 嘉宾:laike9m 主播:斯图亚特、Vindy、Cat Chen 剪辑:王立冰 本期内容 Python 有多流行 Python 流行的原因 Python 的性能 Python 的历史 Python 的未来发展方向 吐槽 Python 2 到 3 的升级 相关链接 牛油果烤面包播客: https://avocadotoast.live/ 两个编程语言排行榜 PYPL The TIOBE Index The Zen of Python Lua 的速度为什么比 Python 快? - 刘缙的回答 - 知乎 My Reaction to "Under Discussion: The Performance of Python" ABC language 捕蛇者说 Ep 16. Goodbye Python 2, Hello Python 3! Why Python 3 exists 捕蛇者说 Ep 01. 新人到底需要什么 Codecademy 《Fluent Python》(《流畅的 Python》) 图片截取自 Image by Gerd Altmann from Pixabay 片头片尾音乐: Courante 1st Cello Suite Exzel Music Publishing (freemusicpublicdomain.com) Licensed under Creative Commons: By Attribution 3.0 http://creativecommons.org/licenses/by/3.0/
如果喜欢我们的节目,欢迎通过爱发电打赏支持:https://afdian.net/@pythonhunter Hi 大家好,这一期信涛和 Luke 聊了有关 Lint 的话题,包括 Flake8,如何使用 CI 等。 主持:laixintao 嘉宾:Luke 时间轴: 02:00 日常项目中会用到的 Lint 工具; 14:30 其他语言的 Lint 工具; 20:00 一些集成 Lint 的 Bot 想法... 30:00 如何开发 Flake8 插件; 36:00 我们在公司里是怎么使用CI的; 45:00 使用 Git hook; 17:30 推荐环节; 相关资料: https://github.com/topics/flake8 https://github.com/DmytroLitvinov/awesome-flake8-extensions https://flake8.pycqa.org/en/latest/plugin-development/ https://www.pylint.org/ https://www.python.org/dev/peps/pep-0008/ Luke 提到的能找出潜在 Bug 的 flake8 插件 检查代码中是否有 print 的插件 Git Hooks Luke 推荐:Hypothesis
本期主播 adamwen laixintao Manjusaka 本期嘉宾 liamchzh TimeLine 00:00:30 正片开始-嘉宾介绍 00:01:27 聊一聊自己喜欢的 Python3 特性 00:02:00 dataclasses 00:04:09 在面向对象的开发过程中何时会用到 frozen 这个特性 00:05:19 使用 datacalsses 时在 __init__ 中定义的参数属于 class 参数还是对象参数? 00:12:10 有没有一个方法能够在 __init__ 方法中调用 dataclasses 的 __init__ 方法? 00:15:10 Python 的执行代码有必要获取机器有多少核心嘛,因为它可以通过外部在控制多线程模型? 00:16:46 有序字典 00:17:18 Django choices 00:19:00 金融验签之参数顺序 00:21:15 关于对接支付接口的一些吐槽 00:22:08 兼顾一批数据的有序和快速查找 00:23:08 f-String 00:24:52 如果将 f-String 的 f 前缀变成后缀 00:26:02 type hint 00:27:22 type hint 在 CI 中的应用 00:29:16 在真实使用过程中是整理 CI 的时间消耗与 CI 帮助我们修复 BUG 的时间哪个更多一点 00:30:00 Python3 中觉得不爽的点 00:30:09 pep572 海象操作符 00:30:57 (不局限于 Python3)线上调试工具缺乏 00:33:48 3 除以 2 的结果是什么 00:34:42 Python3 sort 去掉了 cmp 参数 00:35:32 Python3 的升级偏向于某些语法糖(相对于调试工具等方面) 00:37:26 Python2 迁移至 Python3 过程中的问题 00:38:01 迁移方式 00:41:28 如何在之迁移了部分语法的情况下再 Python3 中进行测试 00:43:46 分层迁移过程中的一些细节 00:45:14 何时停止对 Python2 的测试 00:48:06 关于面试会提到的 Python3 与 Python2 如何同时兼容的问题的讨论 00:49:20 关于 Mercurial 迁移文章的讨论 00:53:16 关于迁移后测试的一些补充 00:55:56 Python2 迁移至 Python3 之字符串的一个坑 00:57:28 Unicode 相关讨论以及 Python 中的字符串和 Unicode 01:06:45 更多关于 Python2 中坑的举例(吐槽) 01:09:01 对现在需要做 Python3 迁移工作的人的建议 01:15:37 Python3 协程的相关讨论(Manjusaka 疯狂输出) 01:28:59 推荐环节 01:34:11 laike9m 客串感谢打赏听众 01:36:46 结束词+音乐 Guest Recommendation 00:02:00 python3-dataclasses 00:26:02 PEP 484 -- Type Hints 00:30:09 PEP 572 -- Assignment Expressions 00:38:34 nstagram PyCon 2017 00:48:58 Mercurial's Journey to and Reflections on Python 3 01:01:56 Pragmatic Unicode 01:12:35 caniusepython3 01:29:11 A Philosophy of Software Design 01:29:29 A Philosophy of Software Design 作者 YouTube 演讲 01:31:01 Microservice Patterns 01:31:13 TCP/IP详解 卷1:协议 01:31:29 vim-which-key 01:33:04 kafka-documentation-desgin
本期节目较长且信息量巨大,大家可以酌情分多次来听。 本期结尾有彩蛋,会是什么呢?大家敬请期待吧
本期主播 laike9m laixintao 本期嘉宾 Phil 时间节点 00:02:23 同事的坑 00:15:10 TL(tech leader)的坑 00:40:10 老板的坑 01:02:10 推荐环节 播客中提到的内容 美剧《硅谷》 电影《饥饿站台》 How to American 《Inside The Python Virtual Machine》 byterun,介绍文章 《A Python Interpreter Written in Python》
本期主播 laike9m Manjusaka laixintao 本期嘉宾 五花肉 时间线 00:00:33 正片开始 00:02:43 捕蛇者说广告时间 00:04:04 Q:技术运营的小伙伴日常的工作是什么? 00:05:47 Q:为什么感觉技术运营会和销售有职能上的重合? 00:07:11 Q:技术运营和销售的侧重点有什么不同? 00:09:10 Q:技术运营是如何和销售进行配合工作的? 00:11:13 Q:一般是如何衡量一个项目是否有推广价值或其他(商业价值)的? 00:11:21 就上一问题以 iRedis 项目为例分析如何进行开源项目运营 00:18:46 Q:新项目如何培养第一批活跃用户并建立一个有一定活跃度的用户社群? 00:26:37 Q:在将开源想项目商业化后运营的侧重点有什么不同? 00:30:00 Q:技术开发和技术运营之间的工作要求有什么异同? 00:33:10 Q:关于沟通时的换位思考能力 00:35:27 Q:如何确保技术运营在传递技术信息时不出现偏差? 00:36:26 Q:在进行技术相关描述时如何平衡专业性和普适性? 00:37:51 Q:如何在没有成熟团队的情况下完成上一问题? 00:38:30 关于社区运营的一些吐槽 00:40:45 Q:如何合理的训练表达能力和沟通能力? 00:44:40 Manjusaka 大型虐狗 + 撒娇现场 00:46:07 大公司进行技术布道时如何不让技术开发反感? 00:55:13 为什么建议去经营个人影响力? 00:58:21 增加个人影响力的途径 01:03:32 关于个人影响力运营案例的讨论 01:08:51 作为曾是技术开发现在做技术运营的肉姐给正在做开发的听众的一些建议 01:12:00 非技术能转技术运营嘛? 01:22:55 嘉宾推荐环节 相关链接 00:02:54 Django 官方中文文档翻译团队 00:11:27 iRedis 00:19:11 Ant Design 00:22:51 DBCLI 00:26:44 PingCAP 00:28:00 社会人科技评论 | 两期商业开源的节目分别是:第 20 期 和 第 21 期 | 整理时发现 第 14 期 也是讲开源的 00:30:05 肉姐整理的技术运营岗位资料:第 1 篇 | 第 2 篇 | 第 3 篇 00:38:26 小黄鸭调试法 00:59:24 回形针PaperClip | B 站主页 01:03:38 董伟明's Blog 01:05:16 阮一峰关于「GitHub 的“代码导航”」的推文 01:23:23 人类的智慧 | 阿图尔·叔本华 01:24:06 健身环大冒险 01:26:44 mycli | pgcli 01:28:29 redash | incubator-superset
本期主播 Adam Wen 新人主播:小白 本期嘉宾 F叔 时间线 00:00:33 开场 00:00:46 自我介绍 00:01:55 如何接触的 Python? 00:04:29 日常对比 Python 与 JAVA 00:11:00 什么是微服务(服务化)? 00:14:20 推进微服务(服务化)时如何拆分业务?不同团队应如何配合? 00:25:47 赖信涛同学“乱入” 00:26:31 微服务(服务化)中的调用链路以及工具 00:43:55 微服务(服务化)框架推荐 00:48:08 RPC 框架需要做鉴权吗? 00:52:25 怎么看待现在 Service Mesh 的方案? 00:54:35 服务治理怎么做?需要关心那些事情? 00:59:31 嘉宾推荐 相关链接 gevent DDIA q
本期主播: laike9m Manjusaka 本期嘉宾: 红姐(thautwarm) 播客中提到的内容: 中科院计算所发布国产编程语言“木兰” Lambda lifting No Multiline Lambda in Python: Why not? What's the difference between local variable, cell variable and free variable? Python AST PLY (Python Lex-Yacc) Lark - a modern parsing library for Python bytecode 《理科生坠入情网,故尝试证明。》 FastAPI
本期中的问题可在这里找到: https://ama.pythonhunter.org/ 本期主播 laike9m laixintao Adam Wen Manjusaka 勘误 01:49:40 关于「unbound method 在 Python 3 中为什么会取消」的讨论。 关于 unbound method 取消的原因,我没找到官方的解释,很多人说是为了简化语言,因为区分 function 和 unbound method 意义不大。然后我们关于 @staticmethod 那里说错了。@staticmethod 在 Python 3 里还是需要的,因为只有你在 MyClass.some_method 才是和 @staticmethod 等价,然而很多时候我们需要在 instance 上调用,这时候还是需要 @staticmethod。 时间线 00:00:35 开场 00:03:00 正式开始 00:03:20 「ASK」AOQNRMGYXLMV:能谈谈你们是怎样制定职业规划的吗? 00:22:44 「ASK」zhang-boyang:对于一门编程语言的掌握程度分为几个等级?每一级是怎么定义的? 00:34:10 「ASK」qixiangyang:只会 Python 的程序员应该选哪一门语言作为第二语言,可以从技术投资和基本技能提升的角度来讲讲吗? 00:46:22 「ASK」Littlecowherd:怎样才能进大厂? 「ASK」EruDev:学历低的情况下,专科,有机会去技术氛围相对好的公司吗,不奢望进大厂? 00:57:25 「ASK」ubuhuo:你们平时会专门积累自己设计的一些代码案例吗?以什么样的方式? 01:02:11 「ASK」zxymike93:几位主创人,19年学了哪些技术?20年计划学哪些新技术? 01:15:48 「ASK」a123:有肉身翻墙的经验分享吗? 01:18:08 「ASK」ubuhuo:平时会因为什么而加班,加班的时候都在做什么? 01:22:18 「ASK」joyhuchao:请问捕蛇者说的编辑小姐姐结婚了么? 01:22:52 「ASK」VanLiuZhi:感觉Python深入很难....... 01:34:55 自由回答时间 01:55:42 推荐环节 相关链接 00:01:44 IRedis: A Terminal Client for Redis with AutoCompletion and Syntax Highlighting. 00:02:32 typora:一个 MarkDown 文本编辑器 00:11:04 Antirez's blog | redis 作者的博客 01:05:07 Linux System Programming | Linux 系统编程 01:08:24 Site Reliability Engineering: How Google Runs Production Systems | SRE : Google运维解密 01:08:32 A Philosophy of Software Design 01:08:48 A Philosophy of Software Design 作者 YouTube 演讲 01:08:56 Clean Architecture | 代码整洁之道 01:09:24 博文:how does a relational database work 01:09:40 DDIA: Designing Data-Intensive Application | 数据密集型应用系统设计 01:12:40 原则 01:13:48 DOT (graph description language) 01:14:44 echarts 01:17:32 ggtalk:程序员的闲聊节目 01:24:13 kazoo | 使用 python 操作 zookeeper 的库 01:38:05 pep572 中国区 ACM 会员 BetterZhihu](https://github.com/Esimorp/BetterZhihu) Smalltalk Luke!用索引! How does a relational database work
时间线: 00:00 自我介绍,我们都用 Vim 干什么? 04:00 VS Code 的远程编辑功能,Vim 是不是也可以实现一个? 09:09 我们是怎么学习使用 Vim 的? 27:00 我们如何管理自己的 Vim 配置? 34:52 Vim 插件开发的经历 40:00 如何用 Python 开发 Vim 插件 48:00 Vim 我们用 Vim 的时候觉得 Vim 有哪些缺点 58:00 推荐环节(Vim 插件) 资料: dyng 开发的 ctrlsf.vim: https://github.com/dyng/ctrlsf.vim vimtutor, 在 vim 中运行 :h vimtutor vscode,远程编辑功能:https://code.visualstudio.com/docs/remote/remote-overview Learn Vimscript the Hard Way Learn Vimscript the Hard Way laixintao的笔记:https://www.kawabangga.com/vim%e7%b3%bb%e5%88%97 学习 Vim 的小游戏:https://vim-adventures.com 一个看 Vim 8.2 新特性的小游戏 https://github.com/vim/killersheep laixintao 的 vimrc:http://github.com/laixintao/myrc Dyng: https://github.com/dyng/dotfile 插件推荐: https://github.com/preservim/nerdtree https://github.com/ruanyl/vim-gh-line https://github.com/vim-syntastic/syntastic https://github.com/kien/ctrlp.vim https://github.com/vim-airline/vim-airline https://github.com/dense-analysis/ale https://github.com/Yggdroot/LeaderF https://github.com/terryma/vim-multiple-cursors https://github.com/ycm-core/YouCompleteMe https://github.com/ludovicchabant/vim-gutentags https://github.com/junegunn/vim-plug https://github.com/junegunn/vim-easy-align https://github.com/godlygeek/tabular https://github.com/thinca/vim-quickrun 由于我们主播的知乎账号被封禁,所以以后的更新不会再发布到知乎上,请您留意。 推荐您使用泛用型客户端订阅我们的播客。也欢迎您关注我们的Twitter,加入我们的telegram群组和其他听众一起聊天,我们的twitter是 @pythonhunter_, telegram群组的链接是: https://t.me/joinchat/Dm8lIVjvCo9_-6YZYLycEw 我们下期再见。