标签: Go
-
A Tour of Go 多语言翻译项目在连续上线 nl-NL、pt-BR 和 tr-TR 后,正式社区语言版本已达到 10 个。本文集中复盘这一阶段继续暴露并解决的工程细节,包括 Production 浏览器验收的 zgocloud 网络链路、SOCKS 隧道生命周期、Quality Check revision lineage、Locale Surface Review 审核包导出、HTML Entity 导致的 Validator 误判,以及 Playground 长输出和 GitHub README 自动投影等优化。
-
在 A Tour of Go 意大利语站点上线后,我重新整理了 Google Search Console 与 Bing Webmaster Tools 的搜索引擎收口流程。Google 侧完成站点验证并提交 sitemap.xml 后,Bing 可以复用已有的 Google Search Console 账号授权,通过手动 Import 快速导入新的 locale 站点及 sitemap。本文记录 it-IT 从 GSC 成功发现 105 个页面,到 Bing 导入站点并识别 105 个 URL、0 错误、0 警告的完整过程,并明确“账号连接可复用,但新站点仍需手动导入”的边界。
-
在 A Tour of Go 意大利语站首次 Production 中,Machine Acceptance 已经通过,但 Headless Chrome 却连续在 / 和 /tour/ 报出 page did not render。进一步排查发现,同一台 ThinkPad 对这两个页面连续 20 次 curl 请求全部返回 HTTP 200,问题并不在普通公网访问,而在 browser acceptance 对 document.readyState == “complete” 的依赖过强。最终将 render readiness 调整为 interactive 或 complete 加有效 body 内容,并允许最多 3 次独立 navigation,同时继续让正式语义检查保持单次、fail closed。修改后 Production Browser Acceptance 顺利通过。
-
在 A Tour of Go 意大利语站首次 Production 过程中,站点部署、源站和 Cloudflare DNS 都正常,但公网验收却连续遭遇 curl 28、curl 97 等网络瞬态失败。最终没有继续堆叠更复杂的 SOCKS、超时和重试逻辑,而是把正式公网 machine acceptance 直接迁到 zgocloud 执行,让 105 个 sitemap URL、CDN Cache、HTML Identity 和 Socket Boundary 等检查稳定通过。本文记录这次从跨境 SOCKS 链路到 zgocloud direct 的调整过程,以及 bounded retry、fail closed、保留 Production 现场并正式 resume 等实践经验。
-
完成 A Tour of Go 西班牙语 es-ES 首次 Production 上线后,我没有停在“能上线”这一步,而是继续根据真实失败 evidence 收敛新增 locale 的生产流程。本文记录这次连续处理的 6 类问题:Cloudflare API 瞬态失败容错、首次 Production 公网验收去重、finalization 自动化、current-live locale 状态来源统一、Google/Bing 搜索引擎提交收口,以及 Locale Surface Review A gate 的 freshness scope 优化。最终目标不是让流程越来越复杂,而是让每一门新语言踩过的坑,都变成下一门语言可以直接复用的标准能力。
-
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 真正拥有独立页面身份。
-
在排查 A Tour of Go 展示广告始终不出现的问题时,一个看似直接的方案是放弃 SPA,让每一节课程都通过完整页面刷新来简化 AdSense、统计和 SEO。但进一步对比后发现,最大的代价并不是一次性的前端改造,而是长期偏离 golang/website 上游架构,持续增加同步与维护成本。本文结合官方 A Tour of Go 的 SPA 导航、上游 _content/tour/ 目录以及项目自身的 upstream baseline 管理方式,对“保留 SPA”与“放弃 SPA”进行完整权衡,并最终确定:让广告适配 A Tour of Go,而不是为了广告重新设计 A Tour of Go。
-
在 A Tour of Go 多语言站点接入 Google AdSense 后,课程页虽然存在大片视觉空白,但普通展示广告始终没有出现。本文从 Auto Ads 配置、adsbygoogle.js 加载状态以及官方 A Tour of Go 的 DOM / layout 结构入手,分析为什么“页面看起来有空白”并不等于“Google 认为这里存在可插入广告的位置”。最终将问题范围收敛到 A Tour of Go 特殊的左右分栏和交互式页面结构,并引出后续一个更重要的架构选择:是否值得为了 AdSense 放弃原有 SPA。
-
在 go-tour-i18n 多语言翻译项目中,最初计划让 ChatGPT 完成翻译后直接写入 GitHub 仓库。实际验证后发现,当前会话环境中的 GitHub 写入、commit、push 流程不适合作为稳定依赖。因此项目调整为:ChatGPT 负责读取 GitHub 输入并生成 raw-responses artifact,本地环境通过新增的 retranslation import 命令完成导入、process、validation、review 和 Git 操作。本文记录这次翻译交付流程调整,以及 AI 与工程环境职责重新划分的实践经验。
-
在 A Tour of Go 多语言翻译项目中,广告接入没有直接将 AdSense 代码写入公开源码,而是沿用已有的生产配置注入机制,实现从 AdSense 专用配置到通用 HTML 注入架构的重构。 本次调整新增独立 TOUR_AD_HTML 注入链路,将广告内容通过 systemd 环境变量提供,由 Go 服务读取并渲染到 HTML 。公开源码和发布包只保留注入位置,不包含具体广告平台配置。 通过这一设计,项目实现了广告逻辑与具体平台解耦,同时保持源码公开、生产配置独立的架构,为未来更换广告平台或扩展其他 HTML 注入场景提供基础。
