- 博客(4356)
- 资源 (11)
- 收藏
- 关注
原创 Python测试用例设计介绍(pytest)AAA模式、FIRST原则、等价类划分、边界值、状态转换测试、参数化测试、Fixture测试夹具、Mock与Patch、pytest-cov插件测试覆盖率
选对工具:推荐 pytest,简洁高效。遵循原则:FIRST 原则 + AAA 模式。运用方法:等价类划分、边界值分析、状态转换。善用技巧:参数化、Fixture、Mock、覆盖率分析。避开陷阱:保持测试独立、简洁、可维护。记住,测试不是负担,而是你对代码质量的投资。今天多花 10 分钟写测试,明天就少花 2 小时排查 Bug。🧪✨。
2026-08-08 03:43:28
223
原创 Python堆栈跟踪分析方法介绍(Stack Trace / Traceback)most recent call last、完整堆栈print_exc()、事后调试pdb.post_mortem()
在 Python 中分析堆栈跟踪(Stack Trace / Traceback)是调试的核心技能。Python 的 Traceback 采用“自底向上”的阅读顺序,这与许多其他语言相反。
2026-08-07 05:36:24
295
原创 cosign签名 + SLSA溯源介绍(SLSA Provenance溯源声明、Keyless模式、OIDC联合身份、Sigstore)
好问题。这个镜像是谁造的?有没有被篡改过?
2026-08-06 05:29:34
186
原创 IAM联合(OIDC Federation、OIDC联合)介绍(Identity and Access Management 云厂商提供的身份与权限管理系统)
裸 VPS 是一台只有 SSH 的远程机器,IAM 联合是让 CI 不用拿长期密钥就能安全部署的机制——前者限制了后者,所以我们用长期密钥 + forced command 来弥补。
2026-08-06 04:35:35
191
原创 预置known_hosts如何防止中间人攻击(MITM)?(服务器公钥、服务器私钥)Runner、DNS污染、BGP劫持、同网络ARP欺骗、SSH握手
没有预置 known_hosts:Runner 对任何自称是你服务器的机器都信任= 在公共网络上裸奔预置 known_hosts + StrictHostKeyChecking=yes:Runner 只信任持有特定公钥的机器= 即使网络被劫持,也能立刻发现并断开这不是理论风险。2024 年就有安全研究员演示过通过 DNS 劫持拦截 CI/CD 管道的 SSH 连接。只是大多数人没被攻击过,就觉得"不会发生在我身上"。密钥存放位置作用是否离开本机服务器私钥你的服务器/etc/ssh/
2026-08-05 04:50:35
196
原创 wiring的含义(指将不同的组件、服务或流程连接起来使其协同工作的代码或配置)流水线配置、基础设施对接、触发器设置
这条提交信息的含义大致是:“
2026-08-04 04:38:08
226
原创 为什么SSH客户端的配置文件~/.ssh/config不配置目标服务器也能连接?(没有配置文件的话,客户端会一把一把地试)authorized_keys、SSH配置
是给客户端自己看的备忘录——“连这台服务器别乱试钥匙了,直接拿这把”。但它不影响服务器端的验证逻辑,服务器依然要在里找到对应的公钥才能放行。
2026-08-04 00:31:00
219
原创 包装器介绍(脚本包装器脚本、外壳脚本)中间层脚本,不直接干活(forced-command)
包装器 = 不干活,只管"接活、审核、转交、记录"的中间层脚本。
2026-08-02 22:14:42
250
原创 alembic check如何判断零漂移?(服务的ORM模型定义与各自的迁移文件完全一致,没有任何未落盘的schema变更)(虚拟迁移、autogenerate引擎)
这就是"零漂移"的含义。
2026-08-02 21:15:01
245
原创 Version和Revision区别(部署和基础设施Infra语境下)Version指一个发布里程碑、Revision指一次具体的构建产物(唯一不可变)(commit SHA、摘要)
Version 告诉你"这是什么",Revision 告诉你"这到底是哪一个"。闭环校验的目的是确保部署的确定性,所以必须用不可变的 revision,而不是可变的 version。把文件命名为而非这里存的是一个精确的、不可变的构建标识,不是一个可能被覆盖的标签。
2026-08-02 03:21:11
175
原创 shim含义介绍(一个放在服务器上的极小脚本(Shim/垫片),将“部署入口”和“部署逻辑”分离。服务器上只保留一个极简、固定不变的“门卫”(shim))GitOps / IaC模式
这段文字描述了一种安全且自动化的服务器部署架构设计。将“部署入口”和“部署逻辑”分离。服务器上只保留一个极简、固定不变的“门卫”(shim),而真正的“干活代码”(部署脚本)则跟随 Git 仓库版本自动更新。Shim (= 门口的保安。他只检查你的预约码(commit hash)是否合法,合法就放行,不合法就赶走。他从不关心厨房里怎么做菜,也永远不需要换人。部署脚本 (= 厨房里的菜谱。菜谱跟着食材(代码)一起更新。今天做新菜就用新菜谱,保安完全不用管菜谱变了什么。这是一种非常成熟的实践模式。
2026-08-01 17:29:44
234
原创 SSH配置强制command=(Forced Command)介绍(服务器~/.ssh/authorized_keys)限定命令范围(forced-command)强制命令
在 SSH 配置中,强制command=(Forced Command)是一种安全机制,用于限制某个 SSH 密钥登录后只能执行特定的命令或脚本,而无论客户端请求执行什么命令。
2026-08-01 16:44:29
219
原创 热循环(Hot Loop / Hot Cycling)介绍(消息反复消费、反复失败、反复重新入队、反复重试)message.redelivered、毒消息流程:记指标 + 丢弃
热循环是指一条有问题的消息被反复消费、反复失败、反复重新入队,形成一个停不下来的死循环,像发动机空转一样快速"烧"资源。
2026-07-31 18:09:10
174
原创 tri-state(三态)介绍(状态设计模式,一个值或结果可以有三种明确的状态:成功(Success)、失败(Failure)、进行中/未知/未完成(Pending/Unknown))
tri-state(三态)在这里指的是一种状态设计模式,即一个值或结果可以有三种明确的状态,而不是简单的"成功/失败"两种。Tri-state = 成功 / 失败 / 未完成,三种状态明确区分,绝不把"失败"伪装成"成功但结果为零"。
2026-07-31 17:21:18
145
原创 coerced value(强制转换的值、静默转换)与typed ok=False result(类型化的失败结果)对比
typedok=Falseresult”就是:用明确的类型定义来区分"成功"和"失败"两种结果,让调用方在代码层面不可能把失败误认为成功。而 “coerced value” 则是把失败硬塞进成功的格式里,让调用方根本分不清。这也是为什么审计人员确认scraper.py不需要修改——它从一开始就正确地处理了失败情况。
2026-07-31 17:04:11
200
原创 flake(flaky test不稳定测试 / 偶发故障)介绍(指代码逻辑本身没有明显bug,但测试结果或系统行为“时好时坏”、无法稳定复现的问题)薄片/雪花,引申为“不靠谱、飘忽不定”
在这里,flake是flaky test(不稳定测试 / 偶发故障)的简称。代码逻辑本身没有明显 bug,但测试结果或系统行为“时好时坏”、无法稳定复现的问题。结合你提供的上下文Keycloak 首次登录 flake现象:用户第一次登录 Keycloak 时,偶尔会失败(比如超时、重定向错误、Session 丢失等),但重试一次或者过一会儿又正常了。特点:不是必现的 Bug。
2026-07-31 06:22:26
228
原创 getByText查询方法exact选项介绍(前端测试库React Testing Library)
我自己踩了今早刚修过的同一类坑,而且是本地数据与 CI 全新租户的差异掩盖了它:getByText(“Applied”) 在 CI 里匹配到两个元素 —— 状态迁移按钮,以及「」这句提示。这句提示只在没有简历的租户里出现;我本地的测试用户有默认简历,所以本地永远看不到它。修法不是加 exact(按钮和徽章文本都是 “Applied”,切换瞬间会同时存在),而是断言状态机本身加 exact是什么意思?
2026-07-31 05:26:14
233
原创 软件测试:pass vacuously(空洞通过、空转通过)介绍
第一个测试充当"环境哨兵":它确保测试确实运行在 Agent Service 被故意关停的环境下,从而保证后续所有测试结果是有意义的,而不是在一个一切正常的完整系统上"走过场式地全部通过"。
2026-07-31 04:12:44
218
原创 Windows放大镜快捷键指南(Magnifier)(开启:Win + 加号键、关闭:Win + Esc、切换:Ctrl + Alt + M)光标跟踪text cursor
Windows 放大镜虽是一个看似简单的系统工具,但当我们将其与快捷键深度结合后,它便从一个被动的“辅助功能”转变为主动的“效率工具”。无论是视力障碍用户的日常刚需,还是普通用户在特定场景下的临时需求,记住这几组按键组合,都能让你在需要“看得更清楚”的瞬间,获得流畅而自然的操作体验。建议现在就用Win亲自试一试,感受键盘操控带来的便捷吧。
2026-07-30 01:46:15
399
原创 repo层(Repository层 / 仓库层 / 仓储层)介绍(封装数据访问逻辑)
Repository 层是一种设计模式,用于在数据访问层和业务逻辑层之间提供一个抽象层。封装数据访问逻辑- 隐藏数据库查询、API调用等具体实现细节提供类似集合的接口- 让上层代码像操作集合一样操作数据隔离业务逻辑- 业务代码不需要关心数据是如何存储和获取的。
2026-07-29 18:19:49
241
原创 BFF式聚合介绍(把“跨服务数据拼装“这件事从后端挪到前端(或专门的中间层)来做,让底层微服务保持纯粹的单一职责,互不耦合)
BFF 式聚合= 把"跨服务数据拼装"这件事从后端挪到前端(或专门的中间层)来做,让底层微服务保持纯粹的单一职责,互不耦合。
2026-07-29 05:28:01
263
原创 生产环境部署:推式部署(Push-based)与拉式部署(Pull-based / GitOps)部署方式详解(Argo CD / Flux、GHCR、kubectl apply、GitOps)
维度推式(Push)拉式(Pull / GitOps)谁执行部署CI 流水线生产环境内的 Agent凭据在哪CI 侧(GitHub Secrets)生产侧(Agent 本地)安全模型CI 信任 → 生产生产自治,CI 不信任典型工具适用场景小团队、早期项目、简单主机部署中大规模、K8s 原生、多环境kubectl apply 在哪跑CI 里(已过时 ❌)(参考文章:为什么说“CI 里跑 kubectl apply“已过时?集群内 Agent 里(推荐 ✅)推式。
2026-07-26 14:36:41
347
原创 为什么说“CI 里跑 kubectl apply“已过时?(最小权限原则、CI推式部署、GitOps拉式部署)
CI 里 kubectl apply” = 把生产集群的钥匙交给一个临时的、不可控的外部系统,然后祈祷它不会被滥用。“Agent 里 kubectl apply” = 集群自己看着 Git,自治、自愈、自闭环。这就是为什么 Argo CD、Flux 等 GitOps 工具成为中大规模 K8s 部署的事实标准。
2026-07-26 14:33:17
370
原创 Snowflake Deployment雪花部署Snowflake Server雪花服务器介绍(反模式Anti-pattern、不可复现、配置漂移、宠物与牛、凤凰服务器、 不可变基础设施、IaC)
"Snowflake Deployment"(雪花部署)是DevOps中的反模式,指因手工配置、临时修改导致部署环境或服务器不可复制、难以审计的现象。其核心问题包括依赖本地隐式状态、不可复现、缺乏审计日志及配置漂移。业界通过"宠物vs牛"理论、不可变基础设施(如Docker镜像)、基础设施即代码(IaC)和CI/CD自动化流水线等方案解决该问题,确保部署可复现、可审计且标准化。雪花部署的批评实质是警示对人或单机环境的过度依赖,强调自动化与版本控制的重要性。
2026-07-26 13:58:10
336
原创 EOL(End of Life 生命周期终止)(指官方停止对该版本的一切支持的时间,之后不再有任何更新或安全补丁)Active LTS、Maintenance LTS、停止维护、软件升级
EOLEOL是什么?
2026-07-25 23:19:36
191
原创 多租户平台安全模糊化(Security through Ambiguity)策略示例(防止跨租户的资源枚举攻击(Resource Enumeration Attack))租户隔离、租户校验、跨租户攻击
指的是那些本身不会按租户过滤数据的内部 API。这个端点可能只根据order_id查数据,不管你是哪个租户,只要 ID 存在就返回结果。与之相对的是"租户敏感"端点,会在 SQL 层面自动加上的过滤。当你调用的内部接口不区分租户时,你必须在拿到结果后自己检查数据属于哪个租户;如果数据不是当前租户的,就假装这个数据根本不存在,从而防止跨租户的数据泄露和探测攻击。
2026-07-25 21:22:28
196
原创 关注点分离(Separation of Concerns)示例(AI Agent 架构、流程编排、数据契约、提示词工程)
让 prompt 调优、图编排、数据契约三件事可以独立演进、独立测试、独立 review,互不拖累。在 Agent 系统这种 prompt 改动频率远高于代码的系统里,这种分离不是洁癖,而是生存需要。
2026-07-25 15:50:42
266
原创 Fan-out(扇出)介绍(一个分布式系统 / 消息队列中的常见模式,指一条消息触发后,自动派生出多条并行的下游调用)fan out
本地栈是 platform 模式 + 真实 DashScope key——每次上传简历会真调 embedding,一次 discovery run 会对每个职位 fan-out LLM 分析(历史事故:143 职位 ≈ 300 次调用清空预算)。触发任何流程前先追查 MQ 消费者的下游 fan-out。验证 LLM 逻辑用 mock;活体验证最多单条 smoke。fan-out 是什么?
2026-07-25 14:07:44
263
原创 GitHub Dependabot介绍(自动依赖更新工具、自动依赖升级机器人)与Renovate对比
Dependabot 是 GitHub 提供的一项自动化服务,用于帮助开发者及时更新项目依赖,修复已知安全漏洞,并保持第三方组件处于较新的版本状态。简单来说,它相当于一个「自动升级机器人」。是否存在新版本是否存在安全漏洞是否存在补丁更新是否有兼容版本可以升级发现问题后,会自动创建 Pull Request,让开发者审核并合并。例如:Review↓CI 自动测试↓Merge即可完成升级。Dependabot 本质上就是:GitHub 官方提供的自动依赖升级机器人。
2026-07-24 05:08:54
254
原创 Python structlog介绍(Structured Logging 结构化日志)(一个用于结构化日志的Python库)记录键值对数、绑定上下文绑定、contextvars、Datadog
日志(Logging)是每个应用程序必不可少的组成部分。这种方式对于开发阶段没有问题。如何统计某个用户一天登录多少次?如何根据 request_id 找到一次完整请求?如何把日志发送到 Elasticsearch(一个开源的、基于 Apache Lucene 构建的分布式搜索与分析引擎如何让 Loki、Grafana、Datadog、Splunk 自动解析日志?如何让 AI 或脚本自动分析日志?如果日志只是字符串,那么这些都会变得十分困难。因此,现代云原生系统几乎都采用。
2026-07-24 04:35:18
378
原创 冒烟测试介绍(Smoke Test、BVT构建验证测试、构建验收测试)与回归测试对比、与单元测试对比、与集成测试对比、Cypress
冒烟测试(Smoke Testing)Build Verification Test(BVT,构建验证测试)Build Acceptance Test(构建验收测试)在新的软件构建(Build)完成后,先验证系统最核心的功能是否能够正常工作,以判断这个版本是否值得继续深入测试。它不是全面测试。“这个版本还能不能继续测?如果连登录都失败、服务都启动不了、数据库连不上,那么后面的功能测试就没有意义。冒烟测试就是版本的第一道质量门。冒烟测试可以理解为软件发布过程中的快速体检。
2026-07-23 20:47:42
234
原创 LangSmith介绍(LLMOps平台)Tracing调用链追踪、日志系统
LangSmith 是 LangChain 官方推出的LLMOps(Large Language Model Operations)平台。Web 开发中的 Chrome DevTools后端开发中的 Jaeger微服务中的 ZipkinKubernetes 中的 Grafana + Tempo数据科学中的 MLflow(部分能力类似)LangSmith 可以记录 AI 应用运行过程中发生的一切。用户问题│▼│▼。
2026-07-23 20:04:37
339
原创 httpx.MockTransport介绍(HTTPX官方提供的传输层实现,不发送HTTP请求,把请求交给自定义函数处理)与unittest.mock的区别、RESPX、模拟接口模拟http mock
是 HTTPX 官方提供的一种Transport(传输层)实现。它不会真正发送 HTTP 请求,而是把请求交给你自己编写的函数处理。│▼│▼你的 handler()│▼返回 Response│▼Client 收到 ResponseClient│▼Internet│▼GitHub API│▼ResponseClient│▼│▼│▼不访问互联网不需要 DNS不需要 Token不需要服务器。
2026-07-23 11:06:50
383
原创 Import绊线测试(Import Tripwire Test)介绍(一种防止错误依赖回归的防御性测试技术)monkeypatch、防御性测试、架构测试、边界测试、Import Guard Test
Tripwire 原本是军事里的术语。它指的是:在地上拉一根很细的线。平时没人注意。拉响警报引爆照明弹或触发陷阱软件里的 Tripwire 也是一样。平时它什么都不做。只要有人触碰了某个“不应该发生”的行为,它立刻报警。禁止 import legacy.api↓有人重新 import↓测试失败自动化警戒线(Guard Rail)禁止消费者重新 import 某个模块。例如:Consumer││└──── 自动分析后来业务改了。Consumer只负责消费消息↓。
2026-07-23 01:37:19
350
原创 Mailpit介绍(本地开发和自动化测试邮件沙箱)本地邮件服务、本地SMTP服务器、1025端口、8025端口、Chaos功能、SMTP Relay(SMTP 中继)、MailHog
Mailpit 是一个面向开发者的开源邮件测试工具。一个 SMTP 服务器,用于接收应用发送的邮件;一个 Web UI,用于浏览和检查捕获的邮件;一套 REST API,用于自动化集成测试;可选的 POP3、SMTP Relay、Webhook 和邮件质量检查能力。Mailpit 使用 Go 开发,可以作为单个静态二进制文件运行,也提供多架构 Docker 镜像。默认情况下,它在1025端口监听 SMTP 连接,在8025端口提供 Web UI 和 API。
2026-07-22 05:10:59
350
转载 Pi Agent框架设计逻辑深度解析(AI Agent框架、Agentic AI框架)
Pi 的极简主义,不是简陋,而是精准。它放弃了所有非核心的、会增加系统复杂度和不可观测性的高级功能,把信任和控制权,最大限度地交还给了 LLM 本身和最基础的命令行工具。
2026-07-22 03:31:40
148
原创 POP3协议介绍(Post Office Protocol version 3 邮局协议第3版,互联网接收下载邮件标准协议之一)服务器一般不保留邮件,与SMTP协议形成鲜明对比(邮件同步)本地邮件
POP3的全称是Post Office Protocol version 3(邮局协议第3版),它是互联网上用于接收和下载电子邮件的标准协议之一。打个比方:如果把 SMTP 协议比作“邮递员把信件送到邮局”,那么 POP3 就是“你从邮局把信件取回自己家”的过程。
2026-07-22 02:24:10
211
原创 Resend介绍(面向开发者现代邮件API)(魔法链接、SMTP接口、STARTTLS、邮件发送代码、SPF、DKIM、DMARC、邮箱管理、MX记录、Inbound、Outbox、邮件服务、邮箱服务
Resend 是一个面向开发者的邮件发送平台。官方将其定义为“开发者的 Email API”,支持通过 HTTP API、官方 SDK 或 SMTP 发送邮件。它既可以发送由业务事件触发的事务邮件,也提供 Broadcasts 等能力,用于向联系人列表发送营销邮件。需要注意,Resend 并不是 Gmail 或企业邮箱的替代品。应用程序如何可靠地发送和接收业务邮件员工如何登录邮箱、阅读邮件和管理日常通信用户完成注册↓后端创建用户↓调用 Resend API↓发送欢迎邮件↓。
2026-07-21 17:06:28
350
Dify+DeepSeek - Excel数据一键可视化(创建步骤案例)-DSL工程文件(可直接导入)
2025-03-05
Dify+DeepSeek - Excel数据一键可视化(创建步骤案例)-Markdown示例文件
2025-03-05
auto.js安装包:app-v6-armeabi-v7a-release-unsigned-signed.apk
2024-02-11
auto.js安装包:app-v6-universal-release-unsigned-signed .apk
2024-02-10
raid卡配置教程(基于Ubuntu 20.04 操作系统安装指导书 (鲲鹏 920 处理器)安装)
2023-12-12
Ubuntu 20.04 操作系统 安装指导书 (鲲鹏920处理器)
2023-12-12
ffmpeg h264编码格式测试视频
2023-12-10
vsftpd-3.0.5
2022-08-22
Intel-RealSense-D400-Series-Datasheet
2019-07-29
CMD_right_click_key_menu_with_administration.reg
2019-08-29
为什么C++对整型常量的指针用const_cast并修改值后,出现了两个不一样的值?
2023-08-23
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