We're sunsetting PodQuest on 2025-07-28. Thank you for your support!
Export Podcast Subscriptions
cover of episode #414 Because we are not monsters

#414 Because we are not monsters

2024/12/16
logo of podcast Python Bytes

Python Bytes

AI Deep Dive AI Chapters Transcript
People
B
Brian
Python 开发者和播客主持人,专注于测试和软件开发教育。
M
Michael
帮助医生和高收入专业人士管理财务的金融教育者和播客主持人。
Topics
Brian: Jeff Tripplet 创建了一个名为 `django-cli-no-admin` 的项目,旨在将冗长的 `django-admin` 命令简化为更简洁的 `django` 命令,提升开发效率。这简化了常见的 Django 命令行操作,例如创建项目和应用等。虽然 Django 本身不会默认采用这种简化方式,但该项目为开发者提供了一种更便捷的替代方案。 Michael: Django Unicorn 是一个用于 Django 的反应式组件框架,它结合了服务器端渲染和客户端交互的优势。开发者可以使用它在 Django 模板中添加交互功能,而无需学习新的模板语言或使用复杂的 JavaScript 构建工具。它简化了前后端交互流程,并提升了开发效率。Django Unicorn 提供了诸如表单验证、重定向、脏状态检测、局部更新和轮询等功能,使开发者能够更轻松地构建动态和交互式 Web 应用。 Michael: Django Unicorn 旨在简化 Django 应用中的前端交互开发。它允许开发者在 Django 模板中直接使用类似 React 的组件化方式,而无需编写大量的 JavaScript 代码或使用复杂的构建工具。通过在模板中添加特殊的属性,开发者可以轻松地实现数据绑定、事件处理和 AJAX 请求等功能。这使得开发者可以专注于 Django 后端逻辑的开发,而无需深入了解前端技术细节。 Brian: Ned Batchelder 的文章探讨了多种测试字符串中是否只包含 0 或 1 的方法,并展示了如何使用 pytest 进行测试,文章中也介绍了 `cleandoc`、`partition` 等 Python 工具的使用方法。

Deep Dive

Chapters
Jeff Triplett created django-cli-no-admin to shorten the django-admin command to just django. This improvement enhances developer speed and comfort. The goal is for Django to eventually adopt this as the default.
  • Created django-cli-no-admin to shorten 'django-admin' command.
  • Improves developer speed and comfort.
  • Aims for Django to adopt it as the default.

Shownotes Transcript

0 您好,欢迎收听 Python Bytes,我们将直接为您带来 Python 新闻和头条新闻。这是 2024 年 12 月 16 日录制的第 414 集。我是 Michael Kennedy。我是 Brian Ocken。本期节目由我们自己赞助,包括我们所有的内容、书籍、课程等等。我们有很多东西可以帮助您提高 Python 技能。查看链接,节目开头有链接。我们现在……

在 Blue Sky 上非常活跃。Brian,谢谢你把我拉过来。我想指出,您可以访问我的个人资料并点击“入门包”。那里有很多 Python 人员。如果您点击它,关注我,关注 Brian,关注播客,以及大约 60 位其他值得关注的 Python 人员,例如 Samuel Colvin 等。因此,这是一个快速简便的方法,可以快速加入并开始使用

它。如果您想……入门包非常酷。入门包是 Blue Sky 的一个非常酷的增长策略,是的。是的,Blue Sky 很有趣。我非常喜欢它。我……

我在想,这股发展势头是否开始减弱了,但我们会拭目以待。我知道人们很兴奋,我认为这是一个很棒的地方。所以我鼓励大家去看看。如果您想每周收到所有节目笔记、链接以及所有内容的电子邮件,即使您碰巧没有收听那一周的节目,我不知道为什么会发生这种情况,Brian。那将是一个很大的错误。那将很奇怪。这将非常奇怪。但即使那样……

