Discover捕蛇者说
捕蛇者说
Claim Ownership

捕蛇者说

Author: pythonhunter

Subscribed: 438Played: 4,276
Share

Description

《捕蛇者说》是一档以编程为主题的聊天节目。我们会聊聊编程、程序员和 Python。
65 Episodes
Reverse
本期节目,我们请到了《一个独立创造者的五年》的作者 Hawstein。从独立开发切入,我们聊了很多关于自身和时代的思考。做了六年捕蛇者说,本期是我个人(laike9m)最喜欢的一期,也希望大家喜欢。 本期关键词: 独立开发 / 人生规划 / 现代性与分工 / 副业模式 / 开源 / 自由的代价 / 存在主义危机 / 技术乐观 / 死亡思考 嘉宾 Hawstein 主播 Adam Wen laike9m 勘误与说明: Obsidian 并不开源,播客中的描述有误 本期节目录制时,关于「沉浸式翻译」的争议尚未出现。播客反映了我们当时的真实想法。对后来的争议这里不做评判。 时间点 00:14 Hawstein 自我介绍 05:56 Twitter 营销与独立开发者的困境 09:54 独立开发的本质与成功因素 15:17 产品开发方法与个人需求 20:22 个人需求与产品认同感 24:16 副业模式与安全网 27:17 工作与兴趣的平衡 31:11 情绪驱动与产品 Ownership 34:35 产品收购与理想主义 38:55 独立开发避坑指南 42:33 快速发布与开源策略 47:57 开源的负担与产品心态 52:32 成功产品的定义与收购流程 57:56 读者来信与现代人的追求 1:02:31 自由的代价与存在主义危机 1:07:17 中等智慧陷阱与阿甘精神 1:11:56 旧秩序的崩塌与新秩序的建立 1:15:02 技术乐观与财富集中 1:19:24 人类文明的叙事与死亡思考 链接 Tweet Hunter 像造产品的机器一般的 indie hacker Tibo Git GUI Fork Naval x Kapil Gupta: Conquering the Mind 施瓦辛格关于 marketing is an art 的 Tweet Pieter Levels 的书 《Make》 做 Inkdrop 的日本 indie hacker: Takuya 做了 Gridea 和 Minttr 的开发者:@EryouHao Obsidian 作者的上一个产品 Dynalist Eudaimonia 沉浸式翻译作者 Owen ChatGPT for Google 的作者 @wong2 TypingMind 和 blackmagic.so 的作者 @tdinh_me 用于收购和买卖 online business 的平台:acquire.com / flippa.com 钱钟书的短文:论快乐 上帝已死 UBI Steve Jobs 斯坦福演讲 Anything You Want Your Music and People 《超越百岁》 程序员延寿指南 《何为良好生活》 《价值的理由》 High Agency In 30 Minutes
本期节目,捕蛇者说和牛油果烤面包播客串台。捕蛇者说主播中的两个是网站可靠性工程师(SRE)。他们今天在节目中介绍了一下这个职业是干什么,需要什么技能,职业的发展趋势以及职业发展。 嘉宾:laixintao 、Manjusaka 主播: 斯图亚特 剪辑: 季雨清 时间线: 季雨清 00:02:10 播客:捕蛇者说 00:03:45 嘉宾介绍 00:05:59 SRE是什么 00:08:14 假设复刻抖音,需要什么 00:17:19 SRE的具体职责 00:18:09 发布 00:26:30 扩缩容 00:28:34 不同服务层:业务、平台、基础设施 00:31:02 SRE在不同服务层中的职责 00:31:51 有了云商还需要SRE吗 00:35:32 SRE的历史 00:51:16 “DevOps” 00:55:32 成为SRE需要哪些技能 01:07:10 SRE的职业发展 01:15:57 荐番:花薰凛然 图片由Gemini生成 片头片尾音乐: Courante 1st Cello Suite Exzel Music Publishing (freemusicpublicdomain.com)
本期节目应嘉宾的要求,我们只发布了文字稿。带来的不便还请各位听众谅解。 嘉宾 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: 对,我觉得每个人有不同的风格吧,也不用一定去迫使自己要怎么样之类的。像高天那种
本期节目我们和《二分电台》的主播 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 主播 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
Ep 43. 主播家的猫

Ep 43. 主播家的猫

2023-11-1501:22:59

这期主播们聊了聊猫 链接 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 浏览器
loading
Comments (7)

lane

抱歉,我那则留言是给 07 的,不知怎么跑到这个下面来了。

Dec 16th
Reply (1)

hong Jiang

听了,没lane说的这种感觉。内容有信息,有分析。

Nov 23rd
Reply

hong Jiang

Very good👍

Nov 23rd
Reply

lane

每期都听的观众第一次留言。 这期嘉宾说话不太让人舒服,说着说着就冷笑感觉莫名其妙,总是带着嘲讽语气。laixintao 似乎也没有和嘉宾互动,像是采访一样。 这本来是很好的主题,但听下来感觉蛮失望的😞

Nov 1st
Reply (1)

hong Jiang

Very good!

Oct 26th
Reply