程序开发 分类归档 - 永夜 https://www.shuijingwanwq.com/category/program-development/ 没有不值得去解决的问题,也没有不值得去学习的技术! Mon, 07 Sep 2026 04:00:43 +0000 zh-Hans hourly 1 https://wordpress.org/?v=7.1.4 https://media.shuijingwanwq.com/2026/05/logo-150x150.png 程序开发 分类归档 - 永夜 https://www.shuijingwanwq.com/category/program-development/ 32 32 IndexNow 实战:手工提交长期不显示,Cloudflare Crawler Hints 却很快出现在 Bing Webmaster Tools https://www.shuijingwanwq.com/2026/09/07/27474/ Mon, 07 Sep 2026 04:00:40 +0000 https://www.shuijingwanwq.com/?p=27474 在 A Tour of Go 多语言站点上线过程中,我开始将 IndexNow 纳入搜索引擎收口流程。实测中,新 Key 首次提交可能返回 HTTP 202,等待验证后才转为 200;更令人困惑的是,即使接口早已返回 200,Bing Webmaster Tools 仍长期显示 Get Started。经过多轮独立 Key、不同子域名、Bing direct endpoint 等测试后,第二天后台终于开始出现 Self 提交记录。与此同时,开启 Cloudflare Crawler Hints 后,英文、日语、德语站很快出现大量来源为 Cloudflare 的 IndexNow 记录。本文记录完整排查过程、直接提交与 Cloudflare Crawler Hints 的实际差异,以及最终将一次性全站 IndexNow bootstrap 标准化为 Go CLI 的实现思路。

IndexNow 实战:手工提交长期不显示,Cloudflare Crawler Hints 却很快出现在 Bing Webmaster Tools最先出现在永夜。

]]>
SPA 的 SEO 老问题:为什么最后还是给 103 个 A Tour of Go 课程页生成了 Prerender HTML https://www.shuijingwanwq.com/2026/08/26/27174/ Wed, 26 Aug 2026 12:51:32 +0000 https://www.shuijingwanwq.com/?p=27174 A Tour of Go 的 SPA SEO 问题早已存在:对用户来说,103 个课程 URL 明明对应不同内容,但 Google Search Console 曾将多个页面判断为“重复网页,用户未选定规范网页”。这一次在继续优化 AdSense 的过程中,我最终决定为全部 103 个正式课程页生成独立 Prerender HTML,让服务器首次响应就直接包含本页标题、正文、Go 示例源码、canonical 和 description,同时继续保留 Angular SPA、CodeMirror 与 Playground。本文记录了为什么 SEO 与广告上下文理解共同推动了这次 Prerender 实现,以及如何让每个课程 URL 真正拥有独立页面身份。

SPA 的 SEO 老问题:为什么最后还是给 103 个 A Tour of Go 课程页生成了 Prerender HTML最先出现在永夜。

]]>
go-tour-i18n 翻译自动化流程复盘:已验证的 ChatGPT 翻译能力在新任务中的稳定性问题 https://www.shuijingwanwq.com/2026/08/23/27103/ Sun, 23 Aug 2026 03:00:08 +0000 https://www.shuijingwanwq.com/?p=27103 在 go-tour-i18n 多语言翻译项目推进过程中,我曾经通过 ChatGPT + GitHub batch 完成 A Tour of Go 简体中文 103 页全量重译验证。后续扩展 ja-JP 翻译时,继续沿用了基于 TranslationUnit 的翻译流程,并尝试从 GitHub 写入调整为 raw-responses artifact 导入模式。实际测试发现,ChatGPT 能够理解项目流程、读取 batch 和 manifest,但在新任务中无法稳定完成从 TranslationUnit 翻译结果到 raw-responses 文件和 artifact 交付的完整闭环。本文记录这次 AI 辅助翻译流程稳定性验证过程,并分析翻译能力与工程执行能力之间的差异。

go-tour-i18n 翻译自动化流程复盘:已验证的 ChatGPT 翻译能力在新任务中的稳定性问题最先出现在永夜。

]]>
VS Code 正常、GitHub 错乱?README 格式问题的解决 https://www.shuijingwanwq.com/2026/04/13/9490/ Mon, 13 Apr 2026 04:00:07 +0000 https://www.shuijingwanwq.com/?p=9490 README.md 在 VS Code 中显示正常,但在 GitHub 上格式错乱。经排查,原因是缺少代码块标记导致内容被压平,以及标题未用空行隔开,不符合 GitHub Markdown 规范。通过重新整理文档,添加正确的代码块符号并调整空行,使格式符合标准后再次提交,GitHub 上的显示恢复了工整。