如果您访问 pythonbytes.fm,点击新闻通讯,输入您的信息。那么 Brian 将会向您发送手工制作的、精美的节目笔记版本。非常棒。我说过很重,Django 很重,不是吗,Brian?是的。让我们开始吧。让我们从 Django 开始。好吧,我们将从一个小项目开始,但我认为它会立即影响到我。因此,Jeff Triplett 宣布他有一个新的项目来缩短 Django。

缩短 Django-admin 到仅仅是 Django。我们讨论的不是 Django 的管理部分。只是命令。例如,在命令行上,哦,我在教程中看到了它。例如,在 Django 教程中,有很多必须运行的 Django admin 命令行内容,例如 startproject,嗯,

以及许多其他内容。因此,如果您键入 Django-admin 和一些类似的内容,并且您曾经想过,为什么我不能只键入 Django 来执行此操作?Jeff 也这么想过。因此,这个新项目只是让您可以使用 pip install 它与您的内容一起安装。然后您就不必再使用 Django admin 了。您可以只对命令行内容使用 Django。

因此,这个想法,我的意思是,这是一个好主意。他在他的博客文章中宣布了这一点,他说他希望在普通的 Django 中看到这一点,但是 Django-admin 不会消失,因为它已经存在了 20 多年了。所以,但是,

但是如果它就是这样就好了,为什么不呢?是的,这将是惊人的。我不明白为什么不能同时拥有两者。我认为,我的意思是,您在命令行上键入 Django 并为大多数人执行操作还有什么其他命令呢?是的,完全正确。您只需获取它即可。是的,完全正确。当您安装 Django 包时,您可以拥有多个入口点,这将根据您的需要提供这两个命令。是的,让我们来做吧。哦,

另外,我最近一直在做很多 Django 的工作,我很欣赏它只占一半的字符。我数过了。他提到它只占一半的字符。我想,真的吗?是的。它是五个字符。它只占一半的字符。更重要的是,是破折号,它需要在键盘上进行一些操作。是的,它打字速度不快。谢谢,Jeff。所以我想问你,Brian,最近做过一些 Django 的工作,你见过独角兽吗?

是的。没有。因为我见过。我看到了一匹飞马,但不是独角兽。是的,飞马。它就像独角兽,但我认为它没有角或那么多的魔力。好的。我不太确定飞马与独角兽的神话。但是 Django 的神奇反应式组件框架是 Django unicorn。这很不错。我刚了解到这一点。让我们看看。它不是最新的。它对我来说是全新的。

所以这里的想法是,它有点像 JavaScript 前端框架,比如 React 之类的东西。但是您可以避免使用它。您可以避免编写自己的 JavaScript 前端。相反,您可以只 pip install Django Unicorn,将其添加为一个应用程序,然后您必须包含它的脚本等等。但是在这里的某个地方,您可以在模板中使用这些 Unicorn 属性修饰符。您可以说 unicorn submit.prevent add。

然后将其绑定到,如果我不滚动得太快,您可以将其绑定到名为 task 的模型。如果您按 Escape 键,它会做什么?它会更改,例如用这个东西替换 task 文本,对吧?您可以只添加一个按钮。当您点击它时,调用函数 add 等等。然后您所做的是创建

像表单对象和映射到它的项目。然后它会自动连接这些的创建。让我们看看,例子在哪里?是的,主页上的小例子对我来说还不够,无法完全知道它是如何工作的。但基本上,当您与这个 UI 元素交互时,它会映射到之前由 unicorn 自动实现的 REST 函数。

对吧?所以您可以只包含一些,它有点像 HTMX。您只需在上面包含一些神奇的文本,它就会回调到服务器。但不同之处在于它也会在服务器端处理它,对吧?- 好的。- 所以很不错。是的,如果它说,它是魔法吗?有点。

