Python 3.5 之后的新特性

Python 自 3.5 版本起,至当前 3.11 版本为止,变化相当大,引入了众多的新特性,了解这些变化对编写兼容性代码尤为重要。本文整理的一些版本的重要变化。

……

快速了解 SOCKS5 代理协议

SOCKS5 是最常见的代理服务协议,服务通常使用 1080 端口,支持代理 TCP/UDP 网络协议。协议由 RFC 1928 定义,也可以阅读非官方翻译的中文版。本文主要用于快速入门,省略了协议中不常用的部分。文中提供了协议的部分 Python 代码实现。

……

asyncio.DatagramProtocol 收到错误后停止响应

Python 官方文档提供了一个使用 asyncio 创建 UDP Echo Server 的示例,代码如下:

……

“海外关系黑六条”的反动实质

原载于《南方日报》1978年1月24日

如何看待华侨国内外家庭亲属间的关系,是侨务工作中一个很重要的问题。正确对待这个问题,才能正确贯彻执行党的侨务政策,团结国外国内广大华侨、侨眷、归侨,调动一切积极因素为社会主义服务。

伟大领袖和导师毛主席早在一九四五年就发出“保护华侨利益,扶助回国的华侨”的光辉指示。敬爱的周总理在第二届全国人民代表大会第三次会议上的政府工作报告中也指出:“我们还应该做好侨务工作,进一步团结海外爱国侨胞,妥善地照顾在国内的侨眷和安置归国的华侨。”新中国成立以来,党和国家根据毛主席的光辉指示和无产阶级革命路线,制订了一系列侨务政策,对团结教育广大侨眷、归侨积极参加社会主义革命和社会主义建设,巩固无产阶级专政,对扩大海外华侨爱国统一战线和国际统一战线,配合解放台湾的斗争,都起了积极的作用。二十多年来,尽管刘少奇、林彪、特别是“四人帮”对毛主席亲自制定、批准的侨务工作方针和政策进行了各种干扰、破坏,但是在侨务工作中,毛主席的革命路线始终是占主导地位的。

……

公司监控员工电脑的原理和防范

公司监控员工的方式可以分为硬件和软件两种。前者包括办公区的监控摄像头、门禁系统、电话录音、电子围栏、打印机扫描仪使用记录等等。后者包括但不限于:

  1. 手机安装 APP
  2. 员工使用公司 OA 系统的操作日志
  3. 公司网络嗅探
  4. 办公电脑安装监控软件
  5. 网络舆情监控

本文主要讨论的是第 3 和第 4 种的情况。

特别要指出一点,如果公司的办公区域比较大,且安装了多个 AP 的话,公司可以通过员工手机连接的无线热点来对员工进行定位,原理就和手机基站定位类似。这项技术还被适用于一些大型公共设施中,例如:酒店、医院、商场等。最好的防范方式就是手机不要连接陌生热点,使用自己的流量。

……

Python asyncio 模块实现简单异步 https 请求

网上关于 asyncio 实现异步 https 请求的代码几乎都是基于Python 第三方库 aiohttp 的,而我仅需要一个无第三方依赖的、能一键运行的简单 Python 脚本。翻了翻官方文档,也没有什么值得参考的 sample 代码。无奈只能自己动手撸一个。

以下示例代码的作用是,请求百度首页,并将响应打印出来。支持 Python 3.7 及以上的版本。

……

中文网页排版设计建议

使用哪种引号

在《标点符号用法》( GB/T 15834—2011 )中规定的双引号和单引号分别为 “”‘’,这组引号起源于西文,且称作国标引号。另外,在《重订标点符号手册》中规定的双引号和单引号(横式)分别为 『』「」,这组引号又被称为直角引号。

需要注意的是,国标引号和直角引号的单引号、双引号使用方式是相反的:国标引号,外层使用双引号,内层嵌套使用单引号;直角引号,外层使用单引号,内层嵌套使用双引号。例如:

……

Python 信号处理在不同平台上的差异

在前文《为何 Windows 下无法用 Ctrl+C 终止 Python 进程》中,虽然解释了产生该现象的原因,但却没有解释为何同样的代码在 Linux 下就可以用 Ctrl+C 来中止。究其原因,是由于在操作系统层面,Linux 和 Windows 对 SIGINT 的信号处理方式不同所导致的。

……

Python 的 signal 处理与 print() 的 reentrant call 运行时错误

在前文《为何 Windows 下无法用 Ctrl+C 终止 Python 进程》中,讲解了 Python 信号处理的基本原理。当时为了撰写文章而编写了一些测试代码,在运行某例测试代码时,发生了奇怪的 reentrant call 运行时错误。代码如下:

……

为何 Windows 下无法用 Ctrl+C 终止 Python 进程

在 Windows 命令行中按下 Ctrl+C 或者 Ctrl+Break 可以结束当前正在执行的命令。通常情况下,这个方法同样适用于 Python 的控制台进程。特别地,Python 内置了一个 KeyboardInterrupt 异常专门用于捕获按下 Ctrl+C 而触发的程序退出:

……