PHP 格式化输出 JSON:一个适合浏览器查看的轻量方法

这篇文章整理了一个在 PHP 5.4 及以上版本中格式化输出 JSON 的简洁方法。重点不在复杂封装,而是说明 `json_encode` 配合 `JSON_UNESCAPED_UNICODE` 与 `JSON_PRETTY_PRINT` 的实际作用,以及如何兼顾浏览器直接输出和字符串返回两种用法。 开发 PHP 接口或排查数据结构时,最常见的问题不是能不能输出 JSON,而是输出后难不难读。

PHP 格式化输出 JSON:一个适合浏览器查看的轻量方法

Atmosphere 的“Exception during suspend() operation”到底在报什么

排查 Atmosphere 日志里常见的 `Exception during suspend() operation` 时,表面上看像是浏览器关闭导致的无害告警,但沿着 `AtmosphereResourceImpl` 和 `scalatra-atmosphere` 的调用链往下看,真正抛错的位置往往在业务侧的 `Disconnected` 监听。本文按源码路径拆开这条链路,并说明为什么这条 WARN 不该被简单理解为“可忽略”。

Atmosphere 的“Exception during suspend() operation”到底在报什么

JavaScript 中 Fetch 怎么在单元测试中优雅地 Mock 全局 fetch 函数

在 Jest 里 Mock 全局 `fetch`,关键不是“能不能替换”,而是怎样让返回值、调用链和清理方式都贴近真实环境。文章按常见测试写法拆解 `global.fetch` 的 Mock、可复用 helper、`Response.json()` 链式返回,以及 JSDOM、Node、MSW 的适用边界。 在 JavaScript 单元测试里,Mock `fetch` 看起来只是替换一个全局函数,真正容易出问题的却是返回结构、环境差异和测试收尾。

JavaScript 中 Fetch 怎么在单元测试中优雅地 Mock 全局 fetch 函数

Jupyter Notebook 怎么设置深色模式背景

Jupyter Notebook 想切到深色模式,最省事也最稳定的做法不是手改 CSS,而是直接使用 jupyter-themes。本文整理安装、主题选择、启用命令和回退方法,并补上图表边框、缓存不刷新的常见问题处理。 Jupyter Notebook 想换成深色背景,很多人会先去改 CSS 或找浏览器插件,但这类办法常常只改了界面,图表和输出区域却没跟上。

Jupyter Notebook 怎么设置深色模式背景

ThinkPHP5 宝塔面板二级域名绑定模块怎么设置

在宝塔面板里给 ThinkPHP5 做二级域名绑定,真正决定是否生效的不是“把域名加进去”这一步,而是 TP5 的域名部署开关、`__domain__` 路由、DNS 解析、证书覆盖范围,以及 `/public` 运行目录与伪静态是否同时到位。本文按排查顺序梳理关键配置和常见误区。

ThinkPHP5 宝塔面板二级域名绑定模块怎么设置