感觉像是。它使用初始渲染为服务器端渲染来逐步增强普通的 Django 视图,就像我说的那样,也像 HTMX 一样。这取决于您如何使用它,但它可以是。所以它对 SEO 很有好处。纯 HTML 内容就在那里。当您查看源代码时,它不仅仅是到处都是尖括号。它会自动绑定您指定的元素并创建……

当需要时,它会自行进行 AJAX 调用。它会返回并在 HTML 更改或使用 HTML 更改时更新 DOM。所以是的,只需编写普通的 Django 类型内容。它会获取它,它还说它具有其他功能,表单验证、重定向、脏状态、部分更新、轮询等。然后在这里的某个地方,也许在文档中,它说,这就是您可能要做的,对吧?您可能必须使用 React 或其他东西。不幸的是,我

我认为这在这里的这个页面上。

它说明了您可能还需要使用什么。是的,他们的登录页面上有更好的示例。它为您提供了与 Vue、React 等的比较。这里明显缺少的是 HTMX,就像我说的那样,它有点像它。但是尽管如此,如果人们正在使用 Django 并想要类似 Vue 或 React 的东西,但他们并不想使用 JavaScript,那么这可能是一个非常有趣的东西。2400 个 GitHub 星星,相当不错。这是一个相当基本的,

学习曲线很低,只需尝试一下,它可能就足够了,然后再跳到其他东西。所以是的,绝对的。

顺便说一句,对您的项目的实时跟进。当我听说 Django admin 时,这就是我的想法。Pat Decker 只是说,别名 Django 等于 Django-admin。这正是……我想,是的。我有这么多这样的东西。我想,这是一个巨大的错误命令。这是两个字母的别名。好的,我可以这样做。但这很好。我的意思是,为什么要强加……

更长的版本给每个人,直到他们考虑它或很多人在学习这些教程时是新手。他们不知道他们可以做这种事情。对。或者您可能在 Windows 上,我不知道如何在 Windows 上设置别名。批处理文件。都是批处理文件。

- 好吧,轮到你了。- 哦,我在说什么?我想谈谈一些测试。我读了 Ned Betchelder 的一篇有趣的文章,名为“测试一些小技巧”。所以这是一件有趣的事情。所以他发布了,他只是发布了,比如说,假设您有这个,他想查看不同的方法来检查字符串是否只包含零或一以及其他内容。

有很多方法可以做到这一点。他提出,让我们看看,一、二、三、四、五、六种不同的方法,在 Mastodon 和 Blue Sky 上发布了一篇文章。然后他收到了很多回复,说还有其他方法可以做到这一点。一个,这是一种有趣的方式,就像,我会怎么做这种事情?有很多方法可以处理它,这很有趣。无论如何,所以他还想测试如何做到这一点。而且

由于标题中包含测试,我认为他可能会使用我的测试或其他什么,但是,嗯,是的,不,嗯,他有一些应该只包含零和一的良好输入。然后是一组不好的输入,它有,你知道,它不是全部。其中一些就像一堆零和一个非零,空字符串被使用。这将被认为是好的。嗯,然后我,甚至一千个字符,呃,呃,

一个包含一千个字符或一万个字符的字符串。是一万个。哇。这么长的字符串。所以,然后他有很多不同的方法,他有一些原始的检查,加上其他人使用的一些方法。然后他只是遍历它们。但我真正喜欢的一件事是,我学习了一些关于 PyTest 或 Python 的知识。我从 inspect.cleandoc.com 了解了 CleanDoc。

这是一种去除空格的方法,我通常使用什么?我通常使用什么?我通常使用呃,比如 textwrap.dedent 来处理这种情况,但是嗯,所以我必须运行一些测试才能找出

哪一个处理内容更好?CleanDocs。这可能更好。是的,这很酷。然后是分区。我不经常使用分区,所以我记不起它有什么作用。所以分区,他使用分区来去除注释。它所做的是根据您传入的内容(在本例中为井号或哈希或您想称为什么)分割字符串。然后它将其分成三个字符串。

