<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Wblog</title>
    <link>www.cuiliang.com</link>
    <description>Wblog,talk about golang,java and so on.</description>
    <managingEditor>wangsongyanlove@163.com (Wangsongyan)</managingEditor>
    <pubDate>Wed, 29 Apr 2026 15:54:45 +0000</pubDate>
    <item>
      <title>使用 po4a 进行技术文档翻译：从入门到实践</title>
      <link>www.cuiliang.com/post/388</link>
      <description>在开源项目中，文档的多语言支持是提升项目影响力的重要环节。最近在为 Yii3 框架文档添加简体中文翻译时，我深入使用了 po4a 这个强大的翻译工具。本文将分享使用 po4a 进行技术文档翻译的完整流程和实践经验。&#xD;&#xA;&#xD;&#xA;## 什么是 po4a？&#xD;&#xA;&#xD;&#xA;po4a（PO for Anything）是一个基于 gettext 的文档翻译工具，最初为 Debian 项目开发，但现在已经广泛应用于各种文档翻译场景。它的核心优势在于：&#xD;&#xA;&#xD;&#xA;- **格式无关**：支持 Markdown、POD、XML、HTML 等多种格式&#xD;&#xA;- **版本控制友好**：翻译文件（.po）是纯文本，易于纳入 Git 管理&#xD;&#xA;- **增量更新**：源文件更新时，自动合并已有翻译，避免重复工作&#xD;&#xA;- **团队协作**：支持多人协作翻译，便于分工&#xD;&#xA;&#xD;&#xA;## 项目结构&#xD;&#xA;&#xD;&#xA;在开始之前，先了解典型的 po4a 项目结构：&#xD;&#xA;&#xD;&#xA;```&#xD;&#xA;docs/&#xD;&#xA;├── _translations/        # 翻译配置和 PO 文件&#xD;&#xA;│   ├── po4a.conf         # 主配置文件&#xD;&#xA;│   ├── pot/              # 模板文件（.pot）&#xD;&#xA;│   └── po/               # 翻译文件（.po）&#xD;&#xA;│       └── zh-CN/        # 简体中文翻译&#xD;&#xA;├── src/                  # 源文件和翻译输出&#xD;&#xA;│   ├── en/               # 英文源文件&#xD;&#xA;│   └── zh-CN/            # 简体中文翻译输出&#xD;&#xA;```&#xD;&#xA;&#xD;&#xA;这种结构将翻译工作与源文件分离，既保持了源文件的整洁，又便于管理翻译进度。</description>
      <guid>www.cuiliang.com/post/388</guid>
      <pubDate>Fri, 23 Jan 2026 19:23:47 +0000</pubDate>
    </item>
    <item>
      <title>Docker 配置代理完整指南</title>
      <link>www.cuiliang.com/post/387</link>
      <description>## 背景&#xD;&#xA;在国内环境下使用 Docker 时，经常遇到拉取镜像缓慢或超时的问题。虽然可以配置镜像加速器，但随着国内镜像源的不稳定，使用代理成为了更可靠的解决方案。&#xD;&#xA;&#xD;&#xA;## 问题现象&#xD;&#xA;执行 `docker build` 或 `docker pull` 时出现以下错误：&#xD;&#xA;&#xD;&#xA;```&#xD;&#xA;ERROR: failed to solve: DeadlineExceeded: failed to resolve source metadata for docker.io/xxx&#xD;&#xA;dial tcp xxx.xxx.xxx.xxx:443: i/o timeout&#xD;&#xA;```&#xD;&#xA;&#xD;&#xA;## 核心原理&#xD;&#xA;Docker 架构分为两部分：&#xD;&#xA;- **Docker Client:** 命令行工具，接收用户命令&#xD;&#xA;- **Docker Daemon:** 后台服务，实际执行拉取镜像等操作&#xD;&#xA;当我们在终端设置 `export HTTP_PROXY=...` 时，只影响 `Docker Client`，而真正需要网络访问的 `Docker Daemon` 并未使用代理。&#xD;&#xA;&#xD;&#xA;## 解决方案&#xD;&#xA;为 Docker Daemon 配置代理（推荐）&#xD;&#xA;1. 创建 systemd 配置目录&#xD;&#xA;```&#xD;&#xA;sudo mkdir -p /etc/systemd/system/docker.service.d&#xD;&#xA;```&#xD;&#xA;2. 创建代理配置文件&#xD;&#xA;```&#xD;&#xA;sudo vim /etc/systemd/system/docker.service.d/http-proxy.conf&#xD;&#xA;```&#xD;&#xA;3. 添加代理配置&#xD;&#xA;```&#xD;&#xA;[Service]&#xD;&#xA;Environment=&#34;HTTP_PROXY=http://your-proxy-ip:port&#34;&#xD;&#xA;Environment=&#34;HTTPS_PROXY=http://your-proxy-ip:port&#34;&#xD;&#xA;Environment=&#34;NO_PROXY=localhost,127.0.0.1,*.local,registry.internal.com&#34;&#xD;&#xA;```&#xD;&#xA;配置说明：&#xD;&#xA;&#xD;&#xA;- HTTP_PROXY: HTTP 协议代理地址&#xD;&#xA;- HTTPS_PROXY: HTTPS 协议代理地址（Docker Hub 使用 HTTPS）&#xD;&#xA;- NO_PROXY: 不使用代理的地址列表，通常包括：&#xD;&#xA;  - localhost, 127.0.0.1: 本地地址&#xD;&#xA;  - *.local: 本地域名&#xD;&#xA;  - 内网私有镜像仓库域名&#xD;&#xA;&#xD;&#xA;4. 重载配置并重启 Docker&#xD;&#xA;```&#xD;&#xA;# 重载 systemd 配置&#xD;&#xA;sudo systemctl daemon-reload&#xD;&#xA;# 重启 Docker 服务&#xD;&#xA;sudo systemctl restart docker&#xD;&#xA;```&#xD;&#xA;5. 验证配置&#xD;&#xA;```&#xD;&#xA;# 查看 Docker 服务的环境变量&#xD;&#xA;sudo systemctl show --property=Environment docker&#xD;&#xA;```&#xD;&#xA;预期输出：&#xD;&#xA;```&#xD;&#xA;Environment=HTTP_PROXY=http://your-proxy-ip:port HTTPS_PROXY=http://your-proxy-ip:port NO_PROXY=localhost,127.0.0.1&#xD;&#xA;```&#xD;&#xA;6. 测试代理连接&#xD;&#xA;```&#xD;&#xA;# 测试是否能通过代理访问 Docker Hub&#xD;&#xA;curl -x http://your-proxy-ip:port -I https://registry-1.docker.io/v2/&#xD;&#xA;# 拉取测试镜像&#xD;&#xA;docker pull hello-world&#xD;&#xA;```</description>
      <guid>www.cuiliang.com/post/387</guid>
      <pubDate>Wed, 21 Jan 2026 17:18:48 +0000</pubDate>
    </item>
    <item>
      <title>入职满 11 周年纪念日</title>
      <link>www.cuiliang.com/post/386</link>
      <description>![79EE5F71-BDDD.jpg](/uploads/images/202601/20102452650.jpg &#34;79EE5F71-BDDD.jpg&#34;)&#xD;&#xA;&#xD;&#xA;![IMG_7957.JPG](/uploads/images/202601/20102149103.jpg &#34;IMG_7957.JPG&#34;)&#xD;&#xA;</description>
      <guid>www.cuiliang.com/post/386</guid>
      <pubDate>Tue, 20 Jan 2026 10:19:14 +0000</pubDate>
    </item>
    <item>
      <title>在 macOS（Apple Silicon）根目录下创建目录的正确方式</title>
      <link>www.cuiliang.com/post/385</link>
      <description>在 macOS 上，我想在根目录（/）下创建一个目录，比如 /data1，用于放置项目数据。&#xD;&#xA;&#xD;&#xA;```&#xD;&#xA;mkdir /data1&#xD;&#xA;```&#xD;&#xA;结果系统提示：&#xD;&#xA;```&#xD;&#xA;mkdir: /data1: Read-only file system&#xD;&#xA;```&#xD;&#xA;一开始我以为是权限问题，于是又试了：&#xD;&#xA;```&#xD;&#xA;sudo mkdir /data1&#xD;&#xA;```&#xD;&#xA;&#xD;&#xA;但依然报错，说明即使 `sudo` 也不行。&#xD;&#xA;&#xD;&#xA;## 为什么会这样？&#xD;&#xA;&#xD;&#xA;从 macOS Big Sur（11） 开始，苹果对系统盘启用了 Signed System Volume（SSV）签名保护机制。&#xD;&#xA;&#xD;&#xA;这意味着：&#xD;&#xA;&#xD;&#xA;系统卷 `/` 是 只读的 APFS 快照；&#xD;&#xA;&#xD;&#xA;即使是 root 用户，也不能直接修改；&#xD;&#xA;&#xD;&#xA;`mount -uw /` 在 Apple Silicon（M1/M2/M3）上会报错：&#xD;&#xA;```&#xD;&#xA;mount_apfs: volume could not be mounted: Permission denied&#xD;&#xA;mount: / failed with 66&#xD;&#xA;```&#xD;&#xA;&#xD;&#xA;简单来说：根目录是锁死的。</description>
      <guid>www.cuiliang.com/post/385</guid>
      <pubDate>Wed, 29 Oct 2025 17:30:05 +0000</pubDate>
    </item>
    <item>
      <title>2025 海淀马拉松 3:39 安全完赛</title>
      <link>www.cuiliang.com/post/384</link>
      <description>2025 海淀马拉松 3:39 安全完赛&#xD;&#xA;&#xD;&#xA;![9c43b356be68a5.JPG](/uploads/images/202510/14172913520.jpg &#34;9c43b356be68a5.JPG&#34;)&#xD;&#xA;![IMG_0984.jpg](/uploads/images/202510/14173015986.jpg &#34;IMG_0984.jpg&#34;)&#xD;&#xA;&#xD;&#xA;</description>
      <guid>www.cuiliang.com/post/384</guid>
      <pubDate>Tue, 14 Oct 2025 17:28:41 +0000</pubDate>
    </item>
    <item>
      <title>西北旺第四届十公里竞速赛 PB 44:11</title>
      <link>www.cuiliang.com/post/383</link>
      <description>西北旺第四届十公里竞速赛 PB，成绩 44:11，配速 4:25，排名 40（500 人参赛）&#xD;&#xA;&#xD;&#xA;![西北旺十公里竞速赛.jpeg](/uploads/images/202509/28172034255.jpeg &#34;西北旺十公里竞速赛.jpeg&#34;)&#xD;&#xA;&#xD;&#xA;![IMG_7516.PNG](/uploads/images/202509/28150543671.png &#34;IMG_7516.PNG&#34;)&#xD;&#xA;&#xD;&#xA;![43c45a461d7f085af8ccf003bf824033.JPG](/uploads/images/202509/28150544827.jpg &#34;43c45a461d7f085af8ccf003bf824033.JPG&#34;)&#xD;&#xA;&#xD;&#xA;![IMG_7506.PNG](/uploads/images/202509/28150546832.png &#34;IMG_7506.PNG&#34;)&#xD;&#xA;</description>
      <guid>www.cuiliang.com/post/383</guid>
      <pubDate>Sun, 28 Sep 2025 15:00:27 +0000</pubDate>
    </item>
    <item>
      <title>我们结婚啦！</title>
      <link>www.cuiliang.com/post/382</link>
      <description>![33F177C09271CAEDF9520980C4DC5F9C.jpg](/uploads/images/202509/28143513721.jpg &#34;33F177C09271CAEDF9520980C4DC5F9C.jpg&#34;)&#xD;&#xA;&#xD;&#xA;![6203BC1FA02752568291D3CF7A9E8BFF.jpg](/uploads/images/202509/28143521105.jpg &#34;6203BC1FA02752568291D3CF7A9E8BFF.jpg&#34;)&#xD;&#xA;</description>
      <guid>www.cuiliang.com/post/382</guid>
      <pubDate>Fri, 29 Aug 2025 14:34:49 +0000</pubDate>
    </item>
    <item>
      <title>2025北京亦庄半程马拉松暨人形机器人马拉松安全完赛</title>
      <link>www.cuiliang.com/post/381</link>
      <description>2025北京亦庄半程马拉松暨人形机器人马拉松安全完赛，第一次和机器人一起参加比赛，最近太忙训练太少，虽然没有 PB，但是今天的发挥也相当满意！&#xD;&#xA;&#xD;&#xA;![aedd09da708030ae2501b73fe9b278.jpg](/uploads/images/202504/19161031897.jpg &#34;aedd09da708030ae2501b73fe9b278.jpg&#34;)&#xD;&#xA;&#xD;&#xA;![IMG_6782.jpg](/uploads/images/202504/20074115601.jpg &#34;IMG_6782.jpg&#34;)&#xD;&#xA;&#xD;&#xA;![IMG_6783.jpg](/uploads/images/202504/20074121773.jpg &#34;IMG_6783.jpg&#34;)</description>
      <guid>www.cuiliang.com/post/381</guid>
      <pubDate>Sat, 19 Apr 2025 15:52:55 +0000</pubDate>
    </item>
    <item>
      <title>入职满 10 周年纪念日</title>
      <link>www.cuiliang.com/post/380</link>
      <description>时光荏苒，岁月如梭，十年风雨，不负韶华。&#xD;&#xA;&#xD;&#xA;![lALPDfJ6ffmvLUbNCMDNBNo_1242_2240.jpg](/uploads/images/202501/20095109293.jpg &#34;lALPDfJ6ffmvLUbNCMDNBNo_1242_2240.jpg&#34;)&#xD;&#xA;&#xD;&#xA;![WechatIMG324.jpg](/uploads/images/202501/20095116252.jpg &#34;WechatIMG324.jpg&#34;)&#xD;&#xA;</description>
      <guid>www.cuiliang.com/post/380</guid>
      <pubDate>Mon, 20 Jan 2025 09:49:32 +0000</pubDate>
    </item>
    <item>
      <title>美国心脏协会（AHA）急救证书</title>
      <link>www.cuiliang.com/post/379</link>
      <description>![IMG_6440.jpg](/uploads/images/202501/13115420216.jpg &#34;IMG_6440.jpg&#34;)</description>
      <guid>www.cuiliang.com/post/379</guid>
      <pubDate>Mon, 13 Jan 2025 11:54:46 +0000</pubDate>
    </item>
    <item>
      <title>通过 pyenv 配合 venv 来创建项目专属的虚拟环境</title>
      <link>www.cuiliang.com/post/378</link>
      <description>## 安装 `pyenv`&#xD;&#xA;```&#xD;&#xA;curl https://pyenv.run | bash&#xD;&#xA;```&#xD;&#xA;&#xD;&#xA;这条命令会自动安装以下工具：&#xD;&#xA;&#xD;&#xA;- `pyenv`&#xD;&#xA;- `pyenv-doctor`（检查 `pyenv` 安装的健康状况）&#xD;&#xA;- `pyenv-virtualenv`（用于创建 Python 虚拟环境）&#xD;&#xA;&#xD;&#xA;## 更新 Shell 配置&#xD;&#xA;```&#xD;&#xA;vim ~/.bashrc&#xD;&#xA;```&#xD;&#xA;```&#xD;&#xA;echo -e &#39;export PATH=&#34;$HOME/.pyenv/bin:$PATH&#34;\n&#39; \&#xD;&#xA;    &#39;eval &#34;$(pyenv init --path)&#34;\n&#39; \&#xD;&#xA;    &#39;eval &#34;$(pyenv init -)&#34;\n&#39; \&#xD;&#xA;    &#39;eval &#34;$(pyenv virtualenv-init -)&#34;&#39; &gt;&gt; ~/.bashrc&#xD;&#xA;```&#xD;&#xA;```&#xD;&#xA;source ~/.bashrc&#xD;&#xA;```&#xD;&#xA;&#xD;&#xA;## 安装 Python 版本&#xD;&#xA;```&#xD;&#xA;pyenv install 3.11.9&#xD;&#xA;```&#xD;&#xA;&#xD;&#xA;## 设置全局或本地 Python 版本&#xD;&#xA;设置一个全局的 Python 版本（用于所有项目）：&#xD;&#xA;```&#xD;&#xA;pyenv global 3.11.9&#xD;&#xA;```&#xD;&#xA;&#xD;&#xA;你还可以为特定目录设置本地版本，例如在某个项目目录下：&#xD;&#xA;```&#xD;&#xA;pyenv local 3.8.12&#xD;&#xA;```&#xD;&#xA;这会创建一个 `.python-version` 文件，记录该项目使用的 Python 版本。&#xD;&#xA;## 创建虚拟环境（使用 venv）&#xD;&#xA;```&#xD;&#xA;python -m venv venv&#xD;&#xA;```&#xD;&#xA;&#xD;&#xA;## 激活虚拟环境&#xD;&#xA;对于 Bash/Zsh（Linux/macOS）：&#xD;&#xA;```&#xD;&#xA;source venv/bin/activate&#xD;&#xA;```&#xD;&#xA;对于 Windows（CMD）：&#xD;&#xA;```&#xD;&#xA;.\venv\Scripts\activate&#xD;&#xA;```</description>
      <guid>www.cuiliang.com/post/378</guid>
      <pubDate>Tue, 03 Dec 2024 17:37:48 +0000</pubDate>
    </item>
    <item>
      <title>解决 Python 3.8+ 遇到的 OpenSSL 版本不兼容的问题</title>
      <link>www.cuiliang.com/post/377</link>
      <description>在安装 Python3.8 时可能会遇到与系统自带 OpenSSL 版本不兼容的问题。Python3.8 需要的 OpenSSL 版本为 `1.0.2` 或 `1.1.x`。如果系统中默认的 OpenSSL 版本低于需求（通常是 `OpenSSL 1.0.1`），会导致如下错误：&#xD;&#xA;```&#xD;&#xA;Could not build the ssl module!&#xD;&#xA;Python requires an OpenSSL 1.0.2 or 1.1 compatible libssl with X509_VERIFY_PARAM_set1_host().&#xD;&#xA;```</description>
      <guid>www.cuiliang.com/post/377</guid>
      <pubDate>Sat, 09 Nov 2024 16:40:57 +0000</pubDate>
    </item>
    <item>
      <title>2024 海淀马拉松 3:35 安全完赛</title>
      <link>www.cuiliang.com/post/376</link>
      <description>离家最近的一场马拉松，从家出发到起点仅 5 公里，整体的体验非常好，明年还会继续参加！&#xD;&#xA;&#xD;&#xA;![05FCA2AA209C49F6FD703F278526C682.png](/uploads/images/202410/28095512102.png &#34;05FCA2AA209C49F6FD703F278526C682.png&#34;)</description>
      <guid>www.cuiliang.com/post/376</guid>
      <pubDate>Tue, 29 Oct 2024 20:15:58 +0000</pubDate>
    </item>
    <item>
      <title>2024 天津马拉松 PB 3:31</title>
      <link>www.cuiliang.com/post/375</link>
      <description>天津马拉松成功 PB，成绩 3:31，比上次最佳成绩快了 20 分钟，期待下周海淀马拉松取得更好成绩！&#xD;&#xA;&#xD;&#xA;![IMG_6020.PNG](/uploads/images/202410/21110233845.png &#34;IMG_6020.PNG&#34;)&#xD;&#xA;&#xD;&#xA;</description>
      <guid>www.cuiliang.com/post/375</guid>
      <pubDate>Mon, 21 Oct 2024 10:59:56 +0000</pubDate>
    </item>
    <item>
      <title>这一波房贷利率调整太给力了！</title>
      <link>www.cuiliang.com/post/374</link>
      <description>2024年房贷新政，北京房贷利率直接从 LPR+55BP 降至 LPR-30BP，再加上今年的 LPR 下调，利率将下降 1 个百分点，真是实实在在的利好！&#xD;&#xA;&#xD;&#xA;![WechatIMG2067.jpg](/uploads/images/202410/12110532907.jpg &#34;WechatIMG2067.jpg&#34;)&#xD;&#xA;</description>
      <guid>www.cuiliang.com/post/374</guid>
      <pubDate>Sat, 12 Oct 2024 11:04:32 +0000</pubDate>
    </item>
    <item>
      <title>怀柔长城半程马拉松安全完赛</title>
      <link>www.cuiliang.com/post/373</link>
      <description>![IMG_5758.PNG](/uploads/images/202409/24095738321.png &#34;IMG_5758.PNG&#34;)&#xD;&#xA;&#xD;&#xA;![IMG_5767.JPG](/uploads/images/202409/24095740185.jpg &#34;IMG_5767.JPG&#34;)&#xD;&#xA;</description>
      <guid>www.cuiliang.com/post/373</guid>
      <pubDate>Tue, 10 Sep 2024 14:11:19 +0000</pubDate>
    </item>
    <item>
      <title>秋高气爽，开始备赛</title>
      <link>www.cuiliang.com/post/372</link>
      <description>* 9月22日 怀柔长城马拉松（中签）&#xD;&#xA;* 10月20日 天津马拉松（中签）&#xD;&#xA;* 10月27日 海淀马拉松（中签）&#xD;&#xA;* 11月3日 北京马拉松（未出签）&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;### 30公里LSD&#xD;&#xA;![IMG_5669.PNG](/uploads/images/202409/09103507992.png &#34;IMG_5669.PNG&#34;)&#xD;&#xA;&#xD;&#xA;### 间歇跑&#xD;&#xA;![IMG_5675.PNG](/uploads/images/202409/10141316521.png &#34;IMG_5675.PNG&#34;)&#xD;&#xA;&#xD;&#xA;![IMG_5674.PNG](/uploads/images/202409/10141319624.png &#34;IMG_5674.PNG&#34;)&#xD;&#xA;&#xD;&#xA;### 35公里LSD&#xD;&#xA;![IMG_5704.PNG](/uploads/images/202409/18152341283.png &#34;IMG_5704.PNG&#34;)&#xD;&#xA;&#xD;&#xA;### 54321渐进跑&#xD;&#xA;![IMG_5718.PNG](/uploads/images/202409/18152523420.png &#34;IMG_5718.PNG&#34;)&#xD;&#xA;&#xD;&#xA;![IMG_5719.PNG](/uploads/images/202409/18152524988.png &#34;IMG_5719.PNG&#34;)&#xD;&#xA;</description>
      <guid>www.cuiliang.com/post/372</guid>
      <pubDate>Mon, 09 Sep 2024 10:33:54 +0000</pubDate>
    </item>
    <item>
      <title>终于毕业了！</title>
      <link>www.cuiliang.com/post/371</link>
      <description>![IMG_5542.jpg](/uploads/images/202408/05110116269.jpg &#34;IMG_5542.jpg&#34;)&#xD;&#xA;![IMG_5538.jpg](/uploads/images/202408/05110119259.jpg &#34;IMG_5538.jpg&#34;)&#xD;&#xA;</description>
      <guid>www.cuiliang.com/post/371</guid>
      <pubDate>Sat, 03 Aug 2024 11:00:37 +0000</pubDate>
    </item>
    <item>
      <title>CMS 最佳团队奖10周年</title>
      <link>www.cuiliang.com/post/370</link>
      <description>部门已经不存在了，但是精神依然存在。</description>
      <guid>www.cuiliang.com/post/370</guid>
      <pubDate>Thu, 01 Aug 2024 13:40:25 +0000</pubDate>
    </item>
    <item>
      <title>Linux 创建 Swap 交换分区的三种方式</title>
      <link>www.cuiliang.com/post/369</link>
      <description>之前写过一篇 [阿里云服务器添加 Swap 分区](/post/233) 的文章，最近发现了三种常用创建交换分区的方法，现在分享给大家，并对三种创建交换分区的优缺点做了简单对比。&#xA;&#xA;创建 Swap 分区文件有三种常用方法：使用 `dd`、使用 `fallocate` 和使用 `fdisk`。&#xA;</description>
      <guid>www.cuiliang.com/post/369</guid>
      <pubDate>Wed, 24 Jul 2024 14:27:19 +0000</pubDate>
    </item>
  </channel>
</rss>