今天我加入了威尔·麦古根。 Will 是一位来自苏格兰的自由 Python 开发人员,也是流行 Python 库的创建者富有的.
在这次采访中,我们讨论了Rich
、维护一个流行的 Python 包、构建国际象棋引擎以及 Will 对摄影的热爱是什么感觉。
瑞奇: 感谢您接受我的采访,威尔。我想以与所有客人相同的方式开始:您是如何开始编程的,以及您什么时候开始使用 Python 的?
将要:谢谢你邀请我参加!
我在 80 年代还是个孩子的时候就发现了编程。对于年轻读者来说,这就像怪奇物语,减去CGI怪物。当时我们有一台 ZX Spectrum+ 计算机。图形闪烁,声音微弱,但我被迷住了。在某些时候,我发现你可以在键盘上输入内容,并且如果你做得正确的话,计算机就会按照你的指示去做。
快进几年,我在视频游戏行业工作。我正在构建一个游戏引擎并寻找一种脚本语言来处理游戏机制,而 C++ 则负责图形和繁重的工作。我想就在那时我遇到了 Python 2.1 版本。
当时我并不认为它是一种合适的编程语言,可能是因为它太容易使用了,而编程应该很难吧?即便如此,我发现自己又回到了 Python 的脚本和工具,它们逐渐变得更加复杂。
当我找到一份为 Python 工作的工作时,我在 Python 上的“重大突破”就发生了。网络象棋俱乐部。他们正在寻找 Python 开发人员来构建新的国际象棋界面。幸运的是,我已经编写了一个国际象棋游戏,并且渴望更好地利用我的 Python 技能。从那时起,Python 就成为了我职业生涯的主要焦点,并且我再也没有回头。
瑞奇: 过去十年来,您一直是一名 Python 自由开发人员。过去十年来,Python 自由职业领域发生了怎样的变化?它是否随着 Python 的流行而增长?
将要:我的经验是在家工作的自由职业者。如今这很常见,但当我开始时,大多数人都感到非常惊讶。如果您是一位经验丰富的开发人员,您可能不会需要不再在办公室工作。
Python现在是主流。大型科技公司采用了 Python,它从人们用来提高生产力的第二语言变成了一种受欢迎的技能。我很幸运有一份长期合同,但现在似乎并不缺少合同工作。
瑞奇: 人们可能知道您是Rich
,日益流行的用于格式化终端输出的库。是什么促使您创建该库,以及它的日益流行(每月下载量超过 619,000 次)如何影响了Rich
?
将要: 富有的酝酿了很长时间! 2015 年的某个时候,我正在研究莫亚,一个网络应用程序平台,也是我当时的副业项目。Moya
有一个命令行应用程序可以生成精美的终端输出。
我在那里实现的控制台类结果是一个原型版本Rich
。这个控制台类并没有经过深思熟虑——更像是任何与终端相关的东西的垃圾场——但其中有一些好主意。
当我停止工作后Moya
,我打算重新制作这个 uberconsole,以便它可以在其他项目中使用。每次我努力在终端中读取一些格式不正确的输出时,我都希望它已经存在。
2019 年接近尾声的时候,我开始了这方面的工作。首先出现的是富文本,这就是名称的由来。我有一个类可以以与 HTML 类似的方式用颜色和样式标记文本范围。后来出现的许多其他功能都是基于这个核心功能构建的。我用它来实现语法高亮、表格、Markdown 等。
什么时候Rich
开始流行,最明显的变化是我大部分时间收到的错误和功能请求的数量。我意识到Rich
不再是我的玩物。人们在日常工作中、开发人员与客户、老板以及截止日期中使用它。我有责任及时修复错误并实现人们要求的功能。老实说,它开始感觉不再是一个晚上进行的有趣项目,而更像是一份工作。
这其中有某种失落感。
让我坚持下去的是积极的反馈。不少网友表示找到了fun跟...共事。我很高兴我坚持了下来,因为我喜欢看到人们使用创造性的方式Rich
在他们的命令行应用程序中。
瑞奇: 您最近添加了终端仪表板Rich
,就像htop一样,只是更好看!这是人们所要求的功能吗?您在实施过程中面临哪些技术挑战?
将要:当我读到一条关于的推文时,终端仪表板功能就出现了盖顶。这是一个由纳特·弗里德曼GitHub 的首席执行官。哈梅尔·侯赛因和杰里米·霍华德使用Rich
美化输出ghtop
,看起来很棒!看到这里,我意识到Rich
这类接口有很大的潜力。
为了使这些类似 htop 的界面更容易实现,我添加了一个布局类,它可以将终端屏幕细分为多个部分,每个部分都有自己的内容。
唯一真正的技术障碍是Rich
不知道高度是一个维度。输出输入Rich
可以有一个宽度,但假设它可以根据需要写入尽可能多的行,因为用户可以向上滚动查看它。在全屏显示中,您无法滚动,因此我必须将内容限制在固定高度。幸运的是,这并不是什么大的变化。
瑞奇: 人们如何开始使用Rich
,如果他们已经在使用它,他们如何帮助该项目继续取得成功?
将要: Rich
非常容易上手。一条单线,from rich import print
,可以替代内置print()
与一个print
拥有超能力。您可以免费获得自动换行、语法突出显示和漂亮的打印功能。打印表格、面板和 Markdown 等内容并不需要太多工作。详细信息在自述文件和文档,再加上大量的GitHub 中的示例存储库。
我目前正在尝试GitHub 赞助商作为保持势头的一种方式Rich
。每月前 200 英镑将捐赠给肠癌慈善机构。有很多非财务方式可以帮助该项目。错误报告和功能建议始终受到欢迎。
我也很欣赏自述文件的翻译,到目前为止它有五种语言(包括英语)。如果自述文件不是您的母语,请考虑提交带有翻译的 PR!
瑞奇: 现在只有最后几个问题。空闲时间你还做什么?除了Python和编程之外,您还有哪些爱好和兴趣?
将要:在大流行之前,我非常喜欢野生动物摄影。我很幸运能够在自然栖息地拍摄熊、科莫多巨蜥和猩猩等神奇动物。当世界恢复正常时,我想做更多这样的事情。
如今,我的兴趣离家更近了。我喜欢烹饪,主要是我在 YouTube 上看到的食谱。最近,我一直在努力掌握经典的意大利面食菜肴。
瑞奇: 谢谢你,威尔,加入我。祝你好运Rich
及其持续发展。
如果您想就我们今天谈论的任何事情与威尔联系,那么您可以通过以下方式联系他:推特。您可能还想开始与丰富.
如果您希望我采访 Python 社区中的某个人,请在下面发表评论或通过以下方式与我联系推特。快乐编码!