分隔符之前,分隔符是什么以及分隔符之后。所以这是,这是一种只获取注释之前所有内容的方法,这很酷。然后他使用了,我还学到了什么?哦,我不明白这个,如果这里没有测试,首先是什么,但这正在检查空行,这很有意义,或者只有注释的内容。但是然后有这个 eval,我,

我非常害怕 eval,但在这种情况下,您正在编写这些内容,它来自这里,所以它非常安全。但是评估代码,然后

将变量(如 S 变量)传递到代码中。因此,在此代码中的任何位置,S 都表示您传入的字符串。但是这个或 G,或 G 是做什么的?他正在做的是一种使用 eval 传入导入内容的方法。所以它会导入,它会将正则表达式和计数器模块导入到

eval 语句中。所以,我不知道你可以这样做。我在想按位或。是的。不,这是一种将这些导入内容放入其中的方法,这很酷。无论如何,这很有趣。然后他列出了一些其他方法。但我仍然感到沮丧,因为这里没有 PyTest。所以我想,我会如何使用 PyTest 来做到这一点?所以我写了一篇简短的博客文章,实际上也赞扬了 Ned,因为我学习了一些东西。我喜欢学习新事物。但是

但是然后我做了什么?我导入了 PyTest,与他使用的导入相同,然后是相同的良好和不良测试。但是然后我将它稍微分开了一些,并使用参数化来编写……

测试代码。因此,如果有人想使用 PyTest,这里就是。我遇到的一个有趣的事情是这个一万个字符。我正在使用,使用参数化,我能够将输入作为当您使用 PyTest-v 时的一部分,它会打印出所有这些。这是参数化打印出来的。

这很好。但我不想打印出一万个字符。所以我也可以使用 ID 函数来缩短它,将其缩短到 20 个字符。但无论如何,测试票证。是的,我也喜欢比较和对比。是的。是的,太棒了。让我们谈谈一些趋势,好吗?好的。所以这最初只是一个额外内容。我越看它,我就越觉得,这实际上可能是一个有趣的话题,我们可以一起讨论。所以我为 JetBrains 博客写了一篇文章

名为《2024 年 Python 的现状》的文章。所以我觉得这会很有趣。我列出了八个关键趋势或其他内容。所以我想,嘿,你知道,也许谈谈这八个趋势并听听你的想法会很有趣。好的。让我们快速地做一下。首先,Python 持续增长,但有趣的是,如果您查看与 Python 一起使用的其他语言的数量,它们正在减少,对吧?例如,在 2021 年,40% 的 Python 人员使用 JavaScript 加 Python。现在只有 35%。如果您查看 bash,33% 的人现在使用,29% 的人使用,并且

许多语言都这样下降了,除了 Rust。所以这很有趣。这是因为很多人是从非传统的编程语言(如数据科学和其他科学家等)转向 Python 的。GitHub 刚刚宣布,我认为我们已经介绍过这一点,GitHub 表示 Python 现在是 GitHub 上最流行的语言。

这非常棒。但是大多数人都是来自非传统背景,这意味着他们只是使用 Jupyter Notebooks 或类似的东西,对吧?就像这是他们的唯一编程语言是 Python 一样。是的,完全正确,他们就像,他们刚刚成为程序员。所以他们没有做其他事情。所以看到这些很有趣,嘿,作为一个社区,你们使用的 JavaScript 更少了,这与我的想象恰恰相反。而且与您所说的非常接近,41% 的 Python 开发人员

在任何语言中专业工作的年限不到两年。几乎每个人都是新手。是的。实际上我记得有人谈到这个问题,这个问题,这个问题,比如你已经做了多长时间的专业 Python 开发人员?许多参与这项调查的人并不认为自己是开发人员。他们认为自己只是从事其他工作,碰巧也使用过

