使用 Nuitka 将 Python 程序编译为 Windows 服务

原来 Nuitka 商业版通过插件已经实现了编译 Windows service 的功能,但开源版本不提供此功能。掏钱是不可能掏钱的。本人 fork 了 Nuitka 项目,加入了编译 Windows service 的功能,只要在编译时加入 --windows-service 参数就将 Python 程序能构建成 Windows service 了:

shellpip install nuitka-winsvc
nuitka --onefile --windows-service --windows-service-name=myservice main.py

项目地址: https://github.com/tabris17/Nuitka-winsvc

在前文《Nuitka 编译时注入自定义 C 代码》中介绍了在 Nuitka 编译时注入自定义代码的方法。本文将介绍如何通过这种方法将 Python 程序编译成 Windows 服务。

……

Nuitka 编译时注入自定义 C 代码

Nuitka 是一款用 Python 实现的 Python 编译器,可以生成独立的可执行文件。其原理是生成 C 代码,然后使用 Scons 调用 C 编译器进行编译构建。据说使用 Nuitka 编译后的程序性能比 CPython 更好,和传统的打包工具 py2exe 与 PyInstaller 相比, Nuitka 的优势相当明显。

Nuitka 的使用也十分简单。比如要将下面的 main.py 文件进行打包:

python# main.py

print("Nuitka")

首先安装 Nuitka 和建议安装的三方库:

shellpip install nuitka ordered-set zstandard

另外,编译 C 代码还需要一个支持 C11 标准的 C 编译器。 Windows 系统上可以安装 Visual Studio 2022 或者 MinGW64 。然后就能用 nuitka 命令进行编译了:

……

阻止浏览器 WebRTC 泄露真实 IP 地址

WebRTC 的全称是 Web Real-Time Communication ,即网页即时通信,用于支持浏览器进行实时语音对话或视频对话,并于 2011 年被纳入 W3C 推荐标准.现在几乎所有的主流浏览器都支持该功能。然而用户在日常中很少使用到浏览器的这个功能,反而这个功能会导致泄露用户的真实 IP 地址,无论用户是否启用了代理。因此,强烈建议对上网有隐匿需求的用户关闭浏览器的这个功能。

……

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 )中规定的双引号和单引号分别为 “”‘’,这组引号起源于西文,且称作国标引号。另外,在《重订标点符号手册》中规定的双引号和单引号(横式)分别为 『』「」,这组引号又被称为直角引号。

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

……