前言本文适用于接受以 POST 方法提交 JSON 体的 API 对端的通知解决方案，此案以 Telegram Bot 为例。以前的 Gmail Bot 还是很好用的，对于笔者这种重度用户来说登录网页来看邮件的时效性和便捷性都不如早起醒来瞄一眼 Bot 分类栏里出现的小红点——虽是十余年前的迷思，在手机上使用邮件 App 查看或同步邮件的话，其本家邮件（或是委托其同步的邮件）基本都是通过系统推送渠道告知用户新到的，若没有提供商的支持，透过 POP 等协议来同步的能耗和及时性都不及打开 IM 听任联系人 Q 我 8。Zoho Mail 虽然也有 App，但其商用办公解决方案提供的 Webhook 显然更简洁，为什么不用这种更为优雅的耦合方式呢？本文不涉及到对传入 Webhook 或 API 的操作，因此这里不介绍 Bot 侧的工作，直接从创建 Zoho Deluge 函数开始。配置 Zoho Mail 的 DRE 函数需要组织机构管理员「启用集成」https://mailadmin.zoho.com/cpanel/home.do#otherApps/integrations/settings （默认已经启用）访问 https://mail.zoho.com/zm/#settings/integrations-settings/DeveloperSpace/dre 并单击「创建函数」，自定义「函数名称」，「类别」选择「传出 Webhook」，在新出现的窗口粘贴以下内容：info Body; newLine = hexToText("0A"); summaryValue = Body.get("summary"); subjectValue = Body.get("subject"); senderValue = Body.get("sender"); messageIdValue = Body.get("messageId"); fromAddressValue = Body.get("fromAddress"); modeValue = Body.get("Mode"); notifyHeader = "You have a new mail."; chatIdValue = "114514191"; messageText = notifyHeader + newLine + "✉ " + "" + senderValue + "" + " <" + "" + fromAddressValue + "" + "> " + newLine + subjectValue + newLine + newLine + summaryValue; linkValue = "https://mail.zoho.com/zm/#mail/tab/" + messageIdValue; inlineKeyboardButton = {"text":"Open in Zoho Mail","url":linkValue}; if(modeValue == "6") { result = {"chat_id":chatIdValue,"text":messageText,"parse_mode":"HTML","reply_markup":{"inline_keyboard":{{inlineKeyboardButton}}}}; } else { result = {}; } return result;函数详解先贴出调用传出 Webhook 时会给到的 Body 的示例内容：{ "summary": "这是邮件摘要", "sentDateInGMT": 1753886387000, // 邮件发送时间(UTC)的Unix时间戳后加了三个0 "subject": "这是邮件主题", "Mode": 6, // 6是收到，1是发送，其他不知道，文档也没写 "messageId": 17538863870133100, // Zoho Mail 的信息ID，用于构建直达本邮件的URL "toAddress": "<postmaster@example.com>", // 收件人地址 "folderId": 114514000000001919, // Zoho Mail 的文件夹ID "zuid": 114514191, // Zoho 用户 ID "size": 114, // 邮件尺寸 "sender": "John Smith", // 发件人 "receivedTime": 1753886387114, // 邮件收到时间(UTC)的Unix时间戳，最后三位是毫秒 "fromAddress": "webmaster@example.com", // 发件人地址 "html": " test2<\/div>\r\n<\/div>\r\n<\/div>", // 邮件内容 "messageIdString": "1753537733180131300", // 字符串化的信息ID "IntegIdList": "1753537733180131300," }回到上一步创建的函数。根据指示，info Body; 一行是必填的；newLine = hexToText("0A"); 则是用来换行（具体原因见后记）；后续的各种 Value 无外乎是取出 Body 的值来重新赋予。如果需要处理 sentDateInGMT 和 receivedTime 则需如下处理：sentDateValue = Body.get("sentDateInGMT"); receivedTimeValue = Body.get("receivedTime"); sentDateText = sentDateValue.toText("yyyy/MM/dd hh:mm:ss","Asia/Shanghai"); receivedTimeText = receivedTimeValue.toText("yyyy/MM/dd hh:mm:ss","Asia/Shanghai");参数格式可以参考 https://www.zoho.com/deluge/help/functions/common/to-text.htmlnotifyHeader 可以自定义甚至删除，chatIdValue 便是 Telegram Bot 对话的 ID，messageText 是用来组合推送消息主体内容的（主要还是仿 Gmail Bot 消息风格，虽然那也不怎么好看就是了）；linkValue 和 inlineKeyboardButton 是用于组合内联键盘 (Inline Keyboard) 按钮及其链接的，因为本文做的只是推送而不是互动，因此没有其他花里胡哨的响应；最后的 if 和 else 主要用于过滤非「接收」的邮件（比如创建邮件模版、发送邮件等），并隐去其信息，让发送到 Bot API 的内容为空，达到防止不必要的泄露的目的。配置 Zoho Mail 的传出 Webhook访问 https://mail.zoho.com/zm/#settings/integrations-settings/DeveloperSpace/outgoingwebhooks 并单击「创建新的配置」，然后「自定义用户名」，并填写「Webhook 的 URL」，此处以 https://api.example.com/bot1145141919:AA8Vosmb4WBajGDcQpLbC9XLEnx8dsppUJv7/sendMessage 为示例；「选择实体」为「邮件」，「选择邮件条件」为「条件类型」中的「没有条件，适用于所有邮件」（当然可以自己配置规则），「有限数据列表」若勾选，Body 中将只提供 subject 和 fromAddress 等信息。「自定义函数」中，单击「编写函数」按钮，在弹出的窗口中选中刚刚创建的 DRE 函数。点击「保存」，完成创建。此时可见测试通过时的推送消息。结束。后记Zoho Deluge 太抽象了，笔者折腾了好久的 \n 换行才发现 Zoho Deluge 有个非常抽象的特性——自动将 \ 转义为 \\ ，该特性未在文档中标出且需向其技术部门发邮件才能关闭，其他藏着掖着的限制也不少，建议不用 Zoho。
在 Intel(R) J4125 承载的 Proxmox VE 虚拟机上安装 Windows 11 IoT Enterprise LTSC 2024 并直通网卡
Windows 11 的 LTSC 可谓是千呼万唤始出来。2024 年 10 月 2 日 Microsoft 正式公布了 Windows 11 Enterprise LTSC 2024 的各语言镜像，但英文单语言版 iotent 镜像（版本 26100.1742）早在 9 月 6 日就已经被编译了出来，这回属于是正式发布。本着折腾的原则，备份完数据之后就准备把软路由上的 Windows 10 升级一下。全新安装总是省事的。准备清单微 PE 工具箱 版本 2.3 或更高 https://www.wepe.com.cn/download.html（直通网卡用）Intel 以太网适配器完整的驱动程序包 版本 29.3.1 或更高 https://www.intel.com/content/www/us/en/download/15084/intel-ethernet-adapter-complete-driver-pack.htmlDISM++ 版本 10.1.1002.2 或更高 https://github.com/Chuyu-Team/Dism-Multi-language/releasesWindows VirtIO 驱动 版本 0.1.262 或更高 https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/UltraISO 版本 9.7.6 或更高Windows 11 IoT Enterprise LTSC 安装映像 版本 26100.1742 或更高定制 PE 环境和驱动释放 SCSI 驱动和 PE ISO 文件先解压 Windows VirtIO 驱动。Windows VirtIO 驱动解压完先不管。运行微 PE 工具箱安装程序，单击右下角的「光盘」。自定义可启动 ISO 镜像的输出位置和卷标。单击「立即生成 ISO」。单击「完成安装」。寻找其释放出来的 ISO 镜像并解压之。解压完成后即可使用 Dism++ 定制了。向 PE 镜像注入 SCSI 驱动打开 Dism++，选择「文件 (F)」，单击「挂载映像」。进入微 PE 工具箱释放的 ISO 镜像解压后的目录，选择 WEPE\WEPE64.WIM 文件并单击「打开 (O)」。挂载目录可以自定义，需要是一个干净的目录。这里以 D:\Temp\dismpp\ 为例。单击「确定」即可挂载映像。进入「驱动管理」，单击右下角的「添加驱动」。选择刚刚解压的 Windows VirtIO 驱动所在目录，选择 amd64\w10\ 目录（值得注意的是，该 PE 映像为 Windows 10）。单击「选择文件夹」，弹出操作成功等提示。可见「存储控制器」内已有 RedHat, Inc. 的 SCSI 驱动了。选择左上角的「文件 (F)」，单击「保存映像」，此处选择「直接保存」。选择左上角的「文件 (F)」，单击「卸载映像」。可见 PE ISO 镜像的解压目录中的 WEPE\WEPE64.WIM 文件已然是修改过后的时间了。修改 ISO 文件还得用到 UltraISO。修改 PE ISO 文件运行 UltraISO 程序，打开 PE 的 ISO 镜像，其内容显示在上半窗口处；下半窗口处进入 PE ISO 的解压目录。右键单击下半窗口处的 WEPE\WEPE64.WIM 文件，选择「添加」。提示「替换文件」，此处选择「是」。回到上半窗口处，右键单击光盘文件根目录的 BOOTMGR 文件，选择「设置为引导文件」。单击左上角的「文件 (F)」，选择「保存」。关闭 UltraISO 程序。定制 PE 环境完成。（直通网卡用）定制网卡驱动解压 Intel 以太网适配器完整的驱动程序包。重新打开 UltraISO 程序，其将默认生成一个光盘文件。进入驱动的解压目录，选中 PRO2500 文件夹，将其「添加」。单击左上角的「文件 (F)」，选择「保存」，「文件名 (N)」可以自定义。网卡驱动已经定制完成。配置 PVE 中的虚拟机上传镜像文件进入 PVE 的 ISO 镜像列表。将上一步制作的网卡驱动 ISO 文件（直通网卡用）、修改后的微 PE 工具箱 ISO 文件、Windows VirtIO 驱动 ISO 文件和 Windows 11 IoT Enterprise LTSC 安装映像尽数上传至 PVE。一共上传 4 个文件。创建虚拟机进入到 PVE 的「创建虚拟机」对话框，虚拟机的「名称」可以自定义。「使用 CD/DVD 光盘镜像文件 (ISO)」中的「ISO 镜像」选择修改后的微 PE 工具箱 ISO 镜像；「客户机操作系统」的「类别」选择 Microsoft Windows，「版本」选择 11/2022/2025；勾选「为 VirtIO 驱动程序添加额外驱动器」，「ISO 镜像」选择 Windows VirtIO 驱动 ISO 文件。「SCSI 控制器」选择 VirtIO SCSI，勾选「QEMU 代理」；Windows 11 IoT Enterprise 不要求 TPM，故不勾选「添加 TPM」；勾选「添加 EFI 磁盘」，与一般概念不同，PVE 虚拟机里的 EFI 磁盘仅仅是用来给 UEFI 存储启动项等用的，并不承担通常的 EFI 分区的功能。调整「磁盘大小 (GiB)」，勾选「SSD 仿真」（若虚拟磁盘存储在固态硬盘上）。CPU 的「类别」选择 host 以获得更好的性能；同时调整「核心」。调整「内存 (MiB)」和「最小内存 (MiB)」，勾选「Ballooning 设备」。（直通网卡用）因需要直通网卡，这里直接勾选「无网络设备」。这里确认配置，单击「完成」。创建完成后需要对虚拟机的「硬件」等进行进一步的修改。调整虚拟机「硬件」转到虚拟机的「硬件」页面，添加 2 个「CD/DVD 驱动器」。第一个驱动器的「ISO 镜像」选择 Windows 11 IoT Enterprise LTSC 安装映像。（直通网卡用）第二个驱动器的「ISO 镜像」选择网卡驱动 ISO 文件。（直通网卡用）添加「PCI 设备」，「原始设备」选择相应的网卡，勾选「所有功能」和「PCI-Express」。最终硬件配置如下。转到虚拟机的「选项」页面，编辑「引导顺序」，只保持勾选 scsi0 和 ide2（微 PE 工具箱的 ISO 镜像）。虚拟机我外部配置已经完成。安装 Windows在 PE 中部署 Windows 映像启动虚拟机，选择 UEFI Windows PE x64 (1024x786)。进入微 PE，可见显示效果正常。打开「分区工具 DiskGenius」，单击「快速分区」。其中「分区表类型」选择 GPT (GUID)；「分区数目」自定义；勾选「创建新 ESP 分区」，大小在 98MB 至 300MB 之间即可；取消勾选「创建 MSR 分区」；自定义「卷标」；勾选「对齐分区到此扇区的整数倍」。单击「确定」以应用更改。分区效果如下。运行「Windows 安装器 (WinNTSetup)」，「安装映像文件的位置」选择 Windows 11 IoT Enterprise LTSC 安装映像驱动器中的 sources\install.wim。「安装驱动器的位置」选择 C:\ 即可。「选项」选择 Windows 11 IoT Enterprise LTSC v22H2 Dev。单击「安装」。等待 Windows 映像应用。此时 Windows 映像已经被部署至硬盘中，此时不要重启。向 Windows 中注入驱动运行 Dism++，打开 Windows 11 IoT Enterprise LTSC x64 会话。依旧是「添加驱动」，选择 Windows VirtIO 驱动 ISO 文件所在驱动器，选择 amd64\w11\ 目录（值得注意的是，这里是对 Windows 11 注入驱动）。（直通网卡用）再次「添加驱动」，选择网卡驱动 ISO 文件所在驱动器，选择 PRO2500\Winx64\W11 目录。可见相关驱动已经注入系统。关闭 Dism++ 后直接重启。因 scsi0 启动排序在 ide\* 前的缘故，下一次启动将引导 scsi0 分区 1 中的 Windows Boot Manager。Windows OOBE等待启动。进入 OOBE 阶段。联网的情况下更新的时候居然有小游戏，梦回二十年前盗版 XP 安装，，，安装完成，进入桌面。Windows 的 Enterprise 带有其特有的「设备锁定」功能，IoT Enterprise 也不例外。自带应用仅 6 个，完全没有一般通道的 Windows 那么臃肿。安装 QEMU Guest Agent打开 Windows VirtIO 驱动 ISO 文件所在驱动器，双击运行 virtio-win-guest-tools.exe。安装完 QEMU Guest Agent 后 PVE 已经可以获得客户机的 IP 地址了。終わり。
华为云 Flexus 应用服务器 L 实例 ap-southeast-3 （新加坡）测评
华为云 Flexus 应用服务器 L 实例 ap-southeast-1 （香港）测评
Windows(R) Vista(TM) 安装体验——以 VMware Workstation Pro 为例
前言说来惭愧，第一台自己的电脑预装的不是 XP 而是 Vista，再不是赛博老登了。作为 Windows NT 6 系列的初代目，Vista 虽然给了十六年前的我一种耳目一新的感觉，但高居不下的蓝屏率和与 XP 大相径庭的操作让我在成为中级电脑高手的初期走了不少弯路。快十年前 (2015) 我曾尝试过把 Windows 98 到 8.1 在 VirtualBox 尽数安装体验，但在 Vista 及前代的激活服务器和 Windows Update 通道均关闭的今天 (2024)，全新安装旧世代的 Windows 并打完补丁的难度还是不小的。准备工作Windows Vista with Service Pack 2 映像文件Windows Vista 提供入门版 (Starter)、家庭普通版 (Home Basic)、家庭高级版 (Home Premium)、商用版 (Business)、企业版 (Enterprise) 和旗舰版 (Ultimate) 等六个版别，除入门版 (Starter) 外均有 32 位和 64 位版本。不讨论入门版 (Starter) 的情况下，家庭普通版 (Home Basic)、家庭高级版 (Home Premium) 和旗舰版 (Ultimate) 不提供 VoL 版本，而企业版 (Enterprise) 不提供零售版和 OEM 版本且系统镜像单列，这意味着前者不能透过 KMS 通道激活，而后者仅能透过 KMS 或 MAK 通道激活。Vista 的 Service Pack 1 (SP1) 于 2008 年 3 月 18 日发布，而 Service Pack 2 (SP2) 于 2009 年 4 月 28 日发布。本文使用 SP2 作为演示。企业版 (Enterprise) 64 位：Windows Vista Enterprise with Service Pack 2 (x64) - DVD (Chinese-Simplified): cn_windows_vista_enterprise_with_sp2_x64_dvd_x15-40402.iso, SHA1: 46E06E24D549FA42A2392C8553470BF9845C9C06企业版 (Enterprise) 32 位：Windows Vista Enterprise with Service Pack 2 (x86) - DVD (Chinese-Simplified): cn_windows_vista_enterprise_with_sp2_x86_dvd_x15-40257.iso, SHA1: 15472EBF0509ED56F46F6F5848D869C320C0B8D5家庭普通版 (Home Basic)、家庭高级版 (Home Premium)、商用版 (Business) 和旗舰版 (Ultimate) 64 位：Windows Vista with Service Pack 2 (x64) - DVD (Chinese-Simplified): cn_windows_vista_with_sp2_x64_dvd_x15-36322.iso, SHA1: A1689C254FB3BD67807EE493EE7D4896BCA39887家庭普通版 (Home Basic)、家庭高级版 (Home Premium)、商用版 (Business) 和旗舰版 (Ultimate) 32 位：Windows Vista with Service Pack 2 (x86) - DVD (Chinese-Simplified): cn_windows_vista_with_sp2_x86_dvd_x15-36285.iso, SHA1: DA7F7BDC841DDFFABFF7DDAB6B1158873BF1246DWindows Vista SP2 发布以后的补丁、在 2017 年 4 月 11 日扩展支持 (Extended Support Update) 到期后的额外补丁Vista SP2 发布到 2017 年 4 月支持结束前的所有补丁32 位：https://pan.baidu.com/s/1hsA7fQc?pwd=iwvn64 位：https://pan.baidu.com/s/1c2CbpIC?pwd=bbrn原载于 https://tieba.baidu.com/p/5070482430，补档于 https://bbs.pcbeta.com/viewthread-1858687-1-3.html。2017 年 5 月至 2020 年 1 月的后续更新集合https://pan.baidu.com/s/1Jqu7Q9heD0W_OIzzXqgY2A?pwd=juru原载于 https://bbs.pcbeta.com/viewthread-1858687-1-3.html。2020 年 2 月至 2023 年 1 月的后续更新集合https://pan.baidu.com/s/1FIFBRq4qvBv1EdZ7OYejsQ?pwd=m8p7原载于 https://bbs.pcbeta.com/viewthread-1957606-1-1.html。Windows Loaderhttps://app.box.com/s/bnchc6hten44adunlcpz9ya9j0uucfs2由 Microsoft Activation Scripts (MAS) 认证并上传，支持 Windows Vista 和 Windows 7 以 OEM 通道取得激活状态。VMware Tools 版本 11.0.6https://packages.vmware.com/tools/releases/11.0.6/windows/ 的 VMware-tools-windows-11.0.6-15940789.iso 文件。这个版本的 VMware Tools 暂时仍然支持 Windows Vista 的各个版本。VMware Workstation Pro笔者使用 VMware(R) Workstation 17 Pro，版本 17.5.2，运行在 Microsoft Windows 10 版本 22H2 内部版本 19045.4651 上。配置虚拟机单击 VMware Workstation 左上角的「文件 (F)」，单击「新建虚拟机 (N)... Ctrl+N」，进入「新建虚拟机向导」对话框。此处选择「自定义（高级）(C)」并单击「下一步 (N)」。此处的「虚拟机硬件兼容性 (H)」选择「Workstation 17.5.x」并单击「下一步 (N)」。此处选择「稍后安装操作系统 (S)。」并单击「下一步 (N)」。此处的「客户机操作系统」选择「Microsoft Windows (W)」，「版本 (V)」选择「Windows Vista x64 Edition」并单击「下一步 (N)」。此处的「虚拟机名称 (V)」和「位置 (L)」可根据需要自行确定，完成后单击「下一步 (N)」。此处的「固件类型」选择「BIOS (O)」并单击「下一步 (N)」。此处的「处理器数量 (P)」和「每个处理器的内核数量 (C)」可根据需要自行确定，完成后单击「下一步 (N)」。此处的「此虚拟机的内存 (M)」可根据需要自行确定，完成后单击「下一步 (N)」。此处选择「使用网络地址转换 (NAT) (E)」并单击「下一步 (N)」。此处选择「LSI Logic (L)」并单击「下一步 (N)」。此处选择「SCSI (S)」并单击「下一步 (N)」。此处选择「创建新虚拟磁盘 (V)」并单击「下一步 (N)」。此处的「最大磁盘大小 (GB) (S)」可根据需要自行确定，完成后单击「下一步 (N)」。此处的「磁盘文件 (F)」可根据需要自行确定，完成后单击「下一步 (N)」。确认虚拟机的配置并单击「完成」。正式安装 Windows Vista单击「编辑虚拟机设置」，弹出「虚拟机设置」窗口。在「CD/DVD (SATA)」的「连接」处选择「使用 ISO 映像文件 (M)」并在下方的下拉选框中选择下载的 Windows Vista 安装文件镜像并单击「确定」。单击「开启虚拟机」，静候屏幕显示 Windows Vista 引导画面。看到「安装 Windows」窗口，其中「要安装的语言 (E)」选择「中文（简体）」，「时间和货币格式 (T)」选择「中文（简体，中国）」，「键盘和输入方法 (K)」选择「中文（简体） - 美式键盘」，完成后单击「下一步 (N)」。此处选择「现在安装 (I)」。此处不输入产品秘钥，直接单击「下一步 (N)」。此处单击「否 (O)」以跳过产品密钥的输入并继续安装过程。此处选择「Windows Vista Ultimate」并单击「下一步 (N)」。此处勾选「我接受许可条款 (A)」并单击「下一步 (N)」。此处选择「自定义（高级）(C)」。此处可根据需要自行确定需要安装 Windows 的磁盘分区以及磁盘大小。完成后单击「下一步 (N)」。此处需要等候 Windows 安装程序复制和展开文件，完成后将自行重新启动。设定 WindowsWindows 安装程序结束后将进入 OOBE 阶段。此处可根据需要自行确定「用户名 (U)」和「密码 (P)」，完成后单击「下一步 (N)」。此处可根据需要自行确定「计算机名 (T)」，完成后单击「下一步 (N)」。此处选择「以后询问我 (A)」。此处的「时区 (Z)」选择「(GMT+08:00) 北京，重庆，香港特别行政区，乌鲁木齐」并单击「下一步 (N)」。此处选择「公共场所 (P)」。单击「开始 (S)」，进入 OOBE 的下一阶段。等待 Windows 对驱动等的初始化。「使完成工作变得充满乐趣」。「联络交流，易如反掌」。「演绎平凡的生活，凝聚美妙的回忆」。「联络，游戏，乐趣无穷」。「搜索五彩缤纷的世界」。「一个更安全的环境」。等待进入用户界面。等待用户初始化。进入用户桌面后，「欢迎中心」将自动出现。正常化操作系统单击「编辑虚拟机设置」，弹出「虚拟机设置」窗口。在「CD/DVD (SATA)」的「连接」处选择「使用 ISO 映像文件 (M)」并在下方的下拉选框中选择下载的 VMware Tools 11.0.6 版本的镜像并单击「确定」。单击「运行 setup64.exe」。单击「允许 (A)」。进入到「VMware Tools 安装程序」窗口，单击「下一步 (N)」。此处选择「典型安装 (T)」并单击「下一步 (N)」。此处单击「安装 (I)」。等待 VMware Tools 安装。单击「完成 (F)」。单击「是 (Y)」以重新启动。重新启动后虚拟机分辨率可以匹配 VMware Workstation 窗口的大小。在虚拟机内根据需要自行放置一些文件，包括本文提到的补丁包和激活工具。使用 Windows Loader 激活 Windows，需要单击「Restart」以重新启动使得 Windows 在引导时取得激活状态。Windows Vista 透过 OEM 通道取得激活状态。查看有关计算机的基本信息。「Windows 配置更新」页面的第一阶段。「Windows 配置更新」页面的第二阶段。「Windows 配置更新」页面的第三阶段。简单体验使用 Dism++ 安装本文提到的补丁包后，Windows 的 BuildLab 来到了 230105，成为一个官方支持下接近现代的操作系统。根储存库支持 ECC 的初代 Windows NT，有 Windows Server 2008 ESU 加持甚至不用手动导入 STL 就能自动信任很多新根。后记Vista 是个好用的 Windows 吗？显然不是。Dism++ 安装更新的时候不断卡死的新事故和在零几年的硬件上兼容性奇差的旧记忆一并构成了跨越几十年的对我的时间的浪费。它值得我突发奇想的一个原因是，在显示器技术进步的那个年代把拟物化做得超乎想象的绚丽和璀璨，至今深觉震撼。
Debian 10 (Buster) 及以上的发行版软件包源安装 MySQL 5.6.51
笔者一直苦于手里的实例配置过低，就算是安装了 Debian 12 (Bookworm) 的机器普遍也只有 1G 或 2G 的内存，用 MySQL 5.7 都够呛，更遑论 MySQL 8 了。看到全网没啥包安装低版本 MySQL 的方案，编译安装又太浪费时间，摸索了一整子，鼓捣出了 Debian 10 (Buster) 及以上的发行版安装 MySQL 5.6.51 的方法。（Ubuntu 等发行版应该可以照葫芦画瓢）一、准备工作安装好 wget。apt update -y && apt install wget -y确保系统中不存在 mysql-apt-config 包。dpkg -l | grep mysql-apt-config若没有返回，则进行下一步；若有返回，则执行 apt remove mysql-apt-config --purge -y。二、下载并安装 MySQL 相关包MySQL 5.6.51 在官方存档里只有供 Debian 9 (Stretch) 使用的包。笔者把相关包看了下，除了其自身内部的连体依赖的版本号是 =，其他外部依赖的版本号均为 >=，因此在 Debian 10 (Buster) 及以上版本的发行版中应该是能用的。执行以下命令以下载相关包：wget https://cdn.mysql.com/archives/mysql-5.6/mysql-common_5.6.51-1debian9_amd64.deb wget https://cdn.mysql.com/archives/mysql-5.6/libmysqlclient18_5.6.51-1debian9_amd64.deb wget https://cdn.mysql.com/archives/mysql-5.6/mysql-community-client_5.6.51-1debian9_amd64.deb wget https://cdn.mysql.com/archives/mysql-5.6/mysql-client_5.6.51-1debian9_amd64.deb wget https://cdn.mysql.com/archives/mysql-5.6/mysql-community-server_5.6.51-1debian9_amd64.deb wget https://cdn.mysql.com/archives/mysql-5.6/mysql-server_5.6.51-1debian9_amd64.deb下载完成后执行：apt install -y ./mysql-common_5.6.51-1debian9_amd64.deb ./libmysqlclient18_5.6.51-1debian9_amd64.deb ./mysql-community-client_5.6.51-1debian9_amd64.deb ./mysql-client_5.6.51-1debian9_amd64.deb ./mysql-community-server_5.6.51-1debian9_amd64.deb ./mysql-server_5.6.51-1debian9_amd64.debapt 会自行处理其他依赖。过程中会交互式地要求设置 MySQL 数据库 root 密码，输入即可。安装完成后可执行 mysql -u root（安装时未设置密码）或 mysql -u root -p（安装时已经设置密码）进入 MySQL Server。三、后记执行 systemctl enable mysql 以使 MySQL Server 随系统启动。MySQL Server 的配置文件在 /etc/mysql/ 目录里。mysql-common 是可以透过包管理器更新的，目前更新不影响 MySQL Server 的运行。执行 apt-mark hold mysql-common mysql-community-client mysql-client mysql-community-server mysql-server 以限制 MySQL 自动升级。終わり。
AlphaSSL 新证书 GlobalSign GCC R6 AlphaSSL CA 2023 证书链修复教程
近日有群友报告 AlphaSSL 新签的证书兼容性不佳，在用自动证书工具补齐证书链之后仍然无效。鉴于 GlobalSign 近几年搞了一大堆 intermediate CA，估摸着这回终于到 AlphaSSL 头上了。简单查了下，果然。2022 年底的 AlphaSSL CA - SHA256 - G2 失效，GlobalSign 给了 AlphaSSL CA - SHA256 - G4 作为新的 intermediate CA 证书，写在里面的 AIA 指向 GlobalSign Root CA (01SEP1998 - 28JAN2028, root-r1)。奇怪的是 2024 年 1 月 28 日之后的 AlphaSSL CA - SHA256 - G4 不再签发证书，改由 GlobalSign GCC R6 AlphaSSL CA 2023 签发原有通道的 AlphaSSL 证书，而后者的 AIA 指向 GlobalSign Root CA - R6 (10DEC2014 - 10DEC2034, root-r6)，且为信任锚。显然 2024 年 1 月 28 日之后的 AlphaSSL 默认的证书链的信任锚为 2014 年的这张 GlobalSign Root CA - R6。众所周知，一个新信任锚被绝大多数操作系统和软件所接受的周期是极长的，2010 年出的新根证书 (e.g. USERTrust) 依然在很多嵌入式设备、操作系统和浏览器中不受支持。保险起见，新的根证书会找老根证书交叉签名以保证自身的良好的兼容性，GlobalSign 也不例外。因此，重建证书链，将信任锚指向为其交叉签名的较老的根证书上即可解决问题。查询 https://crt.sh/?caid=272222 得知 GlobalSign GCC R6 AlphaSSL CA 2023 仅有一条直接上级 CA，即 GlobalSign Root CA - R6 (https://crt.sh/?caid=18459)。继续向上查询，得知 GlobalSign Root CA - R6 除了为信任锚外，还与 GlobalSign Root CA (01SEP1998 - 28JAN2028, root-r1) 有背书，那么解决方案呼之欲出————拼接 GlobalSign GCC R6 AlphaSSL CA 2023, GlobalSign Root CA - R6 和 GlobalSign Root CA 即可解决问题。将以下代码块附加在叶子证书（第一个 BEGIN CERTIFICATE 起到第一个 END CERTIFICATE 止）后作为证书链：-----BEGIN CERTIFICATE----- [binary] -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- [binary] -----END CERTIFICATE-----即可完成证书链建构。
引言最近闲得无聊（其实毕业论文死线已经过了半个月），自从上次完成《英梨梨带你游上海》之后玩 Ingress 仿佛失去了方向。碰巧 CA 最近也闲，随手从 Bannergress 挑了一套二次元任务——就是本系列，《某魔都のbilibili》。当时觉得它全程均在浦东，而且是上回我们做 Eriri 任务附近，地形也相当熟悉，应该能在一个晚上完成。但是，嗯，正如魔绿群里总结的那样，二次元任务都有大坑，，，警告：未完成的任务（任务 8 和任务 14 的勋章的分辨率与其他不一致）、存在恶意。本记录旨在批判本系列任务的阴间之处，望打算进行本系列任务的特工三思而后行，望有志设计任务的特工引以为戒，，，阴间①建议乘坐公交车至浦东南路商城路（公交站）下车，可以摸到任务 1 起始点的 po。但是呢，在摸完在浦东南路西侧的「Lion Outside Shanghai Bank」之后我们需要向东穿越浦东南路去摸浦东南路东侧的「Shinmay Union Square」和「Running Sculpture」这两个 po，任务 1 的终结 po「Giant Lion at Bank of Ningbo」却又在浦东南路西侧，需要再次向西穿越浦东南路才能摸到，，，阴间②完成任务 1 之后就该开始任务 2 了。任务 2 的起始 po 叫「Abstract Sculpture 2」，在任务 1 的终结 po「Giant Lion at Bank of Ningbo」的南侧不远。嗯，如图所示，任务 2 的其余 po 又在浦东南路东侧，所以我们需要再次向东穿越浦东南路。一般我们建议走浦东南路天桥（图示「星巴克」的右侧）避免红绿灯的等待时间。但是呢，浦东南路天桥是半自动的，只有上升方向有自动扶梯，下降方向只有走道；天桥东侧的引桥为北上南下，天桥西侧的引桥为北下南上。这是我们在本系列任务第 1 次经过浦东南路天桥。从浦东南路天桥下来时我们面朝南方，需要掉头向北去摸任务 2 剩下的 po。任务 2 做完以后可以开任务 3。如图所示，任务 3 的终结 po「长颈鹿」又在浦东南路西侧，我们需要第二次经过半自动的浦东南路天桥以完成任务 3。下面应该进行任务 4 了，但是，任务 4 的 po 在浦东南路东侧，，，，我们需要第 3 次经过浦东南路天桥。如图所示，任务 5 的路径横跨浦东南路，不出意外需要第 4 次经过浦东南路天桥；任务 6 到任务 7 同理。我们一共需要经过半自动的、非双向引桥的浦东南路天桥共 5 次。阴间③任务 7 有个飘很远的 po「东来顺」。如图所示，这个申必 po 在小区里，一去一回大概要十几二十分钟，，，另外，任务 8 的「东方证券门口的石狮子」和「上海银行门口的石狮子(西)」两个 po 在马路对面（张杨路南侧），想摸到要么绕远路过路口再过去，要么冒着被各路高速运行的泥头车创飞的风险走到路牙子上看看上帝会不会让你的定位飘到靠近他它们的范围，，，阴间④任务 9, 10 和 11 看起来是九转十八弯，但它确实是九转十八弯。其中，任务 9 的终结 po「美丽喷泉」和任务 10, 11 的一众 po 因受 96 广场附近的申必力场影响导致定位漂移严重，需要靠运气才能摸到。另外就是，任务 11 的终结 po「Wall Painting」也在马路对面（东方路东侧），同样需要额外气力或风险去摸。提醒和插曲任务 12 及之后的任务的路径跳跃相当大，可以尝试骑共享单车完成。需要注意行车和停泊时的安全。在源深体育中心附近我们当场逮捕了上次在北蓝公众号挂我们的新人蓝军。可惜对方太社恐，或是我和 CA 俩太像神经病（事实上我们二人都有精神科诊断书），交都没交流，披着连衣帽的反抗军特工就消失在茫茫夜色中。阴间⑤任务 16 的终结 po「Taoism Temple」是钦赐仰殿，任务 17 的第二个 po「Pudong Mosque」是浦东清真寺。搁这一边道教一边伊斯兰教的我不是很懂，，，而且位置深入，比较难摸。钦赐仰殿可以买票进入，浦东清真寺好像可以在门口试试。阴间⑥任务 17 的终结 po 兼任务 18 的起始 po 叫「Robo Statue Male and Female」，在梅园公园内。建议从乳山路福山路（路口）的梅园公园西北门进入梅园公园。那么，重量级的来了。任务 17 中关于「Robo Statue Male and Female」这个 po 的操作类型是 Passphrase，题目为「Vici 最喜欢哪一只御坂妹妹？」我和 CA 在这里干等了 15 分钟，试遍了所有在《魔法禁书目录》和《某科学的超电磁炮》及其衍生作品中登场过的 Sisters 的编号，均告错误。无奈地铁末班车临近，只能作罢，打道回府。是夜，组图拼图群的一位老板回复了正确的答案：御坂10032号。需要前缀汉字 御坂，需要后缀汉字 号。阴间⑦都到最后一个任务了还不让人消停是吧？是的，任务 18 中关于终结 po「爪击」的操作类型也是 Passphrase，题目为「我爱这个网站~」，没有其他提示。看到这个问题的瞬间我们手足无措，在步行前往那里的路上罗列了所有可能的答案，诸如什么 bilibili, bilibili.com, bilibili.tv, 哔哩哔哩、哔哩哔哩弹幕视频网 等等等等，无果。遂急，复读了题干 我爱这个网站，通过。总之就是很无语。写在后面总之不是很愉快。本来一个晚上就能完成的任务硬是被阴间 Passphrase 切成了两半。我还是希望任务设计的 po 和路径能够阳间一点，不要整什么五渡浦东南路、直面泥头车、既当道士又戴塔基亚还加入个人选择的元素之类的活。另外希望诸位阿根特在做系列任务前先通过一些渠道了解该系列任务基本信息和评价等，不要误入歧途（
Ingress 系列任务《英梨梨带你游上海》活动记录
引言最近在看《路人女主养成法》，随即想起了几周前在上海绿军群里看到的一个有关 Eriri 的组图任务，遂访问 Bannergress 了解了一下《英梨梨带你游上海》，得知其为一组由 Eriri 角色图切割为 6*6 的圆块的 36 个任务组成的系列；系列主要涉及街市边缘和开放式广场及公园内的 po，而未有涉及可能需要拥有特定身份或持有通行凭证才能进入的领域（诸如大学校园、研究所等）。另外就是作者仍然在线，虽然可能必然遇到一些令人无语的问题，但是透过直接喊话已经成为可选项（经过喊话，本系列任务所有 Passphrase 操作均已经被作者削除，大家可以放心地摸而非站在寒风中瑟瑟发抖一个小时败兴而归）。我足够有信心做完这个任务，所以就开始了。第一站，浦电路。第一部分：浦电路、96 广场及第一八佰伴浦电路第一个任务位于浦电路东方路（公交站）附近，一部分在浦电路以南的竹园绿地，另一部分在浦电路以北的 CBD。 建议乘坐地铁到达浦电路站（地铁站）并从 1 号口出站，或乘坐公交至浦电路东方路（公交站）。竹园绿地的 po 可以在站口附近摸到，东方路的 po 可以走在路东侧的人行道上摸到。这个任务本来有一个 Passphrase 操作的（「东方路海宝」），目前已经削除，仅要求 Hack 一次。下一站，96 广场。96 广场建议从第一个任务结束位置步行至 96 广场。96 广场的 po 非常阳间，可以很容易摸完。下一站，第一八佰伴。第一八佰伴及其周边上海第一八佰伴的建筑风格很有特色，可惜从 96 广场过去不能直接看到正脸。建议自 96 广场骑行至第一八佰伴，或乘坐公交至张杨路浦东南路（公交站）。任务 3 做完之后上浦东南路天桥到达鄂尔多斯大厦摸任务 4 的 po。任务 5 的路径呈直线状，任务 4 做完建议扫辆共享单车，沿着浦东南路西侧人行道向北（世纪大道方向）边骑边摸任务 5 的 po。此操作为逆向行驶，且人行道较窄、非机动车停放较多、行人密集，请注意安全。这里有段小插曲。我做完前五个任务之后因为时间接近黄昏的原因回去了。第二天和 ChaosAttractor 约饭的时候向她安利了 Eriri，成功。遂重做了这五个任务，之后的任务基本都是我们两个人一起做的。这也是某位新人蓝军的工 po 同时被两位绿军胖揍的原因。下一站，外滩。第二部分：外滩及南京东路步行街外滩摸完任务 5 的终结 po 「广场狮」后向东穿越浦东南路，进入东昌路站（地铁站），乘坐上海地铁 2 号线（浦东国际机场方向）至南京东路站（地铁站）。地铁站出口随便选，走远了也没关系，可以在等红绿灯的时候顺便领略一下苹果、三星和华为三家店齐聚河南中路南京东路（路口）的景象，，，出站后沿南京东路一直向东（外滩方向）走，到达南京东路中山东一路（路口）的时候就可以开摸了；沿着江堤或中山东一路向南行走可以摸完任务 6 的剩余 po。摸完建议沿广东路向西（河南中路方向）走。原因也没啥，南京路和外滩一年四季都人潮汹涌，逃出生天后在无人的街道上静静也挺好。南京东路重回南京东路站（地铁站）后可以开始任务 7，沿南京东路向西（西藏中路方向）可以做完任务 7 和任务 8。南京东路的高层建筑物较多，定位漂移现象较为严重，请尝试四周走动等以取得准确的定位。西藏中路东侧到达南京东路西藏中路（路口）后左转（向南），可以摸到任务 9 的 po。到达西藏中路福州路（路口）后建议右转（向西）通过西藏中路摸任务 9 的终结 po 「Shanghai's Popular Urbanism」。下一站，人民公园。第三部分：人民公园及蓬莱公园人民公园人民公园及其周边有两个任务，路径总的来说不是很阳间。任务 10 的起始 po 是任务 9 的终结 po 「Shanghai's Popular Urbanism」。我和 CA 是在做完任务 9 的时候回去的。无论如何，如果将任务 10 作为第二次出勤的起始点的话都建议乘坐地铁至人民广场站（地铁站），自 2 或 3 号口出站。出站后跟着任务标记走吧，毕竟路径有点阴间，，，摸完任务 10 的终结 po 「体育大厦」后可以向南穿越南京西路九江路（三岔路口）到达任务 11 的起始 po 「人民公园五号门」。建议先向南（「People Square Silver Mushroom」方向）再向东，摸完任务 11 的终结 po 「南极石」后可以直接走人民公园 1 号门离园，自东面的地铁站入口进入人民广场站（地铁站）。下一站，蓬莱公园。蓬莱公园进入人民广场站（地铁站）后乘坐上海地铁 8 号线（沈杜公路方向）至西藏南路站（地铁站），自 1 号口出站后步行或自 2 号口出站后骑行至蓬莱公园。摸蓬莱公园的 po 非常舒适。建议做完任务 12 后顺便摸一下西边的保屯路上的 po。下一站，世博园区。第四部分：世博园区、西营路及南码头历城路部分攻略有点阴间，这边亲身经验建议从蓬莱公园走出来后前往西藏南路瞿溪路（公交站）乘坐 454 路公交车（恒大华城方向）至昌里路历城路（公交站），下车就可以摸 po 啦，，，自昌里路历城路（路口）向北沿历城路步行完成任务 13 的剩余部分。原本这里是有个 Passphrase 操作的，我们在寒风中（最近确实挺冷）问候了作者，作者给出了参考答案后表示将会把整个系列任务的所有 Passphrase 操作均削除。世博源到达耀华路后穿越之，沿耀华路向东往世博源去吃饭。可以在世博源建筑内摸 po 以完成任务 14，只是漂移有点像灵车，实在不行上世博轴二楼，定位会准确一点。我和 CA 在世博源吃完晚饭因大雨且没带伞，便回去了。下一站，西营路。西营路我一般建议自世博源步行去耀华路西营路（路口），途中逮着一辆共享单车就扫，扫完直奔耀华路西营路（路口）；土豪一点的可以在耀华路站（地铁站）乘坐上海地铁 7 号线（美兰湖方向）到长清路站（地铁站）从 3 号口出站。任务 15, 16, 17 和 18 均在西营路上，骑车 Hack 效果极佳（鄙人在 CA 已经提前拉了 field 后 13 分钟速通这四个任务），注意后边来车哦。南码头搞定之后建议折返步行或骑行至德州路西营路（公交站），乘坐 610 路公交车（其昌栈渡口方向）至浦东南路浦三路（公交站）下车，自浦东南路南码头路（路口）沿南码头路向北（世博大道方向）步行至南码头渡口完成任务 19。南码头确实是比较有历史感的街区，但是那天晚上下小雨，我们没有多留。下一站，塘桥。第五部分：塘桥及塘桥公园塘桥十分建议从南码头骑行至浦东南路浦建路（路口），只要 10 分钟；公交反而碍事，不仅慢而且还要走很远。自浦东南路浦建路（路口）沿浦建路向东（东方路方向）步行完成任务 20。有个 po 叫「怪兽石」，可能需要在浦建路南泉路（路口）穿越浦建路并折返回去才能摸到。到达浦建路东方路（路口）后穿越东方路和浦建路，沿东方路东侧向北（蓝村路方向）完成任务 21。其中，「金龙花园石蘑菇」和「不讲卫生的狮子」这两个 po 在小区内，应该可以很容易进去。塘桥公园到达东方路蓝村路（路口）后继续沿东方路向北（浦电路方向）走，在东方路峨山路（路口）穿越峨山路后应该可在左边（西侧）看到塘桥公园。塘桥公园没什么难点，完成任务 22 和任务 23 后沿东方路向北（浦电路方向）步行至东方路浦电路（路口）后可见浦电路站（地铁站）4 号口。很熟悉？没错，这里是系列任务开始的地方。本段标题也可被称为「再回浦电路」，，，下一站，静安公园。第六部分：静安公园、静安寺及南京西路静安公园及静安寺乘坐地铁建议自静安寺站（地铁站）1 或 4 号口出站，前往静安公园完成任务 24 和任务 25。随后返回北面的公园大门，向西数步到达南京西路华山路（路口），穿越南京西路到达静安寺大门完成任务 26。静安寺门口经常大排长龙，还有业余观相师在兜售他们的服务。不过我看他们也就是摆弄一下观察随行人员的特征的能力来吸引客户，希望他们能把话讲得委婉一点，不然只能靠对方的礼节保持自己的颜面，，，下一站，南京西路。南京西路沿南京西路向东（陕西北路、成都北路方向）步行。完成任务 27 时建议走道路南侧，完成任务 28 时建议走道路北侧。看着无数次经过的地方，祈愿着永不停息的繁华。（「诶诶诶我们怎么来到了烈？！」）到达南京西路茂名北路（路口）后建议继续沿南京西路向东（石门一路方向）步行，到达南京西路石门一路（路口）后左转，沿石门一路北上可以到达北京西路石门一（二）路（路口）。下一站，静安雕塑公园。第七部分：静安雕塑公园及上海站静安雕塑公园「到达上海最密处——静安雕塑公园！太美丽了雕塑公园！哎这不花花的 po 嘛？！看看远处的蓝针 po 吧家人们。」静安雕塑公园自不必说，你沪最大最密的 po 场，请随意游玩（然后我和 CA 就在这花了 1.5h 摸 po 画图连线起 field）。下一站，上海站南广场。上海站南广场建议从静安雕塑公园前往石门二路山海关路（公交站）乘坐 104, 109, 927 或 955 路公交车（上海火车站南广场方向）前往上海火车站南广场（公交站）完成任务 31 和任务 32。任务 31 和任务 32 有较多的 po 复用，请不要在完成任务 31 的时候用尽可能的冷却和重置冷却的机会；任务 32 可能有一个偏移较大的 po，请注意极限距离，避免走到机动车道上。下一站，江浦公园。第八部分：江浦公园建议从上海站南广场自上海火车站（地铁站）2 号口（就位于南广场上）乘坐上海地铁 1 号线（莘庄方向）至汉中路站（地铁站）换乘上海地铁 12 号线（金海路方向）至江浦公园站（地铁站）1 号口出站。出站后沿长阳路北侧向东（黄兴路方向）步行以完成任务 33，完成后折返进入江浦公园完成任务 34。江浦公园的 po 也挺多，可以多摸摸。通过任务列表选择附近任务时，有可能刷到蓝军重置版的任务 34，其要求与原版不同，请根据自身情况选择。我们选择的是原版，因此，下一站，重返浦电路。第九部分：重返浦电路从江浦公园站（地铁站）1 号口进站后乘坐上海地铁 12 号线（七莘路方向）至大连路站（地铁站）换乘上海地铁 4 号线（内圈，杨树浦路方向）到达浦电路站（地铁站）1 号口出站，沿福山路向北完成任务 35。建议骑车完成这两个任务。任务 36 主要集中在浦电路和崂山路。其中，「妹子顶个鸟」和「浦电路怪石」这两个 po 位于浦电路南泉路（路口），请留意折返；「Geeky Roof」位于小区大门内 20 米，骑共享单车的阿根特建议将车临时停放在门外，然后以 30 秒的速度步行进门并完成最后一块拼图的最后一个动作。浦电路向东（东方路方向）到达浦电路东方路（路口）后穿越浦电路可以到达浦电路站（地铁站）4 号口。各回各家，各找各妈！(CA: 「今天又是末班车小能手。」)总结关于相关攻略的说明本系列任务已经不再含有任何 Passphrase 操作，任何非 Eriri 厨和非地铁迷均可愉快游玩。结尾这算是我和 CA 第一次做组图任务，我共计用时 6 天（18 日至 23 日），CA 比我晚入坑一天所以是 5 天。任务比较满意，不仅打发了本无业游民无聊时光还解决了晚饭地点选址，顺便还上了电视（见上文浦电路萌新蓝军战报抱怨工 po 被混合双打一事）；CA 则是提了一大波 AP，从蓬莱公园升 8 级到重返浦电路升 9 级，看着任务勋章页整齐排布的 6*6 Eriri 角色图，成就满满。