编程。是的,完全正确。是的。然后如果你加上三到五年,那就差不多了。趋势三。哦,让我们再看看几年。我们在哪里?

哦,只有 11 岁以上。所以我们只有一个 13% 的人组成的桶。即使这样,超过 10 年的也只有 13%,这太疯狂了。是的,这真的很疯狂。是的,是的,是的。人们在哪里学习 Python?他们在 YouTube、R John Codes、M Coding 上学习。如果他们收听播客,那就谈谈 Python。这是排名第一的。不错。但我相信 Python Bytes 就在下面,就在下面。

趋势四,Python 2 与 3,已经结束了。我们已经对遗留的 Python 进行了足够长时间的讨论。Guido 早在 2014 年就说过,不会有 2.8 版本。但是如果您查看它,它就像渐近线一样。无论是谁仍然使用 Python 2,这些人都不会离开。是的。让我惊讶的是,仍然使用 Python 2 的人正在参与调查。是的。

我认为他们已经完全退出了。我想象很多这些人,今年仍然使用 Python 2 的人占 6%,他们参与了某个大型项目。我知道有些银行有……他们不会迁移项目。项目不会迁移,但这些人非常希望迁移。他们可能在业余时间使用 FastAPI 和其他现代工具。但是当他们回到工作岗位时,他们就在这里。你知道我的意思吗?是的,或者至少他们的一些项目正在使用它。是的,完全正确。但是仍然……

让我们继续。好的。Flask、Django 和 FastAPI 都是前三大框架,这几乎是势均力敌的,这很有趣。我们刚刚谈了很多关于 Django 的内容。但有趣的是,如果您询问 Python 人员中的 Web 开发人员,不仅仅是 Python 人员,但我们谈到过很多人不认为自己是开发人员。但是如果您说,嘿,也是 Python 人员的 Web 开发人员,Django 的使用量是 Flask 或 FastAPI 的 1.5 倍。哦,是的。所以在 Web 开发人员中,Django 显然处于领先地位。但在数据科学家当中,Flask 和 FastAPI 领先,因为它们更侧重于构建 API 并将其模型上线等等。所以这是一个非常有趣的区别,对吧?

是的。而且我认为有很多数据或数据科学内容没有后端数据库或其他任何东西或一些大型内容。是的。是的。您在哪里托管您的内容?显然,这都是关于超大规模云的。实际上,这让我大吃一惊。AWS、Google Cloud 和 Azure 代表。天哪,它说了多少?我写下来了。也许在顶部代表大约 78% 的人们托管代码的地方。是的。78% 的人都在三大云之一上。哇。

Hetzner 出现了。Hetzner 在那里,是的。我的意思是,我们在 Hetzner 上留下了一点痕迹。我们绝对做到了。

我们在那里有一台服务器。是的,而且有趣的是 Heroku 下线了,但我认为这是因为当他们取消免费层时,许多人决定关闭他们的服务器或迁移到其他地方。但 Python Anywhere 实际上仍然很强大,超过所有其他小型提供商,对吧?DigitalOcean、HeadSnerd、Linode 等等。Python Anywhere,有趣。是的,这非常疯狂,对吧?好的,还有两个。人们更喜欢容器而不是虚拟机,他们更喜欢虚拟机而不是……

裸机硬件。这应该不足为奇,对吧?我的意思是,也许是容器与虚拟机,但肯定不是直接的硬件。顺便说一句,直接硬件甚至不在图片上。它更低。2024 年的最后一个趋势是 UV 占据了 Python 包,占据了 Python 包的存储。是的。我认为这是

显然,我们已经多次介绍过它了。它不仅仅是速度快。它还将来自不同工具的不同功能组合到不同的位置。是的,它非常棒。它安装 Python。它安装,它创建虚拟环境。如果您愿意,它可以管理项目。

