geekdoc-python-zh/docs/realpython/interview-anthony-shaw.md

75 lines
8.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 安东尼·肖的 Python 社区访谈
> 原文:<https://realpython.com/interview-anthony-shaw/>
今天, [NTT 有限公司](https://hello.global.ntt/)负责人才转化和创新的全球高级副总裁 [Anthony Shaw](https://twitter.com/anthonypjshaw) 和我在一起。Anthony 也是一名*真正的 Python* [教程作者](https://realpython.com/team/ashaw/),并写了一本名为[*CPython Internals*](https://realpython.com/products/cpython-internals-book/)的新书。
在这次采访中,我们讨论了各种各样的话题,包括 Python 安全性、给初学者的建议以及他对海滩的热爱。事不宜迟,让我们欢迎安东尼。
安东尼,谢谢你加入我的节目。我很高兴你能和我一起参加这次面试。我想以我们对所有来宾一样的方式开始:你是如何开始编程的,你是什么时候开始使用 Python 的?
![Anthony Shaw](img/af04771768122ea556880364dd3994f0.png)
安东尼:嘿,瑞奇。感谢有机会与*真正的 Python* 读者对话!
我在 90 年代初开始接触编程,学习如何为比可编程计算器小不了多少的设备编写代码。十几岁时,我把一轮送报的大部分收入都花在了编程书籍和计算机硬件上。
我基本上是自学的,从一些较老的基本类型语言开始,到像 C++和 C#这样的面向对象语言。我一直在用 C#。NET 工作了大约八年,在为一个开源项目做贡献的时候发现了 Python这个项目需要我在工作中开发的一个 API 的支持。
我在 2010 年的一个长周末学习了 Python 的基础知识,并爱上了这种语言在处理流动数据结构方面的灵活性,以及使用面向对象编程和过程编程的自然方式。
你最近似乎对 Python 安全产生了兴趣,为 Django 编写了一个 [PyCharm 安全插件](https://github.com/tonybaloney/pycharm-security)和一个[跨站点脚本库。你甚至在 SQL 注入制作了一个视频。你是如何进入 infosec 的,这是你职业生涯中一个永久性的焦点变化吗?](https://github.com/tonybaloney/django-xss-fuzzer)
安东尼:这一直是我好奇的事情。我想这是从我上大学的时候开始的,当时任何接入没有防火墙的校园局域网的东西都会在 60 秒内被安装木马。
我成了走廊 IT 支持工程师,修理人们的电脑以换取啤酒供应。不久之后,我在当地一家服务器托管公司找到了一份实实在在的技术支持工作。
当 PHP 在网络上流行的时候,带有非常不安全的 PHP 代码的服务器到处都被黑客攻击。如果你想要有动力去艰难地学习一些东西,试着在凌晨 3 点被客户叫醒,因为他们的服务器被黑客攻击了。
在客户允许的情况下,我可以远程访问服务器,弄清楚它们是如何被入侵的,与客户协商,然后重新安装所有的东西。该公司没有开发软件。我们只是在托管服务器。当他们习惯了僵尸网络(或者更糟),它真的会开始影响其他人。
为了尽量减少我在通话时的睡眠中断,我编写了一系列脚本来扫描网络,寻找已知的漏洞和常见的未打补丁的系统。我可以提前提醒客户。
现在,您可以购买现成的软件来实现这一点,但通过访问 Shodan 等数据库和 Metasploit 等自动化漏洞利用工具,任何人只要有鼠标和键盘就可以点击进入 root 访问。
今年,我一直在为 Python 代码分析编写一些工具。这包括代码复杂性分析器 [Wily](https://github.com/tonybaloney/wily) ,以及 PyCharm 的安全代码分析插件 [PyCharm Security](https://pycharm-security.readthedocs.io/) 。它们有着共同的目标,那就是以尽可能小的性能代价来提高代码的质量和安全性。
与测试一样,修复 bug 最容易的时候是在写的时候PyCharm Security 会在您输入 PyCharm 时分析您的代码并突出显示您可能引入的任何安全漏洞。它附带了一个大型文档网站解释了这些漏洞存在的原因以及如何修复它们。在有明显变化的情况下PyCharm 可以自动进行重构。
不是转行。我只是对这个话题感兴趣,并对开发人员学习编写安全和可维护的软件充满热情。
虽然这些采访是关于社区成员的个人故事,但我也试图给我们的读者留下一些可操作的东西,他们可以带走并应用到他们的代码中。因此,考虑到这一点,你能给出哪些大多数人可能没有意识到的安全提示呢?
安东尼:如果你有时间的话,我有一份[列出的十件事的清单](https://tonybaloney.github.io/posts/10-common-security-gotchas-in-python.html)Python 面临的最大挑战是反序列化。
`pickle`库和`pyYAML`库都带有允许定制反序列化过程的逻辑。这意味着攻击者可以在 YAML 或 pickled 文件中嵌入任何 Python 代码,包括向您的生产服务器添加根用户或窃取您的数据库的代码。这些都是记录在案的问题,但不是常识。
**Ricky:** *众所周知,你不仅是* Real Python *的教程作者,还是新书* CPython Internals *的作者。你希望人们读这本书时能从中得到什么?在写作过程中,你有没有学到什么让你惊讶的语言,或者你认为你已经掌握了但没有掌握的东西?*
Anthony: 我希望读者能够理解 CPython 编译器这种看似复杂的东西,将其分解成小部分,并将其与他们知道或能够学习的概念联系起来。我希望他们不仅能理解它,还能利用它并在此基础上发展。如果只有一个人阅读了这本书并为 CPython 项目做出了贡献,那么这将是一个巨大的胜利。
我已经收到了一些早期版本读者的来信。他们分享了自己重新编译自定义 CPython 编译器的兴奋之情,并分享了书中的一些例子。许多开发人员认为这些事情超出了他们的技能水平,但事实并非如此。
在写这本书的时候,我学到了一件重要的事情,那就是所有的并行性和并发性是如何实现的——而且是相当多的!—在 CPython 工作。Async 对我来说一直是一个有点神秘的黑匣子,我在写这本书之前没有怎么使用它,因为我不知道它是如何工作的,并且不信任它。
在探索了概念和导致关键字`async`和`await`的构件之后比如生成器和协程async 绝对有意义。后来,我用它来提高一些应用程序的性能。
迄今为止,你已经在一些 PyCon 上讲过话,但我最感兴趣的是你在非洲 PyCon 上的最后一次演讲,题目是“[在 2000 万开发者的世界中脱颖而出](https://www.youtube.com/watch?v=I5rL9LrIp0c)是什么激发了你做这个演讲,你经常给任何水平的开发者什么建议?
安东尼:看到这么多初级开发人员努力获得他们想要的工作,激发了我做那个演讲的灵感。我采访过很多软件开发人员,也辅导过很多人。我给你的一个建议是深入了解一两个主题。在其他话题上变得宽泛和浅薄。
不要做万事通,但也不要做只会一招的小马。试着真正了解两件事,比如 PyTorch 和 GPU 加速Django 和 PostgreSQL或者 Vue.js 和 Jinja。学习足够多的关于其他主题和技术的知识不要害怕使用它们。了解 SQLJavaScriptHTMLCSSMLPs。
你不需要成为每件事的专家,但是如果你能把自己投入到一系列不同的问题中,那么你会更成功。
**里基:** *现在只剩下最后几个问题了。你在业余时间还做些什么?除了 Python 和编程,你还有什么其他的爱好和兴趣?*
安东尼:我喜欢去海滩,步行五分钟就到了。所以一年中有六个月,你会发现我在海边。在这一年剩下的时间里,我喜欢用我的双手建造东西。澳大利亚的冬天凉爽多了,所以我会做很多 DIY 项目。
安东尼,谢谢你加入我的行列,祝你的新书发行好运。
* * *
如果你想就我们今天谈论的任何事情与安东尼联系,那么你可以在 Twitter 上联系他。如果你想更深入地研究 CPython了解它是如何工作的那么你可以拿一本 [*CPython 内部*的书](https://realpython.com/products/cpython-internals-book/)。
如果你想让我采访 Python 社区中的某个人,请在下面留下评论或在 Twitter 上联系我。编码快乐!