VS Code 正常、GitHub 错乱?README 格式问题的解决最先出现在永夜。

]]>
告别折磨人的 MySQL 分库分表!亿级数据无感扩容,后端需要懂的 NewSQL 选型 https://www.shuijingwanwq.com/2026/03/27/9389/ Fri, 27 Mar 2026 08:53:10 +0000 https://www.shuijingwanwq.com/?p=9389 文章基于资深后端开发视角,复盘了传统MySQL手工分库分表在扩容、跨分片操作及运维方面的痛点,对比了TiDB、OceanBase等主流NewSQL分布式数据库的优劣势与适用场景,重点阐述了TiDB在兼容MySQL协议与自动分片上的价值。文中还厘清了TiDB与ElasticSearch的边界,指出两者定位互补,需根据是否需要全文检索决定是否保留检索引擎,并给出了兼顾事务处理与检索需求的架构演进路线。

告别折磨人的 MySQL 分库分表!亿级数据无感扩容,后端需要懂的 NewSQL 选型最先出现在永夜。

]]>
在一个自定义字段(定位)中,需要存储为一个 JSON 格式,最终的定义基于 GeoJSON 格式 https://www.shuijingwanwq.com/2025/03/30/8948/ Sun, 30 Mar 2025 02:32:35 +0000 https://www.shuijingwanwq.com/?p=8948 文章针对自定义字段中定位信息的存储需求,通过接口获取经度和纬度并回填地点名称,最终将其存储为基于 GeoJSON 格式的 JSON 数据。将生成的数据在 geojson.io 网站中进行验证,结果显示能够准确定位至北京,符合格式与功能预期。

在一个自定义字段(定位)中,需要存储为一个 JSON 格式,最终的定义基于 GeoJSON 格式最先出现在永夜。

]]>
在 Windows PowerShell 中执行 yarn 相关命令时报错:不允许使用与号(&) https://www.shuijingwanwq.com/2023/11/30/8253/ Thu, 30 Nov 2023 01:45:25 +0000 https://www.shuijingwanwq.com/?p=8253 在 Windows PowerShell 中执行 yarn 相关命令时遇到不允许使用与号的报错,将 & 替换为 "&" 后执行命令,提示 hotishop 不是内部或外部命令。经排查在第二个 hotishop 前添加 yarn,修正后的命令成功运行,解决了语法报错和命令识别问题。

在 Windows PowerShell 中执行 yarn 相关命令时报错:不允许使用与号(&)最先出现在永夜。

]]>
在 PHP 7.4 中,基于语义化版本的目录名称,从低到高逐一执行目录中的脚本文件(当目录名称不符合规范时) https://www.shuijingwanwq.com/2023/08/03/7927/ Thu, 03 Aug 2023 01:27:45 +0000 https://www.shuijingwanwq.com/?p=7927 文章探讨了在 PHP 7.4 中针对非语义化版本目录名称按顺序执行脚本的难题。面对目录名称不可控且格式混乱的情况,尝试筛选特定版本号时发现原有逻辑无法排除不规范目录。为此,参考 Laravel 数据库迁移的设计,将目录名称规则调整为时间戳前缀格式。通过分析新旧目录名称的特性,确定了基于前缀类型的排序逻辑,从而实现了混合目录名称下的正确执行顺序。

在 PHP 7.4 中,基于语义化版本的目录名称,从低到高逐一执行目录中的脚本文件(当目录名称不符合规范时)最先出现在永夜。

]]>
在 Sentry 中搜索分配给自己的且未解决的问题,然后解决的流程 https://www.shuijingwanwq.com/2022/11/17/7156/ Thu, 17 Nov 2022 02:24:49 +0000 https://www.shuijingwanwq.com/?p=7156 本文介绍在 Sentry 中筛选并解决分配给自己的未解决问题的操作流程。首先在问题列表的搜索框中输入特定命令以查找未解决且分配给自己的条目,回车后查看搜索结果。接着选中具体问题,点击 Resolve 按钮进行标记。按钮随后变为勾选状态,表明该问题已成功解决。

在 Sentry 中搜索分配给自己的且未解决的问题,然后解决的流程最先出现在永夜。

]]>
语义化版本号的大小比较的调整(v2.0.0 < v2.0.0-h.1) https://www.shuijingwanwq.com/2022/11/15/7153/ Tue, 15 Nov 2022 01:38:14 +0000 https://www.shuijingwanwq.com/?p=7153 针对PHP 7.4中基于语义化版本的目录名称排序需求,文章解决了v2.0.0小于v2.0.0-h.1的非标准比较问题。在使用version_compare函数无法得到预期结果的情况下,文章提出了一种自定义比较逻辑:当两个版本号主部分相同且仅其中一个包含-h后缀时,判定含后缀的版本更大。最终代码实现成功将目录按预期顺序排列。

语义化版本号的大小比较的调整(v2.0.0 < v2.0.0-h.1)最先出现在永夜。

]]>