它会更新。那里有很多好东西。我认为 UV 增长的一大原因是 UV 团队试图使其能够与您当前的工作流程一起使用。您实际上不必更改您的工作流程。是的,我认为这非常重要的一部分。这就是我采用它的原因。所以,很酷。是的。所以,无论如何,这些是我的趋势。希望人们会觉得这些很有趣。链接中有很多文字和数据可以支持这一点。是的。好的。是的。

额外内容。我们来到了额外内容部分。我只想补充一点。只是为了再谈谈 Django,我注意到 Django admin 现在有一个 Dracula 主题,位于 draculatheme.com。我不能……

我不记得我从哪里学到的。我认为其中一位维护者在 Blue Sky 上发布了这个。但无论如何,它看起来很棒。很棒的颜色。而且由于这个原因,我还了解到有一个名为 DraculaTheme.com 的东西,其中包含……

像许多不同的项目都具有 Dracula 主题一样。哦,不错。让我们看看什么,我喜欢它。是的。它有很酷的蝙蝠。哦,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不

虽然有点可疑。如果只有你的竞争对手付钱让你参加,那真的算得上竞争吗?我知道,我的意思是,为什么会有诉讼?对。是的。所以,我们会,我们会看到的。无论如何。我认为它真的很酷。我很喜欢它。我还是Vivaldi的忠实粉丝,我现在就是用它和你聊天的。是的。但你也知道微软也有浏览器吗?我听说过。

我听说过。哦,你知道吗?它实际上是基于Chrome的。不过我相信谷歌并没有为此付费。我敢打赌你默认的搜索引擎是必应。好吧……

更新我的办公桌设置。我只是,我真的很,我很享受这样。我设置了一个单独的小桌子和一台单独的电脑。所以我有一个不错的视野。所以我不用整天盯着摄像头、灯光和垃圾看。哦,哇。即使它们是关闭的,我仍然只是盯着墙上像隔音垫之类的东西。我比我意识到的更享受它。我只是想鼓励大家,如果你对你的座位、你在工作时看到的景象感到沮丧。也许这并没有那么难。花了我几个小时。

所以我可以看树而不是录音泡沫,我鼓励这样做。好吧。当我坐在这个新的有趣的办公桌旁时,布莱恩,我意识到……

RSS有一个更新的规范,允许你以字幕格式指定成绩单。所以是VTT,Web VTT或SRT文件。对。好的。所以我把这些添加到我们网站提供的RSS提要的成绩单集中。现在,你就可以在我们说话的时候实时跟读成绩单了。哦,哇。这很酷,不是吗?所以你可以说显示成绩单,它有点像Spotify或YouTube音乐。就像,

在我们说话的同时实时跟读成绩单。我认为你甚至可以搜索它们,尽管这可能是每个播放器类型的事情。所以这在Overcast中不起作用,可惜的是,据我所知,它在Apple Podcasts和Pocket Casts中确实有效。所以至少在这两个中,如果你看到一个小成绩单的东西,你点击它,这意味着它将实时跟读我们的对话。我想拥有那个小弹跳球,就像,你知道的,我们小时候的歌舞电影。是的,没错。是的。

它在iPad上运行得非常好。你可以看到控制和艺术以及所有东西的视图。然后旁边还有。哦,不错。是的。但它仍然可以在手机上工作。好吧。这就是我的额外内容。好吧。哦,我只是想补充一点,用电脑一天24小时运行,生成这些成绩单花了五天时间。所以我重新生成了这些,因为可能只有我们三分之一的剧集有成绩单。

vtt格式,它们有不同的格式,就像纯文本类型的东西,我们的网站可以理解,人们可以阅读,但vtt更像是一种……它不像json,但你可以想象一下,这里有你的json成绩单可以阅读,感觉会有点像那样。是的,我一直认为vtt是某种额外的设置,完全没用,因为我永远不会使用它,所以……我很高兴你……

