一次「cargo 突然消失」之后:聊聊 GitHub Actions + 本机 self-hosted runner 的正确打开方式
最近踩了个挺典型的坑:
前一天还能正常构建,第二天终端里 cargo --version 直接变成 command not found。更离谱的是,~/.zshrc 里 PATH 配置明明还在。
当时第一反应是 shell 配置坏了,结果查下来不是。
一次「cargo 突然消失」之后:聊聊 GitHub Actions + 本机 self-hosted runner 的正确打开方式
最近踩了个挺典型的坑:
前一天还能正常构建,第二天终端里 cargo --version 直接变成 command not found。更离谱的是,~/.zshrc 里 PATH 配置明明还在。
当时第一反应是 shell 配置坏了,结果查下来不是。
使用 Cloudflare R2 + Workers 构建稳定、高性能的软件下载分发
本文记录了在实际项目中使用 Cloudflare R2 + Workers 构建软件下载分发体系时,从最初设计、踩坑、排错,到最终稳定方案的完整过程。内容包含 Cache Rules 与 Worker 缓存冲突的真实问题,适合直接作为生产级参考。
在为 AirTools 构建桌面端分发体系时,我希望实现:
.exe / .dmg 等)全球 CDN 强缓存latest.json)实时更新、不被缓存最终技术选型为 Cloudflare R2 + Cloudflare Workers。
为什么我开始从 RGB 转向 OKLCH —— 颜色处理的新阶段
在做自己的项目时,我逐渐发现一个问题:
颜色越写越乱、越调越脏,很多看似简单的调色逻辑在实际效果上完全不符合预期。
比如:
• 明明只是想调亮一点,但 RGB/HSL 调完后颜色不是变灰就是变艳;
• 做渐变时颜色中途莫名其妙发暗;
• 图表配色在亮色主题和暗色主题下反差不一致;
• 在宽色域(如 P3)设备上,颜色表现和预期差得更远。
这些都指向同一个底层原因:
RGB(甚至 HSL/HSV)并不是一个符合人眼感知的色彩空间。
于是我开始把新的颜色计算逻辑逐步迁移到 OKLCH —— 一个感知均匀、现代化、已被浏览器原生支持的色彩空间。
这篇文章来分享我为什么做这个选择,也希望给你在项目色彩处理上的参考。
在日常摄影中,我们常常会遇到这样一个问题:使用相机(如 Nikon Z30 等非 GPS 相机)拍摄的照片并没有记录位置信息。如果你希望在后期整理或分享时,让照片具备地理信息,就需要借助专业工具来补充或批量写入 GPS 数据。
本文将介绍如何使用强大的命令行工具 ExifTool 来解决这个问题,包括:
1. 为照片添加 GPS 信息;
2. 将一张照片的 GPS 信息复制到另一张或多张照片中;
3. 检查和验证修改结果。
Python 生态中有许多包管理工具,如 pip、poetry 和 conda,而 uv 作为一个新兴工具,正迅速受到关注。uv 由 Astral 开发,基于 Rust 编写,宣称是 Python 包管理的未来。它不仅速度极快(据称比传统工具快 10-100 倍),还集成了项目管理、虚拟环境管理和 Python 版本管理的功能,旨在成为一个全能解决方案。
截至 2025 年 3 月 29 日,uv 的官方文档和社区反馈显示,其普及度正在提升,尤其在需要高效依赖管理的场景中表现出色。然而,作为一个较新的工具,其长期稳定性仍需更多用户验证。
在国内使用 Docker 时,拉取官方镜像可能会遇到速度缓慢或连接超时的问题。这主要是由于网络环境和访问 Docker 官方镜像仓库(Docker Hub)时的带宽限制所致。为了解决这一问题,配置国内的 Docker 镜像加速器(registry mirrors)是一种有效的解决方案。
Docker 镜像加速器是由国内服务提供商搭建的镜像仓库,通过同步 Docker Hub 的内容,提供更快的镜像拉取速度。这些加速器能够有效减少镜像下载时间,提高开发和部署效率。
MarkItDown 是微软开源的一款多功能文档转换工具,旨在将多种文件格式(如 PDF、Office 文档、图像、音频等)高效转换为 Markdown 格式,适用于文档索引、文本分析、内容管理等场景。以下是其核心特性与优势的详细解析:
一年一年又一年
转身发现自己过了这么多年
依旧一事无成
倔强要来的娃
让我多了一个身份
家庭多了一个成员
软萌可爱
却又有时脾气恶劣
天使魔鬼结合体
从看到娃的那时起
软肋铠甲并存
想了太多太多
她嫌我想的太远
我却不知道能否保证娃的健康快乐
因为娃
我跟她疲惫不堪
得靠着娃的笑容充电
值么?
不知道
但
也没得选
对么?
2024年的如今一团糟
2025年的以后还会更糟么?
在 Python 中,JSON 解析和序列化是非常常见的任务。虽然标准库提供了 json 模块,但当数据量大或者性能要求高时,它可能无法满足需求。这时候可以选择第三方库,比如 ORJSON。
ORJSON 是一个超快速且功能丰富的 JSON 解析和序列化库,它利用 Rust 实现,性能显著优于 Python 标准库和其他 JSON 库(如 ujson 和 rapidjson)。
time中的time.perf_counter()和time.time()对比
简而言之 time 模块中的 time()函数用于获取当前时间,perf_counter()函数用于获取当前时间的精确计时器值,通常用于测量程序的执行时间。
Update your browser to view this website correctly.&npsb;Update my browser now