编程

理解 Python 的 asyncio

如何开始使用 Python 的 asyncio。今年早些时候,我参加了国际 Python 会议 PyCon。在许多演讲中提出并在走廊非正式讨论的一个主题是 Python 中线程的状态——简而言之,既不理想也不像一些批评家认为的那样糟糕。

Python 的 Mypy——高级用法

Mypy 可以检查比简单 Python 类型更多的内容。在我的上一篇文章中,我介绍了 Mypy,这是一个在 Python 程序中强制执行类型检查的包。Python 本身是,并且将永远保持,一种动态类型语言。但是,Python 3 支持“注释”,这是一种允许您将对象附加到变量、函数参数和函数返回值的功能。这些注释被 Python 本身忽略,但可以被外部工具使用。

构建您自己的互联网无线电接收器

只需按一下按钮,即可收听世界各地的社区。晚上回到家时,我喜欢按一下按钮收听世界的声音。我住在很多不同的地方——从新西兰的达尼丁到新墨西哥州的圣达菲——在每个城镇,我都爱上了一个广播电台(通常是社区广播电台),它体现了这个地方的精神。只需按一下按钮,我就可以与每个地方重新同步,并且还可以访问新的社区,这要归功于互联网广播。

我的 Bash 脚本中这个 @#$%&! (该死) 的 #! (Hash-Bang) 是什么东西

  您已经看过无数次了——脚本顶部的 hash-bang (#!) 行——无论是 Bash、Python、Perl 还是其他一些脚本语言。而且,我确信您知道它的用途:它指定了用于执行脚本的脚本解释器。但是,您知道它实际上是如何工作的吗?您最初的想法可能是您的 shell (bash) 读取该行,然后执行指定的解释器,但这根本不是它的工作方式。它实际的工作方式是这篇文章的主要重点,但我也想介绍一下如果您有兴趣,如何创建您自己的“hash-bang”版本。

Linux...为了孩子们而做

一些有趣且具有教育意义的儿童 Linux 软件的概述。我可能会后悔这个标题。多年来,我一直在嘲笑“为了孩子们而做”这句话。当在让您签署任何生活方式、议程、法律、食物变更方面一切都失败时,人们会求助于这些“理由”之一。听到这些话比您说“精彩”的速度更快地让我挑起斯波克眉毛。好吧,假装我没有用这个评论开始这篇文章。让我们换个方式试试。

孩子们接管

与 Linux 一样,这些孩子都专注于制作东西——然后让它们变得更好。他们也反对他们将要改革或击败的现有自上而下的系统。这些是唯一的选择。

Rust 中的文本处理

在 Rust 中创建方便的命令行实用程序。本文是关于 Rust 中的文本处理,但它也包含对模式匹配的快速介绍,这在处理文本时非常方便。字符串是 Rust 中的一个巨大主题,Rust 有两种数据类型来表示字符串,以及对用于格式化字符串的宏的支持,这可以很容易地实现。但是,所有这些也证明了 Rust 在字符串和文本处理方面的强大功能。

考虑新的 C 扩展

Matthew Wilcox 最近意识到,依赖 Plan 9 变体的 C 编程语言提供的 C 扩展可能具有价值。编译内核时,只需要使用 -fplan9-extensions 命令行参数。正如 Matthew 指出的那样,GCC 从 4.6 版本开始就支持 Plan 9 扩展,这是内核支持的最低版本。因此,理论上不会有冲突。

更多罗马数字和 Bash

在罗马时:完成罗马数字转换器脚本。在我的上一篇文章中,我开始深入研究一个经典的计算机科学难题:将罗马数字转换为阿拉伯数字。首先,更准确的说法应该是印度-阿拉伯数字,值得一提的是,它被认为是在公元一世纪到四世纪之间发明的——一个基于 0..9 值的计数系统。

关于 ncurses 颜色

为什么 ncurses 只支持八种颜色?如果您研究过 curses 中可用的调色板,您可能会想知道为什么 curses 只支持八种颜色。 curses.h 包含文件定义了这些颜色宏:COLOR_BLACK COLOR_RED COLOR_GREEN COLOR_YELLOW COLOR_BLUE COLOR_MAGENTA COLOR_CYAN COLOR_WHITE 但为什么只有八种颜色,以及为什么是这些特定的颜色?至少对于 Linux 控制台,如果您在 PC 上运行,颜色范围的起源是 PC 硬件。

使用 Python 的 pytest 测试您的代码,第二部分

测试函数并不难,但是您如何测试用户输入和输出?在我的上一篇文章中,我开始研究“pytest”,这是一个用于测试 Python 程序的框架,它真正改变了我看待测试的方式。这是我第一次真正觉得测试是我可以而且应该定期做的事情;pytest 使事情变得如此简单明了。