你可以使用SRT。这是这里支持的两种。它们就像两种众所周知的字幕格式或其他什么。但是是的,我启动了。我有一台旧的M1 Mac mini闲置着。我想,我就去那里让它为Python Bytes和TalkPython生成这些。五天后,它完成了。

然后我有一堆Python软件,它会检查并纠正一些东西。就像粗略的格式化程序一样,就像R O U G H。我想,呃,不,不是真的。这不是我们想说的意思。它有时会得到你的,你会是布莱恩·艾肯。我想,不,我们要修复它。等等。有时我是布莱恩·艾肯。

哦,我们很好。哦,我正在……所以做了很多工作来实现这一点,所以希望人们会喜欢它。是的。酷。谢谢……就是这样。我很感谢你不断改进Python Bytes的后端。是的,不客气。没问题。好吧,你知道吗?如果你正在开发软件,你一开始就用测试开始了,对吧?是的。好吧……如果……

不,你从铃声开始,但我们确实谈了很多关于测试的事情。第二项。无论如何,如果你正在进行测试,并且想确保你的测试通过,布莱恩,你有很多选择。你可以不运行测试,但是如果测试要运行并说持续集成,哇,伙计,你最好让这些测试通过,否则持续集成就会失败。所以马丁·贝特曼在BlueStack上与我们分享了这个笑话。

Blue Sky说,大众汽车怎么样?你知道,他们因为编写汽车软件而遇到了一些麻烦,软件会说,是的,这些柴油车,它们非常干净。你绝对应该得到清洁柴油,而不是脏柴油,买一辆大众汽车。这实际上意味着,在测试期间,它会改变它的行为方式,以获得比不进行测试更好的排放测试结果。对。是的。

这是在模仿这一点,并说,大众汽车,这是你可以安装到你的应用程序中的东西。它说,它检测到你的测试何时在CI服务器上运行,并确保它们通过。好吧,我得看看这个。太搞笑了。是的,它说,为什么?好吧,如果你想让你的软件被美国人采用,因为那是大众汽车被抓到作弊的地方。

来自CI服务器的测试分数非常重要。大众汽车使用一种欺骗装置来检测它何时正在被测试,并看到CI服务器会自动将错误减少到测试通过的可接受水平。这使你可以花更少的时间担心测试,而更多的时间享受作为值得信赖的软件开发人员的美好生活。

他们甚至还有一个徽章,就像你的GitHub自述文件的自述文件一样。是的,带有大众汽车标志的小型构建通过。太棒了。适用于Travis CI、Circle CI、Jenkins、Hudson's、Bamboo、TeamCity、TFS、Visual Studio Online CI、GitLab等等等等。它击败了Astert、Tap、Tape和Shy中的任何实际……

任何实际设置为退出代码或抛出错误的测试。这很有趣。我得看看他们是怎么做的。是的,我知道。我想知道,这到底是怎么工作的?人们并没有真正这样做。这是一个笑话。好吧,所以我确实遇到过一些情况,尤其是在开发过程中,我不想让CI在测试结束时跳出来,即使有失败。

所以有一个PyTest功能,你可以更改退出代码。这是一个PyTest自定义退出代码内部插件或其他什么。PyTest总是退出零?差不多,是的,为了覆盖退出代码,以便你可以调试工具链的其余部分或获取某些数据。但是是的,这是我唯一做过的事情。但这很有趣。

它的小图像或徽标或其他什么东西就像70年代的一辆大众甲壳虫汽车,它变成了变形金刚机器人。太棒了。不错。有13位贡献者参与其中。有15个版本。这是什么?

有多少星?好吧,好吧。让我们来看看。15000颗星。人们正在使用这个东西。哦,我的天哪。或者只是被它逗乐了。它已经有九年的历史了。是的,它已经存在一段时间了。但我偶然发现了这个,并认为它非常有趣。这很好。是的。好吧,一如既往,感谢你们的到来。感谢大家收听。谢谢。再